diff --git a/.gitignore b/.gitignore index b271da12159..66c27ed19b2 100644 --- a/.gitignore +++ b/.gitignore @@ -24,7 +24,8 @@ hsqldb hsqldb_test .classpath tokens/ +*storybook.log scripts/awscliv2.zip scripts/aws/install scripts/aws/README.md -scripts/aws/THIRD_PARTY_LICENSES \ No newline at end of file +scripts/aws/THIRD_PARTY_LICENSES diff --git a/.storybook/docsTheme.ts b/.storybook/docsTheme.ts new file mode 100644 index 00000000000..7bc832e91de --- /dev/null +++ b/.storybook/docsTheme.ts @@ -0,0 +1,11 @@ +import { create } from 'storybook/theming'; + +export default create({ + base: 'light', + fontBase: '"Roboto", sans-serif', + brandTitle: 'WISE', + brandUrl: 'https://wise.berkeley.edu', + brandTarget: '_self', + colorPrimary: '#00799C', + colorSecondary: '#00799C' +}); diff --git a/.storybook/main.ts b/.storybook/main.ts new file mode 100644 index 00000000000..1517de58bc1 --- /dev/null +++ b/.storybook/main.ts @@ -0,0 +1,17 @@ +import type { StorybookConfig } from '@storybook/angular'; + +const config: StorybookConfig = { + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], + staticDirs: ['../src/stories/assets'], + addons: [ + '@storybook/addon-onboarding', + '@chromatic-com/storybook', + '@storybook/addon-a11y', + '@storybook/addon-docs' + ], + framework: { + name: '@storybook/angular', + options: {} + } +}; +export default config; diff --git a/.storybook/manager.ts b/.storybook/manager.ts new file mode 100644 index 00000000000..07bdb161cee --- /dev/null +++ b/.storybook/manager.ts @@ -0,0 +1,6 @@ +import { addons } from 'storybook/manager-api'; +import wiseTheme from './wiseTheme'; + +addons.setConfig({ + theme: wiseTheme +}); diff --git a/.storybook/preview-head.html b/.storybook/preview-head.html new file mode 100644 index 00000000000..05615c940d3 --- /dev/null +++ b/.storybook/preview-head.html @@ -0,0 +1,9 @@ + + + diff --git a/.storybook/preview.ts b/.storybook/preview.ts new file mode 100644 index 00000000000..9c1969c36ad --- /dev/null +++ b/.storybook/preview.ts @@ -0,0 +1,43 @@ +import { moduleMetadata, type Preview } from '@storybook/angular'; +import { setCompodocJson } from '@storybook/addon-docs/angular'; +import docJson from '../documentation.json'; +import { MAT_TABS_CONFIG } from '@angular/material/tabs'; +import docsTheme from './docsTheme'; + +setCompodocJson(docJson); + +const preview: Preview = { + parameters: { + controls: { + matchers: { + color: /(background|color)$/i, + date: /Date$/i + } + }, + docs: { + theme: docsTheme, + toc: { headingSelector: 'h2, h3' } + }, + options: { + storySort: { + method: 'alphabetical', + order: ['Design Tokens & Guidelines', ['Color', 'Typography', 'Layout'], 'Components'] + } + } + }, + decorators: [ + moduleMetadata({ + providers: [ + { + provide: MAT_TABS_CONFIG, + useValue: { + animationDuration: '400ms', + stretchTabs: false + } + } + ] + }) + ] +}; + +export default preview; diff --git a/.storybook/tsconfig.doc.json b/.storybook/tsconfig.doc.json new file mode 100644 index 00000000000..22e282bd5db --- /dev/null +++ b/.storybook/tsconfig.doc.json @@ -0,0 +1,10 @@ +// This tsconfig is used by Compodoc to generate the documentation for the project. +// If Compodoc is not used, this file can be deleted. +{ + "extends": "./tsconfig.json", + // Exclude all files that are not needed for documentation generation. + "exclude": ["../src/test.ts", "../src/**/*.spec.ts", "../src/**/*.stories.ts"], + // Please make sure to include all files from which Compodoc should generate documentation. + "include": ["../src/**/*"], + "files": ["./typings.d.ts"] +} diff --git a/.storybook/tsconfig.json b/.storybook/tsconfig.json new file mode 100644 index 00000000000..bb7495bc29d --- /dev/null +++ b/.storybook/tsconfig.json @@ -0,0 +1,14 @@ +{ + "extends": "../src/tsconfig.app.json", + "compilerOptions": { + "types": ["node"], + "emitDecoratorMetadata": true, + "moduleResolution": "bundler", + "module": "preserve", + "allowSyntheticDefaultImports": true, + "resolveJsonModule": true + }, + "exclude": ["../src/test.ts", "../src/**/*.spec.ts"], + "include": ["../src/**/*.stories.*", "./*.ts"], + "files": ["./typings.d.ts", "../src/polyfills.ts"] +} diff --git a/.storybook/typings.d.ts b/.storybook/typings.d.ts new file mode 100644 index 00000000000..f73d61b396c --- /dev/null +++ b/.storybook/typings.d.ts @@ -0,0 +1,4 @@ +declare module '*.md' { + const content: string; + export default content; +} diff --git a/.storybook/wiseTheme.ts b/.storybook/wiseTheme.ts new file mode 100644 index 00000000000..e96179e6304 --- /dev/null +++ b/.storybook/wiseTheme.ts @@ -0,0 +1,10 @@ +import { create } from 'storybook/theming'; + +export default create({ + base: 'dark', + fontBase: '"Roboto", sans-serif', + brandTitle: 'WISE', + brandUrl: 'https://wise.berkeley.edu', + // brandImage: 'https://storybook.js.org/images/placeholders/350x150.png', + brandTarget: '_self' +}); diff --git a/angular.json b/angular.json index 117431c2345..aa6917e5b20 100644 --- a/angular.json +++ b/angular.json @@ -214,6 +214,39 @@ "**/node_modules/**" ] } + }, + "storybook": { + "builder": "@storybook/angular:start-storybook", + "options": { + "tsConfig": ".storybook/tsconfig.json", + "configDir": ".storybook", + "browserTarget": "wise:build", + "compodoc": true, + "compodocArgs": [ + "-e", + "json", + "-d", + "." + ], + "port": 6006, + "styles": [ "src/style/styles.scss", "src/stories/docs.scss" ] + } + }, + "build-storybook": { + "builder": "@storybook/angular:build-storybook", + "options": { + "tsConfig": ".storybook/tsconfig.json", + "configDir": ".storybook", + "browserTarget": "wise:build", + "compodoc": true, + "compodocArgs": [ + "-e", + "json", + "-d", + "." + ], + "outputDir": "dist/storybook/wise" + } } }, "i18n": { @@ -289,4 +322,4 @@ "cli": { "analytics": false } -} +} \ No newline at end of file diff --git a/documentation.json b/documentation.json new file mode 100644 index 00000000000..193cf7f5537 --- /dev/null +++ b/documentation.json @@ -0,0 +1,487175 @@ +{ + "pipes": [ + { + "name": "FileSizePipe", + "id": "pipe-FileSizePipe-d5c8dcf556f68d668ac7bedb506063fcbe4ab3e98369c7ae1455626009a0ec7605e14f8eed2b881e2b8bcb3aaaf147b627d2468d61bec50f2e565d165bf21c0b", + "file": "src/assets/wise5/authoringTool/file-size/filesize.pipe.ts", + "type": "pipe", + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "properties": [], + "methods": [ + { + "name": "transform", + "args": [ + { + "name": "bytes", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 5, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "bytes", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "standalone": false, + "ngname": "fileSize", + "sourceCode": "import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({ name: 'fileSize' })\nexport class FileSizePipe implements PipeTransform {\n transform(bytes: number): string {\n if (isNaN(bytes) || bytes === 0) return '0 Bytes';\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];\n const i = Math.floor(Math.log(bytes) / Math.log(1024));\n return `${parseFloat((bytes / Math.pow(1024, i)).toFixed(2))} ${sizes[i]}`;\n }\n}\n" + }, + { + "name": "SafeUrl", + "id": "pipe-SafeUrl-fc001ef2201389c7a91a4fe3404ee9879872a7aa2b6b9edffb430ad8eabeab8017e1b74cdd5be48eaf65682c7f37c3eda3f942ba54adebbb0aab4335009e6208", + "file": "src/assets/wise5/directives/safeUrl/safe-url.pipe.ts", + "type": "pipe", + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "properties": [], + "methods": [ + { + "name": "transform", + "args": [ + { + "name": "url", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 7, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "url", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "standalone": false, + "ngname": "safeUrl", + "sourceCode": "import { Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@Pipe({ name: 'safeUrl' })\nexport class SafeUrl implements PipeTransform {\n constructor(private sanitizer: DomSanitizer) {}\n transform(url: string) {\n return this.sanitizer.bypassSecurityTrustResourceUrl(url);\n }\n}\n" + } + ], + "interfaces": [ + { + "name": "AiChatContent", + "id": "interface-AiChatContent-0023e00428f5e21002374efb4e9aea10437857f1df9c31685f4c04f7cb6b61ac9229c80a749e5c17aaf853b8d8f7dd0d93bd53915ff27546ce3d76215d28c273", + "file": "src/assets/wise5/components/aiChat/AiChatContent.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "interface", + "sourceCode": "import { ComponentContent } from '../../common/ComponentContent';\nimport { ComputerAvatarComponentContent } from '../../common/computer-avatar/computer-avatar-component-content';\n\nexport interface AiChatContent extends ComponentContent, ComputerAvatarComponentContent {\n model: 'gpt-3.5-turbo' | 'gpt-4';\n systemPrompt: string;\n}\n", + "properties": [ + { + "name": "model", + "deprecated": false, + "deprecationMessage": "", + "type": "\"gpt-3.5-turbo\" | \"gpt-4\"", + "indexKey": "", + "optional": false, + "description": "", + "line": 5 + }, + { + "name": "systemPrompt", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 6 + } + ], + "indexSignatures": [], + "kind": 172, + "methods": [], + "extends": [ + "ComponentContent", + "ComputerAvatarComponentContent" + ] + }, + { + "name": "AssetChooserDialogData", + "id": "interface-AssetChooserDialogData-bc189c301dcb834f6a475c3709f9d88fee64ccde8e5eb995d45d41e5e78108a3e33c23e22d8db83f13c2615d2fce9190c21e1fc9105c7c0a54f028b78e19ca0e", + "file": "src/assets/wise5/authoringTool/project-asset-authoring/asset-chooser-dialog-data.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "interface", + "sourceCode": "export interface AssetChooserDialogData {\n componentId: string;\n isPopup: boolean;\n nodeId: string;\n projectId: number;\n target: string;\n targetObject: any;\n}\n", + "properties": [ + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 2 + }, + { + "name": "isPopup", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 3 + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 4 + }, + { + "name": "projectId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 5 + }, + { + "name": "target", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 6 + }, + { + "name": "targetObject", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 7 + } + ], + "indexSignatures": [], + "kind": 172, + "methods": [], + "extends": [] + }, + { + "name": "AudioOscillatorStudentData", + "id": "interface-AudioOscillatorStudentData-64bbb5cd75ee0d28ab051712ec6000aa85a8e8a64c9ccf09aeb6c9dbdc29de7d2e4bbe250bf7db55f760ad46de6a721c96261ffb135e9ada1538047a5b90ccb1", + "file": "src/assets/wise5/components/audioOscillator/AudioOscillatorStudentData.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "interface", + "sourceCode": "export interface AudioOscillatorStudentData {\n amplitudesPlayed: number[];\n amplitudesPlayedSorted: number[];\n frequenciesPlayed: number[];\n frequenciesPlayedSorted: number[];\n maxAmplitudePlayed: number;\n maxFrequencyPlayed: number;\n minAmplitudePlayed: number;\n minFrequencyPlayed: number;\n numberOfAmplitudesPlayed: number;\n numberOfFrequenciesPlayed: number;\n numberOfUniqueAmplitudesPlayed: number;\n numberOfUniqueFrequenciesPlayed: number;\n submitCounter: number;\n}\n", + "properties": [ + { + "name": "amplitudesPlayed", + "deprecated": false, + "deprecationMessage": "", + "type": "number[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 2 + }, + { + "name": "amplitudesPlayedSorted", + "deprecated": false, + "deprecationMessage": "", + "type": "number[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 3 + }, + { + "name": "frequenciesPlayed", + "deprecated": false, + "deprecationMessage": "", + "type": "number[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 4 + }, + { + "name": "frequenciesPlayedSorted", + "deprecated": false, + "deprecationMessage": "", + "type": "number[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 5 + }, + { + "name": "maxAmplitudePlayed", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 6 + }, + { + "name": "maxFrequencyPlayed", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 7 + }, + { + "name": "minAmplitudePlayed", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 8 + }, + { + "name": "minFrequencyPlayed", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 9 + }, + { + "name": "numberOfAmplitudesPlayed", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 10 + }, + { + "name": "numberOfFrequenciesPlayed", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 11 + }, + { + "name": "numberOfUniqueAmplitudesPlayed", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 12 + }, + { + "name": "numberOfUniqueFrequenciesPlayed", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 13 + }, + { + "name": "submitCounter", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 14 + } + ], + "indexSignatures": [], + "kind": 172, + "methods": [], + "extends": [] + }, + { + "name": "AuthorBranchParams", + "id": "interface-AuthorBranchParams-7ffec97c3103e38f0a597d6cd3a9f7d3e3ca8b7d593e5e6918e154681f750c3767335d71572099d44aa56898fb1ca8e8b647b612d9b9efbefc4a880fa4996149", + "file": "src/assets/wise5/common/AuthorBranchParams.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "interface", + "sourceCode": "export interface AuthorBranchParams {\n branchStepId: string;\n componentId?: string;\n criteria: string;\n mergeStepId: string;\n nodeId?: string;\n pathCount: number;\n paths?: string[];\n}\n", + "properties": [ + { + "name": "branchStepId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 2 + }, + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": true, + "description": "", + "line": 3 + }, + { + "name": "criteria", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 4 + }, + { + "name": "mergeStepId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 5 + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": true, + "description": "", + "line": 6 + }, + { + "name": "pathCount", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 7 + }, + { + "name": "paths", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": true, + "description": "", + "line": 8 + } + ], + "indexSignatures": [], + "kind": 172, + "methods": [], + "extends": [] + }, + { + "name": "BranchCriteria", + "id": "interface-BranchCriteria-471153844557429ebcf68888058d3e18ac94713b6b999eae07c3400327e58f8733783ee61ab294be6a1b3bf600da76941408ce824ed64916e8d21021c134a2ea", + "file": "src/app/domain/branchCriteria.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "interface", + "sourceCode": "export const CHOICE_CHOSEN_VALUE = 'choiceChosen';\nexport const RANDOM_VALUE = 'random';\nexport const SCORE_VALUE = 'score';\nexport const WORKGROUP_ID_VALUE = 'workgroupId';\n\nexport interface BranchCriteria {\n text: string;\n value: string;\n}\n\nexport const BRANCH_CRITERIA: BranchCriteria[] = [\n {\n text: $localize`Workgroup ID`,\n value: WORKGROUP_ID_VALUE\n },\n {\n text: $localize`Score`,\n value: SCORE_VALUE\n },\n {\n text: $localize`Choice Chosen`,\n value: CHOICE_CHOSEN_VALUE\n },\n {\n text: $localize`Random`,\n value: RANDOM_VALUE\n }\n];\n", + "properties": [ + { + "name": "text", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 7 + }, + { + "name": "value", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 8 + } + ], + "indexSignatures": [], + "kind": 172, + "methods": [], + "extends": [] + }, + { + "name": "Color", + "id": "interface-Color-e051bb891c64cb7e315cbe2b98bb59bb22d7a7275815b783bc8ceec7b4d9021a1b2b64246e9ffb55531842692af7bcaa4210d20f3216e4f59402391a7b89a490", + "file": "src/stories/chips/chips-input/chips-input.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "interface", + "sourceCode": "import { LiveAnnouncer } from '@angular/cdk/a11y';\nimport { COMMA, ENTER } from '@angular/cdk/keycodes';\nimport { ChangeDetectionStrategy, Component, inject, signal } from '@angular/core';\nimport { MatChipEditedEvent, MatChipInputEvent, MatChipsModule } from '@angular/material/chips';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\n\nexport interface Color {\n name: string;\n}\n\n@Component({\n selector: 'chips-input',\n templateUrl: 'chips-input.component.html',\n imports: [MatFormFieldModule, MatChipsModule, MatIconModule],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ChipsInputComponent {\n readonly addOnBlur = true;\n readonly separatorKeysCodes = [ENTER, COMMA] as const;\n readonly colors = signal([{ name: 'Blue' }, { name: 'Red' }, { name: 'Green' }]);\n readonly announcer = inject(LiveAnnouncer);\n\n add(event: MatChipInputEvent): void {\n const value = (event.value || '').trim();\n if (value) {\n this.colors.update((colors) => [...colors, { name: value }]);\n }\n event.chipInput!.clear();\n }\n\n remove(color: Color): void {\n this.colors.update((colors) => {\n const index = colors.indexOf(color);\n if (index < 0) {\n return colors;\n }\n colors.splice(index, 1);\n this.announcer.announce(`Removed ${color.name}`);\n return [...colors];\n });\n }\n\n edit(color: Color, event: MatChipEditedEvent) {\n const value = event.value.trim();\n if (!value) {\n this.remove(color);\n return;\n }\n this.colors.update((colors) => {\n const index = colors.indexOf(color);\n if (index >= 0) {\n colors[index].name = value;\n return [...colors];\n }\n return colors;\n });\n }\n}\n", + "properties": [ + { + "name": "name", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 9 + } + ], + "indexSignatures": [], + "kind": 172, + "methods": [], + "extends": [] + }, + { + "name": "CompletionCounter", + "id": "interface-CompletionCounter-7aa78242d203db42f3544aa21c22f61afb3d79c84b1191e656235101e0465c88cc385a90a13ce9c41be742ced4dd1341ec2dc886ba0bec08c21c2105aeb38393", + "file": "src/assets/wise5/common/CompletionCounter.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "interface", + "sourceCode": "export interface CompletionCounter {\n numCompleted: number;\n numTotal: number;\n}\n", + "properties": [ + { + "name": "numCompleted", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 2 + }, + { + "name": "numTotal", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 3 + } + ], + "indexSignatures": [], + "kind": 172, + "methods": [], + "extends": [] + }, + { + "name": "CompletionCriteria", + "id": "interface-CompletionCriteria-95ddc6433ae80513adaed4b5ffae138c4a6ee3e3d25c987e960f47e73c72b9f62f38e142c1c996b5b0b2e8bc2dbd2755a43bae81b3f4ad3627ae62fdc322aac6", + "file": "src/assets/wise5/components/openResponse/openResponseCompletionCriteriaService.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "interface", + "sourceCode": "import { Injectable } from '@angular/core';\n\nexport interface CompletionCriteria {\n inOrder: boolean;\n criteria: CompletionCriterion[];\n}\n\ninterface CompletionCriterion {\n name: string;\n nodeId: string;\n componentId: string;\n}\n\n@Injectable()\nexport class OpenResponseCompletionCriteriaService {\n isSatisfied(studentData: any, completionCriteria: CompletionCriteria): boolean {\n if (completionCriteria.inOrder) {\n return this.isInOrderCompletionCriteriaSatisfied(studentData, completionCriteria);\n }\n return true;\n }\n\n private isInOrderCompletionCriteriaSatisfied(\n studentData: any,\n completionCriteria: CompletionCriteria\n ): boolean {\n let result = true;\n let tempTimestamp = 0;\n for (const completionCriterion of completionCriteria.criteria) {\n const functionName = completionCriterion.name;\n if (functionName == 'isSubmitted') {\n const tempComponentState = this.getComponentStateSubmittedAfter(\n studentData,\n completionCriterion.nodeId,\n completionCriterion.componentId,\n tempTimestamp\n );\n if (tempComponentState == null) {\n return false;\n } else {\n tempTimestamp = tempComponentState.serverSaveTime;\n }\n } else if (functionName == 'isSaved') {\n const tempComponentState = this.getComponentStateSavedAfter(\n studentData,\n completionCriterion.nodeId,\n completionCriterion.componentId,\n tempTimestamp\n );\n if (tempComponentState == null) {\n return false;\n } else {\n tempTimestamp = tempComponentState.serverSaveTime;\n }\n } else if (functionName == 'isVisited') {\n const tempEvent = this.getVisitEventAfter(\n studentData,\n completionCriterion.nodeId,\n tempTimestamp\n );\n if (tempEvent == null) {\n return false;\n } else {\n tempTimestamp = tempEvent.serverSaveTime;\n }\n }\n }\n return result;\n }\n\n private getComponentStateSubmittedAfter(\n studentData: any,\n nodeId: string,\n componentId: string,\n timestamp: number\n ): any {\n for (const componentState of studentData.componentStates) {\n if (\n componentState.nodeId === nodeId &&\n componentState.componentId === componentId &&\n componentState.serverSaveTime > timestamp &&\n componentState.isSubmit\n ) {\n return componentState;\n }\n }\n return null;\n }\n\n private getComponentStateSavedAfter(\n studentData: any,\n nodeId: string,\n componentId: string,\n timestamp: number\n ): any {\n for (const componentState of studentData.componentStates) {\n if (\n componentState.nodeId === nodeId &&\n componentState.componentId === componentId &&\n componentState.serverSaveTime > timestamp\n ) {\n return componentState;\n }\n }\n return null;\n }\n\n private getVisitEventAfter(studentData: any, nodeId: string, timestamp: number): any {\n for (const tempEvent of studentData.events) {\n if (\n tempEvent.nodeId === nodeId &&\n tempEvent.serverSaveTime > timestamp &&\n tempEvent.event === 'nodeEntered'\n ) {\n return tempEvent;\n }\n }\n return null;\n }\n}\n", + "properties": [ + { + "name": "criteria", + "deprecated": false, + "deprecationMessage": "", + "type": "CompletionCriterion[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 5 + }, + { + "name": "inOrder", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 4 + } + ], + "indexSignatures": [], + "kind": 172, + "methods": [], + "extends": [] + }, + { + "name": "CompletionCriterion", + "id": "interface-CompletionCriterion-95ddc6433ae80513adaed4b5ffae138c4a6ee3e3d25c987e960f47e73c72b9f62f38e142c1c996b5b0b2e8bc2dbd2755a43bae81b3f4ad3627ae62fdc322aac6", + "file": "src/assets/wise5/components/openResponse/openResponseCompletionCriteriaService.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "interface", + "sourceCode": "import { Injectable } from '@angular/core';\n\nexport interface CompletionCriteria {\n inOrder: boolean;\n criteria: CompletionCriterion[];\n}\n\ninterface CompletionCriterion {\n name: string;\n nodeId: string;\n componentId: string;\n}\n\n@Injectable()\nexport class OpenResponseCompletionCriteriaService {\n isSatisfied(studentData: any, completionCriteria: CompletionCriteria): boolean {\n if (completionCriteria.inOrder) {\n return this.isInOrderCompletionCriteriaSatisfied(studentData, completionCriteria);\n }\n return true;\n }\n\n private isInOrderCompletionCriteriaSatisfied(\n studentData: any,\n completionCriteria: CompletionCriteria\n ): boolean {\n let result = true;\n let tempTimestamp = 0;\n for (const completionCriterion of completionCriteria.criteria) {\n const functionName = completionCriterion.name;\n if (functionName == 'isSubmitted') {\n const tempComponentState = this.getComponentStateSubmittedAfter(\n studentData,\n completionCriterion.nodeId,\n completionCriterion.componentId,\n tempTimestamp\n );\n if (tempComponentState == null) {\n return false;\n } else {\n tempTimestamp = tempComponentState.serverSaveTime;\n }\n } else if (functionName == 'isSaved') {\n const tempComponentState = this.getComponentStateSavedAfter(\n studentData,\n completionCriterion.nodeId,\n completionCriterion.componentId,\n tempTimestamp\n );\n if (tempComponentState == null) {\n return false;\n } else {\n tempTimestamp = tempComponentState.serverSaveTime;\n }\n } else if (functionName == 'isVisited') {\n const tempEvent = this.getVisitEventAfter(\n studentData,\n completionCriterion.nodeId,\n tempTimestamp\n );\n if (tempEvent == null) {\n return false;\n } else {\n tempTimestamp = tempEvent.serverSaveTime;\n }\n }\n }\n return result;\n }\n\n private getComponentStateSubmittedAfter(\n studentData: any,\n nodeId: string,\n componentId: string,\n timestamp: number\n ): any {\n for (const componentState of studentData.componentStates) {\n if (\n componentState.nodeId === nodeId &&\n componentState.componentId === componentId &&\n componentState.serverSaveTime > timestamp &&\n componentState.isSubmit\n ) {\n return componentState;\n }\n }\n return null;\n }\n\n private getComponentStateSavedAfter(\n studentData: any,\n nodeId: string,\n componentId: string,\n timestamp: number\n ): any {\n for (const componentState of studentData.componentStates) {\n if (\n componentState.nodeId === nodeId &&\n componentState.componentId === componentId &&\n componentState.serverSaveTime > timestamp\n ) {\n return componentState;\n }\n }\n return null;\n }\n\n private getVisitEventAfter(studentData: any, nodeId: string, timestamp: number): any {\n for (const tempEvent of studentData.events) {\n if (\n tempEvent.nodeId === nodeId &&\n tempEvent.serverSaveTime > timestamp &&\n tempEvent.event === 'nodeEntered'\n ) {\n return tempEvent;\n }\n }\n return null;\n }\n}\n", + "properties": [ + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 11 + }, + { + "name": "name", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 9 + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 10 + } + ], + "indexSignatures": [], + "kind": 172, + "methods": [], + "extends": [] + }, + { + "name": "ComponentContent", + "id": "interface-ComponentContent-f3853b7fdfa8bf9c916899db687932fba3110b6b5007cc7e949c5b4b695e2745fd30b8088a2670dabb44ed204851941f86e86e73640d0b84730a33812d431395", + "file": "src/assets/wise5/common/ComponentContent.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "interface", + "sourceCode": "import { CRaterRubric } from '../components/common/cRater/CRaterRubric';\nimport { QuestionBank } from '../components/peerChat/peer-chat-question-bank/QuestionBank';\nimport { DynamicPrompt } from '../directives/dynamic-prompt/DynamicPrompt';\n\nexport interface ComponentContent {\n id: string;\n connectedComponents?: any[];\n constraints?: any[];\n cRaterRubric?: CRaterRubric;\n dynamicPrompt?: DynamicPrompt;\n excludeFromTotalScore?: boolean;\n maxScore?: number;\n maxSubmitCount?: number;\n prompt?: string;\n questionBank?: QuestionBank;\n rubric?: string;\n showSaveButton?: boolean;\n showSubmitButton?: boolean;\n type: string;\n}\n\nexport function hasConnectedComponent(\n content: ComponentContent,\n connectedComponentType: 'importWork' | 'showWork'\n): boolean {\n return (\n content.connectedComponents != null &&\n content.connectedComponents.some((c) => c.type === connectedComponentType)\n );\n}\n", + "properties": [ + { + "name": "connectedComponents", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": true, + "description": "", + "line": 7 + }, + { + "name": "constraints", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": true, + "description": "", + "line": 8 + }, + { + "name": "cRaterRubric", + "deprecated": false, + "deprecationMessage": "", + "type": "CRaterRubric", + "indexKey": "", + "optional": true, + "description": "", + "line": 9 + }, + { + "name": "dynamicPrompt", + "deprecated": false, + "deprecationMessage": "", + "type": "DynamicPrompt", + "indexKey": "", + "optional": true, + "description": "", + "line": 10 + }, + { + "name": "excludeFromTotalScore", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": true, + "description": "", + "line": 11 + }, + { + "name": "id", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 6 + }, + { + "name": "maxScore", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": true, + "description": "", + "line": 12 + }, + { + "name": "maxSubmitCount", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": true, + "description": "", + "line": 13 + }, + { + "name": "prompt", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": true, + "description": "", + "line": 14 + }, + { + "name": "questionBank", + "deprecated": false, + "deprecationMessage": "", + "type": "QuestionBank", + "indexKey": "", + "optional": true, + "description": "", + "line": 15 + }, + { + "name": "rubric", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": true, + "description": "", + "line": 16 + }, + { + "name": "showSaveButton", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": true, + "description": "", + "line": 17 + }, + { + "name": "showSubmitButton", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": true, + "description": "", + "line": 18 + }, + { + "name": "type", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 19 + } + ], + "indexSignatures": [], + "kind": 172, + "methods": [], + "extends": [] + }, + { + "name": "ComponentDataExportParams", + "id": "interface-ComponentDataExportParams-508f44bf03c5933e06e14fa213abdc2733bf6bc93b492c3c68ccfc90df803497db5e070e6d99a690de547ca987c94ff3f1e78eb12055ecb34831fdf6450d3e9a", + "file": "src/assets/wise5/classroomMonitor/dataExport/ComponentDataExportParams.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "interface", + "sourceCode": "export interface ComponentDataExportParams {\n canViewStudentNames: boolean;\n includeOnlySubmits: boolean;\n includeStudentNames: boolean;\n workSelectionType: string;\n}\n", + "properties": [ + { + "name": "canViewStudentNames", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 2 + }, + { + "name": "includeOnlySubmits", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 3 + }, + { + "name": "includeStudentNames", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 4 + }, + { + "name": "workSelectionType", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 5 + } + ], + "indexSignatures": [], + "kind": 172, + "methods": [], + "extends": [] + }, + { + "name": "ComponentStateRequest", + "id": "interface-ComponentStateRequest-1f82c5f8ebdfbc3a6ca126203abc2ef21143878d63a9ef99b2b867c4dc379980971755a650771b961afcd875a15134eff736740cce78ad4654500664aca32fc5", + "file": "src/assets/wise5/components/ComponentStateRequest.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "interface", + "sourceCode": "export interface ComponentStateRequest {\n nodeId: string;\n componentId: string;\n isSubmit: boolean;\n}\n", + "properties": [ + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 3 + }, + { + "name": "isSubmit", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 4 + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 2 + } + ], + "indexSignatures": [], + "kind": 172, + "methods": [], + "extends": [] + }, + { + "name": "ComponentStateWrapper", + "id": "interface-ComponentStateWrapper-d57864071748d8f2dfc750b23d07c05d659e7032c8737868e0b07a7e3802a5d8f417d37ddcefacf9e68bbb087a37bd4f7ba14f0ab65ea1cbac2c75d2b3daf34b", + "file": "src/assets/wise5/components/ComponentStateWrapper.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "interface", + "sourceCode": "export interface ComponentStateWrapper {\n nodeId: string;\n componentId: string;\n componentStatePromise: Promise;\n}\n", + "properties": [ + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 3 + }, + { + "name": "componentStatePromise", + "deprecated": false, + "deprecationMessage": "", + "type": "Promise", + "indexKey": "", + "optional": false, + "description": "", + "line": 4 + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 2 + } + ], + "indexSignatures": [], + "kind": 172, + "methods": [], + "extends": [] + }, + { + "name": "ComputerAvatarComponentContent", + "id": "interface-ComputerAvatarComponentContent-a9ff2be159fee3bfd3361aaa548e354a85247af59ea7c4c7f02254f505cabb270b32c4c1fee0ec9bb21aead6342ac6e37b66003d333b026074f55a4d3ac6d7b3", + "file": "src/assets/wise5/common/computer-avatar/computer-avatar-component-content.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "interface", + "sourceCode": "import { ComputerAvatarSettings } from './ComputerAvatarSettings';\n\nexport interface ComputerAvatarComponentContent {\n computerAvatarSettings: ComputerAvatarSettings;\n isComputerAvatarEnabled: boolean;\n}\n", + "properties": [ + { + "name": "computerAvatarSettings", + "deprecated": false, + "deprecationMessage": "", + "type": "ComputerAvatarSettings", + "indexKey": "", + "optional": false, + "description": "", + "line": 4 + }, + { + "name": "isComputerAvatarEnabled", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 5 + } + ], + "indexSignatures": [], + "kind": 172, + "methods": [], + "extends": [] + }, + { + "name": "ConceptMapContent", + "id": "interface-ConceptMapContent-8a7beb0b24b8cfef6fc60edf39898d0599fafb9f36ef05dd24dbab7811c04a284110a57efedef1911e18e542d1d398f1a77504a599d7941a58f458f41a8d5bfc", + "file": "src/assets/wise5/components/conceptMap/ConceptMapContent.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "interface", + "sourceCode": "import { ComponentContent } from '../../common/ComponentContent';\n\nexport interface ConceptMapContent extends ComponentContent {\n customRuleEvaluator: any;\n links: any[];\n nodes: any[];\n rules?: any[];\n showAutoFeedback: boolean;\n showAutoScore: boolean;\n}\n", + "properties": [ + { + "name": "customRuleEvaluator", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 4 + }, + { + "name": "links", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 5 + }, + { + "name": "nodes", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 6 + }, + { + "name": "rules", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": true, + "description": "", + "line": 7 + }, + { + "name": "showAutoFeedback", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 8 + }, + { + "name": "showAutoScore", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 9 + } + ], + "indexSignatures": [], + "kind": 172, + "methods": [], + "extends": [ + "ComponentContent" + ] + }, + { + "name": "ConstraintEvaluationResult", + "id": "interface-ConstraintEvaluationResult-973ef7aae02a54ea3217f8a47a9a631d91d7d7497f79e9682329a2707ecd8978523d64d605ef9935f7cb80fec6452b34ff518cc3a6a70f43aa5523934b4cfa50", + "file": "src/assets/wise5/common/constraint/ConstraintEvaluationResult.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "interface", + "sourceCode": "export interface ConstraintEvaluationResult {\n isVisible: boolean;\n isVisitable: boolean;\n}\n", + "properties": [ + { + "name": "isVisible", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 2 + }, + { + "name": "isVisitable", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 3 + } + ], + "indexSignatures": [], + "kind": 172, + "methods": [], + "extends": [] + }, + { + "name": "ConstraintStrategy", + "id": "interface-ConstraintStrategy-6b0e2c51061508231762ef84255679ee6fba6044ecf41d6ac8cc2ae5983146a379223dabb5cf0fcac6015501e9746d4d824806635f9a415c75ec42b3b9c175a4", + "file": "src/assets/wise5/common/constraint/strategies/ConstraintStrategy.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "interface", + "sourceCode": "import { EvaluateConstraintContext } from '../EvaluateConstraintContext';\n\nexport interface ConstraintStrategy {\n evaluate(criteria: any): boolean;\n setContext(context: EvaluateConstraintContext): void;\n}\n", + "properties": [], + "indexSignatures": [], + "kind": 174, + "methods": [ + { + "name": "evaluate", + "args": [ + { + "name": "criteria", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 4, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "criteria", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setContext", + "args": [ + { + "name": "context", + "type": "EvaluateConstraintContext", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 5, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "context", + "type": "EvaluateConstraintContext", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "extends": [] + }, + { + "name": "DataExportStrategy", + "id": "interface-DataExportStrategy-e608a7aa01a863ce57f966c887b3db73df71981f1e0206b70ee15f608ff3da6cfd367c609fa387d862a93f8f971e540954314d5f8dbcd5f3a30d724309571a46", + "file": "src/assets/wise5/classroomMonitor/dataExport/strategies/DataExportStrategy.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "interface", + "sourceCode": "import { DataExportContext } from '../DataExportContext';\n\nexport interface DataExportStrategy {\n setDataExportContext(context: DataExportContext);\n export();\n}\n", + "properties": [], + "indexSignatures": [], + "kind": 174, + "methods": [ + { + "name": "export", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 5, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "setDataExportContext", + "args": [ + { + "name": "context", + "type": "DataExportContext", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 4, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "context", + "type": "DataExportContext", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "extends": [] + }, + { + "name": "DialogData", + "id": "interface-DialogData-e4e5c378fa3ac9d5432a68a1c9c4dc5d56eb71b4df8d6037e078301753d76c6fca80aaa0134049c0c10fabd0d8c4acf16ff373046a58f430ebfd672d1ac656a6", + "file": "src/app/domain/dialogData.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "interface", + "sourceCode": "export interface DialogData {\n content: string;\n scroll: boolean;\n title: string;\n}\n", + "properties": [ + { + "name": "content", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 2 + }, + { + "name": "scroll", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 3 + }, + { + "name": "title", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 4 + } + ], + "indexSignatures": [], + "kind": 172, + "methods": [], + "extends": [] + }, + { + "name": "DialogData", + "id": "interface-DialogData-2003e6cb5b8efa69ee21764c034294ffec6faeda7c1700526dbf2196cb80f0c30b40d8887726c113ad5f7193ebfad3ab7c0cb384ee878e718c934cdb88dad491-1", + "file": "src/stories/dialog/dialog-overview/dialog-overview.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "interface", + "sourceCode": "import { ChangeDetectionStrategy, Component, inject, model, signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport {\n MAT_DIALOG_DATA,\n MatDialog,\n MatDialogActions,\n MatDialogClose,\n MatDialogContent,\n MatDialogRef,\n MatDialogTitle\n} from '@angular/material/dialog';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\n\nexport interface DialogData {\n animal: string;\n name: string;\n}\n\n@Component({\n imports: [FormsModule, MatButtonModule, MatFormFieldModule, MatInputModule, MatSelectModule],\n selector: 'dialog-overview',\n styleUrls: ['./dialog-overview.component.scss'],\n templateUrl: './dialog-overview.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DialogOverviewComponent {\n readonly animal = signal('');\n readonly dialog = inject(MatDialog);\n protected dialogWidth: string = 'default';\n readonly name = model('');\n protected widths = [\n { value: 'default', label: 'Default' },\n { value: 'dialog-sm', label: 'Small' },\n { value: 'dialog-md', label: 'Medium' },\n { value: 'dialog-lg', label: 'Large' }\n ];\n\n openDialog(): void {\n const dialogRef = this.dialog.open(DialogOverviewDialog, {\n data: { name: this.name(), animal: this.animal() },\n panelClass: this.dialogWidth === 'default' ? '' : this.dialogWidth\n });\n\n dialogRef.afterClosed().subscribe((result) => {\n console.log('The dialog was closed');\n if (result !== undefined) {\n this.animal.set(result);\n }\n });\n }\n}\n\n@Component({\n imports: [\n MatFormFieldModule,\n MatInputModule,\n FormsModule,\n MatButtonModule,\n MatDialogTitle,\n MatDialogContent,\n MatDialogActions,\n MatDialogClose\n ],\n selector: 'dialog-overview-dialog',\n templateUrl: './dialog-overview-dialog.html'\n})\nexport class DialogOverviewDialog {\n readonly dialogRef = inject(MatDialogRef);\n readonly data = inject(MAT_DIALOG_DATA);\n readonly animal = model(this.data.animal);\n\n cancel(): void {\n this.dialogRef.close();\n }\n}\n", + "properties": [ + { + "name": "animal", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 18 + }, + { + "name": "name", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 19 + } + ], + "indexSignatures": [], + "kind": 172, + "methods": [], + "extends": [], + "isDuplicate": true, + "duplicateId": 1, + "duplicateName": "DialogData-1" + }, + { + "name": "DialogGuidanceContent", + "id": "interface-DialogGuidanceContent-a819301287fddb62111d7339f5f199cf62c5bc808a2eaa17f1f10d8143eda963aaab5d5e0205b0a287e8159e59591bebab5eff6cd600ed92c78c9197930a9686", + "file": "src/assets/wise5/components/dialogGuidance/DialogGuidanceContent.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "interface", + "sourceCode": "import { ComponentContent } from '../../common/ComponentContent';\nimport { ComputerAvatarComponentContent } from '../../common/computer-avatar/computer-avatar-component-content';\nimport { FeedbackRule } from '../common/feedbackRule/FeedbackRule';\n\nexport interface DialogGuidanceContent extends ComponentContent, ComputerAvatarComponentContent {\n feedbackRules: FeedbackRule[];\n itemId: string;\n version?: number;\n}\n", + "properties": [ + { + "name": "feedbackRules", + "deprecated": false, + "deprecationMessage": "", + "type": "FeedbackRule[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 6 + }, + { + "name": "itemId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 7 + }, + { + "name": "version", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": true, + "description": "", + "line": 8 + } + ], + "indexSignatures": [], + "kind": 172, + "methods": [], + "extends": [ + "ComponentContent", + "ComputerAvatarComponentContent" + ] + }, + { + "name": "EmbeddedContent", + "id": "interface-EmbeddedContent-5c194b5ea36c3d4f47b1dcaa937c994dba43d796bafe0276649bd7a996acb9e079803850413b33781c3049b44a320eae66bd73293f1db926ed91e1c41f1ac89e", + "file": "src/assets/wise5/components/embedded/EmbeddedContent.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "interface", + "sourceCode": "import { ComponentContent } from '../../common/ComponentContent';\n\nexport interface EmbeddedContent extends ComponentContent {\n parameters?: any;\n url: string;\n}\n", + "properties": [ + { + "name": "parameters", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": true, + "description": "", + "line": 4 + }, + { + "name": "url", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 5 + } + ], + "indexSignatures": [], + "kind": 172, + "methods": [], + "extends": [ + "ComponentContent" + ] + }, + { + "name": "ExpandEvent", + "id": "interface-ExpandEvent-0752849de8768d01a77f863be118074b43c5bde5e6d3bcd1279af5d00af948c1ec632c149e82cdd466a4d944de8a2800e79a6b829de4490638fdf9bb2c7d65b0", + "file": "src/assets/wise5/authoringTool/domain/expand-event.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "interface", + "sourceCode": "export interface ExpandEvent {\n expanded: boolean;\n id: string;\n}\n", + "properties": [ + { + "name": "expanded", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 2 + }, + { + "name": "id", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 3 + } + ], + "indexSignatures": [], + "kind": 172, + "methods": [], + "extends": [] + }, + { + "name": "GoogleUser", + "id": "interface-GoogleUser-8087b2072f73200ef7968d653dbc8a093ee75252e85efd237b4b01578081451c83942d1f22f409973e9e19a1b6a38f34af627b5b7f611d7ebb03842f416695d5", + "file": "src/app/modules/google-sign-in/GoogleUser.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "interface", + "sourceCode": "export interface GoogleUser {\n email: string;\n name: string;\n sub: string;\n}\n", + "properties": [ + { + "name": "email", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 2 + }, + { + "name": "name", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 3 + }, + { + "name": "sub", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 4 + } + ], + "indexSignatures": [], + "kind": 172, + "methods": [], + "extends": [] + }, + { + "name": "GraphContent", + "id": "interface-GraphContent-481a9cb0e3f5a197a46b231a6727b821acb2ae478fc76411292be032dc81f4757ad3558410ac5dc2e857324e09806c4006c3edc0c0f686544dfcfecb344be317", + "file": "src/assets/wise5/components/graph/GraphContent.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "interface", + "sourceCode": "import { ComponentContent } from '../../common/ComponentContent';\n\nexport interface GraphContent extends ComponentContent {\n backgroundImage?: string;\n hideTrialSelect: boolean;\n highlightXRangeFromZero: boolean;\n saveMouseOverPoints: boolean;\n showMouseXPlotLine: boolean;\n showMouseYPlotLine: boolean;\n subtitle: string;\n useCustomLegend: boolean;\n xAxis: any;\n yAxis: any;\n}\n", + "properties": [ + { + "name": "backgroundImage", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": true, + "description": "", + "line": 4 + }, + { + "name": "hideTrialSelect", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 5 + }, + { + "name": "highlightXRangeFromZero", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 6 + }, + { + "name": "saveMouseOverPoints", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 7 + }, + { + "name": "showMouseXPlotLine", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 8 + }, + { + "name": "showMouseYPlotLine", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 9 + }, + { + "name": "subtitle", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 10 + }, + { + "name": "useCustomLegend", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 11 + }, + { + "name": "xAxis", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 12 + }, + { + "name": "yAxis", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 13 + } + ], + "indexSignatures": [], + "kind": 172, + "methods": [], + "extends": [ + "ComponentContent" + ] + }, + { + "name": "I18NReplaceKey", + "id": "interface-I18NReplaceKey-2b1ff7660544b5c35ab95a60cc1338d30e1087dc17a2a7584dc225336be2d86190836b10ea18140f28620d71b3c82f474b3cfa09285a55cfa3369c686af9e4f6", + "file": "src/assets/wise5/services/copyTranslationsService.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "interface", + "sourceCode": "import { Injectable } from '@angular/core';\nimport { EditTranslationsService } from './editProjectTranslationsService';\nimport { Node } from '../common/Node';\nimport { Observable, forkJoin } from 'rxjs';\nimport { generateRandomKey } from '../common/string/string';\nimport { ComponentContent } from '../common/ComponentContent';\n\ninterface I18NReplaceKey {\n new: string;\n original: string;\n}\n\n@Injectable()\nexport class CopyTranslationsService extends EditTranslationsService {\n tryCopyNodes(nodes: Node[]): void {\n if (this.projectService.getLocale().hasTranslations()) {\n this.copyNodes(nodes);\n }\n }\n\n private async copyNodes(nodes: Node[]): Promise {\n const i18nKeys = nodes.flatMap((node) =>\n node.components.flatMap((component) => this.getI18NKeys(component))\n );\n forkJoin(await this.getSaveTranslationRequests(i18nKeys)).subscribe();\n this.projectService.saveProject();\n }\n\n private async getSaveTranslationRequests(\n i18nKeys: I18NReplaceKey[]\n ): Promise[]> {\n const saveTranslationRequests: Observable[] = [];\n (await this.fetchAllTranslations()).forEach((translations, language) => {\n i18nKeys.forEach((i18nKey) => (translations[i18nKey.new] = translations[i18nKey.original]));\n saveTranslationRequests.push(this.getSaveTranslationRequest(translations, language));\n });\n return saveTranslationRequests;\n }\n\n tryCopyComponents(node: Node, components: ComponentContent[]): void {\n if (this.projectService.getLocale().hasTranslations()) {\n this.copyComponents(\n node,\n components.map((c) => c.id)\n );\n }\n }\n\n private async copyComponents(node: Node, componentIds: string[]): Promise {\n const i18nKeys = node.components\n .filter((component) => componentIds.includes(component.id))\n .flatMap((component) => this.getI18NKeys(component));\n forkJoin(await this.getSaveTranslationRequests(i18nKeys)).subscribe();\n this.projectService.saveProject();\n }\n\n protected getI18NKey(componentElement: object, key: string): I18NReplaceKey {\n const originalI18NKey = componentElement[key].id;\n const newI18NKey = generateRandomKey(30);\n componentElement[key].id = newI18NKey;\n return { original: originalI18NKey, new: newI18NKey };\n }\n}\n", + "properties": [ + { + "name": "new", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 9 + }, + { + "name": "original", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 10 + } + ], + "indexSignatures": [], + "kind": 172, + "methods": [], + "extends": [] + }, + { + "name": "KIIcon", + "id": "interface-KIIcon-508db0df3144860af26bdad86e8e75afb890fb963d917994d43ec7e3aa76fec6d94f776a5d0add72305ba13886d9f93812103e6a3b058c411a1e9fb2b3f76865", + "file": "src/assets/wise5/common/node-icon-chooser-dialog/node-icon-chooser-dialog.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "interface", + "sourceCode": "import { Component, Inject } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';\nimport { TeacherProjectService } from '../../services/teacherProjectService';\nimport { Node } from '../Node';\nimport { CommonModule } from '@angular/common';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatButtonModule } from '@angular/material/button';\nimport { RouterModule } from '@angular/router';\n\ninterface KIIcon {\n imgAlt: string;\n imgLabel: string;\n imgSrc: string;\n}\n\n@Component({\n imports: [\n CommonModule,\n MatButtonModule,\n MatChipsModule,\n MatDialogModule,\n MatDividerModule,\n MatIconModule,\n MatTooltipModule,\n RouterModule\n ],\n selector: 'node-icon-chooser-dialog',\n styleUrl: 'node-icon-chooser-dialog.component.scss',\n templateUrl: 'node-icon-chooser-dialog.component.html'\n})\nexport class NodeIconChooserDialogComponent {\n protected colors = [\n '#66BB6A',\n '#009688',\n '#00B0FF',\n '#1565C0',\n '#673AB7',\n '#AB47BC',\n '#E91E63',\n '#D50000',\n '#F57C00',\n '#FBC02D',\n '#795548',\n '#757575'\n ];\n\n protected fontNames = [\n 'access_time',\n 'alarm',\n 'announcement',\n 'article',\n 'assignment',\n 'assignment_turned_in',\n 'bolt',\n 'book',\n 'bookmark',\n 'build',\n 'chrome_reader_mode',\n 'compare',\n 'create',\n 'dashboard',\n 'description',\n 'developer_board',\n 'domain',\n 'explore',\n 'extension',\n 'fact_check',\n 'favorite',\n 'flash_on',\n 'help',\n 'image',\n 'info',\n 'insert_chart',\n 'gamepad',\n 'lightbulb',\n 'live_tv',\n 'message',\n 'movie',\n 'note_add',\n 'pageview',\n 'palette',\n 'photo_camera',\n 'place',\n 'question_answer',\n 'search',\n 'school',\n 'slideshow',\n 'star',\n 'thumbs_up_down',\n 'trending_up',\n 'verified',\n 'verified_user',\n 'view_list'\n ];\n protected kiIcons: KIIcon[] = [\n {\n imgAlt: $localize`Knowledge Integration elicit ideas`,\n imgLabel: $localize`Elicit Ideas`,\n imgSrc: 'assets/img/icons/ki-color-elicit.svg'\n },\n {\n imgAlt: $localize`Knowledge Integration discover ideas`,\n imgLabel: $localize`Discover Ideas`,\n imgSrc: 'assets/img/icons/ki-color-add.svg'\n },\n {\n imgAlt: $localize`Knowledge Integration distinguish ideas`,\n imgLabel: $localize`Distinguish Ideas`,\n imgSrc: 'assets/img/icons/ki-color-distinguish.svg'\n },\n {\n imgAlt: $localize`Knowledge Integration connect ideas and reflect`,\n imgLabel: $localize`Connect Ideas & Reflect`,\n imgSrc: 'assets/img/icons/ki-color-connect.svg'\n },\n {\n imgAlt: $localize`Knowledge Integration cycle`,\n imgLabel: $localize`KI Cycle`,\n imgSrc: 'assets/img/icons/ki-color-cycle.svg'\n }\n ];\n protected newNodeIcon: any;\n protected node: Node;\n\n constructor(\n @Inject(MAT_DIALOG_DATA) protected data: any,\n public dialogRef: MatDialogRef,\n private projectService: TeacherProjectService\n ) {}\n\n ngOnInit() {\n this.node = this.data.node;\n this.newNodeIcon = Object.assign({}, this.node.getIcon());\n }\n\n chooseFontColor(event: any): void {\n if (event.selected) {\n this.newNodeIcon.type = 'font';\n this.newNodeIcon.color = event.source.value;\n }\n }\n\n chooseFontName(event: any): void {\n if (event.selected) {\n this.newNodeIcon.type = 'font';\n this.newNodeIcon.fontName = event.source.value;\n }\n }\n\n chooseKIIcon(event: any): void {\n if (event.selected) {\n this.newNodeIcon.type = 'img';\n Object.assign(this.newNodeIcon, event.source.value);\n }\n }\n\n save(): void {\n const nodeContent = this.projectService.getNodeById(this.node.id);\n nodeContent.icon = Object.assign(this.node.getIcon(), this.newNodeIcon);\n this.projectService.saveProject();\n this.dialogRef.close();\n }\n}\n", + "properties": [ + { + "name": "imgAlt", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 14 + }, + { + "name": "imgLabel", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 15 + }, + { + "name": "imgSrc", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 16 + } + ], + "indexSignatures": [], + "kind": 172, + "methods": [], + "extends": [] + }, + { + "name": "Language", + "id": "interface-Language-75a01c25629bcd4a3660302e8ceab049e4f699fb462fbb76d9f187806545c5625c2da9b5469dc8879367fe276b5ed5fcdd4751958758e090177511a057c784d5", + "file": "src/app/domain/language.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "interface", + "sourceCode": "export interface Language {\n language: string;\n locale: string;\n}\n", + "properties": [ + { + "name": "language", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 2 + }, + { + "name": "locale", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 3 + } + ], + "indexSignatures": [], + "kind": 172, + "methods": [], + "extends": [] + }, + { + "name": "Language", + "id": "interface-Language-814e60ce430b6efe363d49d12f4277e218a539fb98617ba23272d9a036fa2e35e1fc3ff5d31c6dc2e2d0e0516149adf7b8160b24fb1f2dfa2cf601bf5d69f17a-1", + "file": "src/assets/wise5/services/transcribeService.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "interface", + "sourceCode": "import { Injectable, WritableSignal, signal } from '@angular/core';\nimport { CognitoIdentityClient } from '@aws-sdk/client-cognito-identity';\nimport { fromCognitoIdentityPool } from '@aws-sdk/credential-provider-cognito-identity';\nimport {\n AudioStream,\n LanguageCode,\n TranscribeStreamingClient\n} from '@aws-sdk/client-transcribe-streaming';\nimport MicrophoneStream from 'microphone-stream';\nimport { StartStreamTranscriptionCommand } from '@aws-sdk/client-transcribe-streaming';\nimport { Buffer } from 'buffer';\nimport * as process from 'process';\nimport { ConfigService } from './configService';\nimport { ProjectService } from './projectService';\n\nwindow.process = process;\n// @ts-ignore\nwindow.Buffer = Buffer;\n\nexport interface Language {\n code: LanguageCode;\n name: string;\n}\n\n@Injectable()\nexport class TranscribeService {\n private SAMPLE_RATE = 44100;\n\n private allLanguages: Language[] = [\n { code: 'zh-CN', name: $localize`Chinese (Simplified)` },\n { code: 'en-US', name: $localize`English` },\n { code: 'fr-FR', name: $localize`French` },\n { code: 'de-DE', name: $localize`German` },\n { code: 'it-IT', name: $localize`Italian` },\n { code: 'ja-JP', name: $localize`Japanese` },\n { code: 'ko-KR', name: $localize`Korean` },\n { code: 'pt-BR', name: $localize`Portuguese (Brazilian)` },\n { code: 'es-US', name: $localize`Spanish` }\n ];\n readonly languages: Language[];\n private microphoneStream = undefined;\n private recordingSignal: WritableSignal = signal(false);\n readonly recording = this.recordingSignal.asReadonly();\n private selectedLanguageSignal: WritableSignal = signal({\n code: null,\n name: null\n });\n readonly selectedLanguage = this.selectedLanguageSignal.asReadonly();\n private transcribeClient: TranscribeStreamingClient = undefined;\n\n constructor(private configService: ConfigService, private projectService: ProjectService) {\n const { defaultLanguage, supportedLanguages } = this.projectService.project.speechToText;\n this.selectedLanguageSignal.set({\n code: defaultLanguage,\n name: this.allLanguages.find((language) => language.code === defaultLanguage).name\n });\n this.languages = this.allLanguages.filter((language) =>\n supportedLanguages.includes(language.code)\n );\n }\n\n async startRecording(\n languageCode: LanguageCode,\n callback: (text: string) => void\n ): Promise {\n if (this.microphoneStream || this.transcribeClient) {\n this.stopRecording();\n }\n this.createTranscribeClient();\n this.createMicrophoneStream();\n return await this.startStreaming(languageCode, callback);\n }\n\n stopRecording(): void {\n if (this.microphoneStream) {\n this.microphoneStream.stop();\n this.microphoneStream.destroy();\n this.microphoneStream = undefined;\n }\n if (this.transcribeClient) {\n this.transcribeClient.destroy();\n this.transcribeClient = undefined;\n }\n this.recordingSignal.set(false);\n }\n\n private createTranscribeClient(): void {\n const awsRegion = this.configService.getConfigParam('speechToTextAWSRegion');\n this.transcribeClient = new TranscribeStreamingClient({\n region: awsRegion,\n credentials: fromCognitoIdentityPool({\n client: new CognitoIdentityClient({ region: awsRegion }),\n identityPoolId: this.configService.getConfigParam('speechToTextAWSIdentityPoolId')\n })\n });\n }\n\n private async createMicrophoneStream(): Promise {\n this.microphoneStream = new MicrophoneStream();\n this.microphoneStream.setStream(\n await window.navigator.mediaDevices.getUserMedia({\n video: false,\n audio: true\n })\n );\n }\n\n private async startStreaming(\n languageCode: LanguageCode,\n callback: (text: string) => void\n ): Promise {\n const command = new StartStreamTranscriptionCommand({\n LanguageCode: languageCode,\n MediaEncoding: 'pcm',\n MediaSampleRateHertz: this.SAMPLE_RATE,\n AudioStream: this.getAudioStream()\n });\n this.recordingSignal.set(true);\n const data = await this.transcribeClient.send(command);\n for await (const event of data.TranscriptResultStream) {\n this.processTranscriptResultStreamEvent(event, callback);\n }\n }\n\n private async *getAudioStream(): AsyncIterable {\n for await (const chunk of this.microphoneStream) {\n if (chunk.length <= this.SAMPLE_RATE) {\n yield {\n AudioEvent: {\n AudioChunk: this.encodePCMChunk(chunk)\n }\n };\n }\n }\n }\n\n private encodePCMChunk(chunk: Buffer): Buffer {\n const input = MicrophoneStream.toRaw(chunk);\n let offset = 0;\n const buffer = new ArrayBuffer(input.length * 2);\n const view = new DataView(buffer);\n for (let i = 0; i < input.length; i++, offset += 2) {\n const s = Math.max(-1, Math.min(1, input[i]));\n view.setInt16(offset, s < 0 ? s * 0x8000 : s * 0x7fff, true);\n }\n return Buffer.from(buffer);\n }\n\n private processTranscriptResultStreamEvent(event: any, callback: (text: string) => void): void {\n for (const result of event.TranscriptEvent.Transcript.Results || []) {\n if (result.IsPartial === false) {\n this.processTranscriptResult(result, callback);\n }\n }\n }\n\n private processTranscriptResult(result: any, callback: (text: string) => void): void {\n const noOfResults = result.Alternatives[0].Items.length;\n for (let i = 0; i < noOfResults; i++) {\n let text = result.Alternatives[0].Items[i].Content;\n if (![',', '.', '?', '!', ':', ';'].includes(text)) {\n text = ' ' + text;\n }\n callback(text);\n }\n }\n\n setSelectedLanguage(language: Language): void {\n this.selectedLanguageSignal.set(language);\n }\n}\n", + "properties": [ + { + "name": "code", + "deprecated": false, + "deprecationMessage": "", + "type": "LanguageCode", + "indexKey": "", + "optional": false, + "description": "", + "line": 21 + }, + { + "name": "name", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 22 + } + ], + "indexSignatures": [], + "kind": 172, + "methods": [], + "extends": [], + "isDuplicate": true, + "duplicateId": 1, + "duplicateName": "Language-1" + }, + { + "name": "MatchCdkDragDrop", + "id": "interface-MatchCdkDragDrop-40220df592d845485b10915d40c54558bf83b945c51f0d40832fc478e387e74b05db3fa343f8538186763093fac2c03176f3e3bc52de9cf36332341ea33cc5f9", + "file": "src/assets/wise5/components/match/match-student/MatchCdkDragDrop.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "interface", + "sourceCode": "import { CdkDragDrop } from '@angular/cdk/drag-drop';\n\nexport interface MatchCdkDragDrop\n extends CdkDragDrop {}\n", + "properties": [], + "indexSignatures": [], + "methods": [], + "extends": [ + "CdkDragDrop" + ] + }, + { + "name": "MatchContent", + "id": "interface-MatchContent-d0ba68dc06345047867d031b2b90700f7fa1dfb458ef925bfd4d75c04d07c338f46d2eb2ec0bf017ac39a715f5095dcaa57d0d80c856e68c338db43834da6417", + "file": "src/assets/wise5/components/match/MatchContent.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "interface", + "sourceCode": "import { ComponentContent } from '../../common/ComponentContent';\nimport { Choice } from './choice';\n\nexport interface MatchContent extends ComponentContent {\n buckets: any[];\n canCreateChoices: boolean;\n choiceReuseEnabled: boolean;\n choices: Choice[];\n feedback: any[];\n ordered: boolean;\n}\n", + "properties": [ + { + "name": "buckets", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 5 + }, + { + "name": "canCreateChoices", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 6 + }, + { + "name": "choiceReuseEnabled", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 7 + }, + { + "name": "choices", + "deprecated": false, + "deprecationMessage": "", + "type": "Choice[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 8 + }, + { + "name": "feedback", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 9 + }, + { + "name": "ordered", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 10 + } + ], + "indexSignatures": [], + "kind": 172, + "methods": [], + "extends": [ + "ComponentContent" + ] + }, + { + "name": "MathJaxConfig", + "id": "interface-MathJaxConfig-aa8d39ef2650b2add7523f8cc5560526ce9e3adc045195f6c0f58117e8c3e58beb7419ddc00dd019539a582bb80422c24ffe96de0b24888e042e05ba8b070d0b", + "file": "src/app/math/math.service.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "interface", + "sourceCode": "import { Injectable } from '@angular/core';\nimport { Observable, ReplaySubject, Subject } from 'rxjs';\nimport { NodeService } from '../../assets/wise5/services/nodeService';\n\ninterface MathJaxConfig {\n id: string;\n source: string;\n}\n\ndeclare global {\n interface Window {\n MathJax: {\n typesetPromise: () => void;\n startup: {\n promise: Promise;\n };\n };\n }\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MathService {\n private signal: Subject;\n private mathJax: MathJaxConfig = {\n id: 'MathJaxScript',\n source: 'mathjax/es5/tex-mml-chtml.js'\n };\n\n constructor(private nodeService: NodeService) {\n this.signal = new ReplaySubject();\n void this.registerMathJaxAsync(this.mathJax)\n .then(() => {\n this.signal.next(true);\n })\n .catch((error) => console.error(error));\n this.nodeService.doneRenderingComponent$.subscribe(() => this.renderPage());\n }\n\n private async registerMathJaxAsync(config: MathJaxConfig): Promise {\n return new Promise((resolve: any, reject) => {\n const script: HTMLScriptElement = document.createElement('script');\n script.id = config.id;\n script.type = 'text/javascript';\n script.src = config.source;\n script.crossOrigin = 'anonymous';\n script.async = true;\n script.onload = () => resolve();\n script.onerror = (error) => reject(error);\n document.head.appendChild(script);\n });\n }\n\n ready(): Observable {\n return this.signal;\n }\n\n private renderPage(): void {\n window.MathJax.startup.promise.then(() => {\n window.MathJax.typesetPromise();\n });\n }\n}\n", + "properties": [ + { + "name": "id", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 6 + }, + { + "name": "source", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 7 + } + ], + "indexSignatures": [], + "kind": 172, + "methods": [], + "extends": [] + }, + { + "name": "Milestone", + "id": "interface-Milestone-8f8883f2b95280ace90cd24fff54d77734d9b009ab665d13709dbfd4ab54bf5cd480d3a4bc232c34071ca06c87db693d5c00161d417e135d3ae04133f152fd2c", + "file": "src/app/domain/milestone.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "interface", + "sourceCode": "export interface Milestone {\n id: string;\n nodeId: string;\n componentId: string;\n type: 'milestone' | 'milestoneReport';\n generatedReport?: any;\n generatedRecommendations?: any;\n items: any[];\n isReportAvailable: boolean;\n}\n", + "properties": [ + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 4 + }, + { + "name": "generatedRecommendations", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": true, + "description": "", + "line": 7 + }, + { + "name": "generatedReport", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": true, + "description": "", + "line": 6 + }, + { + "name": "id", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 2 + }, + { + "name": "isReportAvailable", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 9 + }, + { + "name": "items", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 8 + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 3 + }, + { + "name": "type", + "deprecated": false, + "deprecationMessage": "", + "type": "\"milestone\" | \"milestoneReport\"", + "indexKey": "", + "optional": false, + "description": "", + "line": 5 + } + ], + "indexSignatures": [], + "kind": 172, + "methods": [], + "extends": [] + }, + { + "name": "MultipleChoiceContent", + "id": "interface-MultipleChoiceContent-5904816aca2a7d6409d46246e048c89576df32e682962d45eee961744695b1d88d70ab664ef149095132e74b211f27b9bfc02197c9457e06418fd21c4687bc8e", + "file": "src/assets/wise5/components/multipleChoice/MultipleChoiceContent.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "interface", + "sourceCode": "import { ComponentContent } from '../../common/ComponentContent';\nimport { Choice } from './Choice';\n\nexport interface MultipleChoiceContent extends ComponentContent {\n choices: Choice[];\n choiceType: 'checkbox' | 'radio';\n showFeedback: boolean;\n}\n", + "properties": [ + { + "name": "choices", + "deprecated": false, + "deprecationMessage": "", + "type": "Choice[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 5 + }, + { + "name": "choiceType", + "deprecated": false, + "deprecationMessage": "", + "type": "\"checkbox\" | \"radio\"", + "indexKey": "", + "optional": false, + "description": "", + "line": 6 + }, + { + "name": "showFeedback", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 7 + } + ], + "indexSignatures": [], + "kind": 172, + "methods": [], + "extends": [ + "ComponentContent" + ] + }, + { + "name": "NewNodeTemplate", + "id": "interface-NewNodeTemplate-158f516ab26f2a4612fe66caedb049a67b87582d84d7416b7da889743c8b92c517afc68d7c2772525077f47f0a15eb0c1323e44773680381c1c0f3981377f47f", + "file": "src/assets/wise5/authoringTool/addNode/NewNodeTemplate.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "interface", + "sourceCode": "export interface NewNodeTemplate {\n label: string;\n icon: string;\n route: string;\n}\n", + "properties": [ + { + "name": "icon", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 3 + }, + { + "name": "label", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 2 + }, + { + "name": "route", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 4 + } + ], + "indexSignatures": [], + "kind": 172, + "methods": [], + "extends": [] + }, + { + "name": "OpenResponseContent", + "id": "interface-OpenResponseContent-803824b886aa24ad3e6b4c22a5ac388e391b368d629ad06a3c67e414501ef0fe83290a18081e5bb98ff45db5d27524dd071a910a4c604cbbb24d93e4a6e31cb1", + "file": "src/assets/wise5/components/openResponse/OpenResponseContent.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "interface", + "sourceCode": "import { ComponentContent } from '../../common/ComponentContent';\n\nexport interface OpenResponseContent extends ComponentContent {\n completionCriteria: any;\n cRater: any;\n enableCRater: boolean;\n enableNotifications: boolean;\n isStudentAudioRecordingEnabled: boolean;\n maxSubmitCount?: number;\n notificationSettings: any;\n starterSentence: any;\n}\n", + "properties": [ + { + "name": "completionCriteria", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 4 + }, + { + "name": "cRater", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 5 + }, + { + "name": "enableCRater", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 6 + }, + { + "name": "enableNotifications", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 7 + }, + { + "name": "isStudentAudioRecordingEnabled", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 8 + }, + { + "name": "maxSubmitCount", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": true, + "description": "", + "line": 9 + }, + { + "name": "notificationSettings", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 10 + }, + { + "name": "starterSentence", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 11 + } + ], + "indexSignatures": [], + "kind": 172, + "methods": [], + "extends": [ + "ComponentContent" + ] + }, + { + "name": "OutsideUrlContent", + "id": "interface-OutsideUrlContent-040853838b6f08602745df73a0f69714290b03887f797ce8022b796d4f53c1677a48442c3247a153ab15154f166f661deeb7c3e0a2a86ce826f695da529c1cf2", + "file": "src/assets/wise5/components/outsideURL/OutsideUrlContent.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "interface", + "sourceCode": "import { ComponentContent } from '../../common/ComponentContent';\n\nexport interface OutsideUrlContent extends ComponentContent {\n height: number;\n url: string;\n width: number;\n}\n", + "properties": [ + { + "name": "height", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 4 + }, + { + "name": "url", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 5 + }, + { + "name": "width", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 6 + } + ], + "indexSignatures": [], + "kind": 172, + "methods": [], + "extends": [ + "ComponentContent" + ] + }, + { + "name": "PasswordRequirementHarnessFilters", + "id": "interface-PasswordRequirementHarnessFilters-974269e92af75a86ac46a9f3edf9791797806732920536df67093f8a7de689e133fab94777c60fa41e696c468f1a5c0e89090ce2a978160266e4794c3cd2a416", + "file": "src/app/password/password-requirement/password-requirement.harness.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "interface", + "sourceCode": "import {\n BaseHarnessFilters,\n ComponentHarness,\n HarnessPredicate,\n TestElement\n} from '@angular/cdk/testing';\n\ninterface PasswordRequirementHarnessFilters extends BaseHarnessFilters {\n text?: string | RegExp;\n}\n\nexport class PasswordRequirementHarness extends ComponentHarness {\n static hostSelector = 'password-requirement';\n\n static with(\n options: PasswordRequirementHarnessFilters\n ): HarnessPredicate {\n return new HarnessPredicate(PasswordRequirementHarness, options).addOption(\n 'text',\n options.text,\n (harness, text) => {\n return HarnessPredicate.stringMatches(harness.getText(), text);\n }\n );\n }\n\n async getText(): Promise {\n const text = await this.locatorFor('.requirement-text')();\n return text.text();\n }\n\n async isPristine(): Promise {\n const icon = await this.getIcon();\n return icon == null;\n }\n\n async isFail(): Promise {\n return this.iconHasText('close');\n }\n\n async isPass(): Promise {\n return this.iconHasText('done');\n }\n\n private async iconHasText(text: string): Promise {\n const icon = await this.getIcon();\n return (await icon.text()) === text;\n }\n\n private async getIcon(): Promise {\n return await this.locatorForOptional('.mat-icon')();\n }\n}\n", + "properties": [ + { + "name": "text", + "deprecated": false, + "deprecationMessage": "", + "type": "string | RegExp", + "indexKey": "", + "optional": true, + "description": "", + "line": 9 + } + ], + "indexSignatures": [], + "kind": 172, + "methods": [], + "extends": [ + "BaseHarnessFilters" + ] + }, + { + "name": "PeerChatContent", + "id": "interface-PeerChatContent-152731b96e1fe363b90e8063553b4ec50a7df009b48cb1f538a1183bc5d8b99bf83c1947fd3bbf3a05bc49c3ed38dd7224ad73eca94c1c414dcb7edd7a9fd918", + "file": "src/assets/wise5/components/peerChat/PeerChatContent.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "interface", + "sourceCode": "import { ComponentContent } from '../../common/ComponentContent';\n\nexport interface PeerChatContent extends ComponentContent {\n peerGroupingTag: string;\n}\n", + "properties": [ + { + "name": "peerGroupingTag", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 4 + } + ], + "indexSignatures": [], + "kind": 172, + "methods": [], + "extends": [ + "ComponentContent" + ] + }, + { + "name": "PeerGroupingLogic", + "id": "interface-PeerGroupingLogic-822f881ca41cd0df1809d4e6dff592482ef6f2d4df3523a4dbdc5d30a64a274512aa86c2757c77fb67cc0d69b802c1b6b12437d0e12a9675825cad2e89cb0ce5", + "file": "src/assets/wise5/authoringTool/peer-grouping/PeerGroupingLogic.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "interface", + "sourceCode": "export interface PeerGroupingLogic {\n name: string;\n value: string;\n}\n\nexport const DIFFERENT_IDEAS_NAME = $localize`Different Ideas`;\nexport const DIFFERENT_IDEAS_REGEX = /differentIdeas\\(\"(\\w+)\",\\s*\"(\\w+)\"?\"(,\\s*\")?(\\w+)?(\")?\\)/g;\nexport const DIFFERENT_IDEAS_VALUE = 'differentIdeas';\nexport const DIFFERENT_SCORES_NAME = $localize`Different Scores`;\nexport const DIFFERENT_SCORES_REGEX = /differentKIScores\\(\"(\\w+)\",\\s*\"(\\w+)?\"(,\\s*\")?(\\w+)?(\")?\\)/g;\nexport const DIFFERENT_SCORES_VALUE = 'differentKIScores';\n\nexport const AVAILABLE_LOGIC: PeerGroupingLogic[] = [\n { name: $localize`Random`, value: 'random' },\n { name: $localize`Manual`, value: 'manual' },\n { name: DIFFERENT_IDEAS_NAME, value: DIFFERENT_IDEAS_VALUE },\n { name: DIFFERENT_SCORES_NAME, value: DIFFERENT_SCORES_VALUE }\n];\n\nexport const AVAILABLE_MODES: any[] = [\n { name: $localize`Any`, value: 'any' },\n { name: $localize`Maximize`, value: 'maximize' }\n];\n", + "properties": [ + { + "name": "name", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 2 + }, + { + "name": "value", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 3 + } + ], + "indexSignatures": [], + "kind": 172, + "methods": [], + "extends": [] + }, + { + "name": "ProjectAndTagsResponse", + "id": "interface-ProjectAndTagsResponse-eb96ca99c0595b92468b07c64df959e73f4754056f7c14cb4a539e4fa8e8babdf6478a4e29ad14ac0e5360e24358b0d4ec11b66bfe9ad8182a7dc09fd5bf0b7d", + "file": "src/app/domain/projectAndTagsResponse.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "interface", + "sourceCode": "import { Tag } from './tag';\n\nexport interface ProjectAndTagsResponse {\n projectId: number;\n tags: Tag[];\n}\n", + "properties": [ + { + "name": "projectId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 4 + }, + { + "name": "tags", + "deprecated": false, + "deprecationMessage": "", + "type": "Tag[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 5 + } + ], + "indexSignatures": [], + "kind": 172, + "methods": [], + "extends": [] + }, + { + "name": "ProjectAuthoringNodeHarnessFilters", + "id": "interface-ProjectAuthoringNodeHarnessFilters-e1b0fb59461318dd939bcdb76f696e61c89ae52f09d15eeec3876b7f932f7c57f5e71281e04c83fc301a88fa44885476dcfcaba0a340aa91f109be79b30d6d34", + "file": "src/assets/wise5/authoringTool/project-authoring/project-authoring-node.harness.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "interface", + "sourceCode": "import { BaseHarnessFilters, ComponentHarness } from '@angular/cdk/testing';\nimport { NodeIconAndTitleHarness } from '../choose-node-location/node-icon-and-title/node-icon-and-title.harness';\nimport { MatButtonHarness } from '@angular/material/button/testing';\n\nexport interface ProjectAuthoringNodeHarnessFilters extends BaseHarnessFilters {\n title?: string | RegExp;\n}\n\nexport class ProjectAuthoringNodeHarness extends ComponentHarness {\n getMoveButton = this.locatorFor(MatButtonHarness.with({ selector: '[matTooltip^=\"Move\"]' }));\n getDeleteButton = this.locatorFor(MatButtonHarness.with({ selector: '[matTooltip^=\"Delete\"]' }));\n getTitleElement = this.locatorFor(NodeIconAndTitleHarness);\n\n async getTitle(): Promise {\n const stepTitleElement = await this.getTitleElement();\n return await stepTitleElement.getPositionAndTitle();\n }\n}\n", + "properties": [ + { + "name": "title", + "deprecated": false, + "deprecationMessage": "", + "type": "string | RegExp", + "indexKey": "", + "optional": true, + "description": "", + "line": 6 + } + ], + "indexSignatures": [], + "kind": 172, + "methods": [], + "extends": [ + "BaseHarnessFilters" + ] + }, + { + "name": "RawCRaterResponse", + "id": "interface-RawCRaterResponse-8139ae9c5f9fc5956c5f37b72ead33f2ee30a72d92a70d616a40f2f78975d01727cc434c0eedab9cc427d8b504fd9d3cf5073bbf593868488af612d232196f3e", + "file": "src/assets/wise5/components/common/cRater/RawCRaterResponse.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "interface", + "sourceCode": "export interface RawCRaterResponse {\n advisories: string[];\n feedback: any;\n response_id: string;\n scores?: any;\n trait_scores: any;\n}\n", + "properties": [ + { + "name": "advisories", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 7 + }, + { + "name": "feedback", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 8 + }, + { + "name": "response_id", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 9 + }, + { + "name": "scores", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": true, + "description": "", + "line": 10 + }, + { + "name": "trait_scores", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 11 + } + ], + "indexSignatures": [], + "kind": 172, + "description": "

CRaterResponses is the response object from the CRater API.\nThis is different from CRaterResponse, which is the object that WISE creates to store the\nresponse.

\n", + "rawdescription": "\n\nCRaterResponses is the response object from the CRater API.\nThis is different from CRaterResponse, which is the object that WISE creates to store the\nresponse.\n", + "methods": [], + "extends": [] + }, + { + "name": "RunStatus", + "id": "interface-RunStatus-4871f71add9741b4d6c4b924f75e158490b4cd800cd0b8f76f987d6bd274f2b846503747b34e2e524ad40a165e2e42dbf43e02130b63301fe71b502a89a96f1f", + "file": "src/assets/wise5/common/RunStatus.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "interface", + "sourceCode": "export interface RunStatus {\n runId?: any;\n periods: any[];\n}\n", + "properties": [ + { + "name": "periods", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 3 + }, + { + "name": "runId", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": true, + "description": "", + "line": 2 + } + ], + "indexSignatures": [], + "kind": 172, + "methods": [], + "extends": [] + }, + { + "name": "SchoolLevel", + "id": "interface-SchoolLevel-e9f8d03f314a03711fd96e0be4c08a1113257c3c19b89b2dfedaf57650471cddad7b7bf197515b3347bb2d41e42a2c97c1aef2d7b844a73cd12d9fdc2930864f", + "file": "src/app/domain/profile.constants.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "interface", + "sourceCode": "export const schoolLevels: SchoolLevel[] = [\n { code: 'ELEMENTARY_SCHOOL', label: $localize`Elementary School` },\n { code: 'MIDDLE_SCHOOL', label: $localize`Middle School` },\n { code: 'HIGH_SCHOOL', label: $localize`High School` },\n { code: 'COLLEGE', label: $localize`College` },\n { code: 'OTHER', label: $localize`Other` }\n];\n\nexport interface SchoolLevel {\n code: string;\n label: string;\n}\n", + "properties": [ + { + "name": "code", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 10 + }, + { + "name": "label", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 11 + } + ], + "indexSignatures": [], + "kind": 172, + "methods": [], + "extends": [] + }, + { + "name": "SelectNodeEvent", + "id": "interface-SelectNodeEvent-babe51cb9fee946a2173852f3734786ee79beb4874503e231e72e16115457e52b49e3fa898f789eaac825c546e4d3454e3b254e5710bf84252dfbedb1a377f4c", + "file": "src/assets/wise5/authoringTool/domain/select-node-event.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "interface", + "sourceCode": "export interface SelectNodeEvent {\n checked: boolean;\n id: string;\n}\n", + "properties": [ + { + "name": "checked", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 2 + }, + { + "name": "id", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 3 + } + ], + "indexSignatures": [], + "kind": 172, + "methods": [], + "extends": [] + }, + { + "name": "Series", + "id": "interface-Series-609d8928075e536e9612ee5c1ff784c69b899829d4f209356960039095ca9ae97cc10232e44a428abee3f95e10be48fc104a448c8f9647c8ee859fbc73f9e457", + "file": "src/assets/wise5/components/graph/domain/series.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "interface", + "sourceCode": "export interface Series {\n color: string;\n data: any[];\n enableMouseTracking?: boolean;\n name: string;\n type: string;\n yAxis: any;\n}\n", + "properties": [ + { + "name": "color", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 2 + }, + { + "name": "data", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 3 + }, + { + "name": "enableMouseTracking", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": true, + "description": "", + "line": 4 + }, + { + "name": "name", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 5 + }, + { + "name": "type", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 6 + }, + { + "name": "yAxis", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 7 + } + ], + "indexSignatures": [], + "kind": 172, + "methods": [], + "extends": [] + }, + { + "name": "SnackbarData", + "id": "interface-SnackbarData-7515930b3feb4de25762ed5d19f05ef8be9a2b6f2e1091ed6325aed4203989ee0ab4b830af1a9ad41bc641e380d4d587d31b6e80a67a6f9eb070c1b252cd96fe", + "file": "src/stories/snackbar/snackbar-trigger/snackbar-trigger.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "interface", + "sourceCode": "import { Component, inject, model } from '@angular/core';\nimport {\n MAT_SNACK_BAR_DATA,\n MatSnackBar,\n MatSnackBarAction,\n MatSnackBarActions,\n MatSnackBarHorizontalPosition,\n MatSnackBarLabel,\n MatSnackBarRef,\n MatSnackBarVerticalPosition\n} from '@angular/material/snack-bar';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatIconModule } from '@angular/material/icon';\n\nexport interface SnackbarData {\n message: string;\n action: string;\n}\n\n@Component({\n selector: 'snackbar-trigger',\n templateUrl: './snackbar-trigger.component.html',\n imports: [\n MatFormFieldModule,\n MatInputModule,\n MatSelectModule,\n FormsModule,\n MatButtonModule,\n MatCheckboxModule\n ]\n})\nexport class SnackbarTriggerComponent {\n protected message: string = 'Hello world!';\n protected action: string = 'Close';\n protected duration: number = 10;\n protected horizontalPosition: MatSnackBarHorizontalPosition = 'center';\n protected verticalPosition: MatSnackBarVerticalPosition = 'bottom';\n protected useCustomComponent: boolean = false;\n\n constructor(private _snackBar: MatSnackBar) {}\n\n openSnackBar() {\n if (this.useCustomComponent) {\n this._snackBar.openFromComponent(CustomSnackbarComponent, {\n duration: this.duration * 1000,\n horizontalPosition: this.horizontalPosition,\n verticalPosition: this.verticalPosition,\n data: { message: this.message, action: this.action }\n });\n } else {\n this._snackBar.open(this.message, this.action, {\n duration: this.duration * 1000,\n horizontalPosition: this.horizontalPosition,\n verticalPosition: this.verticalPosition\n });\n }\n }\n}\n\n@Component({\n selector: 'custom-snackbar',\n templateUrl: './custom-snackbar.html',\n styles: `\n :host {\n display: flex;\n\n .mat-icon {\n color: var(--mat-sys-error-container);\n }\n }\n `,\n imports: [MatButtonModule, MatIconModule, MatSnackBarLabel, MatSnackBarActions, MatSnackBarAction]\n})\nexport class CustomSnackbarComponent {\n readonly snackBarRef = inject(MatSnackBarRef);\n readonly data = inject(MAT_SNACK_BAR_DATA);\n readonly message = model(this.data.message);\n readonly action = model(this.data.action);\n}\n", + "properties": [ + { + "name": "action", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 22 + }, + { + "name": "message", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 21 + } + ], + "indexSignatures": [], + "kind": 172, + "methods": [], + "extends": [] + }, + { + "name": "StudentAssetRequest", + "id": "interface-StudentAssetRequest-116de3d2d3ac153adc9e04d2048ecf81af1abac317d2575e55316a6114d8e88a1a85110a11a1d4b7913dc7730d95bc8ce15db285a1979d757069b5c1d290b0ba", + "file": "src/assets/wise5/vle/studentAsset/StudentAssetRequest.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "interface", + "sourceCode": "import { Component } from '../../common/Component';\n\nexport interface StudentAssetRequest {\n asset: any;\n component: Component;\n}\n", + "properties": [ + { + "name": "asset", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 4 + }, + { + "name": "component", + "deprecated": false, + "deprecationMessage": "", + "type": "Component", + "indexKey": "", + "optional": false, + "description": "", + "line": 5 + } + ], + "indexSignatures": [], + "kind": 172, + "methods": [], + "extends": [] + }, + { + "name": "TableContent", + "id": "interface-TableContent-b4375915b36097d0c9d0fd2a4ea7a19ab84edf8464fa602a454f8b459a64a8726bbf390528ddb7151441ef4ad5c6b4546dfb2689e4bef37df96d14c48fccb3b7", + "file": "src/assets/wise5/components/table/TableContent.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "interface", + "sourceCode": "import { ComponentContent } from '../../common/ComponentContent';\n\nexport interface TableContent extends ComponentContent {\n dataExplorerDataToColumn: any;\n dataExplorerGraphTypes: any;\n dataExplorerSeriesParams: any;\n enableRowSelection: boolean;\n isDataExplorerAxisLabelsEditable: boolean;\n isDataExplorerEnabled: boolean;\n numColumns: number;\n numDataExplorerSeries: number;\n numDataExplorerYAxis: number;\n numRows: number;\n tableData: any;\n}\n", + "properties": [ + { + "name": "dataExplorerDataToColumn", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 4 + }, + { + "name": "dataExplorerGraphTypes", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 5 + }, + { + "name": "dataExplorerSeriesParams", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 6 + }, + { + "name": "enableRowSelection", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 7 + }, + { + "name": "isDataExplorerAxisLabelsEditable", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 8 + }, + { + "name": "isDataExplorerEnabled", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 9 + }, + { + "name": "numColumns", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 10 + }, + { + "name": "numDataExplorerSeries", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 11 + }, + { + "name": "numDataExplorerYAxis", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 12 + }, + { + "name": "numRows", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 13 + }, + { + "name": "tableData", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 14 + } + ], + "indexSignatures": [], + "kind": 172, + "methods": [], + "extends": [ + "ComponentContent" + ] + }, + { + "name": "Tag", + "id": "interface-Tag-90aaa8af62408ca321895c3eb32c9f206cd94c4b52b908e01ce9b0518291ee179336cb756830e27d5d2169f918c63e5d28ec609b1d729f65ddba35dbea2e6b6f", + "file": "src/app/domain/tag.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "interface", + "sourceCode": "export interface Tag {\n color: string;\n id: number;\n numProjectsWithTag?: number;\n selected?: boolean;\n text: string;\n}\n", + "properties": [ + { + "name": "color", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 2 + }, + { + "name": "id", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 3 + }, + { + "name": "numProjectsWithTag", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": true, + "description": "", + "line": 4 + }, + { + "name": "selected", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": true, + "description": "", + "line": 5 + }, + { + "name": "text", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 6 + } + ], + "indexSignatures": [], + "kind": 172, + "methods": [], + "extends": [] + }, + { + "name": "TeacherRunListItemHarnessFilters", + "id": "interface-TeacherRunListItemHarnessFilters-75d49496356e4f4e25dbb05cd8677203e04ef4403312bfc90bf0a7443baf3797728b5df983e7cc36da1e7733da3a0c83e21ed0231ec47fd564753e4a19518eac", + "file": "src/app/teacher/teacher-run-list-item/teacher-run-list-item.harness.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "interface", + "sourceCode": "import { BaseHarnessFilters, ComponentHarness, HarnessPredicate } from '@angular/cdk/testing';\nimport { MatCheckboxHarness } from '@angular/material/checkbox/testing';\nimport { MatCardHarness } from '@angular/material/card/testing';\nimport { RunMenuHarness } from '../run-menu/run-menu.harness';\n\nexport interface TeacherRunListItemHarnessFilters extends BaseHarnessFilters {\n title?: string | RegExp;\n}\n\nexport class TeacherRunListItemHarness extends ComponentHarness {\n static hostSelector = 'app-teacher-run-list-item';\n protected getCard = this.locatorFor(MatCardHarness);\n protected getCheckbox = this.locatorFor(MatCheckboxHarness);\n protected getMenu = this.locatorFor(RunMenuHarness);\n\n static with(\n options: TeacherRunListItemHarnessFilters\n ): HarnessPredicate {\n return new HarnessPredicate(TeacherRunListItemHarness, options).addOption(\n 'title',\n options.title,\n async (harness, title) => {\n return HarnessPredicate.stringMatches(harness.getRunTitle(), title);\n }\n );\n }\n\n async checkCheckbox(): Promise {\n return (await this.getCheckbox()).check();\n }\n\n async isChecked(): Promise {\n return (await this.getCheckbox()).isChecked();\n }\n\n async clickArchiveMenuButton(): Promise {\n return (await this.getMenu()).clickArchiveMenuButton();\n }\n\n async clickUnarchiveMenuButton(): Promise {\n return (await this.getMenu()).clickUnarchiveMenuButton();\n }\n\n async getRunTitle(): Promise {\n return (await this.getCard()).getTitleText();\n }\n\n async isArchived(): Promise {\n return (await this.getMenu()).hasRestoreMenuButton();\n }\n}\n", + "properties": [ + { + "name": "title", + "deprecated": false, + "deprecationMessage": "", + "type": "string | RegExp", + "indexKey": "", + "optional": true, + "description": "", + "line": 7 + } + ], + "indexSignatures": [], + "kind": 172, + "methods": [], + "extends": [ + "BaseHarnessFilters" + ] + }, + { + "name": "Translations", + "id": "interface-Translations-889f7a9b8d4c2c84e317b119e3ff2ca2a193eb5a64382bd86f3f1c084edb8aafb7470cdb781124644831a7f416edf8a4edef14eae578c51189b3ae731d63cac2", + "file": "src/app/domain/translations.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "interface", + "sourceCode": "export interface Translations extends Record {}\n\nexport interface TranslationValue {\n value: string;\n modified: number;\n}\n", + "properties": [], + "indexSignatures": [], + "methods": [], + "extends": [ + "Record" + ] + }, + { + "name": "TranslationValue", + "id": "interface-TranslationValue-889f7a9b8d4c2c84e317b119e3ff2ca2a193eb5a64382bd86f3f1c084edb8aafb7470cdb781124644831a7f416edf8a4edef14eae578c51189b3ae731d63cac2", + "file": "src/app/domain/translations.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "interface", + "sourceCode": "export interface Translations extends Record {}\n\nexport interface TranslationValue {\n value: string;\n modified: number;\n}\n", + "properties": [ + { + "name": "modified", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 5 + }, + { + "name": "value", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 4 + } + ], + "indexSignatures": [], + "kind": 172, + "methods": [], + "extends": [] + }, + { + "name": "Window", + "id": "interface-Window-aa8d39ef2650b2add7523f8cc5560526ce9e3adc045195f6c0f58117e8c3e58beb7419ddc00dd019539a582bb80422c24ffe96de0b24888e042e05ba8b070d0b", + "file": "src/app/math/math.service.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "interface", + "sourceCode": "import { Injectable } from '@angular/core';\nimport { Observable, ReplaySubject, Subject } from 'rxjs';\nimport { NodeService } from '../../assets/wise5/services/nodeService';\n\ninterface MathJaxConfig {\n id: string;\n source: string;\n}\n\ndeclare global {\n interface Window {\n MathJax: {\n typesetPromise: () => void;\n startup: {\n promise: Promise;\n };\n };\n }\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MathService {\n private signal: Subject;\n private mathJax: MathJaxConfig = {\n id: 'MathJaxScript',\n source: 'mathjax/es5/tex-mml-chtml.js'\n };\n\n constructor(private nodeService: NodeService) {\n this.signal = new ReplaySubject();\n void this.registerMathJaxAsync(this.mathJax)\n .then(() => {\n this.signal.next(true);\n })\n .catch((error) => console.error(error));\n this.nodeService.doneRenderingComponent$.subscribe(() => this.renderPage());\n }\n\n private async registerMathJaxAsync(config: MathJaxConfig): Promise {\n return new Promise((resolve: any, reject) => {\n const script: HTMLScriptElement = document.createElement('script');\n script.id = config.id;\n script.type = 'text/javascript';\n script.src = config.source;\n script.crossOrigin = 'anonymous';\n script.async = true;\n script.onload = () => resolve();\n script.onerror = (error) => reject(error);\n document.head.appendChild(script);\n });\n }\n\n ready(): Observable {\n return this.signal;\n }\n\n private renderPage(): void {\n window.MathJax.startup.promise.then(() => {\n window.MathJax.typesetPromise();\n });\n }\n}\n", + "properties": [ + { + "name": "MathJax", + "deprecated": false, + "deprecationMessage": "", + "type": "literal type", + "indexKey": "", + "optional": false, + "description": "", + "line": 12 + } + ], + "indexSignatures": [], + "kind": 172, + "methods": [], + "extends": [] + } + ], + "injectables": [ + { + "name": "AccessLinkService", + "id": "injectable-AccessLinkService-a3bb58a6728df3842050b8921e77819b9edae1e5403b0c8540839515d283dc811d9bbfcb516da7b27366b483f6cf6349c98764044a1082a599edbf996ced2999", + "file": "src/app/services/accessLinkService.ts", + "properties": [], + "methods": [ + { + "name": "getAccessLinks", + "args": [ + { + "name": "runCode", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "periods", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string[]", + "typeParameters": [], + "line": 8, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "runCode", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "periods", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getPeriodFromAccessLink", + "args": [ + { + "name": "link", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 14, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "link", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Injectable } from '@angular/core';\nimport { ConfigService } from './config.service';\n\n@Injectable()\nexport class AccessLinkService {\n constructor(private configService: ConfigService) {}\n\n getAccessLinks(runCode: string, periods: string[]): string[] {\n const host = this.configService.getWISEHostname() + this.configService.getContextPath();\n const linkBase = `${host}/run-survey/${runCode}-`;\n return periods.map((period) => linkBase + period);\n }\n\n getPeriodFromAccessLink(link: string): string {\n return link.slice(link.lastIndexOf('-') + 1);\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 5, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "type": "injectable" + }, + { + "name": "AchievementService", + "id": "injectable-AchievementService-2cb7719b18b3cf1f437e2732f32092ae3f89b633a11c78a35784717cc19be4d067929bec0fafdb637c2df917da3563f04425dd877ec8873c43c497504ed0b2bd", + "file": "src/assets/wise5/services/achievementService.ts", + "properties": [ + { + "name": "achievementCompleted$", + "defaultValue": "this.achievementCompletedSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "Observable", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "modifierKind": [ + 125 + ] + }, + { + "name": "achievementCompletedSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 123 + ] + }, + { + "name": "debug", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 14 + }, + { + "name": "newStudentAchievement$", + "defaultValue": "this.newStudentAchievementSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "Observable", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "modifierKind": [ + 125 + ] + }, + { + "name": "newStudentAchievementSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "modifierKind": [ + 123 + ] + }, + { + "name": "studentAchievementsByWorkgroupId", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 13 + } + ], + "methods": [ + { + "name": "addOrUpdateStudentAchievement", + "args": [ + { + "name": "studentAchievement", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 114, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nAdd Achievement to local bookkeeping\n", + "description": "

Add Achievement to local bookkeeping

\n", + "jsdoctags": [ + { + "name": { + "pos": 4494, + "end": 4512, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "studentAchievement" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4488, + "end": 4493, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the student achievement to add or update

\n" + } + ] + }, + { + "name": "broadcastAchievementCompleted", + "args": [ + { + "name": "args", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 455, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "args", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "broadcastNewStudentAchievement", + "args": [ + { + "name": "achievement", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 459, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "achievement", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "checkAggregateAchievement", + "args": [ + { + "name": "projectAchievement", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 384, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if the student completed a aggregate achievement\n", + "description": "

Check if the student completed a aggregate achievement

\n", + "jsdoctags": [ + { + "name": { + "pos": 14135, + "end": 14153, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "projectAchievement" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 14129, + "end": 14134, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

an aggregate achievement

\n" + }, + { + "tagName": { + "pos": 14185, + "end": 14191, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether the student completed the aggregate achievement

\n" + } + ] + }, + { + "name": "createAchievementsURLBody", + "args": [ + { + "name": "studentAchievement", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 146, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentAchievement", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createAchievementsURLParams", + "args": [ + { + "name": "workgroupId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "type", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 34, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "workgroupId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "type", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createAggregateAchievementListener", + "args": [ + { + "name": "projectAchievement", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 355, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCreate a listener for an aggregate achievement\n", + "description": "

Create a listener for an aggregate achievement

\n", + "jsdoctags": [ + { + "name": { + "pos": 13032, + "end": 13050, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "projectAchievement" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 13026, + "end": 13031, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the project achievement

\n" + }, + { + "tagName": { + "pos": 13081, + "end": 13087, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

the subscription object that we will use later to unsubscribe from the observable

\n" + } + ] + }, + { + "name": "createListenerFunction", + "args": [ + { + "name": "projectAchievement", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 217, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "projectAchievement", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createNewStudentAchievement", + "args": [ + { + "name": "type", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "achievementId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "data", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + }, + { + "name": "workgroupId", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + } + ], + "optional": false, + "returnType": "{ id: any; type: any; achievementId: any; workgroupId: any; data: any; }", + "typeParameters": [], + "line": 193, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCreates a new student achievement object\n", + "description": "

Creates a new student achievement object

\n", + "jsdoctags": [ + { + "name": { + "pos": 7193, + "end": 7197, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "type" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 7187, + "end": 7192, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

type of achievement ["completion", "milestone", etc]

\n" + }, + { + "name": { + "pos": 7263, + "end": 7276, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "achievementId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 7257, + "end": 7262, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

id of achievement in project content

\n" + }, + { + "name": { + "pos": 7326, + "end": 7330, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "data" + }, + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "pos": 7320, + "end": 7325, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

other extra information about this achievement

\n" + }, + { + "name": { + "pos": 7390, + "end": 7401, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "workgroupId" + }, + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "pos": 7384, + "end": 7389, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

id of workgroup whom this achievement is for

\n" + }, + { + "tagName": { + "pos": 7453, + "end": 7460, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

newly created student achievement object

\n" + } + ] + }, + { + "name": "createStudentAchievement", + "args": [ + { + "name": "achievement", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "data", + "type": "object", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "{}" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 255, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCreate achievement and save to server\n", + "description": "

Create achievement and save to server

\n", + "jsdoctags": [ + { + "name": { + "pos": 9547, + "end": 9558, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "achievement" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 9541, + "end": 9546, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the achievement the student completed

\n" + }, + { + "name": "data", + "type": "object", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "{}", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createStudentWorkSavedListener", + "args": [ + { + "name": "projectAchievement", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 288, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCreate a listener for the component completed achievement\n", + "description": "

Create a listener for the component completed achievement

\n", + "jsdoctags": [ + { + "name": { + "pos": 10755, + "end": 10773, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "projectAchievement" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 10749, + "end": 10754, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the achievement to listen for

\n" + }, + { + "tagName": { + "pos": 10810, + "end": 10816, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

the subscription object that we will use later to unsubscribe from the observable

\n" + } + ] + }, + { + "name": "debugOutput", + "args": [ + { + "name": "str", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 28, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "str", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getAchievementIdToStudentAchievementsMappings", + "args": [], + "optional": false, + "returnType": "{}", + "typeParameters": [], + "line": 445, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet a mapping from achievement id to array of student projectAchievements\nstudent projectAchievements are created when a workgroup completes an achievement.\n", + "description": "

Get a mapping from achievement id to array of student projectAchievements\nstudent projectAchievements are created when a workgroup completes an achievement.

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 16492, + "end": 16498, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

a mapping from achievement id to array of student projectAchievements\nstudent projectAchievements are created when a workgroup completes an achievement.

\n" + } + ] + }, + { + "name": "getStudentAchievementsByAchievementId", + "args": [ + { + "name": "achievementId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "{}", + "typeParameters": [], + "line": 421, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet an array of student projectAchievements for a given achievement id\ncreated when a workgroup completes an achievement.\n", + "description": "

Get an array of student projectAchievements for a given achievement id\ncreated when a workgroup completes an achievement.

\n", + "jsdoctags": [ + { + "name": { + "pos": 15402, + "end": 15415, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "achievementId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 15396, + "end": 15401, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

a 10 character achievement id

\n" + }, + { + "tagName": { + "pos": 15452, + "end": 15458, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

an array of student projectAchievements. student projectAchievements are\ncreated when a workgroup completes an achievement.

\n" + } + ] + }, + { + "name": "getStudentAchievementsByWorkgroupId", + "args": [ + { + "name": "workgroupId", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 402, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet student achievements for a workgroup id\n", + "description": "

Get student achievements for a workgroup id

\n", + "jsdoctags": [ + { + "name": { + "pos": 14680, + "end": 14691, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "workgroupId" + }, + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "pos": 14674, + "end": 14679, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the workgroup id

\n" + }, + { + "tagName": { + "pos": 14715, + "end": 14721, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

an array of student achievements completed by the workgroup

\n" + } + ] + }, + { + "name": "isAchievementCompletedByStudent", + "args": [ + { + "name": "projectAchievement", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 331, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if the student completed a node completed achievement\n", + "description": "

Check if the student completed a node completed achievement

\n", + "jsdoctags": [ + { + "name": { + "pos": 12338, + "end": 12356, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "projectAchievement" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 12332, + "end": 12337, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

a node completed achievement

\n" + }, + { + "tagName": { + "pos": 12392, + "end": 12398, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether the student completed the node completed achievement

\n" + } + ] + }, + { + "name": "isCriterionSatisfied", + "args": [ + { + "name": "satisfyCriterion", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 340, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "satisfyCriterion", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isProjectAchievementSatisfied", + "args": [ + { + "name": "projectAchievement", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 310, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if the student completed a specific achievement\n", + "description": "

Check if the student completed a specific achievement

\n", + "jsdoctags": [ + { + "name": { + "pos": 11608, + "end": 11626, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "projectAchievement" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 11602, + "end": 11607, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

an achievement

\n" + }, + { + "tagName": { + "pos": 11648, + "end": 11654, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether the student completed the achievement

\n" + } + ] + }, + { + "name": "isStudentAchievementExists", + "args": [ + { + "name": "achievementId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 240, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if the student has completed the achievement\n", + "description": "

Check if the student has completed the achievement

\n", + "jsdoctags": [ + { + "name": { + "pos": 9055, + "end": 9068, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "achievementId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 9049, + "end": 9054, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "" + }, + { + "tagName": { + "pos": 9075, + "end": 9081, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether the student has completed the achievement

\n" + } + ] + }, + { + "name": "registerAchievementListeners", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 206, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "retrieveStudentAchievements", + "args": [ + { + "name": "workgroupId", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + }, + { + "name": "type", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 48, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "workgroupId", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + }, + { + "name": "type", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "saveAchievementToServer", + "args": [ + { + "name": "studentAchievement", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 164, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nSaves the achievement for the logged-in user\n", + "description": "

Saves the achievement for the logged-in user

\n", + "jsdoctags": [ + { + "name": { + "pos": 6469, + "end": 6487, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "studentAchievement" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 6463, + "end": 6468, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "" + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "'use strict';\n\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { ConfigService } from './configService';\nimport { ProjectService } from './projectService';\nimport { StudentDataService } from './studentDataService';\nimport { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { CompletionService } from './completionService';\n\n@Injectable()\nexport class AchievementService {\n studentAchievementsByWorkgroupId: any = {};\n debug: boolean = false;\n private achievementCompletedSource: Subject = new Subject();\n public achievementCompleted$: Observable = this.achievementCompletedSource.asObservable();\n private newStudentAchievementSource: Subject = new Subject();\n public newStudentAchievement$: Observable = this.newStudentAchievementSource.asObservable();\n\n constructor(\n private http: HttpClient,\n private completionService: CompletionService,\n private ConfigService: ConfigService,\n private ProjectService: ProjectService,\n private StudentDataService: StudentDataService\n ) {}\n\n debugOutput(str) {\n if (this.debug) {\n console.log(str);\n }\n }\n\n createAchievementsURLParams(workgroupId, type) {\n let params = new HttpParams();\n if (workgroupId != null) {\n params = params.set('workgroupId', workgroupId);\n } else if (this.ConfigService.getMode() !== 'classroomMonitor') {\n params = params.set('workgroupId', this.ConfigService.getWorkgroupId());\n params = params.set('periodId', this.ConfigService.getPeriodId());\n }\n if (type != null) {\n params = params.set('type', type);\n }\n return params;\n }\n\n retrieveStudentAchievements(workgroupId = null, type = null) {\n if (this.ConfigService.isPreview()) {\n const workgroupId = this.ConfigService.getWorkgroupId();\n this.studentAchievementsByWorkgroupId[workgroupId] = [];\n return Promise.resolve(this.studentAchievementsByWorkgroupId);\n } else {\n const url = this.ConfigService.getAchievementsURL();\n const options = {\n params: this.createAchievementsURLParams(workgroupId, type)\n };\n return this.http\n .get(url, options)\n .toPromise()\n .then((studentAchievements: any[]) => {\n for (const studentAchievement of studentAchievements) {\n this.addOrUpdateStudentAchievement(studentAchievement);\n if (this.ConfigService.isStudentRun()) {\n const projectAchievement = this.ProjectService.getAchievementByAchievementId(\n studentAchievement.achievementId\n );\n if (projectAchievement != null) {\n /*\n * set the completed field to true in case we ever\n * need to easily see which projectAchievements the student\n * has completed\n */\n projectAchievement.completed = true;\n if (projectAchievement.deregisterFunction != null) {\n /*\n * the student has completed this achievement\n * so we no longer need to listen for it\n */\n projectAchievement.deregisterFunction();\n this.debugOutput('deregistering ' + projectAchievement.id);\n }\n }\n }\n }\n\n if (this.ConfigService.isStudentRun()) {\n /*\n * Loop through all the projectAchievements and re-evaluate whether the student has\n * completed each when the student loads the VLE. This is to make sure that students\n * never get stuck in a state where they did everything required to complete a certain\n * achievement but some error or bug occurred which prevented their student achievement\n * from being saved and then they end up never being able to complete that achievement.\n */\n for (const projectAchievement of this.ProjectService.getAchievementItems()) {\n if (\n !this.isStudentAchievementExists(projectAchievement.id) &&\n this.isProjectAchievementSatisfied(projectAchievement)\n ) {\n this.createStudentAchievement(projectAchievement);\n }\n }\n this.registerAchievementListeners();\n }\n return this.studentAchievementsByWorkgroupId;\n });\n }\n }\n\n /**\n * Add Achievement to local bookkeeping\n * @param studentAchievement the student achievement to add or update\n */\n addOrUpdateStudentAchievement(studentAchievement) {\n if (studentAchievement != null) {\n const achievementWorkgroupId = studentAchievement.workgroupId;\n if (this.studentAchievementsByWorkgroupId[achievementWorkgroupId] == null) {\n this.studentAchievementsByWorkgroupId[achievementWorkgroupId] = new Array();\n }\n const achievements = this.studentAchievementsByWorkgroupId[achievementWorkgroupId];\n let found = false;\n for (let achievementIndex = 0; achievementIndex < achievements.length; achievementIndex++) {\n let achievement = achievements[achievementIndex];\n if (\n achievement.achievementId != null &&\n achievement.achievementId === studentAchievement.achievementId &&\n achievement.workgroupId != null &&\n achievement.workgroupId === studentAchievement.workgroupId\n ) {\n /*\n * the achievement 10 character alphanumeric id matches and\n * the workgroup id matches so we will update it\n */\n achievements[achievementIndex] = studentAchievement;\n found = true; // remember this so we don't insert later.\n break;\n }\n }\n if (!found) {\n // we did not find the achievement so we will add it to the array\n achievements.push(studentAchievement);\n }\n }\n }\n\n createAchievementsURLBody(studentAchievement) {\n let body = new HttpParams()\n .set('achievementId', studentAchievement.achievementId)\n .set('workgroupId', studentAchievement.workgroupId)\n .set('type', studentAchievement.type);\n if (studentAchievement.id != null) {\n body = body.set('id', studentAchievement.id);\n }\n if (studentAchievement.data != null) {\n body = body.set('data', JSON.stringify(studentAchievement.data));\n }\n return body;\n }\n\n /**\n * Saves the achievement for the logged-in user\n * @param studentAchievement\n */\n saveAchievementToServer(studentAchievement) {\n if (this.ConfigService.isPreview()) {\n return Promise.resolve(studentAchievement);\n } else {\n const url = this.ConfigService.getAchievementsURL();\n const body = this.createAchievementsURLBody(studentAchievement);\n const options = {\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded'\n }\n };\n return this.http\n .post(url, body, options)\n .toPromise()\n .then((achievement: any) => {\n this.addOrUpdateStudentAchievement(achievement);\n return achievement;\n });\n }\n }\n\n /**\n * Creates a new student achievement object\n * @param type type of achievement [\"completion\", \"milestone\", etc]\n * @param achievementId id of achievement in project content\n * @param data other extra information about this achievement\n * @param workgroupId id of workgroup whom this achievement is for\n * @returns newly created student achievement object\n */\n createNewStudentAchievement(type, achievementId, data = null, workgroupId = null) {\n if (workgroupId == null) {\n workgroupId = this.ConfigService.getWorkgroupId();\n }\n return {\n id: null,\n type: type,\n achievementId: achievementId,\n workgroupId: workgroupId,\n data: data\n };\n }\n\n registerAchievementListeners() {\n const projectAchievements = this.ProjectService.getAchievements();\n if (projectAchievements.isEnabled) {\n for (const projectAchievement of projectAchievements.items) {\n if (!this.isStudentAchievementExists(projectAchievement.id)) {\n this.createListenerFunction(projectAchievement);\n }\n }\n }\n }\n\n createListenerFunction(projectAchievement) {\n let deregisterListenerFunction = null;\n if (\n projectAchievement.type === 'milestone' ||\n projectAchievement.type === 'milestoneReport' ||\n projectAchievement.type === 'completion'\n ) {\n deregisterListenerFunction = this.createStudentWorkSavedListener(projectAchievement);\n } else if (projectAchievement.type === 'aggregate') {\n deregisterListenerFunction = this.createAggregateAchievementListener(projectAchievement);\n }\n /*\n * set the deregisterListenerFunction into the project achievement so that we can deregister the\n * listener after the student has completed the achievement\n */\n projectAchievement.deregisterListenerFunction = deregisterListenerFunction;\n }\n\n /**\n * Check if the student has completed the achievement\n * @param achievementId\n * @return whether the student has completed the achievement\n */\n isStudentAchievementExists(achievementId) {\n const workgroupId = this.ConfigService.getWorkgroupId();\n const achievements = this.getStudentAchievementsByWorkgroupId(workgroupId);\n for (const achievement of achievements) {\n if (achievement.achievementId === achievementId) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Create achievement and save to server\n * @param achievement the achievement the student completed\n */\n createStudentAchievement(achievement, data = {}) {\n if (achievement.isVisible) {\n alert(`Congratulations you completed: ${achievement.name}`);\n }\n\n const projectAchievement = this.ProjectService.getAchievementByAchievementId(achievement.id);\n if (projectAchievement != null && projectAchievement.deregisterListenerFunction != null) {\n /*\n * deregister the achievement listener now that the student has\n * completed the achievement\n */\n projectAchievement.deregisterListenerFunction.unsubscribe();\n this.debugOutput('deregistering ' + projectAchievement.id);\n }\n\n const workgroupId = this.ConfigService.getWorkgroupId();\n const newAchievement = this.createNewStudentAchievement(\n achievement.type,\n achievement.id,\n data,\n workgroupId\n );\n const achievements = this.getStudentAchievementsByWorkgroupId(workgroupId);\n achievements.push(newAchievement);\n this.saveAchievementToServer(newAchievement);\n this.broadcastAchievementCompleted({ achievementId: achievement.id });\n }\n\n /**\n * Create a listener for the component completed achievement\n * @param projectAchievement the achievement to listen for\n * @return the subscription object that we will use later to unsubscribe from the observable\n */\n createStudentWorkSavedListener(projectAchievement) {\n this.debugOutput('registering ' + projectAchievement.id);\n return this.StudentDataService.studentWorkSavedToServer$.subscribe((componentState: any) => {\n this.debugOutput(\n 'createStudentWorkSavedListener checking ' +\n projectAchievement.id +\n ' completed ' +\n componentState.nodeId\n );\n if (!this.isStudentAchievementExists(projectAchievement.id)) {\n if (this.isAchievementCompletedByStudent(projectAchievement)) {\n this.createStudentAchievement(projectAchievement);\n }\n }\n });\n }\n\n /**\n * Check if the student completed a specific achievement\n * @param projectAchievement an achievement\n * @return whether the student completed the achievement\n */\n isProjectAchievementSatisfied(projectAchievement) {\n let completed = false;\n if (projectAchievement != null) {\n if (\n projectAchievement.type === 'milestone' ||\n projectAchievement.type === 'milestoneReport' ||\n projectAchievement.type === 'completion'\n ) {\n completed = this.isAchievementCompletedByStudent(projectAchievement);\n } else if (projectAchievement.type === 'aggregate') {\n completed = this.checkAggregateAchievement(projectAchievement);\n }\n }\n return completed;\n }\n\n /**\n * Check if the student completed a node completed achievement\n * @param projectAchievement a node completed achievement\n * @return whether the student completed the node completed achievement\n */\n isAchievementCompletedByStudent(projectAchievement) {\n for (const satisfyCriterion of projectAchievement.satisfyCriteria) {\n if (!this.isCriterionSatisfied(satisfyCriterion)) {\n return false;\n }\n }\n return true;\n }\n\n isCriterionSatisfied(satisfyCriterion) {\n if (satisfyCriterion.name === 'isCompleted') {\n return this.completionService.isCompleted(\n satisfyCriterion.nodeId,\n satisfyCriterion.componentId\n );\n }\n return false;\n }\n\n /**\n * Create a listener for an aggregate achievement\n * @param projectAchievement the project achievement\n * @return the subscription object that we will use later to unsubscribe from the observable\n */\n createAggregateAchievementListener(projectAchievement) {\n const thisAchievementService = this;\n const thisAchievement = projectAchievement;\n this.debugOutput('registering ' + projectAchievement.id);\n return this.achievementCompleted$.subscribe((args: any) => {\n const projectAchievement = thisAchievement;\n if (projectAchievement != null) {\n this.debugOutput(\n 'createAggregateAchievementListener checking ' +\n projectAchievement.id +\n ' completed ' +\n args.achievementId\n );\n const id = projectAchievement.id;\n if (!this.isStudentAchievementExists(id)) {\n const completed = this.checkAggregateAchievement(projectAchievement);\n if (completed) {\n thisAchievementService.createStudentAchievement(projectAchievement);\n }\n }\n }\n });\n }\n\n /**\n * Check if the student completed a aggregate achievement\n * @param projectAchievement an aggregate achievement\n * @return whether the student completed the aggregate achievement\n */\n checkAggregateAchievement(projectAchievement) {\n const params = projectAchievement.params;\n if (params != null) {\n const achievementIds = params.achievementIds;\n for (const achievementId of achievementIds) {\n if (!this.isStudentAchievementExists(achievementId)) {\n return false;\n }\n }\n }\n return true;\n }\n\n /**\n * Get student achievements for a workgroup id\n * @param workgroupId the workgroup id\n * @return an array of student achievements completed by the workgroup\n */\n getStudentAchievementsByWorkgroupId(workgroupId = null) {\n if (workgroupId == null) {\n workgroupId = this.ConfigService.getWorkgroupId();\n }\n if (this.studentAchievementsByWorkgroupId[workgroupId] == null) {\n this.studentAchievementsByWorkgroupId[workgroupId] = [];\n return this.studentAchievementsByWorkgroupId[workgroupId];\n } else if (this.studentAchievementsByWorkgroupId[workgroupId] != null) {\n return this.studentAchievementsByWorkgroupId[workgroupId];\n }\n return [];\n }\n\n /**\n * Get an array of student projectAchievements for a given achievement id\n * @param achievementId a 10 character achievement id\n * @return an array of student projectAchievements. student projectAchievements are\n * created when a workgroup completes an achievement.\n */\n getStudentAchievementsByAchievementId(achievementId) {\n const achievementsByAchievementId = [];\n const workgroupIds = this.ConfigService.getClassmateWorkgroupIds();\n for (const workgroupId of workgroupIds) {\n const achievementsForWorkgroup = this.studentAchievementsByWorkgroupId[workgroupId];\n if (achievementsForWorkgroup != null) {\n for (let a = achievementsForWorkgroup.length - 1; a >= 0; a--) {\n const studentAchievement = achievementsForWorkgroup[a];\n if (studentAchievement != null && studentAchievement.data != null) {\n if (studentAchievement.achievementId === achievementId) {\n achievementsByAchievementId.push(studentAchievement);\n }\n }\n }\n }\n }\n return achievementsByAchievementId;\n }\n\n /**\n * Get a mapping from achievement id to array of student projectAchievements\n * @return a mapping from achievement id to array of student projectAchievements\n * student projectAchievements are created when a workgroup completes an achievement.\n */\n getAchievementIdToStudentAchievementsMappings() {\n const achievementIdToAchievements = {};\n const projectAchievements = this.ProjectService.getAchievementItems();\n for (const projectAchievement of projectAchievements) {\n const studentAchievements = this.getStudentAchievementsByAchievementId(projectAchievement.id);\n achievementIdToAchievements[projectAchievement.id] = studentAchievements;\n }\n return achievementIdToAchievements;\n }\n\n broadcastAchievementCompleted(args: any) {\n this.achievementCompletedSource.next(args);\n }\n\n broadcastNewStudentAchievement(achievement: any): void {\n this.newStudentAchievementSource.next(achievement);\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "completionService", + "type": "CompletionService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ConfigService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ProjectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "StudentDataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 18, + "jsdoctags": [ + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "completionService", + "type": "CompletionService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "ConfigService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "ProjectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "StudentDataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "type": "injectable" + }, + { + "name": "AiChatService", + "id": "injectable-AiChatService-68e0c511d2d15926f0f94da7ed4a81fb9ddf514ac6f83db9c372224203124995e7789fe17423f6f496f7a31ea80c6f013c32ab473341640a2b373518456f3502", + "file": "src/assets/wise5/components/aiChat/aiChatService.ts", + "properties": [ + { + "name": "notifyConnectedComponentSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "notifyConnectedComponentSource$", + "defaultValue": "this.notifyConnectedComponentSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "requestComponentStateSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "requestComponentStateSource$", + "defaultValue": "this.requestComponentStateSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "sendComponentStateSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "sendComponentStateSource$", + "defaultValue": "this.sendComponentStateSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "ComponentService" + } + } + ], + "methods": [ + { + "name": "createComponent", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 17, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getComponentTypeLabel", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 13, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "sendChatMessage", + "args": [ + { + "name": "messages", + "type": "AiChatMessage[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "model", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 27, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ], + "jsdoctags": [ + { + "name": "messages", + "type": "AiChatMessage[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "model", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "componentHasCorrectAnswer", + "args": [ + { + "name": "component", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 147, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "component", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "componentHasWork", + "args": [ + { + "name": "component", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 105, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nWhether this component generates student work\nis not provided, we will use the default value of whether the\ncomponent type usually has work.\n", + "description": "

Whether this component generates student work\nis not provided, we will use the default value of whether the\ncomponent type usually has work.

\n", + "jsdoctags": [ + { + "name": { + "pos": 3060, + "end": 3069, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "component" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3054, + "end": 3059, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

(optional) the component object. if the component object\nis not provided, we will use the default value of whether the\ncomponent type usually has work.

\n" + }, + { + "tagName": { + "pos": 3238, + "end": 3244, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether this component generates student work

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "componentStateHasStudentWork", + "args": [ + { + "name": "componentState", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentContent", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 118, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if the component state has student work. Sometimes a component\nstate may be created if the student visits a component but doesn't\nactually perform any work. This is where we will check if the student\nactually performed any work.\n", + "description": "

Check if the component state has student work. Sometimes a component\nstate may be created if the student visits a component but doesn't\nactually perform any work. This is where we will check if the student\nactually performed any work.

\n", + "jsdoctags": [ + { + "name": { + "pos": 3634, + "end": 3648, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3628, + "end": 3633, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component state object

\n" + }, + { + "name": { + "pos": 3688, + "end": 3704, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentContent" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3682, + "end": 3687, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component content

\n" + }, + { + "tagName": { + "pos": 3733, + "end": 3739, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether the component state has any work

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "componentUsesSaveButton", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 135, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nWhether this component uses a save button\n", + "description": "

Whether this component uses a save button

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 4173, + "end": 4179, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether this component uses a save button

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "componentUsesSubmitButton", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 143, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nWhether this component uses a submit button\n", + "description": "

Whether this component uses a submit button

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 4351, + "end": 4357, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether this component uses a submit button

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "displayAnnotation", + "args": [ + { + "name": "componentContent", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "annotation", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 94, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if we need to display the annotation to the student\n", + "description": "

Check if we need to display the annotation to the student

\n", + "jsdoctags": [ + { + "name": { + "pos": 2753, + "end": 2769, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentContent" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2747, + "end": 2752, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component content

\n" + }, + { + "name": { + "pos": 2804, + "end": 2814, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "annotation" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2798, + "end": 2803, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the annotation

\n" + }, + { + "tagName": { + "pos": 2836, + "end": 2843, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

whether we need to display the annotation to the student

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getDomIdEnding", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 18, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getElementId", + "args": [ + { + "name": "domIdBeginning", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "domIdEnding", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "domIdBeginning", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "domIdEnding", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getStudentDataString", + "args": [ + { + "name": "componentState", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 127, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the human readable student data string\n", + "description": "

Get the human readable student data string

\n", + "jsdoctags": [ + { + "name": { + "pos": 3953, + "end": 3967, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3947, + "end": 3952, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component state

\n" + }, + { + "tagName": { + "pos": 3994, + "end": 4000, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

a human readable student data string

\n", + "returnType": "string" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "hasNodeEnteredEvent", + "args": [ + { + "name": "nodeEvents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 155, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeEvents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "isCompleted", + "args": [ + { + "name": "component", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentStates", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeEvents", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "node", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 84, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if the component was completed\n", + "description": "

Check if the component was completed

\n", + "jsdoctags": [ + { + "name": { + "pos": 2298, + "end": 2307, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "component" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2292, + "end": 2297, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component object

\n" + }, + { + "name": { + "pos": 2341, + "end": 2356, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentStates" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2335, + "end": 2340, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component states for the specific component

\n" + }, + { + "name": { + "pos": 2417, + "end": 2427, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeEvents" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2411, + "end": 2416, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the events for the parent node of the component

\n" + }, + { + "name": { + "pos": 2488, + "end": 2492, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "node" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2482, + "end": 2487, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

parent node of the component

\n" + }, + { + "tagName": { + "pos": 2528, + "end": 2535, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

whether the component was completed

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "isSubmitRequired", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 151, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "notifyConnectedComponentSubscribers", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 42, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "requestComponentState", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 30, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "sendComponentState", + "args": [ + { + "name": "componentStateWrapper", + "type": "ComponentStateWrapper", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 38, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentStateWrapper", + "type": "ComponentStateWrapper", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Injectable } from '@angular/core';\nimport { ComponentService } from '../componentService';\nimport { AiChatMessage } from './AiChatMessage';\nimport { AiChatMessageReponse } from './AiChatMessageResponse';\nimport { ComputerAvatarService } from '../../services/computerAvatarService';\n\n@Injectable()\nexport class AiChatService extends ComponentService {\n constructor(protected computerAvatarService: ComputerAvatarService) {\n super();\n }\n\n getComponentTypeLabel() {\n return $localize`AI Chat`;\n }\n\n createComponent(): any {\n const component: any = super.createComponent();\n component.type = 'AiChat';\n component.computerAvatarSettings = this.computerAvatarService.getDefaultComputerAvatarSettings();\n component.isComputerAvatarEnabled = false;\n component.model = 'gpt-4';\n component.systemPrompt = '';\n return component;\n }\n\n async sendChatMessage(messages: AiChatMessage[], model: string): Promise {\n const response = await fetch('/api/chat-gpt', {\n method: 'POST',\n body: JSON.stringify({\n messages: messages,\n model: model\n })\n });\n return response.json();\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "computerAvatarService", + "type": "ComputerAvatarService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 8, + "jsdoctags": [ + { + "name": "computerAvatarService", + "type": "ComputerAvatarService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "ComponentService" + ], + "type": "injectable" + }, + { + "name": "AnimationService", + "id": "injectable-AnimationService-51fce50e09c3bb2d87825360498c07c1e9d77ce983b222e8aed9ef37aaee31fddd9c100b8424515c4ea3ddc28575716e69413c9637282f14d49e529a7f7f4ca2", + "file": "src/assets/wise5/components/animation/animationService.ts", + "properties": [ + { + "name": "notifyConnectedComponentSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "notifyConnectedComponentSource$", + "defaultValue": "this.notifyConnectedComponentSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "requestComponentStateSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "requestComponentStateSource$", + "defaultValue": "this.requestComponentStateSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "sendComponentStateSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "sendComponentStateSource$", + "defaultValue": "this.sendComponentStateSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "ComponentService" + } + } + ], + "methods": [ + { + "name": "componentStateHasStudentWork", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 34, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "createComponent", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 16, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getComponentTypeLabel", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 8, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getSvgId", + "args": [ + { + "name": "domIdEnding", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 12, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "domIdEnding", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isCompleted", + "args": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeEvents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 30, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeEvents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "componentHasCorrectAnswer", + "args": [ + { + "name": "component", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 147, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "component", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "componentHasWork", + "args": [ + { + "name": "component", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 105, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nWhether this component generates student work\nis not provided, we will use the default value of whether the\ncomponent type usually has work.\n", + "description": "

Whether this component generates student work\nis not provided, we will use the default value of whether the\ncomponent type usually has work.

\n", + "jsdoctags": [ + { + "name": { + "pos": 3060, + "end": 3069, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "component" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3054, + "end": 3059, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

(optional) the component object. if the component object\nis not provided, we will use the default value of whether the\ncomponent type usually has work.

\n" + }, + { + "tagName": { + "pos": 3238, + "end": 3244, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether this component generates student work

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "componentUsesSaveButton", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 135, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nWhether this component uses a save button\n", + "description": "

Whether this component uses a save button

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 4173, + "end": 4179, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether this component uses a save button

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "componentUsesSubmitButton", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 143, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nWhether this component uses a submit button\n", + "description": "

Whether this component uses a submit button

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 4351, + "end": 4357, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether this component uses a submit button

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "displayAnnotation", + "args": [ + { + "name": "componentContent", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "annotation", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 94, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if we need to display the annotation to the student\n", + "description": "

Check if we need to display the annotation to the student

\n", + "jsdoctags": [ + { + "name": { + "pos": 2753, + "end": 2769, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentContent" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2747, + "end": 2752, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component content

\n" + }, + { + "name": { + "pos": 2804, + "end": 2814, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "annotation" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2798, + "end": 2803, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the annotation

\n" + }, + { + "tagName": { + "pos": 2836, + "end": 2843, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

whether we need to display the annotation to the student

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getDomIdEnding", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 18, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getElementId", + "args": [ + { + "name": "domIdBeginning", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "domIdEnding", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "domIdBeginning", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "domIdEnding", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getStudentDataString", + "args": [ + { + "name": "componentState", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 127, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the human readable student data string\n", + "description": "

Get the human readable student data string

\n", + "jsdoctags": [ + { + "name": { + "pos": 3953, + "end": 3967, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3947, + "end": 3952, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component state

\n" + }, + { + "tagName": { + "pos": 3994, + "end": 4000, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

a human readable student data string

\n", + "returnType": "string" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "hasNodeEnteredEvent", + "args": [ + { + "name": "nodeEvents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 155, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeEvents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "isSubmitRequired", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 151, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "notifyConnectedComponentSubscribers", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 42, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "requestComponentState", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 30, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "sendComponentState", + "args": [ + { + "name": "componentStateWrapper", + "type": "ComponentStateWrapper", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 38, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentStateWrapper", + "type": "ComponentStateWrapper", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "'use strict';\n\nimport { ComponentService } from '../componentService';\nimport { Injectable } from '@angular/core';\n\n@Injectable()\nexport class AnimationService extends ComponentService {\n getComponentTypeLabel(): string {\n return $localize`Animation`;\n }\n\n getSvgId(domIdEnding: string): string {\n return `svg-${domIdEnding}`;\n }\n\n createComponent() {\n const component: any = super.createComponent();\n component.type = 'Animation';\n component.widthInPixels = 600;\n component.widthInUnits = 60;\n component.heightInPixels = 200;\n component.heightInUnits = 20;\n component.dataXOriginInPixels = 0;\n component.dataYOriginInPixels = 80;\n component.coordinateSystem = 'screen';\n component.objects = [];\n return component;\n }\n\n isCompleted(component: any, componentStates: any[], nodeEvents: any[], node: any) {\n return componentStates.length > 0;\n }\n\n componentStateHasStudentWork(componentState: any, componentContent: any) {\n if (componentState != null) {\n return componentState.studentData != null;\n }\n return false;\n }\n}\n", + "extends": [ + "ComponentService" + ], + "type": "injectable" + }, + { + "name": "AnnotationService", + "id": "injectable-AnnotationService-42325c3183c852b5397c8f6efc7df19444687805f70583f0466101bf3264b546174657869f5ff425adfb0c80ed85677f4e803a5f44f7389217ef481dba0a293c", + "file": "src/assets/wise5/services/annotationService.ts", + "properties": [ + { + "name": "annotationReceived$", + "defaultValue": "this.annotationReceivedSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "Observable", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "modifierKind": [ + 125 + ] + }, + { + "name": "annotationReceivedSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "modifierKind": [ + 123 + ] + }, + { + "name": "annotations", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "Annotation[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 13 + }, + { + "name": "annotationSavedToServer$", + "defaultValue": "this.annotationSavedToServerSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "Observable", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "modifierKind": [ + 125 + ] + }, + { + "name": "annotationSavedToServerSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 123 + ] + }, + { + "name": "dummyAnnotationId", + "defaultValue": "1", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 14 + } + ], + "methods": [ + { + "name": "addOrUpdateAnnotation", + "args": [ + { + "name": "annotation", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 190, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "annotation", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "broadcastAnnotationReceived", + "args": [ + { + "name": "annotation", + "type": "Annotation", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 617, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "annotation", + "type": "Annotation", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "broadcastAnnotationSavedToServer", + "args": [ + { + "name": "annotation", + "type": "Annotation", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 613, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "annotation", + "type": "Annotation", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createAnnotation", + "args": [ + { + "name": "annotationId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "runId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "periodId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "fromWorkgroupId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "toWorkgroupId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentWorkId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "localNotebookItemId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "notebookItemId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "annotationType", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "data", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "clientSaveTime", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "{ id: any; runId: any; periodId: any; fromWorkgroupId: any; toWorkgroupId: any; nodeId: any; componentId: any; studentWorkId: any; localNotebookItemId: any; notebookItemId: any; type: any; data: any; clientSaveTime: any; }", + "typeParameters": [], + "line": 75, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCreate an annotation object\n", + "description": "

Create an annotation object

\n", + "jsdoctags": [ + { + "name": { + "pos": 2294, + "end": 2306, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "annotationId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2288, + "end": 2293, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the annotation id

\n" + }, + { + "name": { + "pos": 2337, + "end": 2342, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "runId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2331, + "end": 2336, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the run id

\n" + }, + { + "name": { + "pos": 2366, + "end": 2374, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "periodId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2360, + "end": 2365, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the period id

\n" + }, + { + "name": { + "pos": 2401, + "end": 2416, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "fromWorkgroupId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2395, + "end": 2400, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the from workgroup id

\n" + }, + { + "name": { + "pos": 2451, + "end": 2464, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "toWorkgroupId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2445, + "end": 2450, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the to workgroup id

\n" + }, + { + "name": { + "pos": 2497, + "end": 2503, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2491, + "end": 2496, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id

\n" + }, + { + "name": { + "pos": 2528, + "end": 2539, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2522, + "end": 2527, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component id

\n" + }, + { + "name": { + "pos": 2569, + "end": 2582, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "studentWorkId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2563, + "end": 2568, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the student work id

\n" + }, + { + "name": "localNotebookItemId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "notebookItemId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": { + "pos": 2615, + "end": 2629, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "annotationType" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2609, + "end": 2614, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the annotation type

\n" + }, + { + "name": { + "pos": 2662, + "end": 2666, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "data" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2656, + "end": 2661, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the data

\n" + }, + { + "name": { + "pos": 2688, + "end": 2702, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "clientSaveTime" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2682, + "end": 2687, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the client save time

\n" + }, + { + "tagName": { + "pos": 2730, + "end": 2737, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

an annotation object

\n" + } + ] + }, + { + "name": "createAutoCommentAnnotation", + "args": [ + { + "name": "runId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "periodId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "toWorkgroupId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "data", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "{ id: any; runId: any; periodId: any; fromWorkgroupId: any; toWorkgroupId: any; nodeId: any; componentId: any; studentWorkId: any; localNotebookItemId: any; notebookItemId: any; type: any; data: any; clientSaveTime: any; }", + "typeParameters": [], + "line": 320, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCreate an auto comment annotation\n", + "description": "

Create an auto comment annotation

\n", + "jsdoctags": [ + { + "name": { + "pos": 10822, + "end": 10827, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "runId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 10816, + "end": 10821, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the run id

\n" + }, + { + "name": { + "pos": 10851, + "end": 10859, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "periodId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 10845, + "end": 10850, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the period id

\n" + }, + { + "name": { + "pos": 10886, + "end": 10892, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 10880, + "end": 10885, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id

\n" + }, + { + "name": { + "pos": 10917, + "end": 10928, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 10911, + "end": 10916, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component id

\n" + }, + { + "name": { + "pos": 10958, + "end": 10971, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "toWorkgroupId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 10952, + "end": 10957, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the student workgroup id

\n" + }, + { + "name": { + "pos": 11009, + "end": 11013, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "data" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 11003, + "end": 11008, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the annotation data

\n" + }, + { + "tagName": { + "pos": 11040, + "end": 11047, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

the auto comment annotation

\n" + } + ] + }, + { + "name": "createAutoScoreAnnotation", + "args": [ + { + "name": "runId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "periodId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "toWorkgroupId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "data", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "{ id: any; runId: any; periodId: any; fromWorkgroupId: any; toWorkgroupId: any; nodeId: any; componentId: any; studentWorkId: any; localNotebookItemId: any; notebookItemId: any; type: any; data: any; clientSaveTime: any; }", + "typeParameters": [], + "line": 284, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCreate an auto score annotation\n", + "description": "

Create an auto score annotation

\n", + "jsdoctags": [ + { + "name": { + "pos": 9829, + "end": 9834, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "runId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 9823, + "end": 9828, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the run id

\n" + }, + { + "name": { + "pos": 9858, + "end": 9866, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "periodId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 9852, + "end": 9857, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the period id

\n" + }, + { + "name": { + "pos": 9893, + "end": 9899, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 9887, + "end": 9892, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id

\n" + }, + { + "name": { + "pos": 9924, + "end": 9935, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 9918, + "end": 9923, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component id

\n" + }, + { + "name": { + "pos": 9965, + "end": 9978, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "toWorkgroupId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 9959, + "end": 9964, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the student workgroup id

\n" + }, + { + "name": { + "pos": 10016, + "end": 10020, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "data" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 10010, + "end": 10015, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the annotation data

\n" + }, + { + "tagName": { + "pos": 10047, + "end": 10054, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

the auto score annotation

\n" + } + ] + }, + { + "name": "createInappropriateFlagAnnotation", + "args": [ + { + "name": "runId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "periodId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "fromWorkgroupId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "toWorkgroupId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentWorkId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "data", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "{ id: any; runId: any; periodId: any; fromWorkgroupId: any; toWorkgroupId: any; nodeId: any; componentId: any; studentWorkId: any; localNotebookItemId: any; notebookItemId: any; type: any; data: any; clientSaveTime: any; }", + "typeParameters": [], + "line": 358, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCreate an auto comment annotation\n", + "description": "

Create an auto comment annotation

\n", + "jsdoctags": [ + { + "name": { + "pos": 11821, + "end": 11826, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "runId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 11815, + "end": 11820, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the run id

\n" + }, + { + "name": { + "pos": 11850, + "end": 11858, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "periodId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 11844, + "end": 11849, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the period id

\n" + }, + { + "name": { + "pos": 11885, + "end": 11891, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 11879, + "end": 11884, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id

\n" + }, + { + "name": { + "pos": 11916, + "end": 11927, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 11910, + "end": 11915, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component id

\n" + }, + { + "name": { + "pos": 11957, + "end": 11972, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "fromWorkgroupId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 11951, + "end": 11956, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the teacher workgroup id

\n" + }, + { + "name": { + "pos": 12010, + "end": 12023, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "toWorkgroupId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 12004, + "end": 12009, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the student workgroup id

\n" + }, + { + "name": { + "pos": 12061, + "end": 12074, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "studentWorkId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 12055, + "end": 12060, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component state id

\n" + }, + { + "name": { + "pos": 12110, + "end": 12114, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "data" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 12104, + "end": 12109, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the annotation data

\n" + }, + { + "tagName": { + "pos": 12141, + "end": 12148, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

the inappropriate flag annotation

\n" + } + ] + }, + { + "name": "getAnnotationById", + "args": [ + { + "name": "annotationId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Annotation", + "typeParameters": [], + "line": 31, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "annotationId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getAnnotations", + "args": [], + "optional": false, + "returnType": "Annotation[]", + "typeParameters": [], + "line": 27, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getAnnotationsByNodeIdComponentId", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Annotation[]", + "typeParameters": [], + "line": 35, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getAnnotationsByStudentWorkId", + "args": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Annotation[]", + "typeParameters": [], + "line": 609, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the annotations for the given student work\n", + "description": "

Get the annotations for the given student work

\n", + "jsdoctags": [ + { + "name": { + "pos": 20093, + "end": 20106, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "studentWorkId" + }, + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 20087, + "end": 20092, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the student work id

\n" + }, + { + "tagName": { + "pos": 20133, + "end": 20139, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

array of annotations for the given student work

\n" + } + ] + }, + { + "name": "getLatestAnnotation", + "args": [ + { + "name": "params", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 46, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the latest annotation with the given params\n", + "description": "

Get the latest annotation with the given params

\n", + "jsdoctags": [ + { + "name": { + "pos": 1694, + "end": 1700, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "params" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 1688, + "end": 1693, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

an object containing the params to match

\n" + }, + { + "tagName": { + "pos": 1748, + "end": 1755, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

the latest annotation that matches the params

\n" + } + ] + }, + { + "name": "getLatestAnnotationByStudentWorkIdAndType", + "args": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "type", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Annotation", + "typeParameters": [], + "line": 594, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the latest annotation for the given student work and annotation type\n", + "description": "

Get the latest annotation for the given student work and annotation type

\n", + "jsdoctags": [ + { + "name": { + "pos": 19570, + "end": 19583, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "studentWorkId" + }, + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 19564, + "end": 19569, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the student work id

\n" + }, + { + "name": { + "pos": 19616, + "end": 19620, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "type" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 19610, + "end": 19615, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the type of annotation

\n" + }, + { + "tagName": { + "pos": 19650, + "end": 19656, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

the latest annotation for the given student work and annotation type

\n" + } + ] + }, + { + "name": "getLatestAutoCommentAnnotationByStudentWorkId", + "args": [ + { + "name": "studentWorkId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Annotation", + "typeParameters": [], + "line": 584, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the latest auto comment annotation for a student work id\n", + "description": "

Get the latest auto comment annotation for a student work id

\n", + "jsdoctags": [ + { + "name": { + "pos": 19206, + "end": 19219, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "studentWorkId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 19200, + "end": 19205, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the student work id

\n" + }, + { + "tagName": { + "pos": 19246, + "end": 19252, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

the latest auto comment annotation for the student work

\n" + } + ] + }, + { + "name": "getLatestAutoScoreAnnotationByStudentWorkId", + "args": [ + { + "name": "studentWorkId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Annotation", + "typeParameters": [], + "line": 575, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the latest auto score annotation for a student work id\n", + "description": "

Get the latest auto score annotation for a student work id

\n", + "jsdoctags": [ + { + "name": { + "pos": 18860, + "end": 18873, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "studentWorkId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 18854, + "end": 18859, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the student work id

\n" + }, + { + "tagName": { + "pos": 18900, + "end": 18906, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

the latest auto score annotation for the student work

\n" + } + ] + }, + { + "name": "getLatestCommentAnnotation", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "commentType", + "type": "\"comment\" | \"autoComment\" | \"any\"", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "'any'" + } + ], + "optional": false, + "returnType": "Annotation", + "typeParameters": [], + "line": 512, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "commentType", + "type": "\"comment\" | \"autoComment\" | \"any\"", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "'any'", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getLatestComponentAnnotations", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "scoreType", + "type": "\"score\" | \"autoScore\" | \"any\"", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "'any'" + }, + { + "name": "commentType", + "type": "\"comment\" | \"autoComment\" | \"any\"", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "'any'" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 408, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the latest annotations for a given component (as an object)\ne.g.\n'autoScore' for auto graded score\n'score' for teacher graded score\n'any' for auto graded score or teacher graded score\ne.g.\n'autoComment' for auto graded comment\n'comment' for teacher graded comment\n'any' for auto graded comment or teacher graded comment\n", + "description": "

Get the latest annotations for a given component (as an object)\ne.g.\n'autoScore' for auto graded score\n'score' for teacher graded score\n'any' for auto graded score or teacher graded score\ne.g.\n'autoComment' for auto graded comment\n'comment' for teacher graded comment\n'any' for auto graded comment or teacher graded comment

\n", + "jsdoctags": [ + { + "name": { + "pos": 12972, + "end": 12978, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 12966, + "end": 12971, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id

\n" + }, + { + "name": { + "pos": 13003, + "end": 13014, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 12997, + "end": 13002, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component id

\n" + }, + { + "name": { + "pos": 13044, + "end": 13055, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "workgroupId" + }, + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 13038, + "end": 13043, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the workgroup id

\n" + }, + { + "name": { + "pos": 13085, + "end": 13094, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "scoreType" + }, + "type": "\"score\" | \"autoScore\" | \"any\"", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "'any'", + "tagName": { + "pos": 13079, + "end": 13084, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

(optional) the type of score\ne.g.\n'autoScore' for auto graded score\n'score' for teacher graded score\n'any' for auto graded score or teacher graded score

\n" + }, + { + "name": { + "pos": 13280, + "end": 13291, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "commentType" + }, + "type": "\"comment\" | \"autoComment\" | \"any\"", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "'any'", + "tagName": { + "pos": 13274, + "end": 13279, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

(optional) the type of comment\ne.g.\n'autoComment' for auto graded comment\n'comment' for teacher graded comment\n'any' for auto graded comment or teacher graded comment

\n" + }, + { + "tagName": { + "pos": 13485, + "end": 13491, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

object containing the component's latest score and comment annotations

\n" + } + ] + }, + { + "name": "getLatestNotebookItemAnnotations", + "args": [ + { + "name": "workgroupId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "localNotebookItemId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "{ score: any; comment: any; }", + "typeParameters": [], + "line": 426, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the latest annotations for a given notebook item (as an object)\n", + "description": "

Get the latest annotations for a given notebook item (as an object)

\n", + "jsdoctags": [ + { + "name": { + "pos": 14095, + "end": 14106, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "workgroupId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 14089, + "end": 14094, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the workgroup id that did the notebook

\n" + }, + { + "name": { + "pos": 14158, + "end": 14177, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "localNotebookItemId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 14152, + "end": 14157, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

unique id for note and its revisions ["finalReport", "xyzabc", ...]

\n" + } + ] + }, + { + "name": "getLatestNotebookItemCommentAnnotation", + "args": [ + { + "name": "workgroupId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "localNotebookItemId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 470, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the latest comment annotation for this workgroup and localNotebookItemId, or null if not found\n", + "description": "

Get the latest comment annotation for this workgroup and localNotebookItemId, or null if not found

\n", + "jsdoctags": [ + { + "name": { + "pos": 15627, + "end": 15638, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "workgroupId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 15621, + "end": 15626, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the workgroup id that did the notebook

\n" + }, + { + "name": { + "pos": 15690, + "end": 15709, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "localNotebookItemId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 15684, + "end": 15689, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

unique id for note and its revisions ["finalReport", "xyzabc", ...]

\n" + } + ] + }, + { + "name": "getLatestNotebookItemScoreAnnotation", + "args": [ + { + "name": "workgroupId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "localNotebookItemId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 449, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the latest score annotation for this workgroup and localNotebookItemId, or null if not found\n", + "description": "

Get the latest score annotation for this workgroup and localNotebookItemId, or null if not found

\n", + "jsdoctags": [ + { + "name": { + "pos": 14872, + "end": 14883, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "workgroupId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 14866, + "end": 14871, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the workgroup id that did the notebook

\n" + }, + { + "name": { + "pos": 14935, + "end": 14954, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "localNotebookItemId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 14929, + "end": 14934, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

unique id for note and its revisions ["finalReport", "xyzabc", ...]

\n" + } + ] + }, + { + "name": "getLatestScoreAnnotation", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "scoreType", + "type": "\"score\" | \"autoScore\" | \"any\"", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "'any'" + } + ], + "optional": false, + "returnType": "Annotation", + "typeParameters": [], + "line": 486, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "scoreType", + "type": "\"score\" | \"autoScore\" | \"any\"", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "'any'", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getLatestTeacherCommentAnnotationByStudentWorkId", + "args": [ + { + "name": "studentWorkId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Annotation", + "typeParameters": [], + "line": 566, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the latest teacher comment annotation for a student work id\n", + "description": "

Get the latest teacher comment annotation for a student work id

\n", + "jsdoctags": [ + { + "name": { + "pos": 18508, + "end": 18521, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "studentWorkId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 18502, + "end": 18507, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the student work id

\n" + }, + { + "tagName": { + "pos": 18548, + "end": 18554, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

the latest teacher comment annotation for the student work

\n" + } + ] + }, + { + "name": "getLatestTeacherScoreAnnotationByStudentWorkId", + "args": [ + { + "name": "studentWorkId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Annotation", + "typeParameters": [], + "line": 557, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the latest teacher score annotation for a student work id\n", + "description": "

Get the latest teacher score annotation for a student work id

\n", + "jsdoctags": [ + { + "name": { + "pos": 18157, + "end": 18170, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "studentWorkId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 18151, + "end": 18156, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the student work id

\n" + }, + { + "tagName": { + "pos": 18197, + "end": 18203, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

the latest teacher score annotation for the student work

\n" + } + ] + }, + { + "name": "getScoreAnnotations", + "args": [ + { + "name": "annotations", + "type": "[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 243, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "annotations", + "type": "[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getScoreValueFromScoreAnnotation", + "args": [ + { + "name": "scoreAnnotation", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 539, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "scoreAnnotation", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getSubScoreValueFromScoreAnnotation", + "args": [ + { + "name": "scoreAnnotation", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "scoreId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "''" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 543, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "scoreAnnotation", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "scoreId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "''", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getTotalNodeScore", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "node", + "type": "Node", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "components", + "type": "ComponentContent[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 256, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "node", + "type": "Node", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "components", + "type": "ComponentContent[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getTotalNodeScoreForWorkgroup", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 267, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getTotalScore", + "args": [ + { + "name": "annotations", + "type": "[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 228, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "annotations", + "type": "[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isAnnotationMatch", + "args": [ + { + "name": "annotation1", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "annotation2", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 206, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "annotation1", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "annotation2", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isScoreOrAutoScore", + "args": [ + { + "name": "annotation", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 252, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "annotation", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "matchesCommentType", + "args": [ + { + "name": "annotation", + "type": "Annotation", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "commentType", + "type": "\"comment\" | \"autoComment\" | \"any\"", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 529, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "annotation", + "type": "Annotation", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "commentType", + "type": "\"comment\" | \"autoComment\" | \"any\"", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "matchesScoreType", + "args": [ + { + "name": "annotation", + "type": "Annotation", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "scoreType", + "type": "\"score\" | \"autoScore\" | \"any\"", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 502, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "annotation", + "type": "Annotation", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "scoreType", + "type": "\"score\" | \"autoScore\" | \"any\"", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "saveAnnotation", + "args": [ + { + "name": "annotation", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 112, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nSave the annotation to the server\n", + "description": "

Save the annotation to the server

\n", + "jsdoctags": [ + { + "name": { + "pos": 3503, + "end": 3513, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "annotation" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3497, + "end": 3502, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the annotation object

\n" + }, + { + "tagName": { + "pos": 3542, + "end": 3549, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

a promise

\n" + } + ] + }, + { + "name": "saveToServerSuccess", + "args": [ + { + "name": "savedAnnotationDataResponse", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 141, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "savedAnnotationDataResponse", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setAnnotations", + "args": [ + { + "name": "annotations", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 224, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nSet the annotations\n", + "description": "

Set the annotations

\n", + "jsdoctags": [ + { + "name": { + "pos": 7972, + "end": 7983, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "annotations" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 7966, + "end": 7971, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the annotations aray

\n" + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Injectable } from '@angular/core';\nimport { ProjectService } from './projectService';\nimport { ConfigService } from './configService';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Observable, Subject } from 'rxjs';\nimport { generateRandomKey } from '../common/string/string';\nimport { Annotation } from '../common/Annotation';\nimport { Node } from '../common/Node';\nimport { ComponentContent } from '../common/ComponentContent';\n\n@Injectable()\nexport class AnnotationService {\n annotations: Annotation[] = [];\n dummyAnnotationId: number = 1; // used in preview mode when we simulate saving of annotation\n private annotationSavedToServerSource: Subject = new Subject();\n public annotationSavedToServer$: Observable =\n this.annotationSavedToServerSource.asObservable();\n private annotationReceivedSource: Subject = new Subject();\n public annotationReceived$: Observable = this.annotationReceivedSource.asObservable();\n\n constructor(\n private configService: ConfigService,\n private http: HttpClient,\n private projectService: ProjectService\n ) {}\n\n getAnnotations(): Annotation[] {\n return this.annotations;\n }\n\n getAnnotationById(annotationId: number): Annotation {\n return this.annotations.find((annotation) => annotation.id === annotationId) || null;\n }\n\n getAnnotationsByNodeIdComponentId(nodeId: string, componentId: string): Annotation[] {\n return this.annotations.filter(\n (annotation) => annotation.nodeId === nodeId && annotation.componentId === componentId\n );\n }\n\n /**\n * Get the latest annotation with the given params\n * @param params an object containing the params to match\n * @returns the latest annotation that matches the params\n */\n getLatestAnnotation(params): any {\n return (\n this.annotations.findLast((annotation) => {\n return (\n annotation.nodeId == params.nodeId &&\n annotation.componentId == params.componentId &&\n ((params.type.constructor === Array &&\n params.type.every((thisType) => annotation.type === thisType)) ||\n annotation.type === params.type)\n );\n }) ?? null\n );\n }\n\n /**\n * Create an annotation object\n * @param annotationId the annotation id\n * @param runId the run id\n * @param periodId the period id\n * @param fromWorkgroupId the from workgroup id\n * @param toWorkgroupId the to workgroup id\n * @param nodeId the node id\n * @param componentId the component id\n * @param studentWorkId the student work id\n * @param annotationType the annotation type\n * @param data the data\n * @param clientSaveTime the client save time\n * @returns an annotation object\n */\n createAnnotation(\n annotationId,\n runId,\n periodId,\n fromWorkgroupId,\n toWorkgroupId,\n nodeId,\n componentId,\n studentWorkId,\n localNotebookItemId,\n notebookItemId,\n annotationType,\n data,\n clientSaveTime\n ) {\n return {\n id: annotationId,\n runId: runId,\n periodId: periodId,\n fromWorkgroupId: fromWorkgroupId,\n toWorkgroupId: toWorkgroupId,\n nodeId: nodeId,\n componentId: componentId,\n studentWorkId: studentWorkId,\n localNotebookItemId: localNotebookItemId,\n notebookItemId: notebookItemId,\n type: annotationType,\n data: data,\n clientSaveTime: clientSaveTime\n };\n }\n\n /**\n * Save the annotation to the server\n * @param annotation the annotation object\n * @returns a promise\n */\n saveAnnotation(annotation) {\n annotation.requestToken = generateRandomKey(); // use this to keep track of unsaved annotations.\n this.addOrUpdateAnnotation(annotation);\n const annotations = [annotation];\n if (this.configService.isPreview()) {\n // if we're in preview, don't make any request to the server but pretend we did\n let savedAnnotationDataResponse = {\n annotations: annotations\n };\n let annotation = this.saveToServerSuccess(savedAnnotationDataResponse);\n return Promise.resolve(annotation);\n } else {\n const params = {\n runId: this.configService.getRunId(),\n workgroupId: this.configService.getWorkgroupId(),\n annotations: JSON.stringify(annotations)\n };\n const headers = new HttpHeaders({ 'Content-Type': 'application/x-www-form-urlencoded' });\n return this.http\n .post(this.configService.getConfigParam('teacherDataURL'), $.param(params), {\n headers: headers\n })\n .toPromise()\n .then((savedAnnotationDataResponse: any) => {\n return this.saveToServerSuccess(savedAnnotationDataResponse);\n });\n }\n }\n\n saveToServerSuccess(savedAnnotationDataResponse) {\n let localAnnotation = null;\n if (savedAnnotationDataResponse != null) {\n let savedAnnotations = savedAnnotationDataResponse.annotations;\n let localAnnotations = this.annotations;\n if (savedAnnotations != null && localAnnotations != null) {\n for (let savedAnnotation of savedAnnotations) {\n for (let y = localAnnotations.length - 1; y >= 0; y--) {\n localAnnotation = localAnnotations[y];\n\n if (localAnnotation.id != null && localAnnotation.id === savedAnnotation.id) {\n // we have found the matching local annotation so we will update it\n localAnnotation.serverSaveTime = savedAnnotation.serverSaveTime;\n //localAnnotation.requestToken = null; // requestToken is no longer needed.\n\n this.broadcastAnnotationSavedToServer(localAnnotation);\n break;\n } else if (\n localAnnotation.requestToken != null &&\n localAnnotation.requestToken === savedAnnotation.requestToken\n ) {\n // we have found the matching local annotation so we will update it\n localAnnotation.id = savedAnnotation.id;\n localAnnotation.serverSaveTime = savedAnnotation.serverSaveTime;\n localAnnotation.requestToken = null; // requestToken is no longer needed.\n\n if (this.configService.isPreview() && localAnnotation.id == null) {\n /*\n * we are in preview mode so we will set a dummy\n * annotation id into the annotation\n */\n localAnnotation.id = this.dummyAnnotationId;\n /*\n * increment the dummy annotation id for the next\n * annotation\n */\n this.dummyAnnotationId++;\n }\n\n this.broadcastAnnotationSavedToServer(localAnnotation);\n break;\n }\n }\n }\n }\n }\n return localAnnotation;\n }\n\n addOrUpdateAnnotation(annotation) {\n let isAnnotationFound = false;\n for (let a = this.annotations.length - 1; a >= 0; a--) {\n const localAnnotation = this.annotations[a];\n if (this.isAnnotationMatch(annotation, localAnnotation)) {\n isAnnotationFound = true;\n localAnnotation.data = annotation.data;\n localAnnotation.clientSaveTime = annotation.clientSaveTime;\n localAnnotation.serverSaveTime = annotation.serverSaveTime;\n }\n }\n if (!isAnnotationFound) {\n this.annotations.push(annotation);\n }\n }\n\n isAnnotationMatch(annotation1, annotation2) {\n return (\n annotation1.id === annotation2.id &&\n annotation1.nodeId === annotation2.nodeId &&\n annotation1.componentId === annotation2.componentId &&\n annotation1.fromWorkgroupId === annotation2.fromWorkgroupId &&\n annotation1.toWorkgroupId === annotation2.toWorkgroupId &&\n annotation1.type === annotation2.type &&\n annotation1.studentWorkId === annotation2.studentWorkId &&\n annotation1.runId === annotation2.runId &&\n annotation1.periodId === annotation2.periodId\n );\n }\n\n /**\n * Set the annotations\n * @param annotations the annotations aray\n */\n setAnnotations(annotations) {\n this.annotations = annotations;\n }\n\n getTotalScore(annotations = []) {\n let totalScore: number = null;\n const scoresFound = []; // to prevent double counting if teacher scored component multiple times\n const scoreAnnotations = this.getScoreAnnotations(annotations);\n for (let i = scoreAnnotations.length - 1; i >= 0; i--) {\n const annotation = scoreAnnotations[i];\n const component = `${annotation.nodeId}-${annotation.componentId}`;\n if (!scoresFound.includes(component)) {\n totalScore += annotation.data.value;\n scoresFound.push(component);\n }\n }\n return totalScore;\n }\n\n getScoreAnnotations(annotations = []) {\n return annotations.filter((annotation) => {\n return (\n this.isScoreOrAutoScore(annotation) &&\n this.projectService.shouldIncludeInTotalScore(annotation.nodeId, annotation.componentId)\n );\n });\n }\n\n isScoreOrAutoScore(annotation: any): boolean {\n return annotation.type === 'score' || annotation.type === 'autoScore';\n }\n\n getTotalNodeScore(workgroupId: number, node: Node, components: ComponentContent[]): number {\n return this.getTotalScore(\n this.annotations.filter(\n (annotation) =>\n annotation.nodeId === node.id &&\n annotation.toWorkgroupId === workgroupId &&\n components.some((component) => component.id === annotation.componentId)\n )\n );\n }\n\n getTotalNodeScoreForWorkgroup(workgroupId: number, nodeId: string) {\n const annotationsForNodeAndWorkgroup = this.annotations.filter((annotation) => {\n return annotation.nodeId === nodeId && annotation.toWorkgroupId === workgroupId;\n });\n return this.getTotalScore(annotationsForNodeAndWorkgroup);\n }\n\n /**\n * Create an auto score annotation\n * @param runId the run id\n * @param periodId the period id\n * @param nodeId the node id\n * @param componentId the component id\n * @param toWorkgroupId the student workgroup id\n * @param data the annotation data\n * @returns the auto score annotation\n */\n createAutoScoreAnnotation(runId, periodId, nodeId, componentId, toWorkgroupId, data) {\n const annotationId = null;\n const fromWorkgroupId = null;\n const studentWorkId = null;\n const localNotebookItemId = null;\n const notebookItemId = null;\n const annotationType = 'autoScore';\n const clientSaveTime = new Date().getTime();\n const annotation = this.createAnnotation(\n annotationId,\n runId,\n periodId,\n fromWorkgroupId,\n toWorkgroupId,\n nodeId,\n componentId,\n studentWorkId,\n localNotebookItemId,\n notebookItemId,\n annotationType,\n data,\n clientSaveTime\n );\n return annotation;\n }\n\n /**\n * Create an auto comment annotation\n * @param runId the run id\n * @param periodId the period id\n * @param nodeId the node id\n * @param componentId the component id\n * @param toWorkgroupId the student workgroup id\n * @param data the annotation data\n * @returns the auto comment annotation\n */\n createAutoCommentAnnotation(runId, periodId, nodeId, componentId, toWorkgroupId, data) {\n const annotationId = null;\n const fromWorkgroupId = null;\n const studentWorkId = null;\n const localNotebookItemId = null;\n const notebookItemId = null;\n const annotationType = 'autoComment';\n const clientSaveTime = new Date().getTime();\n const annotation = this.createAnnotation(\n annotationId,\n runId,\n periodId,\n fromWorkgroupId,\n toWorkgroupId,\n nodeId,\n componentId,\n studentWorkId,\n localNotebookItemId,\n notebookItemId,\n annotationType,\n data,\n clientSaveTime\n );\n return annotation;\n }\n\n /**\n * Create an auto comment annotation\n * @param runId the run id\n * @param periodId the period id\n * @param nodeId the node id\n * @param componentId the component id\n * @param fromWorkgroupId the teacher workgroup id\n * @param toWorkgroupId the student workgroup id\n * @param studentWorkId the component state id\n * @param data the annotation data\n * @returns the inappropriate flag annotation\n */\n createInappropriateFlagAnnotation(\n runId,\n periodId,\n nodeId,\n componentId,\n fromWorkgroupId,\n toWorkgroupId,\n studentWorkId,\n data\n ) {\n const annotationId = null;\n const localNotebookItemId = null;\n const notebookItemId = null;\n const annotationType = 'inappropriateFlag';\n const clientSaveTime = new Date().getTime();\n const annotation = this.createAnnotation(\n annotationId,\n runId,\n periodId,\n fromWorkgroupId,\n toWorkgroupId,\n nodeId,\n componentId,\n studentWorkId,\n localNotebookItemId,\n notebookItemId,\n annotationType,\n data,\n clientSaveTime\n );\n return annotation;\n }\n\n /**\n * Get the latest annotations for a given component (as an object)\n * @param nodeId the node id\n * @param componentId the component id\n * @param workgroupId the workgroup id\n * @param scoreType (optional) the type of score\n * e.g.\n * 'autoScore' for auto graded score\n * 'score' for teacher graded score\n * 'any' for auto graded score or teacher graded score\n * @param commentType (optional) the type of comment\n * e.g.\n * 'autoComment' for auto graded comment\n * 'comment' for teacher graded comment\n * 'any' for auto graded comment or teacher graded comment\n * @return object containing the component's latest score and comment annotations\n */\n getLatestComponentAnnotations(\n nodeId: string,\n componentId: string,\n workgroupId: number,\n scoreType: 'score' | 'autoScore' | 'any' = 'any',\n commentType: 'comment' | 'autoComment' | 'any' = 'any'\n ): any {\n return {\n score: this.getLatestScoreAnnotation(nodeId, componentId, workgroupId, scoreType),\n comment: this.getLatestCommentAnnotation(nodeId, componentId, workgroupId, commentType)\n };\n }\n\n /**\n * Get the latest annotations for a given notebook item (as an object)\n * @param workgroupId the workgroup id that did the notebook\n * @param localNotebookItemId unique id for note and its revisions [\"finalReport\", \"xyzabc\", ...]\n */\n getLatestNotebookItemAnnotations(workgroupId, localNotebookItemId) {\n let latestScoreAnnotation = null;\n let latestCommentAnnotation = null;\n latestScoreAnnotation = this.getLatestNotebookItemScoreAnnotation(\n workgroupId,\n localNotebookItemId\n );\n latestCommentAnnotation = this.getLatestNotebookItemCommentAnnotation(\n workgroupId,\n localNotebookItemId\n );\n\n return {\n score: latestScoreAnnotation,\n comment: latestCommentAnnotation\n };\n }\n\n /**\n * Get the latest score annotation for this workgroup and localNotebookItemId, or null if not found\n * @param workgroupId the workgroup id that did the notebook\n * @param localNotebookItemId unique id for note and its revisions [\"finalReport\", \"xyzabc\", ...]\n */\n getLatestNotebookItemScoreAnnotation(workgroupId, localNotebookItemId) {\n let annotations = this.getAnnotations();\n for (let a = annotations.length - 1; a >= 0; a--) {\n let annotation = annotations[a];\n if (\n annotation != null &&\n annotation.type === 'score' &&\n annotation.notebookItemId != null &&\n annotation.localNotebookItemId === localNotebookItemId\n ) {\n return annotation;\n }\n }\n return null;\n }\n\n /**\n * Get the latest comment annotation for this workgroup and localNotebookItemId, or null if not found\n * @param workgroupId the workgroup id that did the notebook\n * @param localNotebookItemId unique id for note and its revisions [\"finalReport\", \"xyzabc\", ...]\n */\n getLatestNotebookItemCommentAnnotation(workgroupId, localNotebookItemId) {\n let annotations = this.getAnnotations();\n for (let a = annotations.length - 1; a >= 0; a--) {\n let annotation = annotations[a];\n if (\n annotation != null &&\n annotation.type === 'comment' &&\n annotation.notebookItemId != null &&\n annotation.localNotebookItemId === localNotebookItemId\n ) {\n return annotation;\n }\n }\n return null;\n }\n\n getLatestScoreAnnotation(\n nodeId: string,\n componentId: string,\n workgroupId: number,\n scoreType: 'score' | 'autoScore' | 'any' = 'any'\n ): Annotation {\n return (\n this.getAnnotationsByNodeIdComponentId(nodeId, componentId)\n .filter(\n (annotation) =>\n annotation.toWorkgroupId == workgroupId && this.matchesScoreType(annotation, scoreType)\n )\n .at(-1) || null\n );\n }\n\n private matchesScoreType(\n annotation: Annotation,\n scoreType: 'score' | 'autoScore' | 'any'\n ): boolean {\n return (\n (scoreType === 'any' && ['autoScore', 'score'].includes(annotation.type)) ||\n annotation.type === scoreType\n );\n }\n\n getLatestCommentAnnotation(\n nodeId: string,\n componentId: string,\n workgroupId: number,\n commentType: 'comment' | 'autoComment' | 'any' = 'any'\n ): Annotation {\n return (\n this.getAnnotationsByNodeIdComponentId(nodeId, componentId)\n .filter(\n (annotation) =>\n annotation.toWorkgroupId == workgroupId &&\n this.matchesCommentType(annotation, commentType)\n )\n .at(-1) || null\n );\n }\n\n private matchesCommentType(\n annotation: Annotation,\n commentType: 'comment' | 'autoComment' | 'any'\n ): boolean {\n return (\n (commentType === 'any' && ['autoComment', 'comment'].includes(annotation.type)) ||\n annotation.type === commentType\n );\n }\n\n getScoreValueFromScoreAnnotation(scoreAnnotation: any): number {\n return scoreAnnotation.data.value;\n }\n\n getSubScoreValueFromScoreAnnotation(scoreAnnotation: any, scoreId: string = ''): number {\n for (const scoreObject of scoreAnnotation.data.scores) {\n if (scoreObject.id === scoreId) {\n return scoreObject.score;\n }\n }\n return null;\n }\n\n /**\n * Get the latest teacher score annotation for a student work id\n * @param studentWorkId the student work id\n * @return the latest teacher score annotation for the student work\n */\n getLatestTeacherScoreAnnotationByStudentWorkId(studentWorkId) {\n return this.getLatestAnnotationByStudentWorkIdAndType(studentWorkId, 'score');\n }\n\n /**\n * Get the latest teacher comment annotation for a student work id\n * @param studentWorkId the student work id\n * @return the latest teacher comment annotation for the student work\n */\n getLatestTeacherCommentAnnotationByStudentWorkId(studentWorkId) {\n return this.getLatestAnnotationByStudentWorkIdAndType(studentWorkId, 'comment');\n }\n\n /**\n * Get the latest auto score annotation for a student work id\n * @param studentWorkId the student work id\n * @return the latest auto score annotation for the student work\n */\n getLatestAutoScoreAnnotationByStudentWorkId(studentWorkId) {\n return this.getLatestAnnotationByStudentWorkIdAndType(studentWorkId, 'autoScore');\n }\n\n /**\n * Get the latest auto comment annotation for a student work id\n * @param studentWorkId the student work id\n * @return the latest auto comment annotation for the student work\n */\n getLatestAutoCommentAnnotationByStudentWorkId(studentWorkId) {\n return this.getLatestAnnotationByStudentWorkIdAndType(studentWorkId, 'autoComment');\n }\n\n /**\n * Get the latest annotation for the given student work and annotation type\n * @param studentWorkId the student work id\n * @param type the type of annotation\n * @return the latest annotation for the given student work and annotation type\n */\n getLatestAnnotationByStudentWorkIdAndType(studentWorkId: number, type: string): Annotation {\n return (\n this.annotations\n .filter(\n (annotation) => annotation.studentWorkId === studentWorkId && annotation.type === type\n )\n .at(-1) || null\n );\n }\n\n /**\n * Get the annotations for the given student work\n * @param studentWorkId the student work id\n * @return array of annotations for the given student work\n */\n getAnnotationsByStudentWorkId(studentWorkId: number): Annotation[] {\n return this.annotations.filter((annotation) => annotation.studentWorkId === studentWorkId);\n }\n\n broadcastAnnotationSavedToServer(annotation: Annotation): void {\n this.annotationSavedToServerSource.next(annotation);\n }\n\n broadcastAnnotationReceived(annotation: Annotation): void {\n this.annotationReceivedSource.next(annotation);\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 19, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "type": "injectable" + }, + { + "name": "ArchiveProjectService", + "id": "injectable-ArchiveProjectService-7ea852d0e1094797615a3709ab4762672e2e4e36c798ae07bb09789e9898633cdc7ab0a7221e98c4f96ec6feced9b106759f927bf10131f8ac8a8c76df9a4ecf", + "file": "src/app/services/archive-project.service.ts", + "properties": [ + { + "name": "refreshProjectsEvent$", + "defaultValue": "this.refreshProjectsEventSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "modifierKind": [ + 125 + ] + }, + { + "name": "refreshProjectsEventSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "modifierKind": [ + 123 + ] + } + ], + "methods": [ + { + "name": "archiveProject", + "args": [ + { + "name": "project", + "type": "Project", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "archive", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 16, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "project", + "type": "Project", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "archive", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "archiveProjects", + "args": [ + { + "name": "projects", + "type": "Project[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "archive", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Subscription", + "typeParameters": [], + "line": 71, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "projects", + "type": "Project[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "archive", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "makeArchiveProjectRequest", + "args": [ + { + "name": "project", + "type": "Project", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 28, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "project", + "type": "Project", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "makeArchiveProjectsRequest", + "args": [ + { + "name": "projects", + "type": "Project[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 85, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "projects", + "type": "Project[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "makeUnarchiveProjectRequest", + "args": [ + { + "name": "project", + "type": "Project", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 32, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "project", + "type": "Project", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "makeUnarchiveProjectsRequest", + "args": [ + { + "name": "projects", + "type": "Project[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 90, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "projects", + "type": "Project[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "openSuccessSnackBar", + "args": [ + { + "name": "projects", + "type": "Project[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "archiveProjectsResponse", + "type": "ArchiveProjectResponse[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "archived", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 111, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "projects", + "type": "Project[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "archiveProjectsResponse", + "type": "ArchiveProjectResponse[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "archived", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "refreshProjects", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 154, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "showArchiveProjectErrorMessage", + "args": [ + { + "name": "archive", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 65, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "archive", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "showArchiveProjectSuccessMessage", + "args": [ + { + "name": "project", + "type": "Project", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "archive", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 41, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "project", + "type": "Project", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "archive", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "showErrorSnackBar", + "args": [ + { + "name": "archive", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 148, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "archive", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "undoArchiveAction", + "args": [ + { + "name": "projects", + "type": "Project[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "archiveFunctionName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 135, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "projects", + "type": "Project[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "archiveFunctionName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "undoArchiveProjectAction", + "args": [ + { + "name": "project", + "type": "Project", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "archiveFunctionName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 53, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "project", + "type": "Project", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "archiveFunctionName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "updateProjectArchivedStatus", + "args": [ + { + "name": "project", + "type": "Project", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "archived", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "tag", + "type": "Tag", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 36, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "project", + "type": "Project", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "archived", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "tag", + "type": "Tag", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "updateProjectsArchivedStatus", + "args": [ + { + "name": "projects", + "type": "Project[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "archiveProjectsResponse", + "type": "ArchiveProjectResponse[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 100, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "projects", + "type": "Project[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "archiveProjectsResponse", + "type": "ArchiveProjectResponse[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { HttpClient, HttpParams } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable, Subject, Subscription } from 'rxjs';\nimport { Project } from '../domain/project';\nimport { ArchiveProjectResponse } from '../domain/archiveProjectResponse';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { Tag } from '../domain/tag';\n\n@Injectable()\nexport class ArchiveProjectService {\n private refreshProjectsEventSource: Subject = new Subject();\n public refreshProjectsEvent$ = this.refreshProjectsEventSource.asObservable();\n\n constructor(private http: HttpClient, private snackBar: MatSnackBar) {}\n\n archiveProject(project: Project, archive: boolean): void {\n this[archive ? 'makeArchiveProjectRequest' : 'makeUnarchiveProjectRequest'](project).subscribe({\n next: (response: ArchiveProjectResponse) => {\n this.updateProjectArchivedStatus(project, response.archived, response.tag);\n this.showArchiveProjectSuccessMessage(project, archive);\n },\n error: () => {\n this.showArchiveProjectErrorMessage(archive);\n }\n });\n }\n\n private makeArchiveProjectRequest(project: Project): Observable {\n return this.http.put(`/api/project/${project.id}/archived`, null);\n }\n\n private makeUnarchiveProjectRequest(project: Project): Observable {\n return this.http.delete(`/api/project/${project.id}/archived`);\n }\n\n private updateProjectArchivedStatus(project: Project, archived: boolean, tag: Tag): void {\n project.updateArchivedStatus(archived, tag);\n this.refreshProjects();\n }\n\n private showArchiveProjectSuccessMessage(project: Project, archive: boolean): void {\n this.snackBar\n .open($localize`Successfully ${archive ? 'archived' : 'restored'} unit.`, $localize`Undo`)\n .onAction()\n .subscribe(() => {\n this.undoArchiveProjectAction(\n project,\n archive ? 'makeUnarchiveProjectRequest' : 'makeArchiveProjectRequest'\n );\n });\n }\n\n private undoArchiveProjectAction(project: Project, archiveFunctionName: string): void {\n this[archiveFunctionName](project).subscribe({\n next: (response: ArchiveProjectResponse) => {\n this.updateProjectArchivedStatus(project, response.archived, response.tag);\n this.snackBar.open($localize`Action undone.`);\n },\n error: () => {\n this.snackBar.open($localize`Error undoing action.`);\n }\n });\n }\n\n private showArchiveProjectErrorMessage(archive: boolean): void {\n this.snackBar.open(\n archive ? $localize`Error archiving unit.` : $localize`Error restoring unit.`\n );\n }\n\n archiveProjects(projects: Project[], archive: boolean): Subscription {\n return this[archive ? 'makeArchiveProjectsRequest' : 'makeUnarchiveProjectsRequest'](\n projects\n ).subscribe({\n next: (archiveProjectsResponse: ArchiveProjectResponse[]) => {\n this.updateProjectsArchivedStatus(projects, archiveProjectsResponse);\n this.openSuccessSnackBar(projects, archiveProjectsResponse, archive);\n },\n error: () => {\n this.showErrorSnackBar(archive);\n }\n });\n }\n\n private makeArchiveProjectsRequest(projects: Project[]): Observable {\n const projectIds = projects.map((project) => project.id);\n return this.http.put(`/api/projects/archived`, projectIds);\n }\n\n private makeUnarchiveProjectsRequest(projects: Project[]): Observable {\n let params = new HttpParams();\n for (const project of projects) {\n params = params.append('projectIds', project.id);\n }\n return this.http.delete(`/api/projects/archived`, {\n params: params\n });\n }\n\n private updateProjectsArchivedStatus(\n projects: Project[],\n archiveProjectsResponse: ArchiveProjectResponse[]\n ): void {\n for (const archiveProjectResponse of archiveProjectsResponse) {\n const project = projects.find((project: Project) => project.id === archiveProjectResponse.id);\n project.updateArchivedStatus(archiveProjectResponse.archived, archiveProjectResponse.tag);\n }\n this.refreshProjects();\n }\n\n private openSuccessSnackBar(\n projects: Project[],\n archiveProjectsResponse: ArchiveProjectResponse[],\n archived: boolean\n ): void {\n const count = archiveProjectsResponse.filter(\n (response: ArchiveProjectResponse) => response.archived === archived\n ).length;\n this.snackBar\n .open(\n archived\n ? $localize`Successfully archived ${count} unit(s).`\n : $localize`Successfully restored ${count} unit(s).`,\n $localize`Undo`\n )\n .onAction()\n .subscribe(() => {\n this.undoArchiveAction(\n projects,\n archived ? 'makeUnarchiveProjectsRequest' : 'makeArchiveProjectsRequest'\n );\n });\n }\n\n private undoArchiveAction(projects: Project[], archiveFunctionName: string): void {\n this[archiveFunctionName](projects).subscribe({\n next: (archiveProjectsResponse: ArchiveProjectResponse[]) => {\n this.updateProjectsArchivedStatus(projects, archiveProjectsResponse);\n this.refreshProjects();\n this.snackBar.open($localize`Action undone.`);\n },\n error: () => {\n this.snackBar.open($localize`Error undoing action.`);\n }\n });\n }\n\n private showErrorSnackBar(archive: boolean): void {\n this.snackBar.open(\n archive ? $localize`Error archiving unit(s).` : $localize`Error restoring unit(s).`\n );\n }\n\n private refreshProjects(): void {\n this.refreshProjectsEventSource.next();\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "snackBar", + "type": "MatSnackBar", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 12, + "jsdoctags": [ + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "snackBar", + "type": "MatSnackBar", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "type": "injectable" + }, + { + "name": "AudioOscillatorService", + "id": "injectable-AudioOscillatorService-def8051b85840bd26a514ffecc841a9e26ebc7f6380ed0f6ffefad98805114553909de51c2aecb1df35beb48f17bd031ecb168340b1356c263d3a4d507c74131", + "file": "src/assets/wise5/components/audioOscillator/audioOscillatorService.ts", + "properties": [ + { + "name": "defaultStartingAmplitude", + "defaultValue": "44", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 6 + }, + { + "name": "defaultStartingFrequency", + "defaultValue": "440", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 7 + }, + { + "name": "maxAmplitude", + "defaultValue": "50", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 8 + }, + { + "name": "notifyConnectedComponentSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "notifyConnectedComponentSource$", + "defaultValue": "this.notifyConnectedComponentSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "requestComponentStateSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "requestComponentStateSource$", + "defaultValue": "this.requestComponentStateSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "sendComponentStateSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "sendComponentStateSource$", + "defaultValue": "this.sendComponentStateSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "ComponentService" + } + } + ], + "methods": [ + { + "name": "componentStateHasStudentWork", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 43, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "createComponent", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 18, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getComponentTypeLabel", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 10, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getOscilloscopeId", + "args": [ + { + "name": "domIdEnding", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 14, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "domIdEnding", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isCompleted", + "args": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeEvents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 35, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeEvents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "componentHasCorrectAnswer", + "args": [ + { + "name": "component", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 147, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "component", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "componentHasWork", + "args": [ + { + "name": "component", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 105, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nWhether this component generates student work\nis not provided, we will use the default value of whether the\ncomponent type usually has work.\n", + "description": "

Whether this component generates student work\nis not provided, we will use the default value of whether the\ncomponent type usually has work.

\n", + "jsdoctags": [ + { + "name": { + "pos": 3060, + "end": 3069, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "component" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3054, + "end": 3059, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

(optional) the component object. if the component object\nis not provided, we will use the default value of whether the\ncomponent type usually has work.

\n" + }, + { + "tagName": { + "pos": 3238, + "end": 3244, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether this component generates student work

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "componentUsesSaveButton", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 135, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nWhether this component uses a save button\n", + "description": "

Whether this component uses a save button

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 4173, + "end": 4179, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether this component uses a save button

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "componentUsesSubmitButton", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 143, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nWhether this component uses a submit button\n", + "description": "

Whether this component uses a submit button

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 4351, + "end": 4357, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether this component uses a submit button

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "displayAnnotation", + "args": [ + { + "name": "componentContent", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "annotation", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 94, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if we need to display the annotation to the student\n", + "description": "

Check if we need to display the annotation to the student

\n", + "jsdoctags": [ + { + "name": { + "pos": 2753, + "end": 2769, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentContent" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2747, + "end": 2752, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component content

\n" + }, + { + "name": { + "pos": 2804, + "end": 2814, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "annotation" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2798, + "end": 2803, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the annotation

\n" + }, + { + "tagName": { + "pos": 2836, + "end": 2843, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

whether we need to display the annotation to the student

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getDomIdEnding", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 18, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getElementId", + "args": [ + { + "name": "domIdBeginning", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "domIdEnding", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "domIdBeginning", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "domIdEnding", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getStudentDataString", + "args": [ + { + "name": "componentState", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 127, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the human readable student data string\n", + "description": "

Get the human readable student data string

\n", + "jsdoctags": [ + { + "name": { + "pos": 3953, + "end": 3967, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3947, + "end": 3952, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component state

\n" + }, + { + "tagName": { + "pos": 3994, + "end": 4000, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

a human readable student data string

\n", + "returnType": "string" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "hasNodeEnteredEvent", + "args": [ + { + "name": "nodeEvents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 155, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeEvents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "isSubmitRequired", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 151, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "notifyConnectedComponentSubscribers", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 42, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "requestComponentState", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 30, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "sendComponentState", + "args": [ + { + "name": "componentStateWrapper", + "type": "ComponentStateWrapper", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 38, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentStateWrapper", + "type": "ComponentStateWrapper", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { ComponentService } from '../componentService';\nimport { Injectable } from '@angular/core';\n\n@Injectable()\nexport class AudioOscillatorService extends ComponentService {\n defaultStartingAmplitude: number = 44;\n defaultStartingFrequency: number = 440;\n maxAmplitude: number = 50;\n\n getComponentTypeLabel(): string {\n return $localize`Audio Oscillator`;\n }\n\n getOscilloscopeId(domIdEnding: string): string {\n return `oscilloscope-${domIdEnding}`;\n }\n\n createComponent() {\n const component: any = super.createComponent();\n component.type = 'AudioOscillator';\n component.oscillatorTypes = ['sine'];\n component.startingAmplitude = this.defaultStartingAmplitude;\n component.startingFrequency = this.defaultStartingFrequency;\n component.oscilloscopeWidth = 800;\n component.oscilloscopeHeight = 400;\n component.gridCellSize = 50;\n component.stopAfterGoodDraw = true;\n component.canStudentEditAmplitude = true;\n component.canStudentEditFrequency = true;\n component.canStudentViewAmplitudeInput = true;\n component.canStudentViewFrequencyInput = true;\n return component;\n }\n\n isCompleted(component: any, componentStates: any[], nodeEvents: any[], node: any) {\n if (componentStates && componentStates.length) {\n const latestComponentState = componentStates[componentStates.length - 1];\n return this.componentStateHasStudentWork(latestComponentState, component);\n }\n return false;\n }\n\n componentStateHasStudentWork(componentState: any, componentContent: any) {\n if (componentState != null) {\n const studentData = componentState.studentData;\n if (studentData != null) {\n if (studentData.frequenciesPlayed != null && studentData.frequenciesPlayed.length > 0) {\n return true;\n }\n }\n }\n return false;\n }\n}\n", + "extends": [ + "ComponentService" + ], + "type": "injectable" + }, + { + "name": "AudioRecorderService", + "id": "injectable-AudioRecorderService-b5b92bec261c804ba25731c52af72be38f5e055a64e69670f2dff9ba575ca271068190445768b689ba3164518141ddc40071e661b7b5cee840a39c407395147c", + "file": "src/assets/wise5/services/audioRecorderService.ts", + "properties": [ + { + "name": "audioRecorded$", + "defaultValue": "this.audioRecordedSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "Observable", + "indexKey": "", + "optional": false, + "description": "", + "line": 9, + "modifierKind": [ + 125 + ] + }, + { + "name": "audioRecordedSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 8, + "modifierKind": [ + 123 + ] + }, + { + "name": "mediaRecorder", + "deprecated": false, + "deprecationMessage": "", + "type": "MediaRecorder", + "indexKey": "", + "optional": false, + "description": "", + "line": 6 + }, + { + "name": "requester", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 7 + } + ], + "methods": [ + { + "name": "broadcastAudioRecorded", + "args": [ + { + "name": "args", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 59, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "args", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getAudioFile", + "args": [ + { + "name": "blob", + "type": "Blob", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 37, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "blob", + "type": "Blob", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "init", + "args": [ + { + "name": "constraints", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 13, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ], + "jsdoctags": [ + { + "name": "constraints", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "startRecording", + "args": [ + { + "name": "requester", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 45, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "requester", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "stopRecording", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 55, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\n@Injectable()\nexport class AudioRecorderService {\n mediaRecorder: MediaRecorder;\n requester: string;\n private audioRecordedSource: Subject = new Subject();\n public audioRecorded$: Observable = this.audioRecordedSource.asObservable();\n\n constructor() {}\n\n async init(constraints) {\n try {\n const stream = await navigator.mediaDevices.getUserMedia(constraints);\n const options = {\n mimeType: 'audio/webm'\n };\n try {\n this.mediaRecorder = new MediaRecorder(stream, options);\n this.mediaRecorder.ondataavailable = (event: any) => {\n this.broadcastAudioRecorded({\n requester: this.requester,\n audioFile: this.getAudioFile(event.data)\n });\n };\n this.mediaRecorder.start();\n } catch (e) {\n console.error('Exception while creating MediaRecorder:', e);\n return;\n }\n } catch (e) {\n console.error('navigator.getUserMedia error:', e);\n }\n }\n\n getAudioFile(blob: Blob) {\n const now = new Date().getTime();\n const filename = encodeURIComponent(`audio_${now}.webm`);\n return new File([blob], filename, {\n lastModified: now\n });\n }\n\n startRecording(requester: string) {\n this.requester = requester;\n const constraints = {\n audio: {\n echoCancellation: { exact: true }\n }\n };\n this.init(constraints);\n }\n\n stopRecording() {\n this.mediaRecorder.stop();\n }\n\n broadcastAudioRecorded(args: any) {\n this.audioRecordedSource.next(args);\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [], + "line": 9 + }, + "extends": [], + "type": "injectable" + }, + { + "name": "AuthGuard", + "id": "injectable-AuthGuard-ff14ca58e195ef5dfa81e963f6297a84151dfc124a7f21c8795f5de10fe2056a6d3d2680cbba7b18f2658cb1c2abb7aefa68ae04211db0486b63fc1a32404a33", + "file": "src/app/student/auth.guard.ts", + "properties": [], + "methods": [ + { + "name": "canAccess", + "args": [ + { + "name": "url", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 29, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "url", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "canActivate", + "args": [ + { + "name": "next", + "type": "ActivatedRouteSnapshot", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "state", + "type": "RouterStateSnapshot", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 12, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "next", + "type": "ActivatedRouteSnapshot", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "state", + "type": "RouterStateSnapshot", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "checkLogin", + "args": [ + { + "name": "url", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 16, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "url", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { ActivatedRouteSnapshot, RouterStateSnapshot, Router } from '@angular/router';\nimport { Injectable } from '@angular/core';\nimport { UserService } from '../services/user.service';\n\n@Injectable()\nexport class AuthGuard {\n constructor(\n private userService: UserService,\n private router: Router\n ) {}\n\n canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {\n return this.checkLogin(state.url);\n }\n\n private checkLogin(url: string): boolean {\n let canAccessPage = false;\n if (this.canAccess(url)) {\n canAccessPage = true;\n } else if (this.userService.isAuthenticated) {\n this.router.navigate(['/']);\n } else {\n this.userService.redirectUrl = url;\n this.router.navigate(['/login']);\n }\n return canAccessPage;\n }\n\n private canAccess(url: string): boolean {\n return (\n (this.userService.isStudent() ||\n url.includes('/preview/unit') ||\n url.includes('/workgroupLimitReached')) &&\n !(this.userService.isSurveyStudent() && url.includes('/home'))\n );\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "userService", + "type": "UserService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 6, + "jsdoctags": [ + { + "name": "userService", + "type": "UserService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "type": "injectable" + }, + { + "name": "AuthGuard", + "id": "injectable-AuthGuard-63bb6cdfc83c49b7a1ca9cc79fe3392269be8aa5877073d6b287569b2bd1b4c43d7b82fed663a6df37d0dfc34115e57fde3ebab1e207841bc43f4b72568286d9-1", + "file": "src/app/teacher/auth.guard.ts", + "properties": [], + "methods": [ + { + "name": "canActivate", + "args": [ + { + "name": "next", + "type": "ActivatedRouteSnapshot", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "state", + "type": "RouterStateSnapshot", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 9, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "next", + "type": "ActivatedRouteSnapshot", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "state", + "type": "RouterStateSnapshot", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "checkLogin", + "args": [ + { + "name": "url", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 13, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "url", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, RouterStateSnapshot, Router } from '@angular/router';\nimport { UserService } from '../services/user.service';\n\n@Injectable()\nexport class AuthGuard {\n constructor(private userService: UserService, private router: Router) {}\n\n canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {\n return this.checkLogin(state.url);\n }\n\n checkLogin(url: string): boolean {\n if (this.userService.isTeacher()) {\n return true;\n } else if (this.userService.isAuthenticated) {\n this.router.navigate(['/']);\n return false;\n } else {\n this.userService.redirectUrl = url;\n this.router.navigate(['/login']);\n return false;\n }\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "userService", + "type": "UserService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 6, + "jsdoctags": [ + { + "name": "userService", + "type": "UserService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "type": "injectable", + "isDuplicate": true, + "duplicateId": 1, + "duplicateName": "AuthGuard-1" + }, + { + "name": "AuthorBranchService", + "id": "injectable-AuthorBranchService-c1c899fd24884e403c6e3c754599bbe5de59133eefc8d8b69d75133ca125a0d9f49044b044ed6051eec6cc5e92cc83421df8c0b8b717298fa11c8b6d42fa0150", + "file": "src/assets/wise5/services/authorBranchService.ts", + "properties": [], + "methods": [ + { + "name": "addTransitionFromBranchNodeToPathNode", + "args": [ + { + "name": "params", + "type": "AuthorBranchParams", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "branchNode", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "newNode", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "pathIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 47, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "params", + "type": "AuthorBranchParams", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "branchNode", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "newNode", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "pathIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createPathStep", + "args": [ + { + "name": "params", + "type": "AuthorBranchParams", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "branchNode", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "pathIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 17, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "params", + "type": "AuthorBranchParams", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "branchNode", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "pathIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setBranchNodeTransitionLogic", + "args": [ + { + "name": "branchNode", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "criteria", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 40, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "branchNode", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "criteria", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setPathStepTransitions", + "args": [ + { + "name": "newNodeIds", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "mergeStepId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 32, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "newNodeIds", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "mergeStepId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { AuthorBranchParams } from '../common/AuthorBranchParams';\nimport { TeacherProjectService } from './teacherProjectService';\nimport {\n CHOICE_CHOSEN_VALUE,\n SCORE_VALUE,\n WORKGROUP_ID_VALUE\n} from '../../../app/domain/branchCriteria';\nimport { Transition } from '../common/Transition';\nimport { TransitionCriteria } from '../common/TransitionCriteria';\nimport { TransitionCriteriaParams } from '../common/TransitionCriteriaParams';\nimport { Injectable } from '@angular/core';\n\n@Injectable()\nexport abstract class AuthorBranchService {\n constructor(protected projectService: TeacherProjectService) {}\n\n protected createPathStep(\n params: AuthorBranchParams,\n branchNode: any,\n nodeId: string,\n pathIndex: number\n ): void {\n const newNode = this.projectService.createNode($localize`Path ${pathIndex + 1}`);\n newNode.id = nodeId;\n this.addTransitionFromBranchNodeToPathNode(params, branchNode, newNode, pathIndex);\n this.projectService.addNode(newNode);\n this.projectService.addApplicationNode(newNode);\n this.projectService.setIdToNode(newNode.id, newNode);\n this.projectService.addBranchPathTakenConstraints(newNode.id, branchNode.id, newNode.id);\n }\n\n protected setPathStepTransitions(newNodeIds: string[], mergeStepId: string): void {\n for (const newNodeId of newNodeIds) {\n this.projectService.getNode(newNodeId).getTransitionLogic().transitions = [\n new Transition(mergeStepId)\n ];\n }\n }\n\n protected setBranchNodeTransitionLogic(branchNode: any, criteria: string): void {\n branchNode.transitionLogic.maxPathsVisitable = 1;\n branchNode.transitionLogic.howToChooseAmongAvailablePaths =\n criteria === WORKGROUP_ID_VALUE ? WORKGROUP_ID_VALUE : 'random';\n branchNode.transitionLogic.canChangePath = false;\n }\n\n private addTransitionFromBranchNodeToPathNode(\n params: AuthorBranchParams,\n branchNode: any,\n newNode: any,\n pathIndex: number\n ): void {\n switch (params.criteria) {\n case SCORE_VALUE:\n branchNode.transitionLogic.transitions.push(\n new ScoreTransition(newNode.id, params, params.paths[pathIndex].split(','))\n );\n branchNode.transitionLogic.whenToChoosePath =\n params.branchStepId === params.nodeId ? 'studentDataChanged' : 'enterNode';\n break;\n case CHOICE_CHOSEN_VALUE:\n branchNode.transitionLogic.transitions.push(\n new ChoiceChosenTransition(newNode.id, params, [params.paths[pathIndex]])\n );\n branchNode.transitionLogic.whenToChoosePath =\n params.branchStepId === params.nodeId ? 'studentDataChanged' : 'enterNode';\n break;\n default:\n branchNode.transitionLogic.transitions.push(new Transition(newNode.id));\n branchNode.transitionLogic.whenToChoosePath = 'enterNode';\n }\n }\n}\n\nclass ScoreTransition extends Transition {\n constructor(toNodeId: string, params: AuthorBranchParams, scores: string[]) {\n super(toNodeId, [\n new TransitionCriteria(\n SCORE_VALUE,\n new TransitionCriteriaParams({\n nodeId: params.nodeId,\n componentId: params.componentId,\n scores: scores\n })\n )\n ]);\n }\n}\n\nclass ChoiceChosenTransition extends Transition {\n constructor(toNodeId: string, params: AuthorBranchParams, choiceIds: string[]) {\n super(toNodeId, [\n new TransitionCriteria(\n CHOICE_CHOSEN_VALUE,\n new TransitionCriteriaParams({\n nodeId: params.nodeId,\n componentId: params.componentId,\n choiceIds: choiceIds\n })\n )\n ]);\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 14, + "jsdoctags": [ + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "type": "injectable" + }, + { + "name": "BranchService", + "id": "injectable-BranchService-a3bffe1779ead5375ca74518b72cf813d09caa44eeab5582475b98d0c87839605ae6008c0d2a3b85f89ec1a96c94aa7aec505b06b46dc8d44f0133cc7e13c970", + "file": "src/assets/wise5/services/branchService.ts", + "properties": [ + { + "name": "branchesCache", + "deprecated": false, + "deprecationMessage": "", + "type": "Branch[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 8 + } + ], + "methods": [ + { + "name": "allPathsContainNodeId", + "args": [ + { + "name": "paths", + "type": "string[][]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 203, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if all the paths contain the node id\n", + "description": "

Check if all the paths contain the node id

\n", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": { + "pos": 6093, + "end": 6098, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "paths" + }, + "type": "string[][]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 6087, + "end": 6092, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

an array of paths. each path contains an array of node ids

\n" + }, + { + "name": { + "pos": 6170, + "end": 6176, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 6164, + "end": 6169, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id that we will check is in all the paths

\n" + }, + { + "tagName": { + "pos": 6234, + "end": 6240, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether the node id is in all the paths

\n" + } + ] + }, + { + "name": "arrayEquals", + "args": [ + { + "name": "a", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "b", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 141, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if two arrays are equal\n", + "description": "

Check if two arrays are equal

\n", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": { + "pos": 4263, + "end": 4264, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "a" + }, + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4257, + "end": 4262, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

an array of strings

\n" + }, + { + "name": { + "pos": 4297, + "end": 4298, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "b" + }, + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4291, + "end": 4296, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

an array of strings

\n" + }, + { + "tagName": { + "pos": 4325, + "end": 4331, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether the two arrays contain the strings in the same order

\n" + } + ] + }, + { + "name": "clearBranchesCache", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 40, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "extractPathsUpToNodeId", + "args": [ + { + "name": "paths", + "type": "string[][]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "[][]", + "typeParameters": [], + "line": 92, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nExtract the paths up to a given node id. This will be used to\nobtain branch paths.\n", + "description": "

Extract the paths up to a given node id. This will be used to\nobtain branch paths.

\n", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": { + "pos": 2871, + "end": 2876, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "paths" + }, + "type": "string[][]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2865, + "end": 2870, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the paths to extract from

\n" + }, + { + "name": { + "pos": 2915, + "end": 2921, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2909, + "end": 2914, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id to extract up to

\n" + }, + { + "tagName": { + "pos": 2957, + "end": 2963, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

paths that go up to but do not include the node id

\n" + } + ] + }, + { + "name": "findBranches", + "args": [ + { + "name": "paths", + "type": "string[][]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Branch[]", + "typeParameters": [], + "line": 51, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nFind the branches in the project\nthe branch start point, the branch paths, and the branch\nend point\n", + "description": "

Find the branches in the project\nthe branch start point, the branch paths, and the branch\nend point

\n", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": { + "pos": 1267, + "end": 1272, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "paths" + }, + "type": "string[][]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 1261, + "end": 1266, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

all the possible paths through the project

\n" + }, + { + "tagName": { + "pos": 1322, + "end": 1328, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

an array of branch objects. each branch object contains\nthe branch start point, the branch paths, and the branch\nend point

\n" + } + ] + }, + { + "name": "findNextCommonNodeId", + "args": [ + { + "name": "paths", + "type": "string[][]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 179, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nFind the next common node id in all the paths\nif there is no node id that is in all the paths\n", + "description": "

Find the next common node id in all the paths\nif there is no node id that is in all the paths

\n", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": { + "pos": 5385, + "end": 5390, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "paths" + }, + "type": "string[][]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 5379, + "end": 5384, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the paths to find the common node id in

\n" + }, + { + "tagName": { + "pos": 5437, + "end": 5443, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

a node id that is in all the paths or null\nif there is no node id that is in all the paths

\n" + } + ] + }, + { + "name": "getBranches", + "args": [ + { + "name": "paths", + "type": "string[][]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Branch[]", + "typeParameters": [], + "line": 12, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "paths", + "type": "string[][]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getBranchesCache", + "args": [], + "optional": false, + "returnType": "Branch[]", + "typeParameters": [], + "line": 36, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "removeDuplicatePaths", + "args": [ + { + "name": "paths", + "type": "string[][]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "[][]", + "typeParameters": [], + "line": 119, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nRemoves duplicate paths\n", + "description": "

Removes duplicate paths

\n", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": { + "pos": 3677, + "end": 3682, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "paths" + }, + "type": "string[][]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3671, + "end": 3676, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

an array of paths. each path contains an array of node ids

\n" + }, + { + "tagName": { + "pos": 3748, + "end": 3754, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

an array of unique paths

\n" + } + ] + }, + { + "name": "setBranchesCache", + "args": [ + { + "name": "branches", + "type": "Branch[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 32, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "branches", + "type": "Branch[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "trimPathsUpToNodeId", + "args": [ + { + "name": "paths", + "type": "string[][]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 152, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nTrim the paths up to the given node id so that the paths will contain\nthe given node id and all the node ids after it. This function will\nmodify the paths.\n", + "description": "

Trim the paths up to the given node id so that the paths will contain\nthe given node id and all the node ids after it. This function will\nmodify the paths.

\n", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": { + "pos": 4731, + "end": 4736, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "paths" + }, + "type": "string[][]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4725, + "end": 4730, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the paths to trim

\n" + }, + { + "name": { + "pos": 4767, + "end": 4773, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4761, + "end": 4766, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id to trim up to

\n" + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Injectable } from '@angular/core';\nimport { Branch } from '../../../app/domain/branch';\nimport { ConfigService } from './configService';\nimport { PathService } from './pathService';\n\n@Injectable()\nexport class BranchService {\n branchesCache: Branch[];\n\n constructor(private configService: ConfigService, private pathService: PathService) {}\n\n getBranches(paths: string[][]): Branch[] {\n /*\n * Do not use the branches cache in the authoring tool because the branches\n * may change when the author changes the project. In all other modes the\n * branches can't change so we can use the cache.\n */\n if (this.configService.getMode() != 'author') {\n let branchesCache = this.getBranchesCache();\n if (branchesCache != null) {\n return branchesCache;\n }\n }\n\n const branches = this.findBranches(paths);\n if (this.configService.getMode() != 'author') {\n this.setBranchesCache(branches);\n }\n return branches;\n }\n\n private setBranchesCache(branches: Branch[]): void {\n this.branchesCache = branches;\n }\n\n private getBranchesCache(): Branch[] {\n return this.branchesCache;\n }\n\n clearBranchesCache() {\n this.branchesCache = null;\n }\n\n /**\n * Find the branches in the project\n * @param paths all the possible paths through the project\n * @return an array of branch objects. each branch object contains\n * the branch start point, the branch paths, and the branch\n * end point\n */\n private findBranches(paths: string[][]): Branch[] {\n const branches = [];\n let previousNodeId = null;\n\n /*\n * continue until all the paths are empty. we will remove\n * node ids from the paths as we traverse the paths to find\n * the branches\n */\n while (!this.pathService.arePathsEmpty(paths)) {\n const nodeId = this.pathService.getFirstNodeIdInPathAtIndex(paths, 0);\n\n if (this.pathService.areFirstNodeIdsInPathsTheSame(paths)) {\n // the first node ids in all the paths are the same\n\n this.pathService.removeNodeIdFromPaths(nodeId, paths);\n previousNodeId = nodeId;\n } else {\n // not all the top node ids are the same which means we have branched\n const nextCommonNodeId = this.findNextCommonNodeId(paths);\n let branchPaths = this.extractPathsUpToNodeId(paths, nextCommonNodeId);\n branchPaths = this.removeDuplicatePaths(branchPaths);\n branches.push(new Branch(previousNodeId, branchPaths, nextCommonNodeId));\n\n // trim the paths so that they start at the branch end point\n this.trimPathsUpToNodeId(paths, nextCommonNodeId);\n\n // remember this node id for the next iteration of the loop\n previousNodeId = nextCommonNodeId;\n }\n }\n return branches;\n }\n\n /**\n * Extract the paths up to a given node id. This will be used to\n * obtain branch paths.\n * @param paths the paths to extract from\n * @param nodeId the node id to extract up to\n * @return paths that go up to but do not include the node id\n */\n private extractPathsUpToNodeId(paths: string[][], nodeId: string): string[][] {\n const extractedPaths = [];\n for (let path of paths) {\n let index = path.indexOf(nodeId);\n if (index == -1) {\n /*\n * the node id is not in the path so we will\n * extract up to the end of the path\n */\n index = path.length;\n }\n\n /*\n * get the path up to the node id index. this does\n * not modify the path array.\n */\n const extractedPath = path.slice(0, index);\n extractedPaths.push(extractedPath);\n }\n return extractedPaths;\n }\n\n /**\n * Removes duplicate paths\n * @param paths an array of paths. each path contains an array of node ids\n * @return an array of unique paths\n */\n private removeDuplicatePaths(paths: string[][]): string[][] {\n const uniquePaths = [];\n for (const path of paths) {\n let isPathInUniquePaths = false;\n for (const uniquePath of uniquePaths) {\n if (this.arrayEquals(path, uniquePath)) {\n isPathInUniquePaths = true;\n }\n }\n if (!isPathInUniquePaths) {\n uniquePaths.push(path);\n }\n }\n return uniquePaths;\n }\n\n /**\n * Check if two arrays are equal\n * @param a an array of strings\n * @param b an array of strings\n * @return whether the two arrays contain the strings in the same order\n */\n private arrayEquals(a: string[], b: string[]): boolean {\n return a.length === b.length && a.every((val, index) => val === b[index]);\n }\n\n /**\n * Trim the paths up to the given node id so that the paths will contain\n * the given node id and all the node ids after it. This function will\n * modify the paths.\n * @param paths the paths to trim\n * @param nodeId the node id to trim up to\n */\n private trimPathsUpToNodeId(paths: string[][], nodeId: string): void {\n for (let path of paths) {\n let index = path.indexOf(nodeId);\n\n if (index == -1) {\n /*\n * the node id is not in the path so we will\n * trim the path to the end which will make\n * the path empty\n */\n index = path.length;\n }\n\n /*\n * trim the path up to the node id index. this will\n * modify the path array.\n */\n path.splice(0, index);\n }\n }\n\n /**\n * Find the next common node id in all the paths\n * @param paths the paths to find the common node id in\n * @return a node id that is in all the paths or null\n * if there is no node id that is in all the paths\n */\n private findNextCommonNodeId(paths: string[][]): string {\n let nextCommonNodeId = null;\n if (paths.length > 0) {\n const path = paths[0];\n for (const nodeId of path) {\n if (this.allPathsContainNodeId(paths, nodeId)) {\n /*\n * the node id is in all the paths so we have found\n * what we were looking for\n */\n nextCommonNodeId = nodeId;\n break;\n }\n }\n }\n return nextCommonNodeId;\n }\n\n /**\n * Check if all the paths contain the node id\n * @param paths an array of paths. each path contains an array of node ids\n * @param nodeId the node id that we will check is in all the paths\n * @return whether the node id is in all the paths\n */\n private allPathsContainNodeId(paths: string[][], nodeId: string): boolean {\n for (const path of paths) {\n if (!path.includes(nodeId)) {\n return false;\n }\n }\n return true;\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "pathService", + "type": "PathService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 8, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "pathService", + "type": "PathService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "type": "injectable" + }, + { + "name": "ClassroomStatusService", + "id": "injectable-ClassroomStatusService-45ecfe53c60a90724003fe8e1122fe42e663c2c27c12825b39ff6d61dae27f2d762057227993be55263d022b944eafc468314e82c07dbd9bfd21d4527d7d403d", + "file": "src/assets/wise5/services/classroomStatusService.ts", + "properties": [ + { + "name": "studentStatuses", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 13 + }, + { + "name": "studentStatusReceived$", + "defaultValue": "this.studentStatusReceivedSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "Observable", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 125 + ] + }, + { + "name": "studentStatusReceivedSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "modifierKind": [ + 123 + ] + } + ], + "methods": [ + { + "name": "addGroupNodeCompletion", + "args": [ + { + "name": "nodeStatuses", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "onlyIncludeWorkNodes", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "numCompleted", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "numTotal", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "CompletionCounter", + "typeParameters": [], + "line": 168, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeStatuses", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "onlyIncludeWorkNodes", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "numCompleted", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "numTotal", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addStepNodeCompletion", + "args": [ + { + "name": "nodeStatus", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "onlyIncludeWorkNodes", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "numCompleted", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "numTotal", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "CompletionCounter", + "typeParameters": [], + "line": 214, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeStatus", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "onlyIncludeWorkNodes", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "numCompleted", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "numTotal", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "broadcastStudentStatusReceived", + "args": [ + { + "name": "args", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 358, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "args", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "calculateLegacyGroupCompletion", + "args": [ + { + "name": "nodeStatuses", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "numCompleted", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "numTotal", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "CompletionCounter", + "typeParameters": [], + "line": 238, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeStatuses", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "numCompleted", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "numTotal", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getCurrentNodeLocationForWorkgroupId", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 54, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getDescendantStepIds", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string[]", + "typeParameters": [], + "line": 256, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getMaxScoreForWorkgroupId", + "args": [ + { + "name": "workgroupId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 333, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the max score for the project for the given workgroup id\nto the given workgroupId or null if none of the visible components has max scores.\n", + "description": "

Get the max score for the project for the given workgroup id\nto the given workgroupId or null if none of the visible components has max scores.

\n", + "jsdoctags": [ + { + "name": { + "pos": 10848, + "end": 10859, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "workgroupId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 10842, + "end": 10847, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "" + }, + { + "tagName": { + "pos": 10866, + "end": 10873, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

the sum of the max scores for all the nodes in the project visible\nto the given workgroupId or null if none of the visible components has max scores.

\n" + } + ] + }, + { + "name": "getNodeAverageScore", + "args": [ + { + "name": "nodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "periodId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 292, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the average score for a node for a period\n", + "description": "

Get the average score for a node for a period

\n", + "jsdoctags": [ + { + "name": { + "pos": 9468, + "end": 9474, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 9462, + "end": 9467, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id

\n" + }, + { + "name": { + "pos": 9499, + "end": 9507, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "periodId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 9493, + "end": 9498, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the period id. pass in -1 to select all periods.

\n" + }, + { + "tagName": { + "pos": 9563, + "end": 9570, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

the average score for the node for the period

\n" + } + ] + }, + { + "name": "getNodeCompletion", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + }, + { + "name": "onlyIncludeWorkNodes", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 121, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet node completion data\n", + "description": "

Get node completion data

\n", + "jsdoctags": [ + { + "name": { + "pos": 4127, + "end": 4133, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4121, + "end": 4126, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id

\n" + }, + { + "name": { + "pos": 4158, + "end": 4166, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "periodId" + }, + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4152, + "end": 4157, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the period id (pass in -1 to select all periods)

\n" + }, + { + "name": { + "pos": 4228, + "end": 4239, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "workgroupId" + }, + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "pos": 4222, + "end": 4227, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

(optional) the workgroup id to limit results to

\n" + }, + { + "name": { + "pos": 4300, + "end": 4320, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "onlyIncludeWorkNodes" + }, + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "pos": 4294, + "end": 4299, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

(optional) boolean whether to only include work nodes

\n" + }, + { + "tagName": { + "pos": 4381, + "end": 4388, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

object with completed, total, and percent completed (integer between 0 and 100)

\n" + } + ] + }, + { + "name": "getNodeCompletionResult", + "args": [ + { + "name": "numCompleted", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "numTotal", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 277, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "numCompleted", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "numTotal", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getStudentProjectCompletion", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "ProjectCompletion", + "typeParameters": [], + "line": 94, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getStudentStatuses", + "args": [], + "optional": false, + "returnType": "{}", + "typeParameters": [], + "line": 50, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getStudentStatusesForPeriodAndWorkgroup", + "args": [ + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "StudentStatus[]", + "typeParameters": [], + "line": 157, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getStudentStatusForWorkgroupId", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 66, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getWorkNodeCompletion", + "args": [ + { + "name": "progress", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeStatuses", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "numCompleted", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "numTotal", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "CompletionCounter", + "typeParameters": [], + "line": 191, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "progress", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeStatuses", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "numCompleted", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "numTotal", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "hasStudentStatus", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 74, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isIncludeStepStatusInCount", + "args": [ + { + "name": "nodeStatus", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "onlyIncludeWorkNodes", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 267, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeStatus", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "onlyIncludeWorkNodes", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isVisibleAndHasWork", + "args": [ + { + "name": "nodeStatus", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 263, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeStatus", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "parseStudentStatuses", + "args": [ + { + "name": "studentStatuses", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 33, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "studentStatuses", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "periodMatches", + "args": [ + { + "name": "studentStatus", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 230, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "studentStatus", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "retrieveStudentStatuses", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 24, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "setStudentStatus", + "args": [ + { + "name": "studentStatus", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 78, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentStatus", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "workgroupMatches", + "args": [ + { + "name": "studentStatus", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 234, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "studentStatus", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { AnnotationService } from './annotationService';\nimport { ConfigService } from './configService';\nimport { ProjectService } from './projectService';\nimport { Observable, Subject, tap } from 'rxjs';\nimport { ProjectCompletion } from '../common/ProjectCompletion';\nimport { StudentStatus } from '../common/StudentStatus';\nimport { CompletionCounter } from '../common/CompletionCounter';\n\n@Injectable()\nexport class ClassroomStatusService {\n studentStatuses = [];\n private studentStatusReceivedSource: Subject = new Subject();\n public studentStatusReceived$: Observable = this.studentStatusReceivedSource.asObservable();\n\n constructor(\n private http: HttpClient,\n private annotationService: AnnotationService,\n private configService: ConfigService,\n private projectService: ProjectService\n ) {}\n\n retrieveStudentStatuses(): any {\n return this.http.get(`/api/teacher/run/${this.configService.getRunId()}/student-status`).pipe(\n tap((studentStatuses: any[]) => {\n this.studentStatuses = this.parseStudentStatuses(studentStatuses);\n return this.studentStatuses;\n })\n );\n }\n\n private parseStudentStatuses(studentStatuses: any[]): any[] {\n const parsedStatuses = [];\n const workgroups = this.configService.getClassmateUserInfos();\n for (const studentStatus of studentStatuses) {\n if (\n workgroups.find((workgroup) => {\n return workgroup.workgroupId === studentStatus.workgroupId;\n })\n ) {\n const parsedStatus = JSON.parse(studentStatus.status);\n parsedStatus.postTimestamp = studentStatus.timestamp;\n parsedStatuses.push(parsedStatus);\n }\n }\n return parsedStatuses;\n }\n\n getStudentStatuses() {\n return this.studentStatuses;\n }\n\n getCurrentNodeLocationForWorkgroupId(workgroupId: number): any {\n const studentStatus = this.getStudentStatusForWorkgroupId(workgroupId);\n if (studentStatus != null) {\n const currentNodeId = studentStatus.currentNodeId;\n return {\n position: this.projectService.getNodePositionAndTitle(currentNodeId),\n order: this.projectService.getNodeOrderById(currentNodeId)\n };\n }\n return null;\n }\n\n getStudentStatusForWorkgroupId(workgroupId: number): any {\n return (\n this.getStudentStatuses().find(\n (studentStatus) => studentStatus.workgroupId === workgroupId\n ) || null\n );\n }\n\n hasStudentStatus(workgroupId: number): boolean {\n return this.getStudentStatusForWorkgroupId(workgroupId) != null;\n }\n\n setStudentStatus(studentStatus: any): void {\n let isStudentStatusFound = false;\n const studentStatuses = this.getStudentStatuses();\n for (let x = 0; x < studentStatuses.length; x++) {\n const aStudentStatus = studentStatuses[x];\n if (aStudentStatus.workgroupId === studentStatus.workgroupId) {\n studentStatuses.splice(x, 1, studentStatus);\n isStudentStatusFound = true;\n break;\n }\n }\n if (!isStudentStatusFound) {\n studentStatuses.push(studentStatus);\n }\n }\n\n getStudentProjectCompletion(workgroupId: number): ProjectCompletion {\n let completion: ProjectCompletion = new ProjectCompletion();\n const studentStatus = this.getStudentStatusForWorkgroupId(workgroupId);\n if (studentStatus) {\n const projectCompletion = studentStatus.projectCompletion;\n const completionPctWithWork = projectCompletion.completionPctWithWork;\n if (completionPctWithWork) {\n completion.totalItems = projectCompletion.totalItemsWithWork;\n completion.completedItems = projectCompletion.completedItemsWithWork;\n completion.completionPct = projectCompletion.completionPctWithWork;\n } else {\n // we have a legacy projectCompletion object that only includes information for all nodes so\n // we need to calculate completion manually\n completion = this.getNodeCompletion('group0', -1, workgroupId, true);\n }\n }\n return completion;\n }\n\n /**\n * Get node completion data\n * @param nodeId the node id\n * @param periodId the period id (pass in -1 to select all periods)\n * @param workgroupId (optional) the workgroup id to limit results to\n * @param onlyIncludeWorkNodes (optional) boolean whether to only include work nodes\n * @returns object with completed, total, and percent completed (integer between 0 and 100)\n */\n getNodeCompletion(\n nodeId: string,\n periodId: number,\n workgroupId: number = null,\n onlyIncludeWorkNodes: boolean = false\n ): any {\n let numCompleted = 0;\n let numTotal = 0;\n const isGroupNode = this.projectService.isGroupNode(nodeId);\n const studentStatuses = this.getStudentStatusesForPeriodAndWorkgroup(periodId, workgroupId);\n for (const studentStatus of studentStatuses) {\n const nodeStatuses = studentStatus.nodeStatuses;\n const nodeStatus = nodeStatuses[nodeId];\n if (nodeStatus != null) {\n if (isGroupNode) {\n ({ numCompleted, numTotal } = this.addGroupNodeCompletion(\n nodeStatuses,\n nodeId,\n onlyIncludeWorkNodes,\n numCompleted,\n numTotal\n ));\n } else {\n ({ numCompleted, numTotal } = this.addStepNodeCompletion(\n nodeStatus,\n nodeId,\n onlyIncludeWorkNodes,\n numCompleted,\n numTotal\n ));\n }\n }\n }\n return this.getNodeCompletionResult(numCompleted, numTotal);\n }\n\n private getStudentStatusesForPeriodAndWorkgroup(\n periodId: number,\n workgroupId: number\n ): StudentStatus[] {\n return this.studentStatuses.filter(\n (studentStatus) =>\n this.periodMatches(studentStatus, periodId) &&\n this.workgroupMatches(studentStatus, workgroupId)\n );\n }\n\n private addGroupNodeCompletion(\n nodeStatuses: any,\n nodeId: string,\n onlyIncludeWorkNodes: boolean,\n numCompleted: number,\n numTotal: number\n ): CompletionCounter {\n const progress = nodeStatuses[nodeId].progress;\n if (onlyIncludeWorkNodes) {\n ({ numTotal, numCompleted } = this.getWorkNodeCompletion(\n progress,\n nodeStatuses,\n nodeId,\n numCompleted,\n numTotal\n ));\n } else if (progress) {\n numTotal += progress.totalItems;\n numCompleted += progress.completedItems;\n }\n return { numCompleted, numTotal };\n }\n\n private getWorkNodeCompletion(\n progress: any,\n nodeStatuses: any,\n nodeId: string,\n numCompleted: number,\n numTotal: number\n ): CompletionCounter {\n if (progress && progress.totalItemsWithWork) {\n numCompleted += progress.completedItemsWithWork;\n numTotal += progress.totalItemsWithWork;\n } else {\n // we have a legacy nodeStatus.progress that only includes completion information for all\n // nodes so we need to calculate the completion manually\n ({ numCompleted, numTotal } = this.calculateLegacyGroupCompletion(\n nodeStatuses,\n nodeId,\n numCompleted,\n numTotal\n ));\n }\n return { numCompleted, numTotal };\n }\n\n private addStepNodeCompletion(\n nodeStatus: any,\n nodeId: string,\n onlyIncludeWorkNodes: boolean,\n numCompleted: number,\n numTotal: number\n ): CompletionCounter {\n if (this.isIncludeStepStatusInCount(nodeStatus, nodeId, onlyIncludeWorkNodes)) {\n numTotal++;\n if (nodeStatus.isCompleted) {\n numCompleted++;\n }\n }\n return { numCompleted, numTotal };\n }\n\n private periodMatches(studentStatus: any, periodId: number): boolean {\n return periodId === -1 || periodId === studentStatus.periodId;\n }\n\n private workgroupMatches(studentStatus: any, workgroupId: number): boolean {\n return !workgroupId || workgroupId === studentStatus.workgroupId;\n }\n\n private calculateLegacyGroupCompletion(\n nodeStatuses: any,\n nodeId: string,\n numCompleted: number,\n numTotal: number\n ): CompletionCounter {\n for (const descendantId of this.getDescendantStepIds(nodeId)) {\n const descendantStatus = nodeStatuses[descendantId];\n if (this.isVisibleAndHasWork(descendantStatus, descendantId)) {\n if (descendantStatus.isCompleted) {\n numCompleted++;\n }\n numTotal++;\n }\n }\n return { numCompleted, numTotal };\n }\n\n private getDescendantStepIds(nodeId: string): string[] {\n const group = this.projectService.getNodeById(nodeId);\n return this.projectService\n .getDescendentIdsOfGroup(group)\n .filter((descendantId) => !this.projectService.isGroupNode(descendantId));\n }\n\n private isVisibleAndHasWork(nodeStatus: any, nodeId: string): boolean {\n return nodeStatus && nodeStatus.isVisible && this.projectService.nodeHasWork(nodeId);\n }\n\n private isIncludeStepStatusInCount(\n nodeStatus: any,\n nodeId: string,\n onlyIncludeWorkNodes: boolean\n ): boolean {\n return (\n nodeStatus.isVisible && (!onlyIncludeWorkNodes || this.projectService.nodeHasWork(nodeId))\n );\n }\n\n private getNodeCompletionResult(numCompleted: number, numTotal: number): any {\n const completionPercentage = numTotal > 0 ? Math.round((100 * numCompleted) / numTotal) : 0;\n return {\n completedItems: numCompleted,\n totalItems: numTotal,\n completionPct: completionPercentage\n };\n }\n\n /**\n * Get the average score for a node for a period\n * @param nodeId the node id\n * @param periodId the period id. pass in -1 to select all periods.\n * @returns the average score for the node for the period\n */\n getNodeAverageScore(nodeId, periodId) {\n let studentScoreSum = 0;\n let numStudentsWithScore = 0;\n const studentStatuses = this.studentStatuses;\n\n for (const studentStatus of studentStatuses) {\n if (studentStatus != null) {\n if (periodId === -1 || periodId === studentStatus.periodId) {\n // the period matches the one we are looking for\n const workgroupId = studentStatus.workgroupId;\n\n // get the workgroups score on the node\n const score = this.annotationService.getTotalNodeScoreForWorkgroup(workgroupId, nodeId);\n\n if (score != null) {\n // increment the counter of students with a score for this node\n numStudentsWithScore++;\n\n // accumulate the sum of the scores for this node\n studentScoreSum += score;\n }\n }\n }\n }\n\n let averageScore = null;\n\n if (numStudentsWithScore !== 0) {\n // calculate the average score for this node rounded down to the nearest hundredth\n averageScore = Math.floor((100 * studentScoreSum) / numStudentsWithScore) / 100;\n }\n\n return averageScore;\n }\n\n /**\n * Get the max score for the project for the given workgroup id\n * @param workgroupId\n * @returns the sum of the max scores for all the nodes in the project visible\n * to the given workgroupId or null if none of the visible components has max scores.\n */\n getMaxScoreForWorkgroupId(workgroupId) {\n let maxScore = null;\n let studentStatus = this.getStudentStatusForWorkgroupId(workgroupId);\n if (studentStatus) {\n let nodeStatuses = studentStatus.nodeStatuses;\n if (nodeStatuses) {\n for (let p in nodeStatuses) {\n if (nodeStatuses.hasOwnProperty(p)) {\n let nodeStatus = nodeStatuses[p];\n let nodeId = nodeStatus.nodeId;\n if (nodeStatus.isVisible && this.projectService.isApplicationNode(nodeId)) {\n let nodeMaxScore = this.projectService.getMaxScoreForNode(nodeId);\n if (nodeMaxScore) {\n // there is a max score for the node, so add to total\n // TODO geoffreykwan: trying to add to null?\n maxScore += nodeMaxScore;\n }\n }\n }\n }\n }\n }\n return maxScore;\n }\n\n broadcastStudentStatusReceived(args: any) {\n this.studentStatusReceivedSource.next(args);\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 15, + "jsdoctags": [ + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "type": "injectable" + }, + { + "name": "ClickToSnipImageService", + "id": "injectable-ClickToSnipImageService-8abb78247f401206edcf8784f9b8de2ecbdbcfe5800110bd0835f0623f418728710f3209d913b8221e0205fa30cd9422e975f873f6c55fdc21f5e0c75ed572c6", + "file": "src/assets/wise5/services/clickToSnipImageService.ts", + "properties": [], + "methods": [ + { + "name": "injectClickToSnipImageListener", + "args": [ + { + "name": "content", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 10, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nInject the ng-click attribute that will call the snipImage function\n", + "description": "

Inject the ng-click attribute that will call the snipImage function

\n", + "jsdoctags": [ + { + "name": { + "pos": 189, + "end": 196, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "content" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 183, + "end": 188, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the content

\n" + }, + { + "tagName": { + "pos": 215, + "end": 222, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

the modified content

\n" + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Injectable } from '@angular/core';\n\n@Injectable()\nexport class ClickToSnipImageService {\n /**\n * Inject the ng-click attribute that will call the snipImage function\n * @param content the content\n * @returns the modified content\n */\n injectClickToSnipImageListener(content: any): any {\n let contentString = JSON.stringify(content);\n const imgMatcher = new RegExp('', 'gi');\n contentString = contentString.replace(imgMatcher, (matchedString: string) => {\n return matchedString.replace(\n 'Check if the given node or component is completed

\n", + "jsdoctags": [ + { + "name": { + "pos": 541, + "end": 547, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 535, + "end": 540, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id

\n" + }, + { + "name": { + "pos": 572, + "end": 583, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "pos": 566, + "end": 571, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

(optional) the component id

\n" + }, + { + "tagName": { + "pos": 618, + "end": 625, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

whether the node or component is completed

\n" + } + ] + }, + { + "name": "isComponentCompleted", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 32, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isGroupNodeCompleted", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 52, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Injectable } from '@angular/core';\nimport { ComponentServiceLookupService } from './componentServiceLookupService';\nimport { ProjectService } from './projectService';\nimport { StudentDataService } from './studentDataService';\n\n@Injectable()\nexport class CompletionService {\n constructor(\n private componentServiceLookupService: ComponentServiceLookupService,\n private dataService: StudentDataService,\n private projectService: ProjectService\n ) {}\n\n /**\n * Check if the given node or component is completed\n * @param nodeId the node id\n * @param componentId (optional) the component id\n * @returns whether the node or component is completed\n */\n isCompleted(nodeId: string, componentId: string = null): boolean {\n let result = false;\n if (nodeId && componentId) {\n result = this.isComponentCompleted(nodeId, componentId);\n } else if (this.projectService.isGroupNode(nodeId)) {\n result = this.isGroupNodeCompleted(nodeId);\n } else if (this.projectService.isApplicationNode(nodeId)) {\n result = this.dataService.nodeStatuses[nodeId]?.isCompleted;\n }\n return result;\n }\n\n private isComponentCompleted(nodeId: string, componentId: string): boolean {\n const component = this.projectService.getComponent(nodeId, componentId);\n if (component != null) {\n const node = this.projectService.getNodeById(nodeId);\n const componentType = component.type;\n const service = this.componentServiceLookupService.getService(componentType);\n if (['OpenResponse', 'Discussion'].includes(componentType)) {\n return service.isCompletedV2(node, component, this.dataService.studentData);\n } else {\n const componentStates = this.dataService.getComponentStatesByNodeIdAndComponentId(\n nodeId,\n componentId\n );\n const nodeEvents = this.dataService.getEventsByNodeId(nodeId);\n return service.isCompleted(component, componentStates, nodeEvents, node);\n }\n }\n return false;\n }\n\n private isGroupNodeCompleted(nodeId: string): boolean {\n return this.projectService\n .getChildNodeIdsById(nodeId)\n .every(\n (id) =>\n this.dataService.nodeStatuses[id] != null &&\n this.dataService.nodeStatuses[id].isVisible &&\n this.dataService.nodeStatuses[id].isCompleted\n );\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "componentServiceLookupService", + "type": "ComponentServiceLookupService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 7, + "jsdoctags": [ + { + "name": "componentServiceLookupService", + "type": "ComponentServiceLookupService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "type": "injectable" + }, + { + "name": "ComponentInfoService", + "id": "injectable-ComponentInfoService-6cbb96a0d05afcb9890eeb9366bd4663bcba4e82b8bed02c63bf391d75613a99c8731f3286e04f77bb5f534fc50d559534bd48f2cf2eacf8c4b707f437403e7b", + "file": "src/assets/wise5/services/componentInfoService.ts", + "properties": [ + { + "name": "componentInfo", + "defaultValue": "{\n AiChat: new AiChatInfo(),\n Animation: new AnimationInfo(),\n AudioOscillator: new AudioOscillatorInfo(),\n ConceptMap: new ConceptMapInfo(),\n DialogGuidance: new DialogGuidanceInfo(),\n Discussion: new DiscussionInfo(),\n Draw: new DrawInfo(),\n Embedded: new EmbeddedInfo(),\n Graph: new GraphInfo(),\n HTML: new HtmlInfo(),\n Label: new LabelInfo(),\n Match: new MatchInfo(),\n MultipleChoice: new MultipleChoiceInfo(),\n OpenResponse: new OpenResponseInfo(),\n OutsideURL: new OutsideUrlInfo(),\n PeerChat: new PeerChatInfo(),\n ShowGroupWork: new ShowGroupWorkInfo(),\n ShowMyWork: new ShowMyWorkInfo(),\n Summary: new SummaryInfo(),\n Table: new TableInfo()\n }", + "deprecated": false, + "deprecationMessage": "", + "type": "object", + "indexKey": "", + "optional": false, + "description": "", + "line": 26, + "modifierKind": [ + 123 + ] + } + ], + "methods": [ + { + "name": "getInfo", + "args": [ + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "ComponentInfo", + "typeParameters": [], + "line": 49, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Injectable } from '@angular/core';\nimport { MultipleChoiceInfo } from '../components/multipleChoice/MultipleChoiceInfo';\nimport { OpenResponseInfo } from '../components/openResponse/OpenResponseInfo';\nimport { AnimationInfo } from '../components/animation/AnimationInfo';\nimport { AudioOscillatorInfo } from '../components/audioOscillator/AudioOscillatorInfo';\nimport { ConceptMapInfo } from '../components/conceptMap/ConceptMapInfo';\nimport { DialogGuidanceInfo } from '../components/dialogGuidance/DialogGuidanceInfo';\nimport { DiscussionInfo } from '../components/discussion/DiscussionInfo';\nimport { DrawInfo } from '../components/draw/DrawInfo';\nimport { EmbeddedInfo } from '../components/embedded/EmbeddedInfo';\nimport { GraphInfo } from '../components/graph/GraphInfo';\nimport { HtmlInfo } from '../components/html/HtmlInfo';\nimport { LabelInfo } from '../components/label/LabelInfo';\nimport { MatchInfo } from '../components/match/MatchInfo';\nimport { OutsideUrlInfo } from '../components/outsideURL/OutsideUrlInfo';\nimport { PeerChatInfo } from '../components/peerChat/PeerChatInfo';\nimport { ShowGroupWorkInfo } from '../components/showGroupWork/ShowGroupWorkInfo';\nimport { ShowMyWorkInfo } from '../components/showMyWork/ShowMyWorkInfo';\nimport { SummaryInfo } from '../components/summary/SummaryInfo';\nimport { TableInfo } from '../components/table/TableInfo';\nimport { ComponentInfo } from '../components/ComponentInfo';\nimport { AiChatInfo } from '../components/aiChat/AiChatInfo';\n\n@Injectable()\nexport class ComponentInfoService {\n private componentInfo = {\n AiChat: new AiChatInfo(),\n Animation: new AnimationInfo(),\n AudioOscillator: new AudioOscillatorInfo(),\n ConceptMap: new ConceptMapInfo(),\n DialogGuidance: new DialogGuidanceInfo(),\n Discussion: new DiscussionInfo(),\n Draw: new DrawInfo(),\n Embedded: new EmbeddedInfo(),\n Graph: new GraphInfo(),\n HTML: new HtmlInfo(),\n Label: new LabelInfo(),\n Match: new MatchInfo(),\n MultipleChoice: new MultipleChoiceInfo(),\n OpenResponse: new OpenResponseInfo(),\n OutsideURL: new OutsideUrlInfo(),\n PeerChat: new PeerChatInfo(),\n ShowGroupWork: new ShowGroupWorkInfo(),\n ShowMyWork: new ShowMyWorkInfo(),\n Summary: new SummaryInfo(),\n Table: new TableInfo()\n };\n\n getInfo(componentType: string): ComponentInfo {\n return this.componentInfo[componentType];\n }\n}\n", + "extends": [], + "type": "injectable" + }, + { + "name": "ComponentService", + "id": "injectable-ComponentService-0cba2e21ccd2a776200572577f230db34622b7233146abd0f5863902986631efc6d062d9b0ce6cb4cb87a8734ae4e9f28e66d7bda52013f96277e90ff8c4ca7d", + "file": "src/assets/wise5/components/componentService.ts", + "properties": [ + { + "name": "notifyConnectedComponentSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 123 + ] + }, + { + "name": "notifyConnectedComponentSource$", + "defaultValue": "this.notifyConnectedComponentSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "modifierKind": [ + 125 + ] + }, + { + "name": "requestComponentStateSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "modifierKind": [ + 123 + ] + }, + { + "name": "requestComponentStateSource$", + "defaultValue": "this.requestComponentStateSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "modifierKind": [ + 125 + ] + }, + { + "name": "sendComponentStateSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "modifierKind": [ + 123 + ] + }, + { + "name": "sendComponentStateSource$", + "defaultValue": "this.sendComponentStateSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "modifierKind": [ + 125 + ] + } + ], + "methods": [ + { + "name": "componentHasCorrectAnswer", + "args": [ + { + "name": "component", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 147, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "component", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "componentHasWork", + "args": [ + { + "name": "component", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 105, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nWhether this component generates student work\nis not provided, we will use the default value of whether the\ncomponent type usually has work.\n", + "description": "

Whether this component generates student work\nis not provided, we will use the default value of whether the\ncomponent type usually has work.

\n", + "jsdoctags": [ + { + "name": { + "pos": 3060, + "end": 3069, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "component" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3054, + "end": 3059, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

(optional) the component object. if the component object\nis not provided, we will use the default value of whether the\ncomponent type usually has work.

\n" + }, + { + "tagName": { + "pos": 3238, + "end": 3244, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether this component generates student work

\n", + "returnType": "boolean" + } + ] + }, + { + "name": "componentStateHasStudentWork", + "args": [ + { + "name": "componentState", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentContent", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 118, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if the component state has student work. Sometimes a component\nstate may be created if the student visits a component but doesn't\nactually perform any work. This is where we will check if the student\nactually performed any work.\n", + "description": "

Check if the component state has student work. Sometimes a component\nstate may be created if the student visits a component but doesn't\nactually perform any work. This is where we will check if the student\nactually performed any work.

\n", + "jsdoctags": [ + { + "name": { + "pos": 3634, + "end": 3648, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3628, + "end": 3633, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component state object

\n" + }, + { + "name": { + "pos": 3688, + "end": 3704, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentContent" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3682, + "end": 3687, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component content

\n" + }, + { + "tagName": { + "pos": 3733, + "end": 3739, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether the component state has any work

\n", + "returnType": "boolean" + } + ] + }, + { + "name": "componentUsesSaveButton", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 135, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nWhether this component uses a save button\n", + "description": "

Whether this component uses a save button

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 4173, + "end": 4179, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether this component uses a save button

\n", + "returnType": "boolean" + } + ] + }, + { + "name": "componentUsesSubmitButton", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 143, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nWhether this component uses a submit button\n", + "description": "

Whether this component uses a submit button

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 4351, + "end": 4357, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether this component uses a submit button

\n", + "returnType": "boolean" + } + ] + }, + { + "name": "createComponent", + "args": [], + "optional": false, + "returnType": "{ id: any; type: string; prompt: string; showSaveButton: boolean; showSubmitButton: boolean; }", + "typeParameters": [], + "line": 66, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCreate a component object\n", + "description": "

Create a component object

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 2025, + "end": 2032, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

a component object

\n", + "returnType": "object" + } + ] + }, + { + "name": "displayAnnotation", + "args": [ + { + "name": "componentContent", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "annotation", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 94, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if we need to display the annotation to the student\n", + "description": "

Check if we need to display the annotation to the student

\n", + "jsdoctags": [ + { + "name": { + "pos": 2753, + "end": 2769, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentContent" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2747, + "end": 2752, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component content

\n" + }, + { + "name": { + "pos": 2804, + "end": 2814, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "annotation" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2798, + "end": 2803, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the annotation

\n" + }, + { + "tagName": { + "pos": 2836, + "end": 2843, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

whether we need to display the annotation to the student

\n", + "returnType": "boolean" + } + ] + }, + { + "name": "getComponentTypeLabel", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 58, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the component type label. For example \"Open Response\".\n", + "description": "

Get the component type label. For example "Open Response".

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 1903, + "end": 1910, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "", + "returnType": "string" + } + ] + }, + { + "name": "getDomIdEnding", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 18, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getElementId", + "args": [ + { + "name": "domIdBeginning", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "domIdEnding", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "domIdBeginning", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "domIdEnding", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getStudentDataString", + "args": [ + { + "name": "componentState", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 127, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the human readable student data string\n", + "description": "

Get the human readable student data string

\n", + "jsdoctags": [ + { + "name": { + "pos": 3953, + "end": 3967, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3947, + "end": 3952, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component state

\n" + }, + { + "tagName": { + "pos": 3994, + "end": 4000, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

a human readable student data string

\n", + "returnType": "string" + } + ] + }, + { + "name": "hasNodeEnteredEvent", + "args": [ + { + "name": "nodeEvents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 155, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeEvents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isCompleted", + "args": [ + { + "name": "component", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentStates", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeEvents", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "node", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 84, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if the component was completed\n", + "description": "

Check if the component was completed

\n", + "jsdoctags": [ + { + "name": { + "pos": 2298, + "end": 2307, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "component" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2292, + "end": 2297, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component object

\n" + }, + { + "name": { + "pos": 2341, + "end": 2356, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentStates" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2335, + "end": 2340, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component states for the specific component

\n" + }, + { + "name": { + "pos": 2417, + "end": 2427, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeEvents" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2411, + "end": 2416, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the events for the parent node of the component

\n" + }, + { + "name": { + "pos": 2488, + "end": 2492, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "node" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2482, + "end": 2487, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

parent node of the component

\n" + }, + { + "tagName": { + "pos": 2528, + "end": 2535, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

whether the component was completed

\n", + "returnType": "boolean" + } + ] + }, + { + "name": "isSubmitRequired", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 151, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "notifyConnectedComponentSubscribers", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 42, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "requestComponentState", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 30, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "sendComponentState", + "args": [ + { + "name": "componentStateWrapper", + "type": "ComponentStateWrapper", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 38, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentStateWrapper", + "type": "ComponentStateWrapper", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "'use strict';\n\nimport { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { generateRandomKey } from '../common/string/string';\nimport { ComponentStateRequest } from './ComponentStateRequest';\nimport { ComponentStateWrapper } from './ComponentStateWrapper';\n\n@Injectable()\nexport class ComponentService {\n private requestComponentStateSource = new Subject();\n public requestComponentStateSource$ = this.requestComponentStateSource.asObservable();\n private sendComponentStateSource = new Subject();\n public sendComponentStateSource$ = this.sendComponentStateSource.asObservable();\n private notifyConnectedComponentSource = new Subject();\n public notifyConnectedComponentSource$ = this.notifyConnectedComponentSource.asObservable();\n\n getDomIdEnding(nodeId: string, componentId: string, componentState: any): string {\n if (componentState == null) {\n return `${nodeId}-${componentId}`;\n } else {\n return `${nodeId}-${componentId}-${componentState.id}`;\n }\n }\n\n getElementId(domIdBeginning: string, domIdEnding: string): string {\n return `${domIdBeginning}-${domIdEnding}`;\n }\n\n requestComponentState(nodeId: string, componentId: string, isSubmit: boolean = false): void {\n this.requestComponentStateSource.next({\n nodeId: nodeId,\n componentId: componentId,\n isSubmit: isSubmit\n });\n }\n\n sendComponentState(componentStateWrapper: ComponentStateWrapper): void {\n this.sendComponentStateSource.next(componentStateWrapper);\n }\n\n notifyConnectedComponentSubscribers(\n nodeId: string,\n componentId: string,\n componentState: any\n ): void {\n this.notifyConnectedComponentSource.next({\n nodeId: nodeId,\n componentId: componentId,\n componentState: componentState\n });\n }\n\n /**\n * Get the component type label. For example \"Open Response\".\n * @returns {string}\n */\n getComponentTypeLabel(): string {\n return '';\n }\n\n /**\n * Create a component object\n * @returns {object} a component object\n */\n createComponent() {\n return {\n id: generateRandomKey(),\n type: '',\n prompt: '',\n showSaveButton: false,\n showSubmitButton: false\n };\n }\n\n /**\n * Check if the component was completed\n * @param component the component object\n * @param componentStates the component states for the specific component\n * @param nodeEvents the events for the parent node of the component\n * @param node parent node of the component\n * @returns {boolean} whether the component was completed\n */\n isCompleted(component, componentStates, nodeEvents, node) {\n return true;\n }\n\n /**\n * Check if we need to display the annotation to the student\n * @param componentContent the component content\n * @param annotation the annotation\n * @returns {boolean} whether we need to display the annotation to the student\n */\n displayAnnotation(componentContent, annotation) {\n return true;\n }\n\n /**\n * Whether this component generates student work\n * @param component (optional) the component object. if the component object\n * is not provided, we will use the default value of whether the\n * component type usually has work.\n * @return {boolean} whether this component generates student work\n */\n componentHasWork(component) {\n return true;\n }\n\n /**\n * Check if the component state has student work. Sometimes a component\n * state may be created if the student visits a component but doesn't\n * actually perform any work. This is where we will check if the student\n * actually performed any work.\n * @param componentState the component state object\n * @param componentContent the component content\n * @return {boolean} whether the component state has any work\n */\n componentStateHasStudentWork(componentState, componentContent) {\n return false;\n }\n\n /**\n * Get the human readable student data string\n * @param componentState the component state\n * @return {string} a human readable student data string\n */\n getStudentDataString(componentState) {\n return '';\n }\n\n /**\n * Whether this component uses a save button\n * @return {boolean} whether this component uses a save button\n */\n componentUsesSaveButton() {\n return true;\n }\n\n /**\n * Whether this component uses a submit button\n * @return {boolean} whether this component uses a submit button\n */\n componentUsesSubmitButton() {\n return true;\n }\n\n componentHasCorrectAnswer(component) {\n return false;\n }\n\n isSubmitRequired(node: any, component: any) {\n return node.showSubmitButton || (component.showSubmitButton && !node.showSaveButton);\n }\n\n hasNodeEnteredEvent(nodeEvents: any[]): boolean {\n return nodeEvents.some((nodeEvent: any) => {\n return nodeEvent.event === 'nodeEntered';\n });\n }\n}\n", + "extends": [], + "type": "injectable" + }, + { + "name": "ComponentServiceLookupService", + "id": "injectable-ComponentServiceLookupService-c3cdb6353d580df7c4eea7b032f3862bf7c856300f3248621f16637d05a894649ee899b65753d4f2cfaa9e3f7d8e328e5808a11789c8f9c78fc8234fc0d84775", + "file": "src/assets/wise5/services/componentServiceLookupService.ts", + "properties": [ + { + "name": "services", + "defaultValue": "new Map()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 25 + } + ], + "methods": [ + { + "name": "getService", + "args": [ + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 71, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Injectable } from '@angular/core';\nimport { AnimationService } from '../components/animation/animationService';\nimport { AudioOscillatorService } from '../components/audioOscillator/audioOscillatorService';\nimport { ConceptMapService } from '../components/conceptMap/conceptMapService';\nimport { DialogGuidanceService } from '../components/dialogGuidance/dialogGuidanceService';\nimport { DiscussionService } from '../components/discussion/discussionService';\nimport { DrawService } from '../components/draw/drawService';\nimport { EmbeddedService } from '../components/embedded/embeddedService';\nimport { GraphService } from '../components/graph/graphService';\nimport { HTMLService } from '../components/html/htmlService';\nimport { LabelService } from '../components/label/labelService';\nimport { MatchService } from '../components/match/matchService';\nimport { MultipleChoiceService } from '../components/multipleChoice/multipleChoiceService';\nimport { OpenResponseService } from '../components/openResponse/openResponseService';\nimport { OutsideURLService } from '../components/outsideURL/outsideURLService';\nimport { PeerChatService } from '../components/peerChat/peerChatService';\nimport { ShowGroupWorkService } from '../components/showGroupWork/showGroupWorkService';\nimport { ShowMyWorkService } from '../components/showMyWork/showMyWorkService';\nimport { SummaryService } from '../components/summary/summaryService';\nimport { TableService } from '../components/table/tableService';\nimport { AiChatService } from '../components/aiChat/aiChatService';\n\n@Injectable()\nexport class ComponentServiceLookupService {\n services = new Map();\n\n constructor(\n private aiChatService: AiChatService,\n private animationService: AnimationService,\n private audioOscillatorService: AudioOscillatorService,\n private conceptMapService: ConceptMapService,\n private dialogGuidanceService: DialogGuidanceService,\n private discussionService: DiscussionService,\n private drawService: DrawService,\n private embeddedService: EmbeddedService,\n private graphService: GraphService,\n private labelService: LabelService,\n private matchService: MatchService,\n private multipleChoiceService: MultipleChoiceService,\n private openResponseService: OpenResponseService,\n private outsideURLService: OutsideURLService,\n private peerChatService: PeerChatService,\n private htmlService: HTMLService,\n private showGroupWorkService: ShowGroupWorkService,\n private showMyWorkService: ShowMyWorkService,\n private summaryService: SummaryService,\n private tableService: TableService\n ) {\n this.services.set('AiChat', this.aiChatService);\n this.services.set('Animation', this.animationService);\n this.services.set('AudioOscillator', this.audioOscillatorService);\n this.services.set('ConceptMap', this.conceptMapService);\n this.services.set('DialogGuidance', this.dialogGuidanceService);\n this.services.set('Discussion', this.discussionService);\n this.services.set('Draw', this.drawService);\n this.services.set('Embedded', this.embeddedService);\n this.services.set('Graph', this.graphService);\n this.services.set('Label', this.labelService);\n this.services.set('Match', this.matchService);\n this.services.set('MultipleChoice', this.multipleChoiceService);\n this.services.set('OpenResponse', this.openResponseService);\n this.services.set('OutsideURL', this.outsideURLService);\n this.services.set('PeerChat', this.peerChatService);\n this.services.set('HTML', this.htmlService);\n this.services.set('ShowGroupWork', this.showGroupWorkService);\n this.services.set('ShowMyWork', this.showMyWorkService);\n this.services.set('Summary', this.summaryService);\n this.services.set('Table', this.tableService);\n }\n\n getService(componentType: string): any {\n return this.services.get(componentType);\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "aiChatService", + "type": "AiChatService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "animationService", + "type": "AnimationService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "audioOscillatorService", + "type": "AudioOscillatorService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "conceptMapService", + "type": "ConceptMapService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialogGuidanceService", + "type": "DialogGuidanceService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "discussionService", + "type": "DiscussionService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "drawService", + "type": "DrawService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "embeddedService", + "type": "EmbeddedService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "graphService", + "type": "GraphService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "labelService", + "type": "LabelService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "matchService", + "type": "MatchService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "multipleChoiceService", + "type": "MultipleChoiceService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "openResponseService", + "type": "OpenResponseService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "outsideURLService", + "type": "OutsideURLService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "peerChatService", + "type": "PeerChatService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "htmlService", + "type": "HTMLService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "showGroupWorkService", + "type": "ShowGroupWorkService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "showMyWorkService", + "type": "ShowMyWorkService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "summaryService", + "type": "SummaryService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "tableService", + "type": "TableService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 25, + "jsdoctags": [ + { + "name": "aiChatService", + "type": "AiChatService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "animationService", + "type": "AnimationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "audioOscillatorService", + "type": "AudioOscillatorService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "conceptMapService", + "type": "ConceptMapService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialogGuidanceService", + "type": "DialogGuidanceService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "discussionService", + "type": "DiscussionService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "drawService", + "type": "DrawService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "embeddedService", + "type": "EmbeddedService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "graphService", + "type": "GraphService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "labelService", + "type": "LabelService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "matchService", + "type": "MatchService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "multipleChoiceService", + "type": "MultipleChoiceService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "openResponseService", + "type": "OpenResponseService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "outsideURLService", + "type": "OutsideURLService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "peerChatService", + "type": "PeerChatService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "htmlService", + "type": "HTMLService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "showGroupWorkService", + "type": "ShowGroupWorkService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "showMyWorkService", + "type": "ShowMyWorkService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "summaryService", + "type": "SummaryService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "tableService", + "type": "TableService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "type": "injectable" + }, + { + "name": "ComponentTypeService", + "id": "injectable-ComponentTypeService-5295afd0249f4b9895d8a543e5dba181499f26c7410b066a94e017a8341cbaebcf24b7849d62f62fc994b6420688033d1d377058eef9ac016bf018122aa76fdd", + "file": "src/assets/wise5/services/componentTypeService.ts", + "properties": [], + "methods": [ + { + "name": "getComponentTypeLabel", + "args": [ + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 42, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getComponentTypes", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 14, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isAiChatAllowed", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 46, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Injectable } from '@angular/core';\nimport { ComponentServiceLookupService } from './componentServiceLookupService';\nimport { UserService } from '../../../app/services/user.service';\nimport { ConfigService } from './configService';\n\n@Injectable()\nexport class ComponentTypeService {\n constructor(\n private componentServiceLookupService: ComponentServiceLookupService,\n private configService: ConfigService,\n private userService: UserService\n ) {}\n\n getComponentTypes(): any[] {\n const componentTypes = [\n { type: 'Animation', name: this.getComponentTypeLabel('Animation') },\n { type: 'AudioOscillator', name: this.getComponentTypeLabel('AudioOscillator') },\n { type: 'ConceptMap', name: this.getComponentTypeLabel('ConceptMap') },\n { type: 'DialogGuidance', name: this.getComponentTypeLabel('DialogGuidance') },\n { type: 'Discussion', name: this.getComponentTypeLabel('Discussion') },\n { type: 'Draw', name: this.getComponentTypeLabel('Draw') },\n { type: 'Embedded', name: this.getComponentTypeLabel('Embedded') },\n { type: 'Graph', name: this.getComponentTypeLabel('Graph') },\n { type: 'Label', name: this.getComponentTypeLabel('Label') },\n { type: 'Match', name: this.getComponentTypeLabel('Match') },\n { type: 'MultipleChoice', name: this.getComponentTypeLabel('MultipleChoice') },\n { type: 'OpenResponse', name: this.getComponentTypeLabel('OpenResponse') },\n { type: 'OutsideURL', name: this.getComponentTypeLabel('OutsideURL') },\n { type: 'PeerChat', name: this.getComponentTypeLabel('PeerChat') },\n { type: 'HTML', name: this.getComponentTypeLabel('HTML') },\n { type: 'ShowGroupWork', name: this.getComponentTypeLabel('ShowGroupWork') },\n { type: 'ShowMyWork', name: this.getComponentTypeLabel('ShowMyWork') },\n { type: 'Summary', name: this.getComponentTypeLabel('Summary') },\n { type: 'Table', name: this.getComponentTypeLabel('Table') }\n ];\n if (this.isAiChatAllowed()) {\n componentTypes.unshift({ type: 'AiChat', name: this.getComponentTypeLabel('AiChat') });\n }\n return componentTypes;\n }\n\n getComponentTypeLabel(componentType: string): string {\n return this.componentServiceLookupService.getService(componentType).getComponentTypeLabel();\n }\n\n private isAiChatAllowed(): boolean {\n return (\n this.configService.getConfigParam('chatGptEnabled') &&\n (this.userService.isAdmin() ||\n this.userService.isResearcher() ||\n this.userService.isTrustedAuthor())\n );\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "componentServiceLookupService", + "type": "ComponentServiceLookupService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "userService", + "type": "UserService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 7, + "jsdoctags": [ + { + "name": "componentServiceLookupService", + "type": "ComponentServiceLookupService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "userService", + "type": "UserService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "type": "injectable" + }, + { + "name": "ComputerAvatarService", + "id": "injectable-ComputerAvatarService-9a29833f332fa250003371ac6aa9af580d49caf9f11200621ae499da21bc8f97dfc2281802ed57b848a7769986c98552ab2f77703f9022fe7a83bebffa03f770", + "file": "src/assets/wise5/services/computerAvatarService.ts", + "properties": [ + { + "name": "avatars", + "defaultValue": "[\n new ComputerAvatar('person1', $localize`:A name for a computer avatar:Ermina`, 'person-1.png'),\n new ComputerAvatar('person2', $localize`:A name for a computer avatar:Alyx`, 'person-2.png'),\n new ComputerAvatar('person3', $localize`:A name for a computer avatar:Kai`, 'person-3.png'),\n new ComputerAvatar('person4', $localize`:A name for a computer avatar:Morgan`, 'person-4.png'),\n new ComputerAvatar('person5', $localize`:A name for a computer avatar:Parker`, 'person-5.png'),\n new ComputerAvatar('person6', $localize`:A name for a computer avatar:Milan`, 'person-6.png'),\n new ComputerAvatar('person7', $localize`:A name for a computer avatar:Emery`, 'person-7.png'),\n new ComputerAvatar('person8', $localize`:A name for a computer avatar:Yuna`, 'person-8.png'),\n new ComputerAvatar('robot1', $localize`:A name for a computer avatar:Ada`, 'robot-1.png'),\n new ComputerAvatar('robot2', $localize`:A name for a computer avatar:Nico`, 'robot-2.png')\n ]", + "deprecated": false, + "deprecationMessage": "", + "type": "ComputerAvatar[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 8 + }, + { + "name": "avatarsPath", + "defaultValue": "'/assets/img/computer-avatars/'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 20 + } + ], + "methods": [ + { + "name": "getAvatar", + "args": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "ComputerAvatar", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getAvatars", + "args": [], + "optional": false, + "returnType": "ComputerAvatar[]", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getAvatarsPath", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 30, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getDefaultAvatar", + "args": [], + "optional": false, + "returnType": "ComputerAvatar", + "typeParameters": [], + "line": 34, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getDefaultComputerAvatarLabel", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 47, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getDefaultComputerAvatarSettings", + "args": [], + "optional": false, + "returnType": "ComputerAvatarSettings", + "typeParameters": [], + "line": 38, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Injectable } from '@angular/core';\nimport { ComputerAvatar } from '../common/computer-avatar/ComputerAvatar';\nimport { copy } from '../common/object/object';\nimport { ComputerAvatarSettings } from '../common/computer-avatar/ComputerAvatarSettings';\n\n@Injectable()\nexport class ComputerAvatarService {\n avatars: ComputerAvatar[] = [\n new ComputerAvatar('person1', $localize`:A name for a computer avatar:Ermina`, 'person-1.png'),\n new ComputerAvatar('person2', $localize`:A name for a computer avatar:Alyx`, 'person-2.png'),\n new ComputerAvatar('person3', $localize`:A name for a computer avatar:Kai`, 'person-3.png'),\n new ComputerAvatar('person4', $localize`:A name for a computer avatar:Morgan`, 'person-4.png'),\n new ComputerAvatar('person5', $localize`:A name for a computer avatar:Parker`, 'person-5.png'),\n new ComputerAvatar('person6', $localize`:A name for a computer avatar:Milan`, 'person-6.png'),\n new ComputerAvatar('person7', $localize`:A name for a computer avatar:Emery`, 'person-7.png'),\n new ComputerAvatar('person8', $localize`:A name for a computer avatar:Yuna`, 'person-8.png'),\n new ComputerAvatar('robot1', $localize`:A name for a computer avatar:Ada`, 'robot-1.png'),\n new ComputerAvatar('robot2', $localize`:A name for a computer avatar:Nico`, 'robot-2.png')\n ];\n avatarsPath: string = '/assets/img/computer-avatars/';\n\n getAvatar(id: string): ComputerAvatar {\n return this.avatars.find((avatar) => avatar.id === id);\n }\n\n getAvatars(): ComputerAvatar[] {\n return copy(this.avatars);\n }\n\n getAvatarsPath(): string {\n return this.avatarsPath;\n }\n\n getDefaultAvatar(): ComputerAvatar {\n return this.getAvatar('robot1');\n }\n\n getDefaultComputerAvatarSettings(): ComputerAvatarSettings {\n return {\n ids: this.getAvatars().map((avatar) => avatar.id),\n label: this.getDefaultComputerAvatarLabel(),\n prompt: $localize`Discuss your answer with a thought buddy!`,\n initialResponse: $localize`Hi there! It's nice to meet you. What do you think about...`\n };\n }\n\n getDefaultComputerAvatarLabel(): string {\n return $localize`Thought Buddy`;\n }\n}\n", + "extends": [], + "type": "injectable" + }, + { + "name": "ConceptMapService", + "id": "injectable-ConceptMapService-d7f04d2a0bfbe11120f86cddcd835c1655a377d6d3f369f4c66d265018f6f965d82c31fb1c2f66405606d3a34341ee1c612538a3506bb66cf0122b2a031ec74d", + "file": "src/assets/wise5/components/conceptMap/conceptMapService.ts", + "properties": [ + { + "name": "notifyConnectedComponentSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "notifyConnectedComponentSource$", + "defaultValue": "this.notifyConnectedComponentSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "requestComponentStateSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "requestComponentStateSource$", + "defaultValue": "this.requestComponentStateSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "sendComponentStateSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "sendComponentStateSource$", + "defaultValue": "this.sendComponentStateSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "ComponentService" + } + } + ], + "methods": [ + { + "name": "all", + "args": [ + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "conceptMapData", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ruleNames", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 523, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if all the rules are satisfied\nfalse if any of the rules are not satisfied\n", + "description": "

Check if all the rules are satisfied\nfalse if any of the rules are not satisfied

\n", + "jsdoctags": [ + { + "name": { + "pos": 14827, + "end": 14843, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentContent" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 14821, + "end": 14826, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the concept map component content

\n" + }, + { + "name": { + "pos": 14890, + "end": 14904, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "conceptMapData" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 14884, + "end": 14889, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the concept map student data

\n" + }, + { + "name": { + "pos": 14946, + "end": 14955, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "ruleNames" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 14940, + "end": 14945, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

an array of rule names

\n" + }, + { + "tagName": { + "pos": 14985, + "end": 14992, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

true if all the rules are satisifed\nfalse if any of the rules are not satisfied

\n" + } + ] + }, + { + "name": "any", + "args": [ + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "conceptMapData", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ruleNames", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 506, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if any of the rules are satisfied\nfalse if none of the rules are satisified\n", + "description": "

Check if any of the rules are satisfied\nfalse if none of the rules are satisified

\n", + "jsdoctags": [ + { + "name": { + "pos": 14258, + "end": 14274, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentContent" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 14252, + "end": 14257, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the concept map component content

\n" + }, + { + "name": { + "pos": 14321, + "end": 14335, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "conceptMapData" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 14315, + "end": 14320, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the concept map student data

\n" + }, + { + "name": { + "pos": 14377, + "end": 14386, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "ruleNames" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 14371, + "end": 14376, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

an array of rule names

\n" + }, + { + "tagName": { + "pos": 14416, + "end": 14423, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

true if any of the rules are satisifed\nfalse if none of the rules are satisified

\n" + } + ] + }, + { + "name": "calculateDistance", + "args": [ + { + "name": "x1", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "y1", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "x2", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "y2", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 194, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCalculate the euclidean distance between two points\n", + "description": "

Calculate the euclidean distance between two points

\n", + "jsdoctags": [ + { + "name": { + "pos": 5239, + "end": 5241, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "x1" + }, + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 5233, + "end": 5238, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

x position of the first point

\n" + }, + { + "name": { + "pos": 5284, + "end": 5286, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "y1" + }, + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 5278, + "end": 5283, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

y position of the first point

\n" + }, + { + "name": { + "pos": 5329, + "end": 5331, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "x2" + }, + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 5323, + "end": 5328, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

x position of the second point

\n" + }, + { + "name": { + "pos": 5375, + "end": 5377, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "y2" + }, + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 5369, + "end": 5374, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

y position of the second point

\n" + }, + { + "tagName": { + "pos": 5415, + "end": 5422, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

the distance between the two points

\n" + } + ] + }, + { + "name": "componentStateHasStudentWork", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 976, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if the component state has student work. Sometimes a component\nstate may be created if the student visits a component but doesn't\nactually perform any work. This is where we will check if the student\nactually performed any work.\n", + "description": "

Check if the component state has student work. Sometimes a component\nstate may be created if the student visits a component but doesn't\nactually perform any work. This is where we will check if the student\nactually performed any work.

\n", + "jsdoctags": [ + { + "name": { + "pos": 29057, + "end": 29071, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 29051, + "end": 29056, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component state object

\n" + }, + { + "name": { + "pos": 29111, + "end": 29127, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentContent" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 29105, + "end": 29110, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component content

\n" + }, + { + "tagName": { + "pos": 29156, + "end": 29162, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether the component state has any work

\n" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "createComponent", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 41, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "createImage", + "args": [ + { + "name": "conceptMapData", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "width", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "height", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 730, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCreate an image from the concept map data\n", + "description": "

Create an image from the concept map data

\n", + "jsdoctags": [ + { + "name": { + "pos": 20730, + "end": 20744, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "conceptMapData" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 20724, + "end": 20729, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

concept map data from a student

\n" + }, + { + "name": { + "pos": 20789, + "end": 20794, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "width" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 20783, + "end": 20788, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the width of the image we want to create

\n" + }, + { + "name": { + "pos": 20848, + "end": 20854, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "height" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 20842, + "end": 20847, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the height of the image we want to create

\n" + } + ] + }, + { + "name": "displayAnnotation", + "args": [ + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "annotation", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 1196, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "annotation", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "evaluateRule", + "args": [ + { + "name": "conceptMapData", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "rule", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 283, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nEvaluate a rule\n", + "description": "

Evaluate a rule

\n", + "jsdoctags": [ + { + "name": { + "pos": 7993, + "end": 8007, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "conceptMapData" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 7987, + "end": 7992, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the concept map student data

\n" + }, + { + "name": { + "pos": 8049, + "end": 8053, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "rule" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 8043, + "end": 8048, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the rule object

\n" + }, + { + "tagName": { + "pos": 8076, + "end": 8083, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

whether the rule was satisfied

\n" + } + ] + }, + { + "name": "evaluateRuleByRuleName", + "args": [ + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "conceptMapData", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ruleName", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 205, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nEvaluate a rule name\n", + "description": "

Evaluate a rule name

\n", + "jsdoctags": [ + { + "name": { + "pos": 5651, + "end": 5667, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentContent" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 5645, + "end": 5650, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component content

\n" + }, + { + "name": { + "pos": 5702, + "end": 5716, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "conceptMapData" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 5696, + "end": 5701, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the student concept map data

\n" + }, + { + "name": { + "pos": 5758, + "end": 5766, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "ruleName" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 5752, + "end": 5757, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the rule name

\n" + }, + { + "tagName": { + "pos": 5787, + "end": 5794, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

whether the rule was satisfied

\n" + } + ] + }, + { + "name": "generateImageFromRenderedComponentState", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 1100, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nThe component state has been rendered in a element\nand now we want to take a snapshot of the work.\n", + "description": "

The component state has been rendered in a element\nand now we want to take a snapshot of the work.

\n", + "jsdoctags": [ + { + "name": { + "pos": 32914, + "end": 32928, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 32908, + "end": 32913, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The component state that has been rendered.

\n" + }, + { + "tagName": { + "pos": 32979, + "end": 32985, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

A promise that will return an image object.

\n" + } + ] + }, + { + "name": "getBase64Image", + "args": [ + { + "name": "imageHref", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 929, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the Base64 image from an image href. An image href will look like\n/wise/curriculum/25/assets/Sun.png\nand the Base64 image\n", + "description": "

Get the Base64 image from an image href. An image href will look like\n/wise/curriculum/25/assets/Sun.png\nand the Base64 image

\n", + "jsdoctags": [ + { + "name": { + "pos": 27460, + "end": 27469, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "imageHref" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 27454, + "end": 27459, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the image href

\n" + }, + { + "tagName": { + "pos": 27491, + "end": 27497, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

a promise that will return an object containing the image href\nand the Base64 image

\n" + } + ] + }, + { + "name": "getComponentTypeLabel", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 21, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getConceptMapContainerId", + "args": [ + { + "name": "domIdEnding", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 29, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "domIdEnding", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getFeedbackContainerId", + "args": [ + { + "name": "domIdEnding", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 37, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "domIdEnding", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getHrefToBase64ImageReplacements", + "args": [ + { + "name": "svgString", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "prependAssetsPath", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 852, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet Base64 images from image hrefs\nto the image references\ncontain an image href and a Base64 image.\n", + "description": "

Get Base64 images from image hrefs\nto the image references\ncontain an image href and a Base64 image.

\n", + "jsdoctags": [ + { + "name": { + "pos": 25042, + "end": 25051, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "svgString" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 25036, + "end": 25041, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the svg string

\n" + }, + { + "name": { + "pos": 25079, + "end": 25096, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "prependAssetsPath" + }, + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "pos": 25073, + "end": 25078, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

whether to prepend the assets directory path\nto the image references

\n" + }, + { + "tagName": { + "pos": 25177, + "end": 25183, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

a promise that will return an array of objects. The objects will\ncontain an image href and a Base64 image.

\n" + } + ] + }, + { + "name": "getImagesInSVG", + "args": [ + { + "name": "svgString", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "{}", + "typeParameters": [], + "line": 888, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet all the image hrefs in the svg string\n", + "description": "

Get all the image hrefs in the svg string

\n", + "jsdoctags": [ + { + "name": { + "pos": 26257, + "end": 26266, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "svgString" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 26251, + "end": 26256, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the svg string

\n" + }, + { + "tagName": { + "pos": 26288, + "end": 26294, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

an array of image hrefs

\n" + } + ] + }, + { + "name": "getLinksByLabels", + "args": [ + { + "name": "conceptMapData", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeLabel", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "linkLabel", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "otherNodeLabel", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "{}", + "typeParameters": [], + "line": 467, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet links with the given source node label, link label, and destination\nnode label\ndestination node label\n", + "description": "

Get links with the given source node label, link label, and destination\nnode label\ndestination node label

\n", + "jsdoctags": [ + { + "name": { + "pos": 13091, + "end": 13105, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "conceptMapData" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 13085, + "end": 13090, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the concept map student data

\n" + }, + { + "name": { + "pos": 13147, + "end": 13156, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeLabel" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 13141, + "end": 13146, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the source node label

\n" + }, + { + "name": { + "pos": 13191, + "end": 13200, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "linkLabel" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 13185, + "end": 13190, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the link label

\n" + }, + { + "name": { + "pos": 13228, + "end": 13242, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "otherNodeLabel" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 13222, + "end": 13227, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the destination node label

\n" + }, + { + "tagName": { + "pos": 13276, + "end": 13283, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

the links with the given source node label, link label, and\ndestination node label

\n" + } + ] + }, + { + "name": "getLinksFromConceptMapData", + "args": [ + { + "name": "conceptMapData", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "{}", + "typeParameters": [], + "line": 1012, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "conceptMapData", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getNextAvailableId", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "prefix", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 1179, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nFor example the prefix for 'studentNode3' would be\n'studentNode'\n", + "description": "

For example the prefix for 'studentNode3' would be\n'studentNode'

\n", + "jsdoctags": [ + { + "name": { + "pos": 35726, + "end": 35733, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "objects" + }, + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 35720, + "end": 35725, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

An array of nodes or links.

\n" + }, + { + "name": { + "pos": 35774, + "end": 35780, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "prefix" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 35768, + "end": 35773, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The prefix for the given type of objects\nFor example the prefix for 'studentNode3' would be\n'studentNode'

\n" + } + ] + }, + { + "name": "getNodeById", + "args": [ + { + "name": "nodes", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 704, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet a node by id.\n", + "description": "

Get a node by id.

\n", + "jsdoctags": [ + { + "name": "nodes", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": { + "pos": 20178, + "end": 20180, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "id" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 20172, + "end": 20177, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id

\n" + }, + { + "tagName": { + "pos": 20199, + "end": 20206, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

the node with the given id or null

\n" + } + ] + }, + { + "name": "getNodesByLabel", + "args": [ + { + "name": "conceptMapData", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "label", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "{}", + "typeParameters": [], + "line": 444, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet nodes by label\n", + "description": "

Get nodes by label

\n", + "jsdoctags": [ + { + "name": { + "pos": 12509, + "end": 12523, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "conceptMapData" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 12503, + "end": 12508, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the concept map student data

\n" + }, + { + "name": { + "pos": 12565, + "end": 12570, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "label" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 12559, + "end": 12564, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node label to look for

\n" + }, + { + "tagName": { + "pos": 12604, + "end": 12611, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

all the nodes with the given label

\n" + } + ] + }, + { + "name": "getNodesFromConceptMapData", + "args": [ + { + "name": "conceptMapData", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "{}", + "typeParameters": [], + "line": 1004, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "conceptMapData", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getRuleByRuleName", + "args": [ + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ruleName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 404, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet a rule by the rule name\n", + "description": "

Get a rule by the rule name

\n", + "jsdoctags": [ + { + "name": { + "pos": 11435, + "end": 11451, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentContent" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 11429, + "end": 11434, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the concept map component content

\n" + }, + { + "name": { + "pos": 11498, + "end": 11506, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "ruleName" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 11492, + "end": 11497, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the rule name

\n" + }, + { + "tagName": { + "pos": 11527, + "end": 11534, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

the rule with the given rule name

\n" + } + ] + }, + { + "name": "getRulesByCategoryName", + "args": [ + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "category", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "{}", + "typeParameters": [], + "line": 424, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the rules in the category\n", + "description": "

Get the rules in the category

\n", + "jsdoctags": [ + { + "name": { + "pos": 11942, + "end": 11958, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentContent" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 11936, + "end": 11941, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component content

\n" + }, + { + "name": { + "pos": 11993, + "end": 12001, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "category" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 11987, + "end": 11992, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the category name

\n" + }, + { + "tagName": { + "pos": 12026, + "end": 12033, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

the rules in the category

\n" + } + ] + }, + { + "name": "getSelectNodeBarId", + "args": [ + { + "name": "domIdEnding", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 33, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "domIdEnding", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getSlope", + "args": [ + { + "name": "x1", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "y1", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "x2", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "y2", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 175, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the slope of the line between two points\n", + "description": "

Get the slope of the line between two points

\n", + "jsdoctags": [ + { + "name": { + "pos": 4659, + "end": 4661, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "x1" + }, + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4653, + "end": 4658, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

x position of the first point

\n" + }, + { + "name": { + "pos": 4704, + "end": 4706, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "y1" + }, + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4698, + "end": 4703, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

y position of the first point

\n" + }, + { + "name": { + "pos": 4749, + "end": 4751, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "x2" + }, + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4743, + "end": 4748, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

x position of the second point

\n" + }, + { + "name": { + "pos": 4795, + "end": 4797, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "y2" + }, + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4789, + "end": 4794, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

y position of the second point

\n" + }, + { + "tagName": { + "pos": 4835, + "end": 4842, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

the slope of the line or null if the slope is infinite

\n" + } + ] + }, + { + "name": "getSVGId", + "args": [ + { + "name": "domIdEnding", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 25, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "domIdEnding", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "hasAnyNodeOrLink", + "args": [ + { + "name": "nodes", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "links", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 1000, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodes", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "links", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "hasComponentStateWithIsSubmitTrue", + "args": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 71, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "hasStarterConceptMap", + "args": [ + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 1020, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isAllLinksEqual", + "args": [ + { + "name": "links1", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "links2", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 1060, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "links1", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "links2", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isAllNodesEqual", + "args": [ + { + "name": "nodes1", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodes2", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 1047, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodes1", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodes2", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isCompleted", + "args": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeEvents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 60, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeEvents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "isLatestComponentStateHasConceptMapData", + "args": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 87, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isLinkMatchingSourceLinkDestination", + "args": [ + { + "name": "link", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "sourceLabel", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "linkLabel", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "destinationLabel", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 485, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "link", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "sourceLabel", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "linkLabel", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "destinationLabel", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isLinksEqual", + "args": [ + { + "name": "link1", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "link2", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 1082, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "link1", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "link2", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isNodesEqual", + "args": [ + { + "name": "node1", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "node2", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 1073, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "node1", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "node2", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isStudentConceptMapDifferentThanStarterConceptMap", + "args": [ + { + "name": "studentConceptMap", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "starterConceptMap", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 1032, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if the student concept map is different than the starter conept map\nconcept map\n", + "description": "

Check if the student concept map is different than the starter conept map\nconcept map

\n", + "jsdoctags": [ + { + "name": { + "pos": 30822, + "end": 30839, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "studentConceptMap" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 30816, + "end": 30821, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the student concept map

\n" + }, + { + "name": { + "pos": 30876, + "end": 30893, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "starterConceptMap" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 30870, + "end": 30875, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the authored starter concept map

\n" + }, + { + "tagName": { + "pos": 30933, + "end": 30939, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether the student concept map is different than the starter\nconcept map

\n" + } + ] + }, + { + "name": "moveLinkTextToFront", + "args": [ + { + "name": "links", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 641, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "links", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "moveNodesToFront", + "args": [ + { + "name": "nodes", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 647, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodes", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "newConceptMapLink", + "args": [ + { + "name": "draw", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "originalId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + }, + { + "name": "sourceNode", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + }, + { + "name": "destinationNode", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + }, + { + "name": "label", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + }, + { + "name": "color", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + }, + { + "name": "curvature", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + }, + { + "name": "startCurveUp", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + }, + { + "name": "startCurveDown", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 141, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCreate an instance of the ConceptMapLink class\n", + "description": "

Create an instance of the ConceptMapLink class

\n", + "jsdoctags": [ + { + "name": { + "pos": 3828, + "end": 3832, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "draw" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3822, + "end": 3827, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the svg.js draw object

\n" + }, + { + "name": { + "pos": 3868, + "end": 3870, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "id" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3862, + "end": 3867, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the link id

\n" + }, + { + "name": "originalId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + }, + { + "name": "sourceNode", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + }, + { + "name": "destinationNode", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + }, + { + "name": "label", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + }, + { + "name": "color", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + }, + { + "name": "curvature", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + }, + { + "name": "startCurveUp", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + }, + { + "name": "startCurveDown", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + }, + { + "tagName": { + "pos": 4045, + "end": 4052, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

a ConceptMapLink

\n" + } + ] + }, + { + "name": "newConceptMapNode", + "args": [ + { + "name": "draw", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "originalId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "filePath", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "label", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "x", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "y", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "width", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "height", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "showLabel", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 106, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCreate an instance of the ConceptMapNode class\n", + "description": "

Create an instance of the ConceptMapNode class

\n", + "jsdoctags": [ + { + "name": { + "pos": 2998, + "end": 3002, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "draw" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2992, + "end": 2997, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the svg.js draw object

\n" + }, + { + "name": { + "pos": 3038, + "end": 3040, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "id" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3032, + "end": 3037, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id

\n" + }, + { + "name": "originalId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": { + "pos": 3065, + "end": 3073, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "filePath" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3059, + "end": 3064, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the file path of the image

\n" + }, + { + "name": { + "pos": 3113, + "end": 3118, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "label" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3107, + "end": 3112, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the label of the node

\n" + }, + { + "name": { + "pos": 3153, + "end": 3154, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "x" + }, + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3147, + "end": 3152, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the x coordinate

\n" + }, + { + "name": { + "pos": 3184, + "end": 3185, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "y" + }, + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3178, + "end": 3183, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the y coordinate

\n" + }, + { + "name": { + "pos": 3215, + "end": 3220, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "width" + }, + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3209, + "end": 3214, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the width of the image

\n" + }, + { + "name": { + "pos": 3256, + "end": 3262, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "height" + }, + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3250, + "end": 3255, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the height of the image

\n" + }, + { + "name": { + "pos": 3299, + "end": 3308, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "showLabel" + }, + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3293, + "end": 3298, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

whether to show the label

\n" + } + ] + }, + { + "name": "populateConceptMapData", + "args": [ + { + "name": "draw", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "conceptMapData", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 538, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nPopulate the concept map data into the component\nof nodes and an array of links\n", + "description": "

Populate the concept map data into the component\nof nodes and an array of links

\n", + "jsdoctags": [ + { + "name": { + "pos": 15452, + "end": 15456, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "draw" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 15446, + "end": 15451, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the SVG draw div

\n" + }, + { + "name": { + "pos": 15486, + "end": 15500, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "conceptMapData" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 15480, + "end": 15485, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the concept map data which contains an array\nof nodes and an array of links

\n" + } + ] + }, + { + "name": "refreshLinkLabels", + "args": [ + { + "name": "nodes", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "links", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 661, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nRefresh the link labels so that the rectangles around the text\nlabels are resized to fit the text properly. This is required because\nthe rectangles are not properly sized when the ConceptMapLinks are\ninitialized. The rectangles need to be rendered first and then the\nlabels need to be set in order for the rectangles to be resized properly.\n", + "description": "

Refresh the link labels so that the rectangles around the text\nlabels are resized to fit the text properly. This is required because\nthe rectangles are not properly sized when the ConceptMapLinks are\ninitialized. The rectangles need to be rendered first and then the\nlabels need to be set in order for the rectangles to be resized properly.

\n", + "jsdoctags": [ + { + "name": "nodes", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "links", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "componentHasCorrectAnswer", + "args": [ + { + "name": "component", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 147, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "component", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "componentHasWork", + "args": [ + { + "name": "component", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 105, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nWhether this component generates student work\nis not provided, we will use the default value of whether the\ncomponent type usually has work.\n", + "description": "

Whether this component generates student work\nis not provided, we will use the default value of whether the\ncomponent type usually has work.

\n", + "jsdoctags": [ + { + "name": { + "pos": 3060, + "end": 3069, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "component" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3054, + "end": 3059, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

(optional) the component object. if the component object\nis not provided, we will use the default value of whether the\ncomponent type usually has work.

\n" + }, + { + "tagName": { + "pos": 3238, + "end": 3244, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether this component generates student work

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "componentUsesSaveButton", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 135, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nWhether this component uses a save button\n", + "description": "

Whether this component uses a save button

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 4173, + "end": 4179, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether this component uses a save button

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "componentUsesSubmitButton", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 143, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nWhether this component uses a submit button\n", + "description": "

Whether this component uses a submit button

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 4351, + "end": 4357, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether this component uses a submit button

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getDomIdEnding", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 18, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getElementId", + "args": [ + { + "name": "domIdBeginning", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "domIdEnding", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "domIdBeginning", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "domIdEnding", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getStudentDataString", + "args": [ + { + "name": "componentState", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 127, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the human readable student data string\n", + "description": "

Get the human readable student data string

\n", + "jsdoctags": [ + { + "name": { + "pos": 3953, + "end": 3967, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3947, + "end": 3952, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component state

\n" + }, + { + "tagName": { + "pos": 3994, + "end": 4000, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

a human readable student data string

\n", + "returnType": "string" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "hasNodeEnteredEvent", + "args": [ + { + "name": "nodeEvents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 155, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeEvents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "isSubmitRequired", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 151, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "notifyConnectedComponentSubscribers", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 42, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "requestComponentState", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 30, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "sendComponentState", + "args": [ + { + "name": "componentStateWrapper", + "type": "ComponentStateWrapper", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 38, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentStateWrapper", + "type": "ComponentStateWrapper", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "'use strict';\n\nimport SVG from 'svg.js';\nimport { ComponentService } from '../componentService';\nimport { ConfigService } from '../../services/configService';\nimport { StudentAssetService } from '../../services/studentAssetService';\nimport ConceptMapNode from './conceptMapNode';\nimport ConceptMapLink from './conceptMapLink';\nimport { Injectable } from '@angular/core';\nimport { convertToPNGFile } from '../../common/canvas/canvas';\n\n@Injectable()\nexport class ConceptMapService extends ComponentService {\n constructor(\n private ConfigService: ConfigService,\n private StudentAssetService: StudentAssetService\n ) {\n super();\n }\n\n getComponentTypeLabel(): string {\n return $localize`Concept Map`;\n }\n\n getSVGId(domIdEnding: string): string {\n return this.getElementId('svg', domIdEnding);\n }\n\n getConceptMapContainerId(domIdEnding: string): string {\n return this.getElementId('concept-map-container', domIdEnding);\n }\n\n getSelectNodeBarId(domIdEnding: string): string {\n return this.getElementId('select-node-bar', domIdEnding);\n }\n\n getFeedbackContainerId(domIdEnding: string): string {\n return this.getElementId('feedback-container', domIdEnding);\n }\n\n createComponent() {\n const component: any = super.createComponent();\n component.type = 'ConceptMap';\n component.width = 800;\n component.height = 600;\n component.background = null;\n component.stretchBackground = null;\n component.nodes = [];\n component.linksTitle = '';\n component.links = [];\n component.rules = [];\n component.starterConceptMap = null;\n component.customRuleEvaluator = '';\n component.showAutoScore = false;\n component.showAutoFeedback = false;\n component.showNodeLabels = true;\n return component;\n }\n\n isCompleted(component: any, componentStates: any[], nodeEvents: any[], node: any) {\n if (componentStates != null && componentStates.length > 0) {\n if (this.isSubmitRequired(node, component)) {\n return this.hasComponentStateWithIsSubmitTrue(componentStates);\n } else {\n return this.isLatestComponentStateHasConceptMapData(componentStates);\n }\n }\n return false;\n }\n\n hasComponentStateWithIsSubmitTrue(componentStates: any[]) {\n for (let i = componentStates.length - 1; i >= 0; i--) {\n const componentState = componentStates[i];\n if (componentState.isSubmit && componentState.studentData) {\n if (\n componentState.isSubmit == true ||\n (componentState.studentData.submitCounter != null &&\n componentState.studentData.submitCounter > 0)\n ) {\n return true;\n }\n }\n }\n return false;\n }\n\n isLatestComponentStateHasConceptMapData(componentStates: any[]) {\n const componentState = componentStates[componentStates.length - 1];\n const studentData = componentState.studentData;\n return studentData != null && studentData.conceptMapData != null;\n }\n\n /**\n * Create an instance of the ConceptMapNode class\n * @param draw the svg.js draw object\n * @param id the node id\n * @param filePath the file path of the image\n * @param label the label of the node\n * @param x the x coordinate\n * @param y the y coordinate\n * @param width the width of the image\n * @param height the height of the image\n * @param showLabel whether to show the label\n * @param a ConceptMapNode\n */\n newConceptMapNode(\n draw: any,\n id: string,\n originalId: string,\n filePath: string,\n label: string,\n x: number,\n y: number,\n width: number,\n height: number,\n showLabel: boolean\n ) {\n return new ConceptMapNode(\n draw,\n id,\n originalId,\n filePath,\n label,\n x,\n y,\n width,\n height,\n showLabel\n );\n }\n\n /**\n * Create an instance of the ConceptMapLink class\n * @param draw the svg.js draw object\n * @param id the link id\n * @param node the source ConceptMapNode that the link is coming out of\n * @param x the x position of the tail\n * @param y the y position of the tail\n * @returns a ConceptMapLink\n */\n newConceptMapLink(\n draw: any,\n id: string,\n originalId: string = null,\n sourceNode: string = null,\n destinationNode: string = null,\n label: string = null,\n color: string = null,\n curvature: number = null,\n startCurveUp: boolean = null,\n startCurveDown: boolean = null\n ) {\n return new ConceptMapLink(\n draw,\n id,\n originalId,\n sourceNode,\n destinationNode,\n label,\n color,\n curvature,\n startCurveUp,\n startCurveDown\n );\n }\n\n /**\n * Get the slope of the line between two points\n * @param x1 x position of the first point\n * @param y1 y position of the first point\n * @param x2 x position of the second point\n * @param y2 y position of the second point\n * @returns the slope of the line or null if the slope is infinite\n */\n getSlope(x1: number, y1: number, x2: number, y2: number) {\n let slope = null;\n if (x2 - x1 == 0) {\n // the slope is infinite so we will return null\n slope = null;\n } else {\n slope = (y2 - y1) / (x2 - x1);\n }\n return slope;\n }\n\n /**\n * Calculate the euclidean distance between two points\n * @param x1 x position of the first point\n * @param y1 y position of the first point\n * @param x2 x position of the second point\n * @param y2 y position of the second point\n * @returns the distance between the two points\n */\n calculateDistance(x1: number, y1: number, x2: number, y2: number) {\n return Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2));\n }\n\n /**\n * Evaluate a rule name\n * @param componentContent the component content\n * @param conceptMapData the student concept map data\n * @param ruleName the rule name\n * @returns whether the rule was satisfied\n */\n evaluateRuleByRuleName(componentContent: any, conceptMapData: any, ruleName: any) {\n let result = false;\n\n if (ruleName === true) {\n // the rule name is not actually a rule but is the true boolean\n return true;\n } else if (ruleName === false) {\n // the rule name is not actually a rule but is the false boolean\n return false;\n }\n\n // get the rule\n const rule = this.getRuleByRuleName(componentContent, ruleName);\n\n if (rule == null) {\n /*\n * we didn't find a rule with the given rule name so we will look\n * for a category with that name\n */\n\n // get the rules that are in the category\n const rules = this.getRulesByCategoryName(componentContent, ruleName);\n\n let firstRule = true;\n\n if (rules != null) {\n /*\n * loop through all the rules in the category. we will say the\n * category is satisfied if all the rules in the category\n * evaluate to true.\n */\n for (let r = 0; r < rules.length; r++) {\n const tempRule = rules[r];\n\n // evaluate the rule\n const tempResult = this.evaluateRule(conceptMapData, tempRule);\n\n if (firstRule) {\n /*\n * this is the first rule so we will set the value\n * of the rule to the result\n */\n result = tempResult;\n firstRule = false;\n } else {\n /*\n * this is not the first rule so we will compute the\n * \"logical and\" of the result so far and this rule's\n * result\n */\n result = result && tempResult;\n }\n\n if (!result) {\n /*\n * the result is false so we can short circuit and\n * stop looping since we have now just found that\n * one of the rules is not satisfied which means\n * the category is not satisfied.\n */\n break;\n }\n }\n }\n } else {\n // evaluate the rule\n result = this.evaluateRule(conceptMapData, rule);\n }\n\n return result;\n }\n\n /**\n * Evaluate a rule\n * @param conceptMapData the concept map student data\n * @param rule the rule object\n * @returns whether the rule was satisfied\n */\n evaluateRule(conceptMapData: any, rule: any) {\n let result = false;\n\n if (rule != null) {\n if (rule.type == 'node') {\n // this is a node rule\n\n // get the node we are looking for\n const nodeLabel = rule.nodeLabel;\n\n // get all the nodes with the given label\n const nodes = this.getNodesByLabel(conceptMapData, nodeLabel);\n\n // get the number of nodes with the given label\n const nodeCount = nodes.length;\n\n /*\n * the comparison for the number which can be \"exactly\",\n * \"more than\", or \"less than\"\n */\n const comparison = rule.comparison;\n\n // the number to compare to\n const number = rule.number;\n\n if (comparison == 'exactly') {\n /*\n * we are looking for an exact number of nodes with the\n * given label\n */\n if (nodeCount == number) {\n result = true;\n }\n } else if (comparison == 'more than') {\n /*\n * we are looking for more than a certain number of nodes\n * with the given label\n */\n if (nodeCount > number) {\n result = true;\n }\n } else if (comparison == 'less than') {\n /*\n * we are looking for less than a certain number of nodes\n * with the given label\n */\n if (nodeCount < number) {\n result = true;\n }\n }\n\n if (rule.not) {\n /*\n * the rule is satisfied if the result is false so we will\n * negate the result\n */\n result = !result;\n }\n } else if (rule.type == 'link') {\n // this is a link rule\n\n // get the source node label\n const nodeLabel = rule.nodeLabel;\n\n // get the link label\n const linkLabel = rule.linkLabel;\n\n // get the destination node label\n const otherNodeLabel = rule.otherNodeLabel;\n\n // get all the links with the matching labels\n const links = this.getLinksByLabels(conceptMapData, nodeLabel, linkLabel, otherNodeLabel);\n\n // get the number of links with the matching labels\n const linkCount = links.length;\n\n /*\n * the comparison for the number which can be \"exactly\",\n * \"more than\", or \"less than\"\n */\n const comparison = rule.comparison;\n\n // the number to compare to\n const number = rule.number;\n\n if (comparison == 'exactly') {\n // we are looking for an exact number of links\n if (linkCount == number) {\n result = true;\n }\n } else if (comparison == 'more than') {\n // we are looking for more than a certain number of links\n if (linkCount > number) {\n result = true;\n }\n } else if (comparison == 'less than') {\n // we are looking for less than a certain number of links\n if (linkCount < number) {\n result = true;\n }\n }\n\n if (rule.not) {\n /*\n * the rule is satisfied if the result is false so we will\n * negate the result\n */\n result = !result;\n }\n }\n }\n\n return result;\n }\n\n /**\n * Get a rule by the rule name\n * @param componentContent the concept map component content\n * @param ruleName the rule name\n * @returns the rule with the given rule name\n */\n getRuleByRuleName(componentContent: any, ruleName: string) {\n const rules = componentContent.rules;\n if (rules != null) {\n for (const rule of rules) {\n if (rule != null) {\n if (ruleName == rule.name) {\n return rule;\n }\n }\n }\n }\n return null;\n }\n\n /**\n * Get the rules in the category\n * @param componentContent the component content\n * @param category the category name\n * @returns the rules in the category\n */\n getRulesByCategoryName(componentContent: any, category: string) {\n const rules = [];\n const tempRules = componentContent.rules;\n if (tempRules != null) {\n for (const tempRule of tempRules) {\n const categories = tempRule.categories;\n if (categories != null && categories.includes(category)) {\n rules.push(tempRule);\n }\n }\n }\n return rules;\n }\n\n /**\n * Get nodes by label\n * @param conceptMapData the concept map student data\n * @param label the node label to look for\n * @returns all the nodes with the given label\n */\n getNodesByLabel(conceptMapData: any, label: string) {\n const nodesByLabel = [];\n const nodes = conceptMapData.nodes;\n if (nodes != null) {\n for (const node of nodes) {\n if (label === node.label || label == 'any') {\n nodesByLabel.push(node);\n }\n }\n }\n return nodesByLabel;\n }\n\n /**\n * Get links with the given source node label, link label, and destination\n * node label\n * @param conceptMapData the concept map student data\n * @param nodeLabel the source node label\n * @param linkLabel the link label\n * @param otherNodeLabel the destination node label\n * @returns the links with the given source node label, link label, and\n * destination node label\n */\n getLinksByLabels(\n conceptMapData: any,\n nodeLabel: string,\n linkLabel: string,\n otherNodeLabel: string\n ) {\n const resultLinks = [];\n const links = conceptMapData.links;\n if (links != null) {\n for (const link of links) {\n if (this.isLinkMatchingSourceLinkDestination(link, nodeLabel, linkLabel, otherNodeLabel)) {\n resultLinks.push(link);\n }\n }\n }\n return resultLinks;\n }\n\n isLinkMatchingSourceLinkDestination(\n link: any,\n sourceLabel: string,\n linkLabel: string,\n destinationLabel: string\n ) {\n return (\n (sourceLabel === link.sourceNodeLabel || sourceLabel === 'any') &&\n (linkLabel === link.label || linkLabel === 'any') &&\n (destinationLabel === link.destinationNodeLabel || destinationLabel === 'any')\n );\n }\n\n /**\n * Check if any of the rules are satisfied\n * @param componentContent the concept map component content\n * @param conceptMapData the concept map student data\n * @param ruleNames an array of rule names\n * @returns true if any of the rules are satisifed\n * false if none of the rules are satisified\n */\n any(componentContent: any, conceptMapData: any, ruleNames: any) {\n for (const ruleName of ruleNames) {\n if (this.evaluateRuleByRuleName(componentContent, conceptMapData, ruleName)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Check if all the rules are satisfied\n * @param componentContent the concept map component content\n * @param conceptMapData the concept map student data\n * @param ruleNames an array of rule names\n * @returns true if all the rules are satisifed\n * false if any of the rules are not satisfied\n */\n all(componentContent: any, conceptMapData: any, ruleNames: any) {\n let result = true;\n for (const ruleName of ruleNames) {\n const ruleResult = this.evaluateRuleByRuleName(componentContent, conceptMapData, ruleName);\n result = result && ruleResult;\n }\n return result;\n }\n\n /**\n * Populate the concept map data into the component\n * @param draw the SVG draw div\n * @param conceptMapData the concept map data which contains an array\n * of nodes and an array of links\n */\n populateConceptMapData(draw: any, conceptMapData: any) {\n if (conceptMapData != null) {\n // get the JSON nodes\n const nodes = conceptMapData.nodes;\n\n // this is used to hold the SVG node objects\n const conceptMapNodes = [];\n\n if (nodes != null) {\n // loop through all the nodes\n for (let n = 0; n < nodes.length; n++) {\n const node = nodes[n];\n\n const instanceId = node.instanceId;\n const originalId = node.originalId;\n const filePath = node.fileName;\n const label = node.label;\n const x = node.x;\n const y = node.y;\n const width = node.width;\n const height = node.height;\n const showLabel = true;\n\n // create a ConceptMapNode\n const conceptMapNode = this.newConceptMapNode(\n draw,\n instanceId,\n originalId,\n filePath,\n label,\n x,\n y,\n width,\n height,\n showLabel\n );\n\n conceptMapNodes.push(conceptMapNode);\n }\n }\n\n // get the JSON links\n const links = conceptMapData.links;\n\n // this is used to hold the SVG link objects\n const conceptMapLinks = [];\n\n if (links != null) {\n // loop through all the links\n for (let l = 0; l < links.length; l++) {\n const link = links[l];\n\n const instanceId = link.instanceId;\n const originalId = link.originalId;\n const sourceNodeId = link.sourceNodeInstanceId;\n const destinationNodeId = link.destinationNodeInstanceId;\n const label = link.label;\n const color = link.color;\n const curvature = link.curvature;\n const startCurveUp = link.startCurveUp;\n const endCurveUp = link.endCurveUp;\n let sourceNode = null;\n let destinationNode = null;\n\n if (sourceNodeId != null) {\n sourceNode = this.getNodeById(conceptMapNodes, sourceNodeId);\n }\n\n if (destinationNodeId != null) {\n destinationNode = this.getNodeById(conceptMapNodes, destinationNodeId);\n }\n\n // create a ConceptMapLink\n const conceptMapLink = this.newConceptMapLink(\n draw,\n instanceId,\n originalId,\n sourceNode,\n destinationNode,\n label,\n color,\n curvature,\n startCurveUp,\n endCurveUp\n );\n\n conceptMapLinks.push(conceptMapLink);\n }\n }\n\n /*\n * move the link text group to the front so that they are on top\n * of links\n */\n this.moveLinkTextToFront(conceptMapLinks);\n\n // move the nodes to the front so that they are on top of links\n this.moveNodesToFront(conceptMapNodes);\n\n this.refreshLinkLabels(conceptMapNodes, conceptMapLinks);\n }\n }\n\n moveLinkTextToFront(links: any[]): void {\n for (const link of links) {\n link.moveTextGroupToFront();\n }\n }\n\n moveNodesToFront(nodes: any[]): void {\n for (const node of nodes) {\n const group = node.getGroup();\n group.front();\n }\n }\n\n /**\n * Refresh the link labels so that the rectangles around the text\n * labels are resized to fit the text properly. This is required because\n * the rectangles are not properly sized when the ConceptMapLinks are\n * initialized. The rectangles need to be rendered first and then the\n * labels need to be set in order for the rectangles to be resized properly.\n */\n refreshLinkLabels(nodes: any[], links: any[]) {\n if (nodes != null) {\n // loop through all the nodes\n for (let n = 0; n < nodes.length; n++) {\n const node = nodes[n];\n\n if (node != null) {\n // get the label from the node\n const label = node.getLabel();\n\n /*\n * set the label back into the node so that the rectangle\n * around the text label is resized to the text\n */\n node.setLabel(label);\n }\n }\n }\n\n if (links != null) {\n // loop throgh all the links\n for (let l = 0; l < links.length; l++) {\n const link = links[l];\n\n if (link != null) {\n // get the label from the link\n const label = link.getLabel();\n\n /*\n * set the label back into the link so that the rectangle\n * around the text label is resized to the text\n */\n link.setLabel(label);\n }\n }\n }\n }\n\n /**\n * Get a node by id.\n * @param id the node id\n * @returns the node with the given id or null\n */\n getNodeById(nodes: any[], id: string) {\n let node = null;\n\n if (id != null) {\n // loop through all the nodes\n for (let n = 0; n < nodes.length; n++) {\n const tempNode = nodes[n];\n const tempNodeId = tempNode.getId();\n\n if (id == tempNodeId) {\n // we have found the node we want\n node = tempNode;\n break;\n }\n }\n }\n\n return node;\n }\n\n /**\n * Create an image from the concept map data\n * @param conceptMapData concept map data from a student\n * @param width the width of the image we want to create\n * @param height the height of the image we want to create\n */\n createImage(conceptMapData: any, width: any, height: any) {\n return new Promise((resolve, reject) => {\n // create a div to draw the SVG in\n const svgElement = document.createElement('div');\n\n if (width == null || width == '') {\n // we will default to a width of 800 pixels\n width = 800;\n }\n\n if (height == null || height == '') {\n // we will default to a height of 600 pixels\n height = 600;\n }\n\n const draw: any = SVG(svgElement);\n draw.width(width);\n draw.height(height);\n\n if (svgElement != null) {\n // populate the concept map data into the svg draw element\n this.populateConceptMapData(draw, conceptMapData);\n\n // get the svg element as a string\n let svgString = svgElement.innerHTML;\n\n // find all the images in the svg and replace them with Base64 images\n this.getHrefToBase64ImageReplacements(svgString, true).then((images) => {\n /*\n * Loop through all the image objects. Each object contains\n * an image href and a Base64 image.\n */\n for (let i = 0; i < images.length; i++) {\n // get an image object\n const imagePair = images[i];\n\n // get the image href e.g. /wise/curriculum/25/assets/Sun.png\n let imageHref = imagePair.imageHref;\n\n // get the last index of '/'\n const lastIndexOfSlash = imageHref.lastIndexOf('/');\n\n if (lastIndexOfSlash != -1) {\n // only get everything after the last '/'\n imageHref = imageHref.substring(lastIndexOfSlash + 1);\n }\n\n // get the Base64 image\n const base64Image = imagePair.base64Image;\n\n // create a regex to match the image href\n const imageRegEx = new RegExp(imageHref, 'g');\n\n /*\n * replace all the instances of the image href with the\n * Base64 image\n */\n svgString = svgString.replace(imageRegEx, base64Image);\n }\n\n // create a canvas to draw the image on\n const myCanvas = document.createElement('canvas');\n const ctx = myCanvas.getContext('2d');\n\n // create an svg blob\n const svg = new Blob([svgString], { type: 'image/svg+xml;charset=utf-8' });\n const domURL: any = self.URL || (self as any).webkitURL || self;\n const url = domURL.createObjectURL(svg);\n const image = new Image();\n\n // the function that is called after the image is fully loaded\n image.onload = (event) => {\n // get the image that was loaded\n const image: any = event.target;\n\n // set the dimensions of the canvas\n myCanvas.width = image.width;\n myCanvas.height = image.height;\n ctx.drawImage(image, 0, 0);\n\n const pngFile = convertToPNGFile(myCanvas);\n this.StudentAssetService.uploadAsset(pngFile).then((unreferencedAsset) => {\n /*\n * make a copy of the unreferenced asset so that we\n * get a referenced asset\n */\n this.StudentAssetService.copyAssetForReference(unreferencedAsset).then(\n (referencedAsset) => {\n if (referencedAsset != null) {\n /*\n * get the asset url\n * for example\n * /wise/studentuploads/11261/297478/referenced/picture_1494016652542.png\n */\n const referencedAssetUrl = referencedAsset.url;\n\n // remove the unreferenced asset\n this.StudentAssetService.deleteAsset(unreferencedAsset);\n\n // resolve the promise with the image url\n resolve(referencedAssetUrl);\n }\n }\n );\n });\n };\n\n // set the src of the image so that the image gets loaded\n image.src = url;\n });\n }\n });\n }\n\n /**\n * Get Base64 images from image hrefs\n * @param svgString the svg string\n * @param prependAssetsPath whether to prepend the assets directory path\n * to the image references\n * @return a promise that will return an array of objects. The objects will\n * contain an image href and a Base64 image.\n */\n getHrefToBase64ImageReplacements(svgString: string, prependAssetsPath: boolean = false) {\n // an array to hold all the promises\n const promises = [];\n\n // get all the image hrefs\n const imageHrefs = this.getImagesInSVG(svgString);\n\n // loop through all the images\n for (let i = 0; i < imageHrefs.length; i++) {\n // get an image href\n let imageHref = imageHrefs[i];\n\n if (prependAssetsPath) {\n /*\n * the image href is relative so we need to make it absolute\n * so that the browser can retrieve it\n */\n\n // prepend the project asset directory path\n imageHref = this.ConfigService.getProjectAssetsDirectoryPath(true) + '/' + imageHref;\n }\n\n // get the Base64 of the image\n const promise = this.getBase64Image(imageHref);\n\n promises.push(promise);\n }\n\n return Promise.all(promises);\n }\n\n /**\n * Get all the image hrefs in the svg string\n * @param svgString the svg string\n * @return an array of image hrefs\n */\n getImagesInSVG(svgString: string) {\n const images = [];\n if (svgString != null) {\n /*\n * the regex to match href values in image elements\n * e.g.\n * if the svg contained in image element like this\n * \n * it would match it and the matching group would contain\n * /wise/curriculum/25/assets/Sun.png\n */\n const regex = //g;\n\n // find the first match in the svg string\n let result = regex.exec(svgString);\n\n while (result != null) {\n /*\n * get the href image from the match\n * e.g.\n * /wise/curriculum/25/assets/Sun.png\n */\n const imageHref = result[1];\n\n // add the href to our array of hrefs\n images.push(imageHref);\n\n // try to find the next match\n result = regex.exec(svgString);\n }\n }\n return images;\n }\n\n /**\n * Get the Base64 image from an image href. An image href will look like\n * /wise/curriculum/25/assets/Sun.png\n * @param imageHref the image href\n * @return a promise that will return an object containing the image href\n * and the Base64 image\n */\n getBase64Image(imageHref: string) {\n return new Promise((resolve, reject) => {\n // create the image object that we will load the image into\n const image = new Image();\n\n // create a new canvas to render the image in\n const myCanvas = document.createElement('canvas');\n const ctx = myCanvas.getContext('2d');\n\n // the function that is called after the image is fully loaded\n image.onload = function (event) {\n // get the image that was loaded\n const image: any = event.target;\n\n // set the canvas dimensions to match the image\n myCanvas.width = image.width;\n myCanvas.height = image.height;\n\n // draw the image in the canvas\n ctx.drawImage(image, 0, 0);\n\n // get the Base64 string of the canvas\n const base64Image = myCanvas.toDataURL('image/png');\n\n // create an object that will contain the image href and Base64 image\n const result: any = {};\n result.imageHref = imageHref;\n result.base64Image = base64Image;\n\n // resolve the promise with the object\n resolve(result);\n };\n\n // load the image\n image.src = imageHref;\n });\n }\n\n /**\n * Check if the component state has student work. Sometimes a component\n * state may be created if the student visits a component but doesn't\n * actually perform any work. This is where we will check if the student\n * actually performed any work.\n * @param componentState the component state object\n * @param componentContent the component content\n * @return whether the component state has any work\n */\n componentStateHasStudentWork(componentState: any, componentContent: any) {\n if (componentState != null) {\n const studentData = componentState.studentData;\n if (studentData != null) {\n const conceptMapData = studentData.conceptMapData;\n const nodes = this.getNodesFromConceptMapData(conceptMapData);\n const links = this.getLinksFromConceptMapData(conceptMapData);\n if (componentContent == null) {\n return this.hasAnyNodeOrLink(nodes, links);\n } else {\n if (this.hasStarterConceptMap(componentContent)) {\n return this.isStudentConceptMapDifferentThanStarterConceptMap(\n conceptMapData,\n componentContent.starterConceptMap\n );\n } else {\n return this.hasAnyNodeOrLink(nodes, links);\n }\n }\n }\n }\n return false;\n }\n\n hasAnyNodeOrLink(nodes: any[], links: any[]) {\n return nodes.length > 0 || links.length > 0;\n }\n\n getNodesFromConceptMapData(conceptMapData: any) {\n let nodes = [];\n if (conceptMapData.nodes != null) {\n nodes = conceptMapData.nodes;\n }\n return nodes;\n }\n\n getLinksFromConceptMapData(conceptMapData: any) {\n let links = [];\n if (conceptMapData.links != null) {\n links = conceptMapData.links;\n }\n return links;\n }\n\n hasStarterConceptMap(componentContent: any) {\n const starterConceptMap = componentContent.starterConceptMap;\n return starterConceptMap != null && starterConceptMap != '';\n }\n\n /**\n * Check if the student concept map is different than the starter conept map\n * @param studentConceptMap the student concept map\n * @param starterConceptMap the authored starter concept map\n * @return whether the student concept map is different than the starter\n * concept map\n */\n isStudentConceptMapDifferentThanStarterConceptMap(\n studentConceptMap: any,\n starterConceptMap: any\n ) {\n if (studentConceptMap != null && starterConceptMap != null) {\n if (!this.isAllNodesEqual(studentConceptMap.nodes, starterConceptMap.nodes)) {\n return true;\n }\n if (!this.isAllLinksEqual(studentConceptMap.links, starterConceptMap.links)) {\n return true;\n }\n }\n return false;\n }\n\n isAllNodesEqual(nodes1: any[], nodes2: any[]) {\n if (nodes1.length === nodes2.length) {\n for (let n = 0; n < nodes1.length; n++) {\n if (!this.isNodesEqual(nodes1[n], nodes2[n])) {\n return false;\n }\n }\n return true;\n } else {\n return false;\n }\n }\n\n isAllLinksEqual(links1: any[], links2: any[]) {\n if (links1.length === links2.length) {\n for (let l = 0; l < links1.length; l++) {\n if (!this.isLinksEqual(links1[l], links2[l])) {\n return false;\n }\n }\n return true;\n } else {\n return false;\n }\n }\n\n isNodesEqual(node1: any, node2: any) {\n return (\n node1.originalId === node2.originalId &&\n node1.instanceId === node2.instanceId &&\n node1.x === node2.x &&\n node1.y === node2.y\n );\n }\n\n isLinksEqual(link1: any, link2: any) {\n return (\n link1.label === link2.label &&\n link1.originalId === link2.originalId &&\n link1.instanceId === link2.instanceId &&\n link1.sourceNodeOriginalId === link2.sourceNodeOriginalId &&\n link1.sourceNodeInstanceId === link2.sourceNodeInstanceId &&\n link1.destinationNodeOriginalId === link2.destinationNodeOriginalId &&\n link1.destinationNodeInstanceId === link2.destinationNodeInstanceId\n );\n }\n\n /**\n * The component state has been rendered in a element\n * and now we want to take a snapshot of the work.\n * @param componentState The component state that has been rendered.\n * @return A promise that will return an image object.\n */\n generateImageFromRenderedComponentState(componentState: any) {\n return new Promise((resolve, reject) => {\n // get the svg element. this will obtain an array.\n const id = this.getDomIdEnding(\n componentState.nodeId,\n componentState.componentId,\n componentState\n );\n let svgElement = document.querySelector(`#${this.getSVGId(id)}`);\n if (svgElement != null) {\n // get the svg element as a string\n const serializer = new XMLSerializer();\n let svgString = serializer.serializeToString(svgElement);\n\n // find all the images in the svg and replace them with Base64 images\n this.getHrefToBase64ImageReplacements(svgString).then((images) => {\n /*\n * Loop through all the image objects. Each object contains\n * an image href and a Base64 image.\n */\n for (let i = 0; i < images.length; i++) {\n // get an image object\n const imagePair = images[i];\n\n // get the image href e.g. /wise/curriculum/25/assets/Sun.png\n const imageHref = imagePair.imageHref;\n\n // get the Base64 image\n const base64Image = imagePair.base64Image;\n\n // create a regex to match the image href\n const imageRegEx = new RegExp(imageHref, 'g');\n\n /*\n * replace all the instances of the image href with the\n * Base64 image\n */\n svgString = svgString.replace(imageRegEx, base64Image);\n }\n\n // create a canvas to draw the image on\n const myCanvas = document.createElement('canvas');\n const ctx = myCanvas.getContext('2d');\n\n // create an svg blob\n const svg = new Blob([svgString], { type: 'image/svg+xml;charset=utf-8' });\n const domURL: any = self.URL || (self as any).webkitURL || self;\n const url = domURL.createObjectURL(svg);\n const image = new Image();\n\n // the function that is called after the image is fully loaded\n image.onload = (event) => {\n // get the image that was loaded\n let image: any = event.target;\n\n // set the dimensions of the canvas\n myCanvas.width = image.width;\n myCanvas.height = image.height;\n ctx.drawImage(image, 0, 0);\n\n const pngFile = convertToPNGFile(myCanvas);\n this.StudentAssetService.uploadAsset(pngFile).then((asset) => {\n resolve(asset);\n });\n };\n\n // set the src of the image so that the image gets loaded\n image.src = url;\n });\n }\n });\n }\n\n /**\n * @param objects An array of nodes or links.\n * @param prefix The prefix for the given type of objects\n * For example the prefix for 'studentNode3' would be\n * 'studentNode'\n */\n getNextAvailableId(objects: any[], prefix: string) {\n let nextAvailableNumber = 1;\n const usedNumbers = [];\n for (const object of objects) {\n const objectId = object.id;\n const objectIdNumber = parseInt(objectId.replace(prefix, ''));\n usedNumbers.push(objectIdNumber);\n }\n if (usedNumbers.length > 0) {\n const maxNumberUsed = Math.max.apply(Math, usedNumbers);\n if (!isNaN(maxNumberUsed)) {\n nextAvailableNumber = maxNumberUsed + 1;\n }\n }\n return prefix + nextAvailableNumber;\n }\n\n displayAnnotation(componentContent: any, annotation: any) {\n if (annotation.displayToStudent === false) {\n return false;\n } else {\n if (annotation.type == 'score') {\n } else if (annotation.type == 'comment') {\n } else if (annotation.type == 'autoScore') {\n return componentContent.showAutoScore;\n } else if (annotation.type == 'autoComment') {\n return componentContent.showAutoFeedback;\n }\n }\n return true;\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "ConfigService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "StudentAssetService", + "type": "StudentAssetService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 13, + "jsdoctags": [ + { + "name": "ConfigService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "StudentAssetService", + "type": "StudentAssetService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "ComponentService" + ], + "type": "injectable" + }, + { + "name": "ConfigService", + "id": "injectable-ConfigService-d250dcf7c6072d8f15a0f0d0dacff1c281732e060f78bb7a84f3c80b75b734f45741fc278bdde51e886cadafdfe46ef5d9c42a4108921f552a0f5e5e219adc82", + "file": "src/app/services/config.service.ts", + "properties": [ + { + "name": "announcementUrl", + "defaultValue": "'/api/announcement'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "modifierKind": [ + 123 + ] + }, + { + "name": "config$", + "defaultValue": "new BehaviorSubject(null)", + "deprecated": false, + "deprecationMessage": "", + "type": "BehaviorSubject", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "modifierKind": [ + 123 + ] + }, + { + "name": "timeDiff", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "modifierKind": [ + 123 + ] + }, + { + "name": "userConfigUrl", + "defaultValue": "'/api/user/config'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 9, + "modifierKind": [ + 123 + ] + } + ], + "methods": [ + { + "name": "getAnnouncement", + "args": [], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 79, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getAuthoringToolLink", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 84, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getConfig", + "args": [], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 16, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getContextPath", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 30, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getCurrentServerTime", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 75, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getDiscourseNewsCategory", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 38, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getDiscourseURL", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 34, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getGoogleAnalyticsId", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 42, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getGoogleClientId", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 50, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getGoogleTagManagerId", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 46, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getRecaptchaPublicKey", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 63, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getWISE4Hostname", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 71, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getWISEHostname", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 67, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isGoogleClassroomEnabled", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 54, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isRecaptchaEnabled", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 58, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "retrieveConfig", + "args": [], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 20, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Injectable } from '@angular/core';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { BehaviorSubject, Observable, tap } from 'rxjs';\nimport { Config } from '../domain/config';\nimport { Announcement } from '../domain/announcement';\n\n@Injectable()\nexport class ConfigService {\n private userConfigUrl = '/api/user/config';\n private announcementUrl = '/api/announcement';\n private config$: BehaviorSubject = new BehaviorSubject(null);\n private timeDiff: number = 0;\n\n constructor(private http: HttpClient) {}\n\n getConfig(): Observable {\n return this.config$;\n }\n\n retrieveConfig(): Observable {\n const headers = new HttpHeaders({ 'Cache-Control': 'no-cache' });\n return this.http.get(this.userConfigUrl, { headers: headers }).pipe(\n tap((config) => {\n this.config$.next(config);\n this.timeDiff = Date.now() - config.currentTime;\n })\n );\n }\n\n getContextPath() {\n return this.config$.getValue().contextPath;\n }\n\n getDiscourseURL() {\n return this.config$.getValue().discourseURL;\n }\n\n getDiscourseNewsCategory() {\n return this.config$.getValue().discourseNewsCategory;\n }\n\n getGoogleAnalyticsId() {\n return this.config$.getValue().googleAnalyticsId;\n }\n\n getGoogleTagManagerId() {\n return this.config$.getValue().googleTagManagerId;\n }\n\n getGoogleClientId() {\n return this.config$.getValue().googleClientId;\n }\n\n isGoogleClassroomEnabled() {\n return this.config$.getValue().isGoogleClassroomEnabled;\n }\n\n isRecaptchaEnabled() {\n const recaptchaPublicKey = this.getRecaptchaPublicKey();\n return recaptchaPublicKey != null && recaptchaPublicKey != '';\n }\n\n getRecaptchaPublicKey() {\n return this.config$.getValue().recaptchaPublicKey;\n }\n\n getWISEHostname() {\n return this.config$.getValue().wiseHostname;\n }\n\n getWISE4Hostname() {\n return this.config$.getValue().wise4Hostname;\n }\n\n getCurrentServerTime() {\n return Date.now() - this.timeDiff;\n }\n\n getAnnouncement(): Observable {\n const headers = new HttpHeaders({ 'Cache-Control': 'no-cache' });\n return this.http.get(this.announcementUrl, { headers: headers }) as Observable;\n }\n\n getAuthoringToolLink(): string {\n return this.config$ != null ? `${this.getContextPath()}/teacher/edit/home` : '';\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 12, + "jsdoctags": [ + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "type": "injectable" + }, + { + "name": "ConfigService", + "id": "injectable-ConfigService-1d3f0f7044f8d8dcce42f99c1e4d34e8f1e4eb1b870fb9809b5fdfa931719e7356676df465bda42c8564b3d5e738f5ac0cf9255a13dd6627d73f97a7b7564317-1", + "file": "src/assets/wise5/services/configService.ts", + "properties": [ + { + "name": "config", + "defaultValue": "null", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "modifierKind": [ + 125 + ] + }, + { + "name": "configRetrieved$", + "defaultValue": "this.configRetrievedSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "Observable", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 125 + ] + }, + { + "name": "configRetrievedSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "modifierKind": [ + 123 + ] + } + ], + "methods": [ + { + "name": "calculateIsRunActive", + "args": [ + { + "name": "configJSON", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 923, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "configJSON", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "compareClassmateUserInfosByWorkgroupId", + "args": [ + { + "name": "a", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "b", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "1 | 0 | -1", + "typeParameters": [], + "line": 280, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nUsed to sort the classmate user infos by ascending workgroup id.\nUse by calling myArray.sort(compareClassmateUserInfosByWorkgroupId)\n1 if a comes after b\n0 if a equals b\n", + "description": "

Used to sort the classmate user infos by ascending workgroup id.\nUse by calling myArray.sort(compareClassmateUserInfosByWorkgroupId)\n1 if a comes after b\n0 if a equals b

\n", + "jsdoctags": [ + { + "name": { + "pos": 7238, + "end": 7239, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "a" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 7232, + "end": 7237, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

a user info object

\n" + }, + { + "name": { + "pos": 7271, + "end": 7272, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "b" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 7265, + "end": 7270, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

a user info Object

\n" + }, + { + "tagName": { + "pos": 7298, + "end": 7304, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

-1 if a comes before b\n1 if a comes after b\n0 if a equals b

\n" + } + ] + }, + { + "name": "convertToClientTimestamp", + "args": [ + { + "name": "serverTimestamp", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 599, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nConvert a server timestamp to a client timestamp. This is required\nin case the client and server clocks are not synchronized.\n", + "description": "

Convert a server timestamp to a client timestamp. This is required\nin case the client and server clocks are not synchronized.

\n", + "jsdoctags": [ + { + "name": { + "pos": 16391, + "end": 16406, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "serverTimestamp" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 16385, + "end": 16390, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the client timestamp

\n" + } + ] + }, + { + "name": "convertToServerTimestamp", + "args": [ + { + "name": "clientTimestamp", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 588, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nConvert a client timestamp to a server timestamp. This is required\nin case the client and server clocks are not synchronized.\n", + "description": "

Convert a client timestamp to a server timestamp. This is required\nin case the client and server clocks are not synchronized.

\n", + "jsdoctags": [ + { + "name": { + "pos": 15990, + "end": 16005, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "clientTimestamp" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 15984, + "end": 15989, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the client timestamp

\n" + } + ] + }, + { + "name": "getAchievementsURL", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 99, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getAllUserInfoInPeriod", + "args": [ + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 378, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getAllUsersInPeriod", + "args": [ + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 386, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getAuthorableProjects", + "args": [], + "optional": false, + "returnType": "{}", + "typeParameters": [], + "line": 872, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet all the authorable projects\n", + "description": "

Get all the authorable projects

\n" + }, + { + "name": "getClassmateUserInfos", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 233, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getClassmateUserInfosSortedByWorkgroupId", + "args": [], + "optional": false, + "returnType": "{}", + "typeParameters": [], + "line": 258, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the classmate user infos sorted by ascending workgroup id\nworkgroup id\n", + "description": "

Get the classmate user infos sorted by ascending workgroup id\nworkgroup id

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 6474, + "end": 6480, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

an array of classmate user info objects sorted by ascending\nworkgroup id

\n" + } + ] + }, + { + "name": "getClassmateWorkgroupIds", + "args": [ + { + "name": "includeSelf", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "{}", + "typeParameters": [], + "line": 341, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "includeSelf", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getConfigParam", + "args": [ + { + "name": "paramName", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 91, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "paramName", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getContextPath", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 176, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getCRaterRequestURL", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 103, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getDisplayNamesByWorkgroupId", + "args": [ + { + "name": "workgroupId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 504, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "workgroupId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getDisplayUsernamesByWorkgroupId", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 538, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getEndDate", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 949, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getFormattedEndDate", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 961, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getFormattedStartDate", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 957, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getLocale", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 168, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getMainHomePageURL", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 107, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getMode", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 172, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getMyUserInfo", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 217, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getMyUsername", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 225, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getNotebookURL", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 147, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getNotificationURL", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 111, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getNumberOfWorkgroupsInPeriod", + "args": [ + { + "name": "periodId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 444, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "periodId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getPeriodId", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 180, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getPeriodIdByWorkgroupId", + "args": [ + { + "name": "workgroupId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 453, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the period id for a workgroup id\n", + "description": "

Get the period id for a workgroup id

\n", + "jsdoctags": [ + { + "name": { + "pos": 12334, + "end": 12345, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "workgroupId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 12328, + "end": 12333, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the workgroup id

\n" + }, + { + "tagName": { + "pos": 12369, + "end": 12376, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

the period id the workgroup id is in

\n" + } + ] + }, + { + "name": "getPeriods", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 188, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getPermissions", + "args": [], + "optional": false, + "returnType": "{ canViewStudentNames: boolean; canGradeStudentWork: boolean; canAuthorProject: boolean; }", + "typeParameters": [], + "line": 369, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getPrettyEndDate", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 941, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getProjectAssetsDirectoryPath", + "args": [ + { + "name": "includeHost", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 804, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the project assets folder path\ne.g.\nwith host\nhttp://wise.berkeley.edu/wise/curriculum/3/assets\nwithout host\n/wise/curriculum/3/assets\n", + "description": "

Get the project assets folder path\ne.g.\nwith host\nhttp://wise.berkeley.edu/wise/curriculum/3/assets\nwithout host\n/wise/curriculum/3/assets

\n", + "jsdoctags": [ + { + "name": { + "pos": 22561, + "end": 22572, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "includeHost" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "pos": 22555, + "end": 22560, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

whether to include the host in the URL

\n" + }, + { + "tagName": { + "pos": 22618, + "end": 22624, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

the project assets folder path\ne.g.\nwith host\nhttp://wise.berkeley.edu/wise/curriculum/3/assets\nwithout host\n/wise/curriculum/3/assets

\n" + } + ] + }, + { + "name": "getProjectId", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 127, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getRunCode", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 119, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getRunId", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 115, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getRunName", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 123, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getSessionLogOutURL", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 131, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getSharedTeacherRole", + "args": [ + { + "name": "workgroupId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 704, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the shared teacher role for the run\n'write' or 'read'\n", + "description": "

Get the shared teacher role for the run\n'write' or 'read'

\n", + "jsdoctags": [ + { + "name": { + "pos": 19436, + "end": 19447, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "workgroupId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 19430, + "end": 19435, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the workgroup id

\n" + }, + { + "tagName": { + "pos": 19471, + "end": 19478, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

the shared teacher role for the run. the possible values are\n'write' or 'read'

\n" + } + ] + }, + { + "name": "getSharedTeacherUserInfos", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 330, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the shared teacher user infos for the run\n", + "description": "

Get the shared teacher user infos for the run

\n" + }, + { + "name": "getSharedTeacherWorkgroupIds", + "args": [], + "optional": false, + "returnType": "number[]", + "typeParameters": [], + "line": 308, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getStartDate", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 945, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getStudentAssetsURL", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 135, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getStudentFirstNamesByWorkgroupId", + "args": [ + { + "name": "workgroupId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "{}", + "typeParameters": [], + "line": 468, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the student names\n", + "description": "

Get the student names

\n", + "jsdoctags": [ + { + "name": { + "pos": 12705, + "end": 12716, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "workgroupId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 12699, + "end": 12704, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the workgroup id

\n" + }, + { + "tagName": { + "pos": 12740, + "end": 12746, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

an array containing the student names

\n" + } + ] + }, + { + "name": "getStudentMaxTotalAssetsSize", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 143, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getStudentStatusURL", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 139, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getStudentUploadsBaseURL", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 151, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getTeacherRole", + "args": [ + { + "name": "workgroupId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 689, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the teacher role for the run\n'owner', 'write', 'read'\n", + "description": "

Get the teacher role for the run\n'owner', 'write', 'read'

\n", + "jsdoctags": [ + { + "name": { + "pos": 19003, + "end": 19014, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "workgroupId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 18997, + "end": 19002, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the workgroup id

\n" + }, + { + "tagName": { + "pos": 19038, + "end": 19045, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

the role of the teacher for the run. the possible values are\n'owner', 'write', 'read'

\n" + } + ] + }, + { + "name": "getTeacherUserInfo", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 316, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getTeacherUsername", + "args": [ + { + "name": "userId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 632, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "userId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getTeacherWorkgroupId", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 300, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getTeacherWorkgroupIds", + "args": [], + "optional": false, + "returnType": "number[]", + "typeParameters": [], + "line": 290, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getUserId", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 209, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getUserIdsByWorkgroupId", + "args": [ + { + "name": "workgroupId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 484, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "workgroupId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getUserIdsStringByWorkgroupId", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 561, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getUserInfo", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 155, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getUserInfoByWorkgroupId", + "args": [ + { + "name": "workgroupId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 402, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "workgroupId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getUsernameByWorkgroupId", + "args": [ + { + "name": "workgroupId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 494, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "workgroupId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getUsernamesByWorkgroupId", + "args": [ + { + "name": "workgroupId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "{}", + "typeParameters": [], + "line": 514, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "workgroupId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getUsernamesStringByWorkgroupId", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 550, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getUsersNotInWorkgroupInPeriod", + "args": [ + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 392, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getWebSocketURL", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 159, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getWISEBaseURL", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 164, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getWorkgroupId", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 201, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getWorkgroupsByPeriod", + "args": [ + { + "name": "periodId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "{}", + "typeParameters": [], + "line": 430, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "periodId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isAuthoring", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 571, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isClassroomMonitor", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 579, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isEndedAndLocked", + "args": [ + { + "name": "configJSON", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "this.config" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 933, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "configJSON", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "this.config", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isGoogleUser", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 968, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isPreview", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 567, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isRunActive", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 953, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isRunOwner", + "args": [ + { + "name": "workgroupId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "this.getWorkgroupId()" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 650, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if the workgroup is the owner of the run\n", + "description": "

Check if the workgroup is the owner of the run

\n", + "jsdoctags": [ + { + "name": { + "pos": 17878, + "end": 17889, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "workgroupId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "this.getWorkgroupId()", + "tagName": { + "pos": 17872, + "end": 17877, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the workgroup id

\n" + }, + { + "tagName": { + "pos": 17913, + "end": 17920, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

whether the workgroup is the owner of the run

\n" + } + ] + }, + { + "name": "isRunSharedTeacher", + "args": [ + { + "name": "workgroupId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "this.getWorkgroupId()" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 667, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if the workgroup is a shared teacher for the run\n", + "description": "

Check if the workgroup is a shared teacher for the run

\n", + "jsdoctags": [ + { + "name": { + "pos": 18356, + "end": 18367, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "workgroupId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "this.getWorkgroupId()", + "tagName": { + "pos": 18350, + "end": 18355, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the workgroup id

\n" + }, + { + "tagName": { + "pos": 18391, + "end": 18398, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

whether the workgroup is a shared teacher of the run

\n" + } + ] + }, + { + "name": "isSignedInUserATeacher", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 607, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isStudent", + "args": [ + { + "name": "workgroupId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "this.getWorkgroupId()" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 603, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "workgroupId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "this.getWorkgroupId()", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isStudentRun", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 575, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isSwitchedUser", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 893, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nDetermines whether the current user is logged in as somebody else\n", + "description": "

Determines whether the current user is logged in as somebody else

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 25512, + "end": 25518, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

true iff the user is a switched user

\n" + } + ] + }, + { + "name": "isTeacherIdentifyingId", + "args": [ + { + "name": "fieldName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "value", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 619, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "fieldName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "value", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isTeacherUserId", + "args": [ + { + "name": "userId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 615, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "userId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isTeacherWorkgroupId", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 611, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "removeAbsoluteAssetPaths", + "args": [ + { + "name": "html", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 835, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nRemove the absolute asset paths\ne.g.\n\nwill be changed to\n\n", + "description": "

Remove the absolute asset paths\ne.g.\n\nwill be changed to\n

\n", + "jsdoctags": [ + { + "name": { + "pos": 23600, + "end": 23604, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "html" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 23594, + "end": 23599, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the html

\n" + }, + { + "tagName": { + "pos": 23620, + "end": 23626, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

the modified html without the absolute asset paths

\n" + } + ] + }, + { + "name": "replaceStudentNames", + "args": [ + { + "name": "content", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 727, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nReplace student names in the content.\nFor example, we will replace instances of {{firstStudentFirstName}}\nwith the actual first name of the first student in the workgroup.\n", + "description": "

Replace student names in the content.\nFor example, we will replace instances of {{firstStudentFirstName}}\nwith the actual first name of the first student in the workgroup.

\n", + "jsdoctags": [ + { + "name": { + "pos": 20262, + "end": 20269, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "content" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 20256, + "end": 20261, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

a content object or string

\n" + }, + { + "tagName": { + "pos": 20303, + "end": 20309, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

an updated content object or string

\n" + } + ] + }, + { + "name": "retrieveConfig", + "args": [ + { + "name": "configURL", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 28, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "configURL", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setClassmateDisplayNames", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 244, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "setConfig", + "args": [ + { + "name": "config", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "config", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setTimestampDiff", + "args": [ + { + "name": "configJSON", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 80, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "configJSON", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "sortByProjectId", + "args": [ + { + "name": "projectA", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectB", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "1 | 0 | -1", + "typeParameters": [], + "line": 911, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nSort the objects by descending id.\n-1 if projectA comes after projectB\n0 if they are the same\n", + "description": "

Sort the objects by descending id.\n-1 if projectA comes after projectB\n0 if they are the same

\n", + "jsdoctags": [ + { + "name": { + "pos": 25811, + "end": 25819, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "projectA" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 25805, + "end": 25810, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

an object with an id field

\n" + }, + { + "name": { + "pos": 25859, + "end": 25867, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "projectB" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 25853, + "end": 25858, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

an object with an id field

\n" + }, + { + "tagName": { + "pos": 25901, + "end": 25907, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

1 if projectA comes before projectB\n-1 if projectA comes after projectB\n0 if they are the same

\n" + } + ] + }, + { + "name": "sortClassmateUserInfosAlphabeticallyByName", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 361, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "'use strict';\n\nimport { Inject, Injectable, LOCALE_ID } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable, Subject, tap } from 'rxjs';\nimport { formatDate } from '@angular/common';\nimport { isMatchingPeriods } from '../common/period/period';\nimport { millisecondsToDateTime } from '../common/datetime/datetime';\nimport { usernameComparator } from '../common/user/user';\n\n@Injectable()\nexport class ConfigService {\n public config: any = null;\n private configRetrievedSource: Subject = new Subject();\n public configRetrieved$: Observable = this.configRetrievedSource.asObservable();\n\n constructor(\n private http: HttpClient,\n @Inject(LOCALE_ID) private localeID: string\n ) {}\n\n setConfig(config) {\n this.config = config;\n this.sortClassmateUserInfosAlphabeticallyByName();\n this.setClassmateDisplayNames();\n }\n\n retrieveConfig(configURL: string) {\n return this.http.get(configURL).pipe(\n tap((configJSON: any) => {\n this.setTimestampDiff(configJSON);\n\n let constraints = true;\n\n const absURL = document.location.href;\n\n if (configJSON.mode === 'preview') {\n // constraints can only be disabled using the url in preview mode\n\n // regex to match constraints=false in the url\n const constraintsRegEx = new RegExp('constraints=false', 'gi');\n\n if (absURL != null && absURL.match(constraintsRegEx)) {\n // the url contains constraints=false\n constraints = false;\n }\n }\n\n // set the constraints value into the config so we can access it later\n configJSON.constraints = constraints;\n\n // regex to match showProjectPath=true in the url\n const showProjectPathRegEx = new RegExp('showProjectPath=true', 'gi');\n\n if (absURL != null && absURL.match(showProjectPathRegEx)) {\n // the url contains showProjectPath=true\n const host = location.origin;\n const projectURL = configJSON.projectURL;\n const projectPath = host + projectURL;\n console.log(projectPath);\n }\n\n configJSON.isRunActive = this.calculateIsRunActive(configJSON);\n\n this.setConfig(configJSON);\n\n if (this.isPreview()) {\n const myUserInfo = this.getMyUserInfo();\n if (myUserInfo != null) {\n // set the workgroup id to a random integer between 1 and 100\n myUserInfo.workgroupId = Math.floor(100 * Math.random()) + 1;\n }\n }\n this.configRetrievedSource.next(configJSON);\n return configJSON;\n })\n );\n }\n\n setTimestampDiff(configJSON) {\n if (configJSON.retrievalTimestamp != null) {\n const clientTimestamp = new Date().getTime();\n const serverTimestamp = configJSON.retrievalTimestamp;\n const timestampDiff = clientTimestamp - serverTimestamp;\n configJSON.timestampDiff = timestampDiff;\n } else {\n configJSON.timestampDiff = 0;\n }\n }\n\n getConfigParam(paramName) {\n if (this.config != null) {\n return this.config[paramName];\n } else {\n return null;\n }\n }\n\n getAchievementsURL() {\n return this.getConfigParam('achievementURL');\n }\n\n getCRaterRequestURL() {\n return this.getConfigParam('cRaterRequestURL');\n }\n\n getMainHomePageURL() {\n return this.getConfigParam('mainHomePageURL');\n }\n\n getNotificationURL() {\n return this.getConfigParam('notificationURL');\n }\n\n getRunId() {\n return this.getConfigParam('runId');\n }\n\n getRunCode() {\n return this.getConfigParam('runCode');\n }\n\n getRunName() {\n return this.getConfigParam('runName');\n }\n\n getProjectId() {\n return this.getConfigParam('projectId');\n }\n\n getSessionLogOutURL() {\n return this.getConfigParam('sessionLogOutURL');\n }\n\n getStudentAssetsURL() {\n return this.getConfigParam('studentAssetsURL');\n }\n\n getStudentStatusURL() {\n return this.getConfigParam('studentStatusURL');\n }\n\n getStudentMaxTotalAssetsSize() {\n return this.getConfigParam('studentMaxTotalAssetsSize');\n }\n\n getNotebookURL() {\n return this.getConfigParam('notebookURL');\n }\n\n getStudentUploadsBaseURL() {\n return this.getConfigParam('studentUploadsBaseURL');\n }\n\n getUserInfo() {\n return this.getConfigParam('userInfo');\n }\n\n getWebSocketURL() {\n const protocol = window.location.protocol === 'https:' ? 'wss:' : 'ws:';\n return `${protocol}//${window.location.host}${this.getContextPath()}/websocket`;\n }\n\n getWISEBaseURL() {\n return this.getConfigParam('wiseBaseURL');\n }\n\n getLocale() {\n return this.getConfigParam('locale') || 'en';\n }\n\n getMode() {\n return this.getConfigParam('mode');\n }\n\n getContextPath() {\n return this.getConfigParam('contextPath');\n }\n\n getPeriodId() {\n const myUserInfo = this.getMyUserInfo();\n if (myUserInfo != null) {\n return myUserInfo.periodId;\n }\n return null;\n }\n\n getPeriods(): any[] {\n const myUserInfo = this.getMyUserInfo();\n if (myUserInfo != null) {\n const myClassInfo = myUserInfo.myClassInfo;\n if (myClassInfo != null) {\n if (myClassInfo.periods != null) {\n return myClassInfo.periods;\n }\n }\n }\n return [];\n }\n\n getWorkgroupId() {\n const myUserInfo = this.getMyUserInfo();\n if (myUserInfo != null) {\n return myUserInfo.workgroupId;\n }\n return null;\n }\n\n getUserId() {\n const myUserInfo = this.getMyUserInfo();\n if (myUserInfo != null) {\n return myUserInfo.id;\n }\n return null;\n }\n\n getMyUserInfo() {\n const userInfo = this.getUserInfo();\n if (userInfo != null) {\n return userInfo.myUserInfo;\n }\n return null;\n }\n\n getMyUsername() {\n const myUserInfo = this.getMyUserInfo();\n if (myUserInfo != null) {\n return myUserInfo.username;\n }\n return null;\n }\n\n getClassmateUserInfos() {\n const myUserInfo = this.getMyUserInfo();\n if (myUserInfo != null) {\n const myClassInfo = myUserInfo.myClassInfo;\n if (myClassInfo != null) {\n return myClassInfo.classmateUserInfos;\n }\n }\n return null;\n }\n\n setClassmateDisplayNames() {\n let classmateUserInfos = this.getClassmateUserInfos();\n if (classmateUserInfos) {\n for (let workgroup of classmateUserInfos) {\n workgroup.displayNames = this.getDisplayUsernamesByWorkgroupId(workgroup.workgroupId);\n }\n }\n }\n\n /**\n * Get the classmate user infos sorted by ascending workgroup id\n * @return an array of classmate user info objects sorted by ascending\n * workgroup id\n */\n getClassmateUserInfosSortedByWorkgroupId() {\n const sortedClassmateUserInfos = [];\n const classmateUserInfos = this.getClassmateUserInfos();\n if (classmateUserInfos != null) {\n for (let classmateUserInfo of classmateUserInfos) {\n sortedClassmateUserInfos.push(classmateUserInfo);\n }\n }\n // sort the new classmate user infos array by ascending workgroup id\n sortedClassmateUserInfos.sort(this.compareClassmateUserInfosByWorkgroupId);\n return sortedClassmateUserInfos;\n }\n\n /**\n * Used to sort the classmate user infos by ascending workgroup id.\n * Use by calling myArray.sort(compareClassmateUserInfosByWorkgroupId)\n * @param a a user info object\n * @param b a user info Object\n * @return -1 if a comes before b\n * 1 if a comes after b\n * 0 if a equals b\n */\n compareClassmateUserInfosByWorkgroupId(a, b) {\n if (a.workgroupId < b.workgroupId) {\n return -1;\n } else if (a.workgroupId > b.workgroupId) {\n return 1;\n } else {\n return 0;\n }\n }\n\n getTeacherWorkgroupIds(): number[] {\n const teacherWorkgroupIds = [];\n const teacherWorkgroupId = this.getTeacherWorkgroupId();\n if (teacherWorkgroupId != null) {\n teacherWorkgroupIds.push(teacherWorkgroupId);\n }\n teacherWorkgroupIds.push(...this.getSharedTeacherWorkgroupIds());\n return teacherWorkgroupIds;\n }\n\n getTeacherWorkgroupId(): number {\n const teacherUserInfo = this.getTeacherUserInfo();\n if (teacherUserInfo != null) {\n return teacherUserInfo.workgroupId;\n }\n return null;\n }\n\n getSharedTeacherWorkgroupIds(): number[] {\n const workgroupIds = [];\n this.getSharedTeacherUserInfos().forEach((sharedTeacherUserInfo: any) => {\n workgroupIds.push(sharedTeacherUserInfo.workgroupId);\n });\n return workgroupIds;\n }\n\n getTeacherUserInfo() {\n const myUserInfo = this.getMyUserInfo();\n if (myUserInfo != null) {\n const myClassInfo = myUserInfo.myClassInfo;\n if (myClassInfo != null) {\n return myClassInfo.teacherUserInfo;\n }\n }\n return null;\n }\n\n /**\n * Get the shared teacher user infos for the run\n */\n getSharedTeacherUserInfos() {\n const myUserInfo = this.getMyUserInfo();\n if (myUserInfo != null) {\n const myClassInfo = myUserInfo.myClassInfo;\n if (myClassInfo != null) {\n return myClassInfo.sharedTeacherUserInfos;\n }\n }\n return [];\n }\n\n getClassmateWorkgroupIds(includeSelf = false) {\n const workgroupIds = [];\n if (includeSelf) {\n workgroupIds.push(this.getWorkgroupId());\n }\n const classmateUserInfos = this.getClassmateUserInfos();\n if (classmateUserInfos != null) {\n for (let classmateUserInfo of classmateUserInfos) {\n if (classmateUserInfo != null) {\n const workgroupId = classmateUserInfo.workgroupId;\n\n if (workgroupId != null) {\n workgroupIds.push(workgroupId);\n }\n }\n }\n }\n return workgroupIds;\n }\n\n sortClassmateUserInfosAlphabeticallyByName() {\n const classmateUserInfos = this.getClassmateUserInfos();\n if (classmateUserInfos != null) {\n classmateUserInfos.sort(usernameComparator);\n }\n return classmateUserInfos;\n }\n\n getPermissions() {\n // a switched user (admin/researcher user impersonating a teacher) should not be able to view/grade\n return {\n canViewStudentNames: this.config.canViewStudentNames && !this.isSwitchedUser(),\n canGradeStudentWork: this.config.canGradeStudentWork && !this.isSwitchedUser(),\n canAuthorProject: this.config.canAuthorProject && !this.isSwitchedUser()\n };\n }\n\n private getAllUserInfoInPeriod(periodId: number): any {\n return this.getClassmateUserInfos()\n .map((userInfo) => {\n return userInfo.periodId === periodId ? userInfo : [];\n })\n .flat();\n }\n\n getAllUsersInPeriod(periodId: number): any[] {\n return this.getAllUserInfoInPeriod(periodId)\n .map((userInfo) => userInfo.users)\n .flat();\n }\n\n getUsersNotInWorkgroupInPeriod(periodId: number): any[] {\n const users = [];\n this.getAllUserInfoInPeriod(periodId).forEach((userInfo) => {\n if (userInfo.workgroupId == null) {\n users.push(...userInfo.users);\n }\n });\n return users;\n }\n\n getUserInfoByWorkgroupId(workgroupId) {\n let userInfo = null;\n if (workgroupId != null) {\n const myUserInfo = this.getMyUserInfo();\n if (myUserInfo != null) {\n const tempWorkgroupId = myUserInfo.workgroupId;\n if (workgroupId === tempWorkgroupId) {\n userInfo = myUserInfo;\n }\n }\n if (userInfo == null) {\n const classmateUserInfos = this.getClassmateUserInfos();\n if (classmateUserInfos != null) {\n for (let classmateUserInfo of classmateUserInfos) {\n if (classmateUserInfo != null) {\n const tempWorkgroupId = classmateUserInfo.workgroupId;\n if (workgroupId == tempWorkgroupId) {\n userInfo = classmateUserInfo;\n break;\n }\n }\n }\n }\n }\n }\n return userInfo;\n }\n\n getWorkgroupsByPeriod(periodId) {\n const workgroupsInPeriod = [];\n const myUserInfo = this.getMyUserInfo();\n if (this.isStudent() && isMatchingPeriods(myUserInfo.periodId, periodId)) {\n workgroupsInPeriod.push(myUserInfo);\n }\n for (const classmateUserInfo of this.getClassmateUserInfos()) {\n if (isMatchingPeriods(classmateUserInfo.periodId, periodId)) {\n workgroupsInPeriod.push(classmateUserInfo);\n }\n }\n return workgroupsInPeriod;\n }\n\n getNumberOfWorkgroupsInPeriod(periodId) {\n return this.getWorkgroupsByPeriod(periodId).length;\n }\n\n /**\n * Get the period id for a workgroup id\n * @param workgroupId the workgroup id\n * @returns the period id the workgroup id is in\n */\n getPeriodIdByWorkgroupId(workgroupId) {\n if (workgroupId != null) {\n const userInfo = this.getUserInfoByWorkgroupId(workgroupId);\n if (userInfo != null) {\n return userInfo.periodId;\n }\n }\n return null;\n }\n\n /**\n * Get the student names\n * @param workgroupId the workgroup id\n * @return an array containing the student names\n */\n getStudentFirstNamesByWorkgroupId(workgroupId) {\n const studentNames = [];\n const usernames = this.getUsernameByWorkgroupId(workgroupId);\n if (usernames != null) {\n const usernamesSplit = usernames.split(':');\n if (usernamesSplit != null) {\n for (let username of usernamesSplit) {\n const indexOfSpace = username.indexOf(' ');\n const studentFirstName = username.substring(0, indexOfSpace);\n studentNames.push(studentFirstName);\n }\n }\n }\n return studentNames;\n }\n\n getUserIdsByWorkgroupId(workgroupId) {\n if (workgroupId != null) {\n const userInfo = this.getUserInfoByWorkgroupId(workgroupId);\n if (userInfo != null) {\n return userInfo.userIds;\n }\n }\n return [];\n }\n\n getUsernameByWorkgroupId(workgroupId) {\n if (workgroupId != null) {\n const userInfo = this.getUserInfoByWorkgroupId(workgroupId);\n if (userInfo != null) {\n return userInfo.username;\n }\n }\n return null;\n }\n\n getDisplayNamesByWorkgroupId(workgroupId) {\n if (workgroupId != null) {\n const userInfo = this.getUserInfoByWorkgroupId(workgroupId);\n if (userInfo != null) {\n return userInfo.displayNames;\n }\n }\n return null;\n }\n\n getUsernamesByWorkgroupId(workgroupId) {\n let usernamesObjects = [];\n if (workgroupId != null) {\n let userInfo = this.getUserInfoByWorkgroupId(workgroupId);\n if (userInfo != null && userInfo.username != null) {\n let usernames = userInfo.username.split(':');\n for (let name of usernames) {\n let id = '';\n let regex = /(.+) \\((.+)\\)/g;\n let matches = regex.exec(name);\n if (matches) {\n name = matches[1];\n id = matches[2];\n }\n usernamesObjects.push({\n name: name,\n id: id\n });\n }\n }\n }\n return usernamesObjects;\n }\n\n getDisplayUsernamesByWorkgroupId(workgroupId: number): string {\n let usernames = '';\n if (workgroupId != null) {\n if (this.getPermissions().canViewStudentNames) {\n usernames = this.getUsernamesStringByWorkgroupId(workgroupId);\n } else {\n usernames = this.getUserIdsStringByWorkgroupId(workgroupId);\n }\n }\n return usernames;\n }\n\n getUsernamesStringByWorkgroupId(workgroupId: number): string {\n const names = this.getUsernamesByWorkgroupId(workgroupId);\n return names.length > 0\n ? names\n .map(function (obj) {\n return obj.name;\n })\n .join(', ')\n : '';\n }\n\n getUserIdsStringByWorkgroupId(workgroupId: number): string {\n return this.getUserIdsByWorkgroupId(workgroupId)\n .map((id) => $localize`Student ${id}`)\n .join(', ');\n }\n\n isPreview() {\n return this.getMode() === 'preview';\n }\n\n isAuthoring() {\n return this.getMode() === 'author';\n }\n\n isStudentRun() {\n return this.getMode() === 'studentRun';\n }\n\n isClassroomMonitor() {\n return this.getMode() === 'classroomMonitor';\n }\n\n /**\n * Convert a client timestamp to a server timestamp. This is required\n * in case the client and server clocks are not synchronized.\n * @param clientTimestamp the client timestamp\n */\n convertToServerTimestamp(clientTimestamp) {\n const timestampDiff = this.getConfigParam('timestampDiff');\n const serverTimestamp = clientTimestamp - timestampDiff;\n return serverTimestamp;\n }\n\n /**\n * Convert a server timestamp to a client timestamp. This is required\n * in case the client and server clocks are not synchronized.\n * @param serverTimestamp the client timestamp\n */\n convertToClientTimestamp(serverTimestamp) {\n return serverTimestamp + this.getConfigParam('timestampDiff');\n }\n\n isStudent(workgroupId = this.getWorkgroupId()) {\n return !this.isRunOwner(workgroupId) && !this.isRunSharedTeacher();\n }\n\n isSignedInUserATeacher(): boolean {\n return this.isRunOwner() || this.isRunSharedTeacher();\n }\n\n isTeacherWorkgroupId(workgroupId: number): boolean {\n return this.isTeacherIdentifyingId('workgroupId', workgroupId);\n }\n\n isTeacherUserId(userId: number): boolean {\n return this.isTeacherIdentifyingId('userId', userId);\n }\n\n isTeacherIdentifyingId(fieldName: string, value: number): boolean {\n const teacherUserInfo = this.getTeacherUserInfo();\n if (teacherUserInfo == null) {\n return false;\n }\n if (teacherUserInfo[fieldName] === value) {\n return true;\n }\n return this.getSharedTeacherUserInfos().some((userInfo: any) => {\n return userInfo[fieldName] === value;\n });\n }\n\n getTeacherUsername(userId: number): string {\n const teacherUserInfo = this.getTeacherUserInfo();\n if (teacherUserInfo.userId === userId) {\n return teacherUserInfo.username;\n }\n for (const sharedTeacherUserInfo of this.getSharedTeacherUserInfos()) {\n if (sharedTeacherUserInfo.userId === userId) {\n return sharedTeacherUserInfo.username;\n }\n }\n return null;\n }\n\n /**\n * Check if the workgroup is the owner of the run\n * @param workgroupId the workgroup id\n * @returns whether the workgroup is the owner of the run\n */\n isRunOwner(workgroupId = this.getWorkgroupId()) {\n if (workgroupId != null) {\n const teacherUserInfo = this.getTeacherUserInfo();\n if (teacherUserInfo != null) {\n if (workgroupId == teacherUserInfo.workgroupId) {\n return true;\n }\n }\n }\n return false;\n }\n\n /**\n * Check if the workgroup is a shared teacher for the run\n * @param workgroupId the workgroup id\n * @returns whether the workgroup is a shared teacher of the run\n */\n isRunSharedTeacher(workgroupId = this.getWorkgroupId()) {\n if (workgroupId != null) {\n const sharedTeacherUserInfos = this.getSharedTeacherUserInfos();\n if (sharedTeacherUserInfos != null) {\n for (let sharedTeacherUserInfo of sharedTeacherUserInfos) {\n if (sharedTeacherUserInfo != null) {\n if (workgroupId == sharedTeacherUserInfo.workgroupId) {\n return true;\n }\n }\n }\n }\n }\n return false;\n }\n\n /**\n * Get the teacher role for the run\n * @param workgroupId the workgroup id\n * @returns the role of the teacher for the run. the possible values are\n * 'owner', 'write', 'read'\n */\n getTeacherRole(workgroupId) {\n if (this.isRunOwner(workgroupId)) {\n return 'owner';\n } else if (this.isRunSharedTeacher(workgroupId)) {\n return this.getSharedTeacherRole(workgroupId);\n }\n return null;\n }\n\n /**\n * Get the shared teacher role for the run\n * @param workgroupId the workgroup id\n * @returns the shared teacher role for the run. the possible values are\n * 'write' or 'read'\n */\n getSharedTeacherRole(workgroupId) {\n if (workgroupId != null) {\n const sharedTeacherUserInfos = this.getSharedTeacherUserInfos();\n if (sharedTeacherUserInfos != null) {\n for (let sharedTeacherUserInfo of sharedTeacherUserInfos) {\n if (sharedTeacherUserInfo != null) {\n if (workgroupId == sharedTeacherUserInfo.workgroupId) {\n return sharedTeacherUserInfo.role;\n }\n }\n }\n }\n }\n return null;\n }\n\n /**\n * Replace student names in the content.\n * For example, we will replace instances of {{firstStudentFirstName}}\n * with the actual first name of the first student in the workgroup.\n * @param content a content object or string\n * @return an updated content object or string\n */\n replaceStudentNames(content) {\n if (content != null) {\n let contentString = content;\n if (typeof content === 'object') {\n contentString = JSON.stringify(content);\n }\n if (contentString != null) {\n const workgroupId = this.getWorkgroupId();\n const firstNames = this.getStudentFirstNamesByWorkgroupId(workgroupId);\n\n if (firstNames.length >= 1) {\n /*\n * there are 1 or more students in the workgroup so we can\n * replace the first student first name with the actual\n * name\n */\n contentString = contentString.replace(\n new RegExp('{{firstStudentFirstName}}', 'gi'),\n firstNames[0]\n );\n\n /*\n * there are 1 or more students in the workgroup so we can\n * replace the student first names with the actual names\n */\n contentString = contentString.replace(\n new RegExp('{{studentFirstNames}}', 'gi'),\n firstNames.join(', ')\n );\n }\n\n if (firstNames.length >= 2) {\n /*\n * there are 2 or more students in the workgroup so we can\n * replace the second student first name with the actual\n * name\n */\n contentString = contentString.replace(\n new RegExp('{{secondStudentFirstName}}', 'gi'),\n firstNames[1]\n );\n }\n\n if (firstNames.length >= 3) {\n /*\n * there are 3 or more students in the workgroup so we can\n * replace the third student first name with the actual\n * name\n */\n contentString = contentString.replace(\n new RegExp('{{thirdStudentFirstName}}', 'gi'),\n firstNames[2]\n );\n }\n }\n\n if (typeof content === 'object') {\n // convert the content string back into an object\n content = JSON.parse(contentString);\n } else if (typeof content === 'string') {\n // the content was a string so we can just use the content string\n content = contentString;\n }\n }\n return content;\n }\n\n /**\n * Get the project assets folder path\n * @param includeHost whether to include the host in the URL\n * @return the project assets folder path\n * e.g.\n * with host\n * http://wise.berkeley.edu/wise/curriculum/3/assets\n * without host\n * /wise/curriculum/3/assets\n */\n getProjectAssetsDirectoryPath(includeHost = false) {\n const projectBaseURL = this.getConfigParam('projectBaseURL');\n if (projectBaseURL != null) {\n if (includeHost) {\n const host = window.location.origin;\n\n /*\n * get the full path including the host\n * e.g. http://wise.berkeley.edu/wise/curriculum/3/assets\n */\n return host + projectBaseURL + 'assets';\n } else {\n /*\n * get the full path not including the host\n * e.g. /wise/curriculum/3/assets\n */\n return projectBaseURL + 'assets';\n }\n }\n return null;\n }\n\n /**\n * Remove the absolute asset paths\n * e.g.\n * \n * will be changed to\n * \n * @param html the html\n * @return the modified html without the absolute asset paths\n */\n removeAbsoluteAssetPaths(html) {\n /*\n * get the assets directory path with the host\n * e.g.\n * https://wise.berkeley.edu/wise/curriculum/3/assets/\n */\n const includeHost = true;\n const assetsDirectoryPathIncludingHost = this.getProjectAssetsDirectoryPath(includeHost);\n const assetsDirectoryPathIncludingHostRegEx = new RegExp(assetsDirectoryPathIncludingHost, 'g');\n\n /*\n * get the assets directory path without the host\n * e.g.\n * /wise/curriculum/3/assets/\n */\n const assetsDirectoryPathNotIncludingHost = this.getProjectAssetsDirectoryPath() + '/';\n const assetsDirectoryPathNotIncludingHostRegEx = new RegExp(\n assetsDirectoryPathNotIncludingHost,\n 'g'\n );\n\n /*\n * remove the directory path from the html so that only the file name\n * remains in asset references\n * e.g.\n * \n * will be changed to\n * \n */\n html = html.replace(assetsDirectoryPathIncludingHostRegEx, '');\n html = html.replace(assetsDirectoryPathNotIncludingHostRegEx, '');\n return html;\n }\n\n /**\n * Get all the authorable projects\n */\n getAuthorableProjects() {\n const ownedProjects = this.getConfigParam('projects');\n const sharedProjects = this.getConfigParam('sharedProjects');\n let authorableProjects = [];\n if (ownedProjects != null) {\n authorableProjects = authorableProjects.concat(ownedProjects);\n }\n\n if (sharedProjects != null) {\n authorableProjects = authorableProjects.concat(sharedProjects);\n }\n\n // sort the projects by descending id\n authorableProjects.sort(this.sortByProjectId);\n return authorableProjects;\n }\n\n /**\n * Determines whether the current user is logged in as somebody else\n * @return true iff the user is a switched user\n */\n isSwitchedUser() {\n let myUserInfo = this.getMyUserInfo();\n if (myUserInfo != null) {\n if (myUserInfo.isSwitchedUser) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Sort the objects by descending id.\n * @param projectA an object with an id field\n * @param projectB an object with an id field\n * @return 1 if projectA comes before projectB\n * -1 if projectA comes after projectB\n * 0 if they are the same\n */\n sortByProjectId(projectA, projectB) {\n const projectIdA = projectA.id;\n const projectIdB = projectB.id;\n if (projectIdA < projectIdB) {\n return 1;\n } else if (projectIdA > projectIdB) {\n return -1;\n } else {\n return 0;\n }\n }\n\n calculateIsRunActive(configJSON) {\n const currentTime = new Date().getTime();\n if (currentTime < this.convertToClientTimestamp(configJSON.startTime)) {\n return false;\n } else if (this.isEndedAndLocked(configJSON)) {\n return false;\n }\n return true;\n }\n\n isEndedAndLocked(configJSON = this.config) {\n return (\n configJSON.endTime != null &&\n new Date().getTime() > this.convertToClientTimestamp(configJSON.endTime) &&\n configJSON.isLockedAfterEndDate\n );\n }\n\n getPrettyEndDate(): string {\n return formatDate(this.getEndDate(), 'mediumDate', this.localeID);\n }\n\n getStartDate() {\n return this.config.startTime;\n }\n\n getEndDate() {\n return this.config.endTime;\n }\n\n isRunActive() {\n return this.config.isRunActive;\n }\n\n getFormattedStartDate() {\n return millisecondsToDateTime(this.getStartDate());\n }\n\n getFormattedEndDate() {\n if (this.getEndDate() != null) {\n return millisecondsToDateTime(this.getEndDate());\n }\n return '';\n }\n\n isGoogleUser() {\n return this.getMyUserInfo().isGoogleUser;\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "localeID", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 15, + "jsdoctags": [ + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "localeID", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "type": "injectable", + "isDuplicate": true, + "duplicateId": 1, + "duplicateName": "ConfigService-1" + }, + { + "name": "ConstraintService", + "id": "injectable-ConstraintService-9100ba09b7ef7e974454227b820f7fa093a8fbcf36f6b6474e7adb868e0ed0a848042e0a112e85280e94c10d561e1514bd03f5cb684947b72635cc2b4ea635dd", + "file": "src/assets/wise5/services/constraintService.ts", + "properties": [ + { + "name": "activeConstraints", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 34 + }, + { + "name": "constraintsUpdated$", + "defaultValue": "this.constraintsUpdatedSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "Observable", + "indexKey": "", + "optional": false, + "description": "", + "line": 36, + "modifierKind": [ + 125 + ] + }, + { + "name": "constraintsUpdatedSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 35, + "modifierKind": [ + 123 + ] + }, + { + "name": "criteriaFunctionNameToStrategy", + "defaultValue": "{\n addXNumberOfNotesOnThisStep: new AddXNumberOfNotesOnThisStepConstraintStrategy(),\n branchPathTaken: new BranchPathTakenConstraintStrategy(),\n choiceChosen: new ChoiceChosenConstraintStrategy(),\n fillXNumberOfRows: new FillXNumberOfRowsConstraintStrategy(),\n hasTag: new HasTagConstraintStrategy(),\n isCompleted: new IsCompletedConstraintStrategy(),\n isCorrect: new IsCorrectConstraintStrategy(),\n isRevisedAfter: new IsRevisedAfterConstraintStrategy(),\n isVisible: new IsVisibleConstraintStrategy(),\n isVisitable: new IsVisitableConstraintStrategy(),\n isVisited: new IsVisitedConstraintStrategy(),\n isVisitedAfter: new IsVisitedAfterConstraintStrategy(),\n isVisitedAndRevisedAfter: new IsVisitedAndRevisedAfterConstraintStrategy(),\n score: new ScoreConstraintStrategy(),\n teacherRemoval: new TeacherRemovalConstraintStrategy(),\n usedXSubmits: new UsedXSubmitsConstraintStrategy(),\n wroteXNumberOfWords: new WroteXNumberOfWordsConstraintStrategy()\n }", + "deprecated": false, + "deprecationMessage": "", + "type": "object", + "indexKey": "", + "optional": false, + "description": "", + "line": 37 + }, + { + "name": "evaluateConstraintContext", + "deprecated": false, + "deprecationMessage": "", + "type": "EvaluateConstraintContext", + "indexKey": "", + "optional": false, + "description": "", + "line": 56 + }, + { + "name": "isNodeAffectedByConstraintResult", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 57 + } + ], + "methods": [ + { + "name": "cacheIsNodeAffectedByConstraintResult", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "constraintId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "result", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 232, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nRemember the result for whether the node is affected by the constraint\n", + "description": "

Remember the result for whether the node is affected by the constraint

\n", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": { + "pos": 10003, + "end": 10009, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 9997, + "end": 10002, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id

\n" + }, + { + "name": { + "pos": 10034, + "end": 10046, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "constraintId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 10028, + "end": 10033, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the constraint id

\n" + }, + { + "name": "result", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "clearActiveConstraints", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 265, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "constraintsComparatorGenerator", + "args": [ + { + "name": "orderedNodeIds", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 257, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCreate the constraints comparator function that is used for sorting an array of constraint\nobjects.\nup in the project.\n", + "description": "

Create the constraints comparator function that is used for sorting an array of constraint\nobjects.\nup in the project.

\n", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": { + "pos": 10882, + "end": 10896, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "orderedNodeIds" + }, + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 10876, + "end": 10881, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

An array of node ids in the order in which they show up in the project.

\n" + }, + { + "tagName": { + "pos": 10975, + "end": 10981, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

A comparator that orders constraint objects in the order in which the target ids show\nup in the project.

\n" + } + ] + }, + { + "name": "evaluate", + "args": [ + { + "name": "constraints", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]" + } + ], + "optional": false, + "returnType": "ConstraintEvaluationResult", + "typeParameters": [], + "line": 98, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "constraints", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "evaluateConstraint", + "args": [ + { + "name": "constraint", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 130, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "constraint", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "evaluateCriteria", + "args": [ + { + "name": "criteria", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 147, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "criteria", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "evaluateCriterias", + "args": [ + { + "name": "criterias", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 157, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "criterias", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "evaluateMultipleRemovalCriteria", + "args": [ + { + "name": "multipleRemovalCriteria", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "removalConditional", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 138, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "multipleRemovalCriteria", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "removalConditional", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "evaluateStrategy", + "args": [ + { + "name": "criteria", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "strategy", + "type": "ConstraintStrategy", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 152, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "criteria", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "strategy", + "type": "ConstraintStrategy", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getActionMessage", + "args": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 432, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the constraint action as human readable text.\nexample\n'All steps after this one will not be visitable until '\n", + "description": "

Get the constraint action as human readable text.\nexample\n'All steps after this one will not be visitable until '

\n", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": { + "pos": 18134, + "end": 18140, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "action" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 18128, + "end": 18133, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

A constraint action.

\n" + }, + { + "tagName": { + "pos": 18168, + "end": 18174, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

A human readable text string that describes the action\nexample\n'All steps after this one will not be visitable until '

\n" + } + ] + }, + { + "name": "getCachedIsNodeAffectedByConstraintResult", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "constraintId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 222, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if we have calculated the result for whether the node is affected by the constraint\nthe result before, we will return null.\n", + "description": "

Check if we have calculated the result for whether the node is affected by the constraint\nthe result before, we will return null.

\n", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": { + "pos": 9513, + "end": 9519, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 9507, + "end": 9512, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id

\n" + }, + { + "name": { + "pos": 9544, + "end": 9556, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "constraintId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 9538, + "end": 9543, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the constraint id

\n" + }, + { + "tagName": { + "pos": 9581, + "end": 9587, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

Return the result if we have calculated the result before. If we have not calculated\nthe result before, we will return null.

\n" + } + ] + }, + { + "name": "getConstraintDescription", + "args": [ + { + "name": "constraint", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 293, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the human readable description of the constraint.\nexample\n'All steps after this one will not be visitable until the student completes\n\"3.7 Revise Your Bowls Explanation\"'\n", + "description": "

Get the human readable description of the constraint.\nexample\n'All steps after this one will not be visitable until the student completes\n"3.7 Revise Your Bowls Explanation"'

\n", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": { + "pos": 12170, + "end": 12180, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "constraint" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 12164, + "end": 12169, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The constraint object.

\n" + }, + { + "tagName": { + "pos": 12210, + "end": 12217, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

A human readable text string that describes the constraint.\nexample\n'All steps after this one will not be visitable until the student completes\n"3.7 Revise Your Bowls Explanation"'

\n" + } + ] + }, + { + "name": "getConstraintDescriptions", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 274, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getConstraintsThatAffectNode", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 161, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getCriteriaMessage", + "args": [ + { + "name": "criteria", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 316, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the message that describes how to satisfy the criteria\nTODO: check if the criteria is satisfied\nsatisfy the criteria\n", + "description": "

Get the message that describes how to satisfy the criteria\nTODO: check if the criteria is satisfied\nsatisfy the criteria

\n", + "jsdoctags": [ + { + "name": { + "pos": 13119, + "end": 13127, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "criteria" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 13113, + "end": 13118, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the criteria object that needs to be satisfied

\n" + }, + { + "tagName": { + "pos": 13181, + "end": 13188, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

the message to display to the student that describes how to\nsatisfy the criteria

\n" + } + ] + }, + { + "name": "hasActiveConstraints", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 270, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isNodeAffectedByConstraint", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "constraint", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 181, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if a node is affected by the constraint\n", + "description": "

Check if a node is affected by the constraint

\n", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": { + "pos": 7992, + "end": 7996, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "node" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 7986, + "end": 7991, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

check if the node is affected

\n" + }, + { + "name": { + "pos": 8039, + "end": 8049, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "constraint" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 8033, + "end": 8038, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the constraint that might affect the node

\n" + }, + { + "tagName": { + "pos": 8098, + "end": 8105, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

whether the node is affected by the constraint

\n" + } + ] + }, + { + "name": "isNodeAfterConstraintAction", + "args": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 199, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isNodeTargetOfConstraint", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "targetId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 205, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "targetId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isVisibleConstraintAction", + "args": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 113, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isVisitableConstraintAction", + "args": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 122, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "orderConstraints", + "args": [ + { + "name": "constraints", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 245, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nOrder the constraints so that they show up in the same order as in the project.\n", + "description": "

Order the constraints so that they show up in the same order as in the project.

\n", + "jsdoctags": [ + { + "name": { + "pos": 10446, + "end": 10457, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "constraints" + }, + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 10440, + "end": 10445, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

An array of constraint objects

\n" + }, + { + "tagName": { + "pos": 10495, + "end": 10501, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

An array of ordered constraints

\n" + } + ] + }, + { + "name": "subscribeToProjectParsed", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 81, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Injectable } from '@angular/core';\nimport { ConstraintEvaluationResult } from '../common/constraint/ConstraintEvaluationResult';\nimport { EvaluateConstraintContext } from '../common/constraint/EvaluateConstraintContext';\nimport { AddXNumberOfNotesOnThisStepConstraintStrategy } from '../common/constraint/strategies/AddXNumberOfNotesOnThisStepConstraintStrategy';\nimport { BranchPathTakenConstraintStrategy } from '../common/constraint/strategies/BranchPathTakenConstraintStrategy';\nimport { ChoiceChosenConstraintStrategy } from '../common/constraint/strategies/ChoiceChosenConstraintStrategy';\nimport { ConstraintStrategy } from '../common/constraint/strategies/ConstraintStrategy';\nimport { FillXNumberOfRowsConstraintStrategy } from '../common/constraint/strategies/FillXNumberOfRowsConstraintStrategy';\nimport { HasTagConstraintStrategy } from '../common/constraint/strategies/HasTagConstraintStrategy';\nimport { IsCompletedConstraintStrategy } from '../common/constraint/strategies/IsCompletedConstraintStrategy';\nimport { IsCorrectConstraintStrategy } from '../common/constraint/strategies/IsCorrectConstraintStrategy';\nimport { IsRevisedAfterConstraintStrategy } from '../common/constraint/strategies/IsRevisedAfterConstraintStrategy';\nimport { IsVisibleConstraintStrategy } from '../common/constraint/strategies/IsVisibleConstraintStrategy';\nimport { IsVisitableConstraintStrategy } from '../common/constraint/strategies/IsVisitableContraintStrategy';\nimport { IsVisitedAfterConstraintStrategy } from '../common/constraint/strategies/IsVisitedAfterConstraintStrategy';\nimport { IsVisitedAndRevisedAfterConstraintStrategy } from '../common/constraint/strategies/IsVisitedAndRevisedAfterConstraintStrategy';\nimport { IsVisitedConstraintStrategy } from '../common/constraint/strategies/IsVisitedConstraintStrategy';\nimport { ScoreConstraintStrategy } from '../common/constraint/strategies/ScoreConstraintStrategy';\nimport { TeacherRemovalConstraintStrategy } from '../common/constraint/strategies/TeacherRemovalConstraintStrategy';\nimport { UsedXSubmitsConstraintStrategy } from '../common/constraint/strategies/UsedXSubmitsConstraintStrategy';\nimport { WroteXNumberOfWordsConstraintStrategy } from '../common/constraint/strategies/WroteXNumberOfWordsConstraintStrategy';\nimport { AnnotationService } from './annotationService';\nimport { ComponentServiceLookupService } from './componentServiceLookupService';\nimport { ConfigService } from './configService';\nimport { NotebookService } from './notebookService';\nimport { ProjectService } from './projectService';\nimport { StudentDataService } from './studentDataService';\nimport { TagService } from './tagService';\nimport { CompletionService } from './completionService';\nimport { Observable, Subject } from 'rxjs';\n\n@Injectable()\nexport class ConstraintService {\n activeConstraints: any[] = [];\n private constraintsUpdatedSource: Subject = new Subject();\n public constraintsUpdated$: Observable = this.constraintsUpdatedSource.asObservable();\n criteriaFunctionNameToStrategy = {\n addXNumberOfNotesOnThisStep: new AddXNumberOfNotesOnThisStepConstraintStrategy(),\n branchPathTaken: new BranchPathTakenConstraintStrategy(),\n choiceChosen: new ChoiceChosenConstraintStrategy(),\n fillXNumberOfRows: new FillXNumberOfRowsConstraintStrategy(),\n hasTag: new HasTagConstraintStrategy(),\n isCompleted: new IsCompletedConstraintStrategy(),\n isCorrect: new IsCorrectConstraintStrategy(),\n isRevisedAfter: new IsRevisedAfterConstraintStrategy(),\n isVisible: new IsVisibleConstraintStrategy(),\n isVisitable: new IsVisitableConstraintStrategy(),\n isVisited: new IsVisitedConstraintStrategy(),\n isVisitedAfter: new IsVisitedAfterConstraintStrategy(),\n isVisitedAndRevisedAfter: new IsVisitedAndRevisedAfterConstraintStrategy(),\n score: new ScoreConstraintStrategy(),\n teacherRemoval: new TeacherRemovalConstraintStrategy(),\n usedXSubmits: new UsedXSubmitsConstraintStrategy(),\n wroteXNumberOfWords: new WroteXNumberOfWordsConstraintStrategy()\n };\n evaluateConstraintContext: EvaluateConstraintContext;\n isNodeAffectedByConstraintResult: any = {};\n\n constructor(\n annotationService: AnnotationService,\n completionService: CompletionService,\n componentServiceLookupService: ComponentServiceLookupService,\n private configService: ConfigService,\n dataService: StudentDataService,\n notebookService: NotebookService,\n private projectService: ProjectService,\n tagService: TagService\n ) {\n this.evaluateConstraintContext = new EvaluateConstraintContext(\n annotationService,\n completionService,\n componentServiceLookupService,\n configService,\n dataService,\n notebookService,\n tagService\n );\n this.subscribeToProjectParsed();\n }\n\n private subscribeToProjectParsed(): void {\n this.projectService.projectParsed$.subscribe(() => {\n this.activeConstraints = [];\n this.isNodeAffectedByConstraintResult = {};\n for (const node of this.projectService.project.nodes) {\n const constraints = node.constraints;\n if (constraints != null) {\n if (this.configService.getConfigParam('constraints')) {\n for (const constraint of constraints) {\n this.activeConstraints.push(constraint);\n }\n }\n }\n }\n });\n }\n\n evaluate(constraints: any[] = []): ConstraintEvaluationResult {\n let isVisible = true;\n let isVisitable = true;\n for (const constraint of constraints) {\n const result = this.evaluateConstraint(constraint);\n const action = constraint.action;\n if (this.isVisibleConstraintAction(action)) {\n isVisible = isVisible && result;\n } else if (this.isVisitableConstraintAction(action)) {\n isVisitable = isVisitable && result;\n }\n }\n return { isVisible: isVisible, isVisitable: isVisitable };\n }\n\n private isVisibleConstraintAction(action: string): boolean {\n return [\n 'makeThisComponentNotVisible',\n 'makeThisNodeNotVisible',\n 'makeAllNodesAfterThisNotVisible',\n 'makeAllOtherNodesNotVisible'\n ].includes(action);\n }\n\n private isVisitableConstraintAction(action: string): boolean {\n return [\n 'makeThisNodeNotVisitable',\n 'makeAllNodesAfterThisNotVisitable',\n 'makeAllOtherNodesNotVisitable'\n ].includes(action);\n }\n\n evaluateConstraint(constraint: any): boolean {\n const removalCriteria = constraint.removalCriteria;\n return (\n removalCriteria == null ||\n this.evaluateMultipleRemovalCriteria(removalCriteria, constraint.removalConditional)\n );\n }\n\n private evaluateMultipleRemovalCriteria(\n multipleRemovalCriteria: any[],\n removalConditional: any\n ): boolean {\n return removalConditional === 'any'\n ? multipleRemovalCriteria.some((criteria) => this.evaluateCriteria(criteria))\n : multipleRemovalCriteria.every((criteria) => this.evaluateCriteria(criteria));\n }\n\n evaluateCriteria(criteria: any): boolean {\n const strategy = this.criteriaFunctionNameToStrategy[criteria.name];\n return strategy == null || this.evaluateStrategy(criteria, strategy);\n }\n\n private evaluateStrategy(criteria: any, strategy: ConstraintStrategy): boolean {\n this.evaluateConstraintContext.setStrategy(strategy);\n return this.evaluateConstraintContext.evaluate(criteria);\n }\n\n evaluateCriterias(criterias: any[]): boolean {\n return criterias.every((criteria) => this.evaluateCriteria(criteria));\n }\n\n getConstraintsThatAffectNode(node: any): any[] {\n if (!this.configService.getConfigParam('constraints')) {\n return [];\n }\n const constraints = [];\n const allConstraints = this.activeConstraints;\n for (const constraint of allConstraints) {\n if (this.isNodeAffectedByConstraint(node, constraint)) {\n constraints.push(constraint);\n }\n }\n return constraints;\n }\n\n /**\n * Check if a node is affected by the constraint\n * @param node check if the node is affected\n * @param constraint the constraint that might affect the node\n * @returns whether the node is affected by the constraint\n */\n private isNodeAffectedByConstraint(node: any, constraint: any): boolean {\n const cachedResult = this.getCachedIsNodeAffectedByConstraintResult(node.id, constraint.id);\n if (cachedResult != null) {\n return cachedResult;\n } else {\n let result = false;\n if (this.isNodeAfterConstraintAction(constraint.action)) {\n if (this.projectService.isNodeIdAfter(constraint.targetId, node.id)) {\n result = true;\n }\n } else {\n result = this.isNodeTargetOfConstraint(node, constraint.targetId);\n }\n this.cacheIsNodeAffectedByConstraintResult(node.id, constraint.id, result);\n return result;\n }\n }\n\n private isNodeAfterConstraintAction(action: string): boolean {\n return (\n action === 'makeAllNodesAfterThisNotVisible' || action === 'makeAllNodesAfterThisNotVisitable'\n );\n }\n\n private isNodeTargetOfConstraint(node: any, targetId: string) {\n const targetNode = this.projectService.getNodeById(targetId);\n return (\n targetNode != null &&\n ((targetNode.type === 'node' && node.id === targetId) ||\n (targetNode.type === 'group' &&\n (node.id === targetId || this.projectService.isNodeDescendentOfGroup(node, targetNode))))\n );\n }\n\n /**\n * Check if we have calculated the result for whether the node is affected by the constraint\n * @param nodeId the node id\n * @param constraintId the constraint id\n * @return Return the result if we have calculated the result before. If we have not calculated\n * the result before, we will return null.\n */\n private getCachedIsNodeAffectedByConstraintResult(nodeId: string, constraintId: string): boolean {\n return this.isNodeAffectedByConstraintResult[nodeId + '-' + constraintId];\n }\n\n /**\n * Remember the result for whether the node is affected by the constraint\n * @param nodeId the node id\n * @param constraintId the constraint id\n * @param whether the node is affected by the constraint\n */\n private cacheIsNodeAffectedByConstraintResult(\n nodeId: string,\n constraintId: string,\n result: boolean\n ): void {\n this.isNodeAffectedByConstraintResult[nodeId + '-' + constraintId] = result;\n }\n\n /**\n * Order the constraints so that they show up in the same order as in the project.\n * @param constraints An array of constraint objects\n * @return An array of ordered constraints\n */\n orderConstraints(constraints: any[]): any[] {\n const orderedNodeIds = this.projectService.getFlattenedProjectAsNodeIds();\n return constraints.sort(this.constraintsComparatorGenerator(orderedNodeIds));\n }\n\n /**\n * Create the constraints comparator function that is used for sorting an array of constraint\n * objects.\n * @param orderedNodeIds An array of node ids in the order in which they show up in the project.\n * @return A comparator that orders constraint objects in the order in which the target ids show\n * up in the project.\n */\n private constraintsComparatorGenerator(orderedNodeIds: string[]): any {\n return function (constraintA: any, constraintB: any) {\n const constraintAIndex = orderedNodeIds.indexOf(constraintA.targetId);\n const constraintBIndex = orderedNodeIds.indexOf(constraintB.targetId);\n return constraintAIndex - constraintBIndex;\n };\n }\n\n clearActiveConstraints(): void {\n this.activeConstraints = [];\n this.constraintsUpdatedSource.next();\n }\n\n hasActiveConstraints(): boolean {\n return this.activeConstraints.length > 0;\n }\n\n getConstraintDescriptions(nodeId: string): string {\n let constraintDescriptions = '';\n const constraints = this.projectService.getNode(nodeId).getConstraints();\n for (let c = 0; c < constraints.length; c++) {\n const constraint = constraints[c];\n const description = this.getConstraintDescription(constraint);\n constraintDescriptions += c + 1 + ' - ' + description + '\\n';\n }\n return constraintDescriptions;\n }\n\n /**\n * Get the human readable description of the constraint.\n * @param constraint The constraint object.\n * @returns A human readable text string that describes the constraint.\n * example\n * 'All steps after this one will not be visitable until the student completes\n * \"3.7 Revise Your Bowls Explanation\"'\n */\n private getConstraintDescription(constraint: any): string {\n let message = '';\n for (const singleRemovalCriteria of constraint.removalCriteria) {\n if (message != '') {\n // this constraint has multiple removal criteria\n if (constraint.removalConditional === 'any') {\n message += ' or ';\n } else if (constraint.removalConditional === 'all') {\n message += ' and ';\n }\n }\n message += this.getCriteriaMessage(singleRemovalCriteria);\n }\n return this.getActionMessage(constraint.action) + message;\n }\n\n /**\n * Get the message that describes how to satisfy the criteria\n * TODO: check if the criteria is satisfied\n * @param criteria the criteria object that needs to be satisfied\n * @returns the message to display to the student that describes how to\n * satisfy the criteria\n */\n getCriteriaMessage(criteria: any): string {\n let message = '';\n const name = criteria.name;\n const params = criteria.params;\n\n if (name === 'isCompleted') {\n const nodeId = params.nodeId;\n if (nodeId != null) {\n const nodeTitle = this.projectService.getNodePositionAndTitle(nodeId);\n message += $localize`Complete ${nodeTitle}`;\n }\n } else if (name === 'isVisited') {\n const nodeId = params.nodeId;\n if (nodeId != null) {\n const nodeTitle = this.projectService.getNodePositionAndTitle(nodeId);\n message += $localize`Visit ${nodeTitle}`;\n }\n } else if (name === 'isCorrect') {\n const nodeId = params.nodeId;\n if (nodeId != null) {\n const nodeTitle = this.projectService.getNodePositionAndTitle(nodeId);\n message += $localize`Correctly answer ${nodeTitle}`;\n }\n } else if (name === 'score') {\n const nodeId = params.nodeId;\n let nodeTitle = '';\n let scoresString = '';\n\n if (nodeId != null) {\n nodeTitle = this.projectService.getNodePositionAndTitle(nodeId);\n }\n\n const scores = params.scores;\n if (scores != null) {\n scoresString = scores.join(', ');\n }\n message += $localize`Obtain a score of ${scoresString} on ${nodeTitle}`;\n } else if (name === 'choiceChosen') {\n const nodeId = params.nodeId;\n const componentId = params.componentId;\n const choiceIds = params.choiceIds;\n let nodeTitle = this.projectService.getNodePositionAndTitle(nodeId);\n let choices = this.projectService.getChoiceText(nodeId, componentId, choiceIds);\n let choiceText = choices.join(', ');\n message += $localize`You must choose \"${choiceText}\" on \"${nodeTitle}\"`;\n } else if (name === 'usedXSubmits') {\n const nodeId = params.nodeId;\n let nodeTitle = '';\n\n const requiredSubmitCount = params.requiredSubmitCount;\n\n if (nodeId != null) {\n nodeTitle = this.projectService.getNodePositionAndTitle(nodeId);\n }\n\n if (requiredSubmitCount == 1) {\n message += $localize`Submit ${requiredSubmitCount} time on ${nodeTitle}`;\n } else {\n message += $localize`Submit ${requiredSubmitCount} times on ${nodeTitle}`;\n }\n } else if (name === 'branchPathTaken') {\n const fromNodeId = params.fromNodeId;\n const fromNodeTitle = this.projectService.getNodePositionAndTitle(fromNodeId);\n const toNodeId = params.toNodeId;\n const toNodeTitle = this.projectService.getNodePositionAndTitle(toNodeId);\n message += $localize`Take the branch path from ${fromNodeTitle} to ${toNodeTitle}`;\n } else if (name === 'wroteXNumberOfWords') {\n const nodeId = params.nodeId;\n if (nodeId != null) {\n const requiredNumberOfWords = params.requiredNumberOfWords;\n const nodeTitle = this.projectService.getNodePositionAndTitle(nodeId);\n message += $localize`Write ${requiredNumberOfWords} words on ${nodeTitle}`;\n }\n } else if (name === 'isVisible') {\n const nodeId = params.nodeId;\n if (nodeId != null) {\n const nodeTitle = this.projectService.getNodePositionAndTitle(nodeId);\n message += $localize`\"${nodeTitle}\" is visible`;\n }\n } else if (name === 'isVisitable') {\n const nodeId = params.nodeId;\n if (nodeId != null) {\n const nodeTitle = this.projectService.getNodePositionAndTitle(nodeId);\n message += $localize`\"${nodeTitle}\" is visitable`;\n }\n } else if (name === 'addXNumberOfNotesOnThisStep') {\n const nodeId = params.nodeId;\n const requiredNumberOfNotes = params.requiredNumberOfNotes;\n const nodeTitle = this.projectService.getNodePositionAndTitle(nodeId);\n if (requiredNumberOfNotes == 1) {\n message += $localize`Add ${requiredNumberOfNotes} note on ${nodeTitle}`;\n } else {\n message += $localize`Add ${requiredNumberOfNotes} notes on ${nodeTitle}`;\n }\n } else if (name === 'fillXNumberOfRows') {\n const requiredNumberOfFilledRows = params.requiredNumberOfFilledRows;\n const nodeId = params.nodeId;\n const nodeTitle = this.projectService.getNodePositionAndTitle(nodeId);\n if (requiredNumberOfFilledRows == 1) {\n message += $localize`You must fill in ${requiredNumberOfFilledRows} row in the Table on ${nodeTitle}`;\n } else {\n message += $localize`You must fill in ${requiredNumberOfFilledRows} rows in the Table on ${nodeTitle}`;\n }\n } else if (name === 'teacherRemoval') {\n message += $localize`Wait for your teacher to unlock the item`;\n }\n return message;\n }\n\n /**\n * Get the constraint action as human readable text.\n * @param action A constraint action.\n * @return A human readable text string that describes the action\n * example\n * 'All steps after this one will not be visitable until '\n */\n private getActionMessage(action: string): string {\n if (action === 'makeAllNodesAfterThisNotVisitable') {\n return $localize`All steps after this one will not be visitable until `;\n }\n if (action === 'makeAllNodesAfterThisNotVisible') {\n return $localize`All steps after this one will not be visible until `;\n }\n if (action === 'makeAllOtherNodesNotVisitable') {\n return $localize`All other steps will not be visitable until `;\n }\n if (action === 'makeAllOtherNodesNotVisible') {\n return $localize`All other steps will not be visible until `;\n }\n if (action === 'makeThisNodeNotVisitable') {\n return $localize`This step will not be visitable until `;\n }\n if (action === 'makeThisNodeNotVisible') {\n return $localize`This step will not be visible until `;\n }\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "completionService", + "type": "CompletionService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentServiceLookupService", + "type": "ComponentServiceLookupService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "notebookService", + "type": "NotebookService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "tagService", + "type": "TagService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 57, + "jsdoctags": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "completionService", + "type": "CompletionService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentServiceLookupService", + "type": "ComponentServiceLookupService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "notebookService", + "type": "NotebookService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "tagService", + "type": "TagService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "type": "injectable" + }, + { + "name": "CopyNodesService", + "id": "injectable-CopyNodesService-3f0596d477461eb0b06ca659d3bc4fd88cf6a273dfc3bed1980662165edb64a5c83d54315b55d841c2b8724f67b4aa59a747b870668e7499d2b447d16247256c", + "file": "src/assets/wise5/services/copyNodesService.ts", + "properties": [], + "methods": [ + { + "name": "copyNode", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 55, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCopy the node with the specified nodeId\n", + "description": "

Copy the node with the specified nodeId

\n", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": { + "pos": 1748, + "end": 1754, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 1742, + "end": 1747, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id to copy

\n" + }, + { + "tagName": { + "pos": 1781, + "end": 1787, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

copied node

\n" + } + ] + }, + { + "name": "copyNodeInside", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "groupId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 20, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCopy node and put it inside a specified group as first step\n", + "description": "

Copy node and put it inside a specified group as first step

\n", + "jsdoctags": [ + { + "name": { + "pos": 538, + "end": 544, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 532, + "end": 537, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id to copy

\n" + }, + { + "name": { + "pos": 577, + "end": 584, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "groupId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 571, + "end": 576, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the group to insert the copied node as first step

\n" + } + ] + }, + { + "name": "copyNodes", + "args": [ + { + "name": "nodes", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "fromProjectId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "toProjectId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet a copy of nodes from the fromProject. This will copy the asset files\nand change file names if necessary. If an asset file with the same\nname exists in both projects we will check if their content is the\nsame. If the content is the same we don't need to copy the file. If\nthe content is different, we need to make a copy of the file with a\nnew name and change all the references in the steps to use the new\nname.\n", + "description": "

Get a copy of nodes from the fromProject. This will copy the asset files\nand change file names if necessary. If an asset file with the same\nname exists in both projects we will check if their content is the\nsame. If the content is the same we don't need to copy the file. If\nthe content is different, we need to make a copy of the file with a\nnew name and change all the references in the steps to use the new\nname.

\n", + "jsdoctags": [ + { + "name": { + "pos": 2776, + "end": 2781, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodes" + }, + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2770, + "end": 2775, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the nodes to import

\n" + }, + { + "name": { + "pos": 2814, + "end": 2827, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "fromProjectId" + }, + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2808, + "end": 2813, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

copy the nodes from this project

\n" + }, + { + "name": { + "pos": 2873, + "end": 2884, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "toProjectId" + }, + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2867, + "end": 2872, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

copy the nodes into this project

\n" + }, + { + "tagName": { + "pos": 2924, + "end": 2931, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

an observable with an array of copied nodes

\n" + } + ] + }, + { + "name": "copyNodesAfter", + "args": [ + { + "name": "nodeIds", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeIdAfter", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 32, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCopy nodes and put them after a certain node id\n", + "description": "

Copy nodes and put them after a certain node id

\n", + "jsdoctags": [ + { + "name": { + "pos": 937, + "end": 944, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeIds" + }, + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 931, + "end": 936, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node ids to copy

\n" + }, + { + "name": { + "pos": 978, + "end": 989, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeIdAfter" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 972, + "end": 977, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id we will put the copied nodes after

\n" + } + ] + }, + { + "name": "copyNodesInsideGroup", + "args": [ + { + "name": "nodeIds", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "groupNodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 44, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeIds", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "groupNodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { ConfigService } from './configService';\nimport { TeacherProjectService } from './teacherProjectService';\nimport { copy } from '../common/object/object';\n\n@Injectable()\nexport class CopyNodesService {\n constructor(\n protected http: HttpClient,\n protected configService: ConfigService,\n protected projectService: TeacherProjectService\n ) {}\n\n /**\n * Copy node and put it inside a specified group as first step\n * @param nodeId the node id to copy\n * @param groupId the group to insert the copied node as first step\n */\n copyNodeInside(nodeId: string, groupId: string): any {\n const newNode = this.copyNode(nodeId);\n this.projectService.createNodeInside(newNode, groupId);\n this.projectService.parseProject();\n return newNode;\n }\n\n /**\n * Copy nodes and put them after a certain node id\n * @param nodeIds the node ids to copy\n * @param nodeIdAfter the node id we will put the copied nodes after\n */\n copyNodesAfter(nodeIds: string[], nodeIdAfter: string): any[] {\n const newNodes = [];\n for (const nodeId of nodeIds) {\n const newNode = this.copyNode(nodeId);\n this.projectService.createNodeAfter(newNode, nodeIdAfter);\n nodeIdAfter = newNode.id;\n this.projectService.parseProject();\n newNodes.push(newNode);\n }\n return newNodes;\n }\n\n copyNodesInsideGroup(nodeIds: string[], groupNodeId: string): any[] {\n const firstNode: any = this.copyNodeInside(nodeIds[0], groupNodeId);\n const otherNodes = this.copyNodesAfter(nodeIds.slice(1), firstNode.id);\n return [firstNode].concat(otherNodes);\n }\n\n /**\n * Copy the node with the specified nodeId\n * @param nodeId the node id to copy\n * @return copied node\n */\n private copyNode(nodeId: string): any {\n const node = copy(this.projectService.getNodeById(nodeId));\n node.id = this.projectService.getNextAvailableNodeId();\n node.transitionLogic = {};\n node.constraints = [];\n\n const newComponentIds = [];\n for (const component of node.components) {\n const newComponentId = this.projectService.getUnusedComponentId(newComponentIds);\n newComponentIds.push(newComponentId);\n component.id = newComponentId;\n }\n return node;\n }\n\n /**\n * Get a copy of nodes from the fromProject. This will copy the asset files\n * and change file names if necessary. If an asset file with the same\n * name exists in both projects we will check if their content is the\n * same. If the content is the same we don't need to copy the file. If\n * the content is different, we need to make a copy of the file with a\n * new name and change all the references in the steps to use the new\n * name.\n * @param nodes the nodes to import\n * @param fromProjectId copy the nodes from this project\n * @param toProjectId copy the nodes into this project\n * @returns an observable with an array of copied nodes\n */\n copyNodes(nodes: any[], fromProjectId: number, toProjectId: number) {\n return this.http.post(this.configService.getConfigParam('importStepsURL'), {\n steps: JSON.stringify(nodes),\n fromProjectId: fromProjectId,\n toProjectId: toProjectId\n });\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 8, + "jsdoctags": [ + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "type": "injectable" + }, + { + "name": "CopyProjectService", + "id": "injectable-CopyProjectService-d5b7019157c9f66838ce134aff30c8b3f3a139b06d0f9f5a4c4044b225866fea1688cbd69f53cad794f6f659f1e3831e1f44c8cd059573048f1dbb71c41efb57", + "file": "src/assets/wise5/services/copyProjectService.ts", + "properties": [], + "methods": [ + { + "name": "copyProject", + "args": [ + { + "name": "projectId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 10, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "projectId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { ConfigService } from './configService';\n\n@Injectable()\nexport class CopyProjectService {\n constructor(protected http: HttpClient, protected ConfigService: ConfigService) {}\n\n copyProject(projectId: number): Observable {\n return this.http.post(\n `${this.ConfigService.getConfigParam('copyProjectURL')}/${projectId}`,\n null\n );\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ConfigService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 7, + "jsdoctags": [ + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "ConfigService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "type": "injectable" + }, + { + "name": "CopyTranslationsService", + "id": "injectable-CopyTranslationsService-2b1ff7660544b5c35ab95a60cc1338d30e1087dc17a2a7584dc225336be2d86190836b10ea18140f28620d71b3c82f474b3cfa09285a55cfa3369c686af9e4f6", + "file": "src/assets/wise5/services/copyTranslationsService.ts", + "properties": [], + "methods": [ + { + "name": "copyComponents", + "args": [ + { + "name": "node", + "type": "Node", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentIds", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 49, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123, + 134 + ], + "jsdoctags": [ + { + "name": "node", + "type": "Node", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentIds", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "copyNodes", + "args": [ + { + "name": "nodes", + "type": "Node[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 21, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123, + 134 + ], + "jsdoctags": [ + { + "name": "nodes", + "type": "Node[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getI18NKey", + "args": [ + { + "name": "componentElement", + "type": "object", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "key", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "I18NReplaceKey", + "typeParameters": [], + "line": 57, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "componentElement", + "type": "object", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "key", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditTranslationsService" + } + }, + { + "name": "getSaveTranslationRequests", + "args": [ + { + "name": "i18nKeys", + "type": "I18NReplaceKey[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 29, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123, + 134 + ], + "jsdoctags": [ + { + "name": "i18nKeys", + "type": "I18NReplaceKey[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "tryCopyComponents", + "args": [ + { + "name": "node", + "type": "Node", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "components", + "type": "ComponentContent[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 40, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "node", + "type": "Node", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "components", + "type": "ComponentContent[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "tryCopyNodes", + "args": [ + { + "name": "nodes", + "type": "Node[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 15, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodes", + "type": "Node[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "fetchAllTranslations", + "args": [], + "optional": false, + "returnType": "Promise>", + "typeParameters": [], + "line": 20, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124, + 134 + ], + "inheritance": { + "file": "EditTranslationsService" + } + }, + { + "name": "getI18NKeys", + "args": [ + { + "name": "componentElement", + "type": "object", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 36, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "componentElement", + "type": "object", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditTranslationsService" + } + }, + { + "name": "getSaveTranslationRequest", + "args": [ + { + "name": "translations", + "type": "Translations", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "language", + "type": "Language", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 54, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "translations", + "type": "Translations", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "language", + "type": "Language", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditTranslationsService" + } + }, + { + "name": "fetchTranslations", + "args": [ + { + "name": "locale", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 16, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "locale", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectTranslationService" + } + }, + { + "name": "getTranslationMappingURL", + "args": [ + { + "name": "locale", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 24, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "locale", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectTranslationService" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Injectable } from '@angular/core';\nimport { EditTranslationsService } from './editProjectTranslationsService';\nimport { Node } from '../common/Node';\nimport { Observable, forkJoin } from 'rxjs';\nimport { generateRandomKey } from '../common/string/string';\nimport { ComponentContent } from '../common/ComponentContent';\n\ninterface I18NReplaceKey {\n new: string;\n original: string;\n}\n\n@Injectable()\nexport class CopyTranslationsService extends EditTranslationsService {\n tryCopyNodes(nodes: Node[]): void {\n if (this.projectService.getLocale().hasTranslations()) {\n this.copyNodes(nodes);\n }\n }\n\n private async copyNodes(nodes: Node[]): Promise {\n const i18nKeys = nodes.flatMap((node) =>\n node.components.flatMap((component) => this.getI18NKeys(component))\n );\n forkJoin(await this.getSaveTranslationRequests(i18nKeys)).subscribe();\n this.projectService.saveProject();\n }\n\n private async getSaveTranslationRequests(\n i18nKeys: I18NReplaceKey[]\n ): Promise[]> {\n const saveTranslationRequests: Observable[] = [];\n (await this.fetchAllTranslations()).forEach((translations, language) => {\n i18nKeys.forEach((i18nKey) => (translations[i18nKey.new] = translations[i18nKey.original]));\n saveTranslationRequests.push(this.getSaveTranslationRequest(translations, language));\n });\n return saveTranslationRequests;\n }\n\n tryCopyComponents(node: Node, components: ComponentContent[]): void {\n if (this.projectService.getLocale().hasTranslations()) {\n this.copyComponents(\n node,\n components.map((c) => c.id)\n );\n }\n }\n\n private async copyComponents(node: Node, componentIds: string[]): Promise {\n const i18nKeys = node.components\n .filter((component) => componentIds.includes(component.id))\n .flatMap((component) => this.getI18NKeys(component));\n forkJoin(await this.getSaveTranslationRequests(i18nKeys)).subscribe();\n this.projectService.saveProject();\n }\n\n protected getI18NKey(componentElement: object, key: string): I18NReplaceKey {\n const originalI18NKey = componentElement[key].id;\n const newI18NKey = generateRandomKey(30);\n componentElement[key].id = newI18NKey;\n return { original: originalI18NKey, new: newI18NKey };\n }\n}\n", + "extends": [ + "EditTranslationsService" + ], + "type": "injectable" + }, + { + "name": "CRaterPingService", + "id": "injectable-CRaterPingService-100a1be381b01de70ef037e648f7b77cafc285043836f873d3440df8b51c6e4240293b2f07daecbfe7f22d08e1867913f6381f4582ce768483990e579092a06c", + "file": "src/assets/wise5/services/cRaterPingService.ts", + "properties": [ + { + "name": "intervals", + "defaultValue": "new Map()", + "deprecated": false, + "deprecationMessage": "", + "type": "Map", + "indexKey": "", + "optional": false, + "description": "", + "line": 7, + "modifierKind": [ + 123 + ] + }, + { + "name": "pingUrl", + "defaultValue": "'/api/c-rater/ping'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 6, + "modifierKind": [ + 123 + ] + } + ], + "methods": [ + { + "name": "forBerkeley", + "args": [ + { + "name": "itemId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "itemId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "intervalsIncludesItem", + "args": [ + { + "name": "itemId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "itemId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "sendPing", + "args": [ + { + "name": "itemId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 30, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "itemId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "startPinging", + "args": [ + { + "name": "itemId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 11, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "itemId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "stopPinging", + "args": [ + { + "name": "itemId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 34, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "itemId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\n\n@Injectable()\nexport class CRaterPingService {\n private pingUrl = '/api/c-rater/ping';\n private intervals: Map = new Map();\n\n constructor(private http: HttpClient) {}\n\n startPinging(itemId: string): void {\n if (!this.intervalsIncludesItem(itemId) && this.forBerkeley(itemId)) {\n this.sendPing(itemId);\n // 295000 ms = 4min 55sec\n this.intervals.set(\n itemId,\n setInterval(() => this.sendPing(itemId), 295000)\n );\n }\n }\n\n private intervalsIncludesItem(itemId: string) {\n return [...this.intervals.keys()].includes(itemId);\n }\n\n private forBerkeley(itemId: string): boolean {\n return itemId.slice(0, 9) === 'berkeley_';\n }\n\n private sendPing(itemId): void {\n this.http.post(this.pingUrl, { itemId: itemId }).subscribe();\n }\n\n stopPinging(itemId: string): void {\n if (this.intervalsIncludesItem(itemId)) {\n clearInterval(this.intervals.get(itemId));\n this.intervals.delete(itemId);\n }\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 7, + "jsdoctags": [ + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "type": "injectable" + }, + { + "name": "CRaterService", + "id": "injectable-CRaterService-7e2b0e091ad58e9467829f9f34a1e42aa2631693fe2b5b08df56fe4ae5ad6bfd310b91b801e4c17d42002bf9e3e6b748d817a7c40ff7a39edb88987a5edd4adf", + "file": "src/assets/wise5/services/cRaterService.ts", + "properties": [], + "methods": [ + { + "name": "getCRaterFeedbackTextByScore", + "args": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "score", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 130, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the feedback text for the given score\n", + "description": "

Get the feedback text for the given score

\n", + "jsdoctags": [ + { + "name": { + "pos": 4340, + "end": 4349, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "component" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4334, + "end": 4339, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component content

\n" + }, + { + "name": { + "pos": 4384, + "end": 4389, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "score" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4378, + "end": 4383, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the score we want feedback for

\n" + }, + { + "tagName": { + "pos": 4427, + "end": 4434, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

the feedback text for the given score

\n" + } + ] + }, + { + "name": "getCRaterItemId", + "args": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 61, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getCRaterItemType", + "args": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 57, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getCRaterResponse", + "args": [ + { + "name": "responses", + "type": "RawCRaterResponse", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "submitCounter", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "CRaterResponse", + "typeParameters": [], + "line": 217, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "responses", + "type": "RawCRaterResponse", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "submitCounter", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getCRaterRubric", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "optional": true + } + ], + "optional": false, + "returnType": "CRaterRubric", + "typeParameters": [], + "line": 263, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "optional": true, + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getCRaterScoreOn", + "args": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 70, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nFind when we should perform the CRater scoring\n", + "description": "

Find when we should perform the CRater scoring

\n", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": { + "pos": 2344, + "end": 2353, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "component" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2338, + "end": 2343, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component content

\n" + }, + { + "tagName": { + "pos": 2382, + "end": 2389, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

when to perform the CRater scoring e.g. 'submit', 'save', 'change', 'exit'

\n" + } + ] + }, + { + "name": "getCRaterScoringRuleByScore", + "args": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "score", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 107, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the CRater scoring rule by score\n", + "description": "

Get the CRater scoring rule by score

\n", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": { + "pos": 3687, + "end": 3696, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "component" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3681, + "end": 3686, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component content

\n" + }, + { + "name": { + "pos": 3731, + "end": 3736, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "score" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3725, + "end": 3730, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the score

\n" + }, + { + "tagName": { + "pos": 3753, + "end": 3760, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

the scoring rule for the given score

\n" + } + ] + }, + { + "name": "getIdeas", + "args": [ + { + "name": "responses", + "type": "RawCRaterResponse", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "CRaterIdea[]", + "typeParameters": [], + "line": 254, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "responses", + "type": "RawCRaterResponse", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getMultipleAttemptCRaterFeedbackTextByScore", + "args": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "previousScore", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentScore", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 142, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the feedback text for the given previous score and current score\n", + "description": "

Get the feedback text for the given previous score and current score

\n", + "jsdoctags": [ + { + "name": { + "pos": 4784, + "end": 4793, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "component" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4778, + "end": 4783, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component content

\n" + }, + { + "name": { + "pos": 4828, + "end": 4841, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "previousScore" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4822, + "end": 4827, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the score from the last submit

\n" + }, + { + "name": { + "pos": 4885, + "end": 4897, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "currentScore" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4879, + "end": 4884, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the score from the current submit

\n" + }, + { + "tagName": { + "pos": 4938, + "end": 4945, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

the feedback text for the given previous score and current score

\n" + } + ] + }, + { + "name": "getMultipleAttemptCRaterScoringRuleByScore", + "args": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "previousScore", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentScore", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 166, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the multiple attempt CRater scoring rule by previous score and\ncurrent score\n", + "description": "

Get the multiple attempt CRater scoring rule by previous score and\ncurrent score

\n", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": { + "pos": 5488, + "end": 5497, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "component" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 5482, + "end": 5487, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component content

\n" + }, + { + "name": { + "pos": 5532, + "end": 5545, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "previousScore" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 5526, + "end": 5531, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the score from the last submit

\n" + }, + { + "name": { + "pos": 5589, + "end": 5601, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "currentScore" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 5583, + "end": 5588, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the score from the current submit

\n" + }, + { + "tagName": { + "pos": 5642, + "end": 5649, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

the scoring rule for the given previous score and current score

\n" + } + ] + }, + { + "name": "getScore", + "args": [ + { + "name": "responses", + "type": "RawCRaterResponse", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 233, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "responses", + "type": "RawCRaterResponse", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getScores", + "args": [ + { + "name": "responses", + "type": "RawCRaterResponse", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "CRaterScore[]", + "typeParameters": [], + "line": 237, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "responses", + "type": "RawCRaterResponse", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isCRaterEnabled", + "args": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 84, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isCRaterScoreOnEvent", + "args": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "event", + "type": "\"save\" | \"submit\" | \"change\"", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 96, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if the CRater is set to score on an event\n", + "description": "

Check if the CRater is set to score on an event

\n", + "jsdoctags": [ + { + "name": { + "pos": 3254, + "end": 3263, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "component" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3248, + "end": 3253, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component content

\n" + }, + { + "name": { + "pos": 3298, + "end": 3303, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "event" + }, + "type": "\"save\" | \"submit\" | \"change\"", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3292, + "end": 3297, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

trigger event, 'save', 'submit', or 'change'

\n" + }, + { + "tagName": { + "pos": 3355, + "end": 3362, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

whether the CRater is set to score when the event is triggered

\n" + } + ] + }, + { + "name": "isSingleScore", + "args": [ + { + "name": "responses", + "type": "RawCRaterResponse", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 229, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "responses", + "type": "RawCRaterResponse", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "makeCRaterScoringRequest", + "args": [ + { + "name": "itemId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "responseId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "responseText", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 30, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nMake a CRater request to score student response\n", + "description": "

Make a CRater request to score student response

\n", + "jsdoctags": [ + { + "name": { + "pos": 977, + "end": 983, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "itemId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 971, + "end": 976, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

CRater item ID

\n" + }, + { + "name": { + "pos": 1011, + "end": 1021, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "responseId" + }, + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 1005, + "end": 1010, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

number used to keep track of this request

\n" + }, + { + "name": { + "pos": 1076, + "end": 1088, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "responseText" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 1070, + "end": 1075, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the student's response to CRater item

\n" + }, + { + "tagName": { + "pos": 1133, + "end": 1140, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

a promise that returns the result of the CRater request

\n" + } + ] + }, + { + "name": "makeCRaterVerifyRequest", + "args": [ + { + "name": "itemId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 211, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if the item id is a valid CRater item id.\n", + "description": "

Check if the item id is a valid CRater item id.

\n", + "jsdoctags": [ + { + "name": { + "pos": 7253, + "end": 7259, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "itemId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 7247, + "end": 7252, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

A string.

\n" + }, + { + "tagName": { + "pos": 7276, + "end": 7282, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

A promise that returns whether the item id is valid.

\n" + } + ] + }, + { + "name": "mockResponse", + "args": [ + { + "name": "responseText", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 46, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "responseText", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "'use strict';\n\nimport { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { ConfigService } from './configService';\nimport { Observable, of } from 'rxjs';\nimport { CRaterIdea } from '../components/common/cRater/CRaterIdea';\nimport { CRaterScore } from '../components/common/cRater/CRaterScore';\nimport { CRaterResponse } from '../components/common/cRater/CRaterResponse';\nimport { RawCRaterResponse } from '../components/common/cRater/RawCRaterResponse';\nimport { CRaterRubric } from '../components/common/cRater/CRaterRubric';\nimport { ProjectService } from './projectService';\nimport { OpenResponseContent } from '../components/openResponse/OpenResponseContent';\n\n@Injectable()\nexport class CRaterService {\n constructor(\n protected http: HttpClient,\n protected configService: ConfigService,\n private projectService: ProjectService\n ) {}\n\n /**\n * Make a CRater request to score student response\n * @param itemId CRater item ID\n * @param responseId number used to keep track of this request\n * @param responseText the student's response to CRater item\n * @returns a promise that returns the result of the CRater request\n */\n makeCRaterScoringRequest(\n itemId: string,\n responseId: number,\n responseText: string\n ): Observable {\n if (itemId === 'MOCK') {\n return this.mockResponse(responseText);\n } else {\n return this.http.post(`${this.configService.getCRaterRequestURL()}/score`, {\n itemId: itemId,\n responseId: responseId,\n responseText: responseText\n });\n }\n }\n\n private mockResponse(responseText: string): Observable {\n const ideasFound = responseText.match(/idea([a-zA-Z0-9]+)/g) ?? [];\n const isNonScorable = responseText.includes('isNonScorable') ? 1 : 0;\n return of({\n scores: [{ id: 'nonscorable', score: isNonScorable }],\n ideas: ideasFound.map((idea) => {\n return { name: idea, detected: true, characterOffsets: [] };\n })\n });\n }\n\n private getCRaterItemType(component: any): string {\n return component.cRater != null ? component.cRater.itemType : null;\n }\n\n getCRaterItemId(component: any): string {\n return component.cRater != null ? component.cRater.itemId : null;\n }\n\n /**\n * Find when we should perform the CRater scoring\n * @param component the component content\n * @returns when to perform the CRater scoring e.g. 'submit', 'save', 'change', 'exit'\n */\n private getCRaterScoreOn(component: any): string {\n /*\n * CRater can be enabled in two ways\n * 1. the enableCRater field is true\n * 2. there is no enableCRater field but there is a cRater object (this is for legacy purposes)\n */\n if (\n (component.enableCRater && component.cRater != null) ||\n (!component.hasOwnProperty('enableCRater') && component.cRater != null)\n ) {\n return component.cRater.scoreOn;\n }\n }\n\n isCRaterEnabled(component: any): boolean {\n const cRaterItemType = this.getCRaterItemType(component);\n const cRaterItemId = this.getCRaterItemId(component);\n return component.enableCRater && cRaterItemType != null && cRaterItemId != null;\n }\n\n /**\n * Check if the CRater is set to score on an event\n * @param component the component content\n * @param event trigger event, 'save', 'submit', or 'change'\n * @returns whether the CRater is set to score when the event is triggered\n */\n isCRaterScoreOnEvent(component: any, event: 'save' | 'submit' | 'change'): boolean {\n const scoreOn = this.getCRaterScoreOn(component);\n return scoreOn != null && scoreOn === event;\n }\n\n /**\n * Get the CRater scoring rule by score\n * @param component the component content\n * @param score the score\n * @returns the scoring rule for the given score\n */\n private getCRaterScoringRuleByScore(component: any, score: any): any {\n const cRater = component.cRater;\n if (cRater != null) {\n const scoringRules = cRater.scoringRules;\n if (scoringRules != null) {\n for (let tempScoringRule of scoringRules) {\n if (tempScoringRule != null) {\n if (tempScoringRule.score == score) {\n return tempScoringRule;\n }\n }\n }\n }\n }\n return null;\n }\n\n /**\n * Get the feedback text for the given score\n * @param component the component content\n * @param score the score we want feedback for\n * @returns the feedback text for the given score\n */\n getCRaterFeedbackTextByScore(component: any, score: any): any {\n const scoringRule = this.getCRaterScoringRuleByScore(component, score);\n return scoringRule != null ? scoringRule.feedbackText : null;\n }\n\n /**\n * Get the feedback text for the given previous score and current score\n * @param component the component content\n * @param previousScore the score from the last submit\n * @param currentScore the score from the current submit\n * @returns the feedback text for the given previous score and current score\n */\n getMultipleAttemptCRaterFeedbackTextByScore(\n component: any,\n previousScore: any,\n currentScore: any\n ): string {\n const scoringRule = this.getMultipleAttemptCRaterScoringRuleByScore(\n component,\n previousScore,\n currentScore\n );\n if (scoringRule != null) {\n return scoringRule.feedbackText;\n }\n return null;\n }\n\n /**\n * Get the multiple attempt CRater scoring rule by previous score and\n * current score\n * @param component the component content\n * @param previousScore the score from the last submit\n * @param currentScore the score from the current submit\n * @returns the scoring rule for the given previous score and current score\n */\n private getMultipleAttemptCRaterScoringRuleByScore(\n component: any,\n previousScore: any,\n currentScore: any\n ): any {\n if (previousScore != null && currentScore != null) {\n const cRater = component.cRater;\n if (cRater != null) {\n const multipleAttemptScoringRules = cRater.multipleAttemptScoringRules;\n if (multipleAttemptScoringRules != null) {\n for (let multipleAttemptScoringRule of multipleAttemptScoringRules) {\n if (multipleAttemptScoringRule != null) {\n const scoreSequence = multipleAttemptScoringRule.scoreSequence;\n if (scoreSequence != null) {\n /*\n * get the expected previous score and current score\n * that will satisfy the rule\n */\n const previousScoreMatch = scoreSequence[0];\n const currentScoreMatch = scoreSequence[1];\n\n if (\n previousScore.toString().match('[' + previousScoreMatch + ']') &&\n currentScore.toString().match('[' + currentScoreMatch + ']')\n ) {\n /*\n * the previous score and current score match the\n * expected scores so we have found the rule we want\n */\n return multipleAttemptScoringRule;\n }\n }\n }\n }\n }\n }\n }\n return null;\n }\n\n /**\n * Check if the item id is a valid CRater item id.\n * @param itemId A string.\n * @return A promise that returns whether the item id is valid.\n */\n makeCRaterVerifyRequest(itemId: string): Observable {\n return this.http.get(this.configService.getCRaterRequestURL() + '/verify', {\n params: new HttpParams().set('itemId', itemId)\n });\n }\n\n getCRaterResponse(responses: RawCRaterResponse, submitCounter: number): CRaterResponse {\n const cRaterResponse: CRaterResponse = new CRaterResponse();\n if (this.isSingleScore(responses)) {\n cRaterResponse.score = this.getScore(responses);\n } else {\n cRaterResponse.scores = this.getScores(responses);\n }\n cRaterResponse.ideas = this.getIdeas(responses);\n cRaterResponse.submitCounter = submitCounter;\n return cRaterResponse;\n }\n\n private isSingleScore(responses: RawCRaterResponse): boolean {\n return responses.scores != null;\n }\n\n private getScore(responses: RawCRaterResponse): number {\n return parseInt(responses.scores.raw_trim_round);\n }\n\n private getScores(responses: RawCRaterResponse): CRaterScore[] {\n const scores = [];\n for (const key in responses.trait_scores) {\n const value = responses.trait_scores[key];\n scores.push(\n new CRaterScore(\n key,\n parseInt(value.raw_trim_round),\n parseFloat(value.raw),\n parseInt(value.score_range_min),\n parseInt(value.score_range_max)\n )\n );\n }\n return scores;\n }\n\n private getIdeas(responses: RawCRaterResponse): CRaterIdea[] {\n const ideas = [];\n for (const key in responses.feedback?.ideas) {\n const value = responses.feedback.ideas[key];\n ideas.push(new CRaterIdea(key, value.detected));\n }\n return ideas;\n }\n\n getCRaterRubric(nodeId: string, componentId: string, componentType?: string): CRaterRubric {\n const componentContent = this.projectService.getComponent(nodeId, componentId);\n let rubricContent;\n if (componentType === 'OpenResponse') {\n rubricContent = (componentContent as OpenResponseContent).cRater?.rubric;\n } else {\n rubricContent = componentContent.cRaterRubric;\n }\n return new CRaterRubric(rubricContent);\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 16, + "jsdoctags": [ + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "type": "injectable" + }, + { + "name": "CreateBranchService", + "id": "injectable-CreateBranchService-332fd19dd305e7353220b4cee638610a4bd97c797bbf5264a98bef705b4b085044bedadf9e9aed5244ef1de7f3c114480454a3a731b099e5ec78f09a42b18153", + "file": "src/assets/wise5/services/createBranchService.ts", + "properties": [], + "methods": [ + { + "name": "addNewNodeIdsToParentGroup", + "args": [ + { + "name": "branchStepId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "newNodeIds", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 61, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "branchStepId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "newNodeIds", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createBranch", + "args": [ + { + "name": "params", + "type": "AuthorBranchParams", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 13, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "params", + "type": "AuthorBranchParams", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createMergeStep", + "args": [ + { + "name": "newNodeIds", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeIdBranchNodeTransitionsTo", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 49, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "newNodeIds", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeIdBranchNodeTransitionsTo", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createNewNodeIds", + "args": [ + { + "name": "pathCount", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string[]", + "typeParameters": [], + "line": 35, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "pathCount", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createPathSteps", + "args": [ + { + "name": "params", + "type": "AuthorBranchParams", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "branchNode", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "newNodeIds", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 43, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "params", + "type": "AuthorBranchParams", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "branchNode", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "newNodeIds", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addTransitionFromBranchNodeToPathNode", + "args": [ + { + "name": "params", + "type": "AuthorBranchParams", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "branchNode", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "newNode", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "pathIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 47, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "params", + "type": "AuthorBranchParams", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "branchNode", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "newNode", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "pathIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AuthorBranchService" + } + }, + { + "name": "createPathStep", + "args": [ + { + "name": "params", + "type": "AuthorBranchParams", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "branchNode", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "pathIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 17, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "params", + "type": "AuthorBranchParams", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "branchNode", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "pathIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AuthorBranchService" + } + }, + { + "name": "setBranchNodeTransitionLogic", + "args": [ + { + "name": "branchNode", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "criteria", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 40, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "branchNode", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "criteria", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AuthorBranchService" + } + }, + { + "name": "setPathStepTransitions", + "args": [ + { + "name": "newNodeIds", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "mergeStepId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 32, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "newNodeIds", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "mergeStepId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AuthorBranchService" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Injectable } from '@angular/core';\nimport { TeacherProjectService } from './teacherProjectService';\nimport { AuthorBranchParams } from '../common/AuthorBranchParams';\nimport { Transition } from '../common/Transition';\nimport { AuthorBranchService } from './authorBranchService';\n\n@Injectable()\nexport class CreateBranchService extends AuthorBranchService {\n constructor(protected projectService: TeacherProjectService) {\n super(projectService);\n }\n\n createBranch(params: AuthorBranchParams): Promise {\n const branchNode = this.projectService.getNode(params.branchStepId);\n const nodeIdBranchNodeTransitionsTo =\n branchNode.transitionLogic.transitions.length > 0\n ? branchNode.transitionLogic.transitions[0].to\n : '';\n branchNode.transitionLogic.transitions = [];\n const newNodeIds = this.createNewNodeIds(params.pathCount);\n this.createPathSteps(params, branchNode, newNodeIds);\n const mergeStep: any =\n params.mergeStepId === ''\n ? this.createMergeStep(newNodeIds, nodeIdBranchNodeTransitionsTo)\n : this.projectService.getNode(params.mergeStepId);\n this.setPathStepTransitions(newNodeIds, mergeStep.id);\n this.setBranchNodeTransitionLogic(branchNode, params.criteria);\n if (params.mergeStepId === '') {\n newNodeIds.push(mergeStep.id);\n }\n this.addNewNodeIdsToParentGroup(params.branchStepId, newNodeIds);\n return this.projectService.saveProject();\n }\n\n private createNewNodeIds(pathCount: number): string[] {\n const newNodeIds = [];\n for (let i = 0; i < pathCount; i++) {\n newNodeIds.push(this.projectService.getNextAvailableNodeId(newNodeIds));\n }\n return newNodeIds;\n }\n\n private createPathSteps(params: AuthorBranchParams, branchNode: any, newNodeIds: string[]): void {\n for (let i = 0; i < newNodeIds.length; i++) {\n this.createPathStep(params, branchNode, newNodeIds[i], i);\n }\n }\n\n private createMergeStep(newNodeIds: string[], nodeIdBranchNodeTransitionsTo: string): any {\n const mergeStepNode = this.projectService.createNode($localize`Merge Step`);\n mergeStepNode.id = this.projectService.getNextAvailableNodeId(newNodeIds);\n if (nodeIdBranchNodeTransitionsTo !== '') {\n mergeStepNode.transitionLogic.transitions = [new Transition(nodeIdBranchNodeTransitionsTo)];\n }\n this.projectService.addNode(mergeStepNode);\n this.projectService.addApplicationNode(mergeStepNode);\n this.projectService.setIdToNode(mergeStepNode.id, mergeStepNode);\n return mergeStepNode;\n }\n\n private addNewNodeIdsToParentGroup(branchStepId: string, newNodeIds: string[]): void {\n const parentGroup = this.projectService.getParentGroup(branchStepId);\n parentGroup.ids.splice(parentGroup.ids.indexOf(branchStepId) + 1, 0, ...newNodeIds);\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 8, + "jsdoctags": [ + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "AuthorBranchService" + ], + "type": "injectable" + }, + { + "name": "CreateComponentService", + "id": "injectable-CreateComponentService-4a93432aa396624b7efdd6a91ee4eaa8259d3fe120e23b1251a2bb81885822966de6edfe9b91fb72cdc0f71b39a2bffb8a2abf94b2f48d6c756687c556d3d773", + "file": "src/assets/wise5/services/createComponentService.ts", + "properties": [], + "methods": [ + { + "name": "addComponentToNode", + "args": [ + { + "name": "node", + "type": "Node", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "insertAfterComponentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 38, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "node", + "type": "Node", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "insertAfterComponentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "create", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "insertAfterComponentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 21, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCreate a new component\ncomponent id. If this argument is null, we will place the new component\nin the first position.\n", + "description": "

Create a new component\ncomponent id. If this argument is null, we will place the new component\nin the first position.

\n", + "jsdoctags": [ + { + "name": { + "pos": 475, + "end": 481, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 469, + "end": 474, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id to create the component in

\n" + }, + { + "name": { + "pos": 533, + "end": 546, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentType" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 527, + "end": 532, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component type

\n" + }, + { + "name": { + "pos": 578, + "end": 600, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "insertAfterComponentId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "pos": 572, + "end": 577, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

Insert the new component after the given\ncomponent id. If this argument is null, we will place the new component\nin the first position.

\n" + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Injectable } from '@angular/core';\nimport { TeacherProjectService } from './teacherProjectService';\nimport { ComponentServiceLookupService } from './componentServiceLookupService';\nimport { Node } from '../common/Node';\n\n@Injectable()\nexport class CreateComponentService {\n constructor(\n private componentServiceLookupService: ComponentServiceLookupService,\n private projectService: TeacherProjectService\n ) {}\n\n /**\n * Create a new component\n * @param nodeId the node id to create the component in\n * @param componentType the component type\n * @param insertAfterComponentId Insert the new component after the given\n * component id. If this argument is null, we will place the new component\n * in the first position.\n */\n create(nodeId: string, componentType: string, insertAfterComponentId: string = null): any {\n const node = this.projectService.getNode(nodeId);\n const service = this.componentServiceLookupService.getService(componentType);\n const component = service.createComponent();\n if (service.componentHasWork(component)) {\n if (node.showSaveButton == false) {\n if (this.projectService.doesAnyComponentInNodeShowSubmitButton(node.id)) {\n component.showSaveButton = true;\n } else {\n node.showSaveButton = true;\n }\n }\n }\n this.addComponentToNode(node, component, insertAfterComponentId);\n return component;\n }\n\n private addComponentToNode(node: Node, component: any, insertAfterComponentId: string): void {\n const insertPosition =\n insertAfterComponentId == null\n ? 0\n : node.components.findIndex((c) => c.id === insertAfterComponentId) + 1;\n node.components.splice(insertPosition, 0, component);\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "componentServiceLookupService", + "type": "ComponentServiceLookupService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 7, + "jsdoctags": [ + { + "name": "componentServiceLookupService", + "type": "ComponentServiceLookupService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "type": "injectable" + }, + { + "name": "DataExportService", + "id": "injectable-DataExportService-3c74c0ca6a3518b5ccf697a4a80f6ca6cfe60032c29290e748a8c8e6774dfb5fecae541ce27897df82e05f7464c67af2b938a4256757a2d1ff5b7833ceda2c2b", + "file": "src/assets/wise5/services/dataExportService.ts", + "properties": [], + "methods": [ + { + "name": "createHttpParams", + "args": [ + { + "name": "includeStudentWork", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "includeEvents", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "includeAnnotations", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "HttpParams", + "typeParameters": [], + "line": 89, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "includeStudentWork", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "includeEvents", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "includeAnnotations", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getExportURL", + "args": [ + { + "name": "runId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "exportType", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 101, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "runId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "exportType", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getStudentEvents", + "args": [ + { + "name": "events", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 50, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "events", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getTeacherEvents", + "args": [ + { + "name": "events", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 56, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "events", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isStudentEvent", + "args": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 62, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isTeacherEvent", + "args": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 66, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "retrieveEventsExport", + "args": [ + { + "name": "includeStudentEvents", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "includeTeacherEvents", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "includeNames", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 32, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "includeStudentEvents", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "includeTeacherEvents", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "includeNames", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "retrieveNotebookExport", + "args": [ + { + "name": "exportType", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 73, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "exportType", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "retrieveNotificationsExport", + "args": [], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 78, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "retrieveStudentAssetsExport", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 82, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "retrieveStudentData", + "args": [ + { + "name": "selectedNodes", + "type": "[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]" + }, + { + "name": "includeStudentWork", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "includeEvents", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "includeAnnotations", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 16, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "selectedNodes", + "type": "[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]", + "tagName": { + "text": "param" + } + }, + { + "name": "includeStudentWork", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "includeEvents", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "includeAnnotations", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { HttpClient, HttpParams } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { ConfigService } from './configService';\nimport { TeacherDataService } from './teacherDataService';\nimport { compressToEncodedURIComponent } from 'lz-string';\nimport { Observable, tap } from 'rxjs';\n\n@Injectable()\nexport class DataExportService {\n constructor(\n private configService: ConfigService,\n private http: HttpClient,\n private dataService: TeacherDataService\n ) {}\n\n retrieveStudentData(\n selectedNodes = [],\n includeStudentWork: boolean,\n includeEvents: boolean,\n includeAnnotations: boolean\n ): Observable {\n let params = this.createHttpParams(includeStudentWork, includeEvents, includeAnnotations);\n if (selectedNodes.length > 0) {\n params = params.set(\n 'components',\n compressToEncodedURIComponent(JSON.stringify(selectedNodes))\n );\n }\n return this.dataService.retrieveStudentData(params);\n }\n\n retrieveEventsExport(\n includeStudentEvents: boolean,\n includeTeacherEvents: boolean,\n includeNames: boolean\n ): Observable {\n const params = new HttpParams()\n .set('runId', this.configService.getRunId())\n .set('getStudentWork', 'false')\n .set('getAnnotations', 'false')\n .set('getEvents', 'false')\n .set('includeStudentEvents', includeStudentEvents + '')\n .set('includeTeacherEvents', includeTeacherEvents + '')\n .set('includeNames', includeNames + '');\n return this.http.get(this.configService.getConfigParam('runDataExportURL') + '/events', {\n params: params\n });\n }\n\n getStudentEvents(events: any[]): any[] {\n return events.filter((event: any) => {\n return this.isStudentEvent(event);\n });\n }\n\n getTeacherEvents(events: any[]): any[] {\n return events.filter((event: any) => {\n return this.isTeacherEvent(event);\n });\n }\n\n isStudentEvent(event: any): boolean {\n return !this.isTeacherEvent(event);\n }\n\n isTeacherEvent(event: any): boolean {\n return (\n this.configService.isTeacherWorkgroupId(event.workgroupId) ||\n this.configService.isTeacherUserId(event.userId)\n );\n }\n\n retrieveNotebookExport(exportType: string): Observable {\n const options = { params: new HttpParams().set('exportType', exportType) };\n return this.http.get(this.configService.getConfigParam('notebookURL'), options);\n }\n\n retrieveNotificationsExport(): Observable {\n return this.http.get(this.getExportURL(this.configService.getRunId(), 'notifications'));\n }\n\n retrieveStudentAssetsExport(): Promise {\n window.location.href = this.getExportURL(this.configService.getRunId(), 'studentAssets');\n return new Promise((resolve) => {\n resolve([]);\n });\n }\n\n private createHttpParams(\n includeStudentWork: boolean,\n includeEvents: boolean,\n includeAnnotations: boolean\n ): HttpParams {\n return new HttpParams()\n .set('runId', this.configService.getRunId())\n .set('getStudentWork', includeStudentWork)\n .set('getEvents', includeEvents)\n .set('getAnnotations', includeAnnotations);\n }\n\n getExportURL(runId: number, exportType: string): string {\n return this.configService.getConfigParam('runDataExportURL') + `/${runId}/${exportType}`;\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 9, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "type": "injectable" + }, + { + "name": "DataService", + "id": "injectable-DataService-88c6a7683c45a98ed454952594acfd4e72f6125ea0812b7fb4a217098bd3c39e9a0cf4437081fd65829f9a9ad575c4f5b2c474d45bd3f4ce70b191698e978c62", + "file": "src/app/services/data.service.ts", + "properties": [ + { + "name": "currentNode", + "defaultValue": "null", + "deprecated": false, + "deprecationMessage": "", + "type": "null", + "indexKey": "", + "optional": false, + "description": "", + "line": 7 + }, + { + "name": "currentNodeChanged$", + "defaultValue": "this.currentNodeChangedSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "modifierKind": [ + 125 + ] + }, + { + "name": "currentNodeChangedSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 9, + "modifierKind": [ + 123 + ] + }, + { + "name": "previousStep", + "defaultValue": "null", + "deprecated": false, + "deprecationMessage": "", + "type": "null", + "indexKey": "", + "optional": false, + "description": "", + "line": 8 + }, + { + "name": "studentWorkReceived$", + "defaultValue": "this.studentWorkReceivedSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "modifierKind": [ + 125 + ] + }, + { + "name": "studentWorkReceivedSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "modifierKind": [ + 123 + ] + } + ], + "methods": [ + { + "name": "broadcastStudentWorkReceived", + "args": [ + { + "name": "studentWork", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 53, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentWork", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getBranchPathTakenEventsByNodeId", + "args": [ + { + "name": "currentNodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 27, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "currentNodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getCurrentNode", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 16, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getCurrentNodeId", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 20, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "saveVLEEvent", + "args": [ + { + "name": "nodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentType", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "category", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "event", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "eventData", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 32, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentType", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "category", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "event", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "eventData", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setCurrentNode", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 39, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setCurrentNodeByNodeId", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 35, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { ProjectService } from '../../assets/wise5/services/projectService';\n\n@Injectable()\nexport abstract class DataService {\n currentNode = null;\n previousStep = null;\n private currentNodeChangedSource: Subject = new Subject();\n public currentNodeChanged$ = this.currentNodeChangedSource.asObservable();\n private studentWorkReceivedSource: Subject = new Subject();\n public studentWorkReceived$ = this.studentWorkReceivedSource.asObservable();\n\n constructor(protected projectService: ProjectService) {}\n\n getCurrentNode(): any {\n return this.currentNode;\n }\n\n getCurrentNodeId(): string {\n if (this.currentNode != null) {\n return this.currentNode.id;\n }\n return null;\n }\n\n getBranchPathTakenEventsByNodeId(currentNodeId): any[] {\n return [];\n }\n\n // refactor: this should be only in studentDataService\n saveVLEEvent(nodeId, componentId, componentType, category, event, eventData) {}\n\n // refactor: replace this with setCurrentNode()\n setCurrentNodeByNodeId(nodeId: string): void {\n this.setCurrentNode(this.projectService.getNodeById(nodeId));\n }\n\n setCurrentNode(node: any): void {\n const previousCurrentNode = this.currentNode;\n this.currentNode = node;\n if (previousCurrentNode !== node) {\n if (previousCurrentNode && !this.projectService.isGroupNode(previousCurrentNode.id)) {\n this.previousStep = previousCurrentNode;\n }\n this.currentNodeChangedSource.next({\n previousNode: previousCurrentNode,\n currentNode: this.currentNode\n });\n }\n }\n\n broadcastStudentWorkReceived(studentWork: any) {\n this.studentWorkReceivedSource.next(studentWork);\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 12, + "jsdoctags": [ + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "type": "injectable" + }, + { + "name": "DeleteBranchService", + "id": "injectable-DeleteBranchService-68a6a0b0531b5e995b86da0742bae1ceeacaadae76e870dcba2044739f77b1e42ac674d755cfd6bb694f3cac5157af90648532ee78047c67368e112a142749fc", + "file": "src/assets/wise5/services/deleteBranchService.ts", + "properties": [], + "methods": [ + { + "name": "deleteBranch", + "args": [ + { + "name": "branchPaths", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "targetId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 8, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "branchPaths", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "targetId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "deleteBranchPath", + "args": [ + { + "name": "branchPaths", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "branch", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "targetId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 35, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nRemove a branch path by removing all the branch path taken constraints\nfrom the steps in the branch path, resetting the transitions in the\nsteps in the branch path, and removing the transition corresponding to\nthe branch path in this branch point node.\n", + "description": "

Remove a branch path by removing all the branch path taken constraints\nfrom the steps in the branch path, resetting the transitions in the\nsteps in the branch path, and removing the transition corresponding to\nthe branch path in this branch point node.

\n", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "branchPaths", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": { + "pos": 1552, + "end": 1558, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "branch" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 1546, + "end": 1551, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the branch object

\n" + }, + { + "name": "targetId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "deleteBranchPathAndPlaceAfter", + "args": [ + { + "name": "branchPaths", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "branch", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "branchStepId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeIdToPlaceAfter", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeIdAfterMergeStep", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 50, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "branchPaths", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "branch", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "branchStepId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeIdToPlaceAfter", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeIdAfterMergeStep", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "removeBranchPathAndTransition", + "args": [ + { + "name": "branchPaths", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "branch", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "targetId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 74, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "branchPaths", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "branch", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "targetId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Injectable } from '@angular/core';\nimport { TeacherProjectService } from './teacherProjectService';\n\n@Injectable()\nexport class DeleteBranchService {\n constructor(private projectService: TeacherProjectService) {}\n\n deleteBranch(branchPaths: any[], targetId: string): void {\n for (let bp = 0; bp < branchPaths.length; bp++) {\n const branchPath = branchPaths[bp];\n this.deleteBranchPath(branchPaths, branchPath, targetId);\n bp--; // shift the counter back one because we have just removed a branch path\n }\n const nodeIdAfter = this.projectService.getNodeIdAfter(targetId);\n /*\n * update the transition of this step to point to the next step\n * in the project. this may be different than the next step\n * if it was still the branch point.\n */\n this.projectService.setTransition(targetId, nodeIdAfter);\n this.projectService.setTransitionLogicField(targetId, 'howToChooseAmongAvailablePaths', null);\n this.projectService.setTransitionLogicField(targetId, 'whenToChoosePath', null);\n this.projectService.setTransitionLogicField(targetId, 'canChangePath', null);\n this.projectService.setTransitionLogicField(targetId, 'maxPathsVisitable', null);\n this.projectService.calculateNodeNumbers();\n }\n\n /**\n * Remove a branch path by removing all the branch path taken constraints\n * from the steps in the branch path, resetting the transitions in the\n * steps in the branch path, and removing the transition corresponding to\n * the branch path in this branch point node.\n * @param branch the branch object\n */\n private deleteBranchPath(branchPaths: any[], branch: any, targetId: string): void {\n for (const nodeInBranchPath of branch.nodesInBranchPath) {\n const nodeId = nodeInBranchPath.nodeId;\n this.projectService.removeBranchPathTakenNodeConstraintsIfAny(nodeId);\n /*\n * update the transition of the step to point to the next step\n * in the project. this may be different than the next step\n * if it was still in the branch path.\n */\n const nodeIdAfter = this.projectService.getNodeIdAfter(nodeId);\n this.projectService.setTransition(nodeId, nodeIdAfter);\n }\n this.removeBranchPathAndTransition(branchPaths, branch, targetId);\n }\n\n deleteBranchPathAndPlaceAfter(\n branchPaths: any[],\n branch: any,\n branchStepId: string,\n nodeIdToPlaceAfter: string,\n nodeIdAfterMergeStep: string\n ): void {\n for (const nodeInBranchPath of branch.nodesInBranchPath) {\n const nodeId = nodeInBranchPath.nodeId;\n this.projectService.removeBranchPathTakenNodeConstraintsIfAny(nodeId);\n this.projectService.setTransition(nodeIdToPlaceAfter, nodeId);\n this.projectService.removeNodeIdFromGroups(nodeId);\n this.projectService.insertNodeAfterInGroups(nodeId, nodeIdToPlaceAfter);\n nodeIdToPlaceAfter = nodeId;\n }\n if (nodeIdAfterMergeStep == null) {\n const transitionLogic = this.projectService.getNode(nodeIdToPlaceAfter).getTransitionLogic();\n transitionLogic.transitions = [];\n } else {\n this.projectService.setTransition(nodeIdToPlaceAfter, nodeIdAfterMergeStep);\n }\n this.removeBranchPathAndTransition(branchPaths, branch, branchStepId);\n }\n\n private removeBranchPathAndTransition(branchPaths: any[], branch: any, targetId: string): void {\n const branchPathIndex = branchPaths.indexOf(branch);\n branchPaths.splice(branchPathIndex, 1);\n const node = this.projectService.getNodeById(targetId);\n node.transitionLogic.transitions.splice(branchPathIndex, 1);\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 5, + "jsdoctags": [ + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "type": "injectable" + }, + { + "name": "DeleteNodeService", + "id": "injectable-DeleteNodeService-b843aff89bbf7d89d0068fcf18f388f17449947613e1739296cead168d6caf75ebc737840c445212d1893683f20ebf7475f8b04217a56deb3363c31c8921e8ee", + "file": "src/assets/wise5/services/deleteNodeService.ts", + "properties": [], + "methods": [ + { + "name": "containsStartNodeId", + "args": [ + { + "name": "groupId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 58, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "groupId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "deleteNode", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 19, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nDelete a node from the project and update transitions.\nIf we are deleting the project start node id, we will need to change it to the\nnext logical node id that will be used as the project start.\n\n", + "description": "

Delete a node from the project and update transitions.\nIf we are deleting the project start node id, we will need to change it to the\nnext logical node id that will be used as the project start.

\n", + "jsdoctags": [ + { + "name": { + "pos": 640, + "end": 646, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 634, + "end": 639, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id to delete from the project. It can be a step or an activity.

\n" + } + ] + }, + { + "name": "isProjectStartNodeIdOrContainsProjectStartNodeId", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 51, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "removeChildNodes", + "args": [ + { + "name": "groupId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 120, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "groupId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "removeNodeIdFromNodes", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 131, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setGroupStartIdToNextChildId", + "args": [ + { + "name": "group", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 35, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "group", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "updateProjectStartNodeIdToNextLogicalNode", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 69, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "updateProjectStartNodeIdToNextLogicalNodeForRemovingGroup", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 82, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nSet the startNodeId of the specified group to the first node of the next group.\nIf the next group doesn't have any nodes, startNodeId should point\nto the next group.\n", + "description": "

Set the startNodeId of the specified group to the first node of the next group.\nIf the next group doesn't have any nodes, startNodeId should point\nto the next group.

\n", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "updateProjectStartNodeIdToNextLogicalNodeForRemovingStep", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 105, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nSet the startNodeId to the next node in the transitions.\nIf there are no transitions, set it to the parent group of the node.\n", + "description": "

Set the startNodeId to the next node in the transitions.\nIf there are no transitions, set it to the parent group of the node.

\n", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Injectable } from '@angular/core';\nimport { TeacherProjectService } from './teacherProjectService';\nimport { RemoveNodeIdFromTransitionsService } from './removeNodeIdFromTransitionsService';\n\n@Injectable()\nexport class DeleteNodeService {\n constructor(\n protected ProjectService: TeacherProjectService,\n private removeNodeIdFromTransitionsService: RemoveNodeIdFromTransitionsService\n ) {}\n\n /**\n * Delete a node from the project and update transitions.\n * If we are deleting the project start node id, we will need to change it to the\n * next logical node id that will be used as the project start.\n *\n * @param nodeId the node id to delete from the project. It can be a step or an activity.\n */\n deleteNode(nodeId: string): void {\n const parentGroup = this.ProjectService.getParentGroup(nodeId);\n if (parentGroup != null && parentGroup.startId === nodeId) {\n this.setGroupStartIdToNextChildId(parentGroup);\n }\n if (this.isProjectStartNodeIdOrContainsProjectStartNodeId(nodeId)) {\n this.updateProjectStartNodeIdToNextLogicalNode(nodeId);\n }\n if (this.ProjectService.isGroupNode(nodeId)) {\n this.removeChildNodes(nodeId);\n }\n this.removeNodeIdFromTransitionsService.remove(nodeId);\n this.ProjectService.removeNodeIdFromGroups(nodeId);\n this.removeNodeIdFromNodes(nodeId);\n }\n\n private setGroupStartIdToNextChildId(group: any): void {\n let hasSetNewStartId = false;\n const transitions = this.ProjectService.getTransitionsByFromNodeId(group.startId);\n if (transitions.length > 0) {\n const transition = transitions[0];\n const toNodeId = transition.to;\n if (this.ProjectService.isNodeInGroup(toNodeId, group.id)) {\n group.startId = toNodeId;\n hasSetNewStartId = true;\n }\n }\n if (!hasSetNewStartId) {\n group.startId = '';\n }\n }\n\n private isProjectStartNodeIdOrContainsProjectStartNodeId(nodeId: string): boolean {\n return (\n this.ProjectService.getStartNodeId() === nodeId ||\n (this.ProjectService.isGroupNode(nodeId) && this.containsStartNodeId(nodeId))\n );\n }\n\n private containsStartNodeId(groupId: string): boolean {\n const group = this.ProjectService.getNodeById(groupId);\n const projectStartNodeId = this.ProjectService.getStartNodeId();\n for (let childId of group.ids) {\n if (childId === projectStartNodeId) {\n return true;\n }\n }\n return false;\n }\n\n private updateProjectStartNodeIdToNextLogicalNode(nodeId: string): void {\n if (this.ProjectService.isGroupNode(nodeId)) {\n this.updateProjectStartNodeIdToNextLogicalNodeForRemovingGroup(nodeId);\n } else {\n this.updateProjectStartNodeIdToNextLogicalNodeForRemovingStep(nodeId);\n }\n }\n\n /**\n * Set the startNodeId of the specified group to the first node of the next group.\n * If the next group doesn't have any nodes, startNodeId should point\n * to the next group.\n */\n private updateProjectStartNodeIdToNextLogicalNodeForRemovingGroup(nodeId: string): void {\n const transitions = this.ProjectService.getTransitionsByFromNodeId(nodeId);\n if (transitions.length == 0) {\n this.ProjectService.setStartNodeId('group0');\n } else {\n let nextNodeId = transitions[0].to;\n if (this.ProjectService.isGroupNode(nextNodeId)) {\n const nextGroupStartId = this.ProjectService.getGroupStartId(nextNodeId);\n if (nextGroupStartId == null || nextGroupStartId === '') {\n this.ProjectService.setStartNodeId(nextNodeId);\n } else {\n this.ProjectService.setStartNodeId(nextGroupStartId);\n }\n } else {\n this.ProjectService.setStartNodeId(nextNodeId);\n }\n }\n }\n\n /**\n * Set the startNodeId to the next node in the transitions.\n * If there are no transitions, set it to the parent group of the node.\n */\n private updateProjectStartNodeIdToNextLogicalNodeForRemovingStep(nodeId: string): void {\n const transitions = this.ProjectService.getTransitionsByFromNodeId(nodeId);\n const parentGroupId = this.ProjectService.getParentGroupId(nodeId);\n if (transitions.length == 0) {\n this.ProjectService.setStartNodeId(parentGroupId);\n } else {\n let nextNodeId = transitions[0].to;\n if (this.ProjectService.isNodeInGroup(nextNodeId, parentGroupId)) {\n this.ProjectService.setStartNodeId(nextNodeId);\n } else {\n this.ProjectService.setStartNodeId(this.ProjectService.getParentGroupId(nodeId));\n }\n }\n }\n\n private removeChildNodes(groupId: string): void {\n const group = this.ProjectService.getNodeById(groupId);\n for (let i = 0; i < group.ids.length; i++) {\n const childId = group.ids[i];\n this.removeNodeIdFromTransitionsService.remove(childId);\n this.ProjectService.removeNodeIdFromGroups(childId);\n this.removeNodeIdFromNodes(childId);\n i--; // so it won't skip the next element\n }\n }\n\n private removeNodeIdFromNodes(nodeId: string): void {\n const nodes = this.ProjectService.project.nodes;\n for (let n = 0; n < nodes.length; n++) {\n const node = nodes[n];\n if (node != null) {\n if (nodeId === node.id) {\n nodes.splice(n, 1);\n }\n }\n }\n const inactiveNodes = this.ProjectService.project.inactiveNodes;\n if (inactiveNodes != null) {\n for (let i = 0; i < inactiveNodes.length; i++) {\n const inactiveNode = inactiveNodes[i];\n if (inactiveNode != null) {\n if (nodeId === inactiveNode.id) {\n inactiveNodes.splice(i, 1);\n }\n }\n }\n }\n this.ProjectService.idToNode[nodeId] = null;\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "ProjectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "removeNodeIdFromTransitionsService", + "type": "RemoveNodeIdFromTransitionsService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 6, + "jsdoctags": [ + { + "name": "ProjectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "removeNodeIdFromTransitionsService", + "type": "RemoveNodeIdFromTransitionsService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "type": "injectable" + }, + { + "name": "DeleteTranslationsService", + "id": "injectable-DeleteTranslationsService-3f7e846e6c26ac37086788d9ab0004ef30cff1a2d38e111680f5dcb8b1e9f2008bea826818040882da781444b7af6ebb223f111adc4d74d03d8b05f8c04e4506", + "file": "src/assets/wise5/services/deleteTranslationsService.ts", + "properties": [], + "methods": [ + { + "name": "deleteComponents", + "args": [ + { + "name": "components", + "type": "ComponentContent[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 14, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123, + 134 + ], + "jsdoctags": [ + { + "name": "components", + "type": "ComponentContent[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "tryDeleteComponents", + "args": [ + { + "name": "components", + "type": "ComponentContent[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 8, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "components", + "type": "ComponentContent[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "fetchAllTranslations", + "args": [], + "optional": false, + "returnType": "Promise>", + "typeParameters": [], + "line": 20, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124, + 134 + ], + "inheritance": { + "file": "EditTranslationsService" + } + }, + { + "name": "getI18NKey", + "args": [ + { + "name": "componentElement", + "type": "object", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "key", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 50, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "componentElement", + "type": "object", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "key", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditTranslationsService" + } + }, + { + "name": "getI18NKeys", + "args": [ + { + "name": "componentElement", + "type": "object", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 36, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "componentElement", + "type": "object", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditTranslationsService" + } + }, + { + "name": "getSaveTranslationRequest", + "args": [ + { + "name": "translations", + "type": "Translations", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "language", + "type": "Language", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 54, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "translations", + "type": "Translations", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "language", + "type": "Language", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditTranslationsService" + } + }, + { + "name": "fetchTranslations", + "args": [ + { + "name": "locale", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 16, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "locale", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectTranslationService" + } + }, + { + "name": "getTranslationMappingURL", + "args": [ + { + "name": "locale", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 24, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "locale", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectTranslationService" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Injectable } from '@angular/core';\nimport { Observable, forkJoin } from 'rxjs';\nimport { ComponentContent } from '../common/ComponentContent';\nimport { EditTranslationsService } from './editProjectTranslationsService';\n\n@Injectable()\nexport class DeleteTranslationsService extends EditTranslationsService {\n tryDeleteComponents(components: ComponentContent[]): void {\n if (this.projectService.getLocale().hasTranslations()) {\n this.deleteComponents(components);\n }\n }\n\n private async deleteComponents(components: ComponentContent[]): Promise {\n const i18nKeys = components.flatMap((component) => this.getI18NKeys(component));\n const saveTranslationRequests: Observable[] = [];\n (await this.fetchAllTranslations()).forEach((translations, language) => {\n i18nKeys.forEach((i18nKey) => delete translations[i18nKey]);\n saveTranslationRequests.push(this.getSaveTranslationRequest(translations, language));\n });\n forkJoin(saveTranslationRequests).subscribe();\n }\n}\n", + "extends": [ + "EditTranslationsService" + ], + "type": "injectable" + }, + { + "name": "DialogGuidanceFeedbackService", + "id": "injectable-DialogGuidanceFeedbackService-3fc8a3e22575731071bbf7edc22ded175d025ada0136fec58aff42f8723660cb56b79299237eb44c60a02b9cb2ec7da0ba22e0c92313bea6336c138345e252d8", + "file": "src/assets/wise5/services/dialogGuidanceFeedbackService.ts", + "properties": [], + "methods": [ + { + "name": "getCountFeedbackRuleShown", + "args": [ + { + "name": "latestSubmitComponentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "feedbackRule", + "type": "FeedbackRule", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 27, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "latestSubmitComponentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "feedbackRule", + "type": "FeedbackRule", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getFeedbackText", + "args": [ + { + "name": "component", + "type": "DialogGuidanceComponent", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "feedbackRule", + "type": "FeedbackRule", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 10, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "component", + "type": "DialogGuidanceComponent", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "feedbackRule", + "type": "FeedbackRule", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getFeedbackTextVersion2", + "args": [ + { + "name": "component", + "type": "DialogGuidanceComponent", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "feedbackRule", + "type": "FeedbackRule", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 16, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "component", + "type": "DialogGuidanceComponent", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "feedbackRule", + "type": "FeedbackRule", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Injectable } from '@angular/core';\nimport { FeedbackRule } from '../components/common/feedbackRule/FeedbackRule';\nimport { StudentDataService } from './studentDataService';\nimport { DialogGuidanceComponent } from '../components/dialogGuidance/DialogGuidanceComponent';\n\n@Injectable()\nexport class DialogGuidanceFeedbackService {\n constructor(private studentDataService: StudentDataService) {}\n\n getFeedbackText(component: DialogGuidanceComponent, feedbackRule: FeedbackRule): string {\n return component.isVersion1()\n ? feedbackRule.feedback\n : this.getFeedbackTextVersion2(component, feedbackRule);\n }\n\n private getFeedbackTextVersion2(component: DialogGuidanceComponent, feedbackRule: FeedbackRule) {\n const latestSubmitComponentState = this.studentDataService.getLatestSubmitComponentState(\n component.nodeId,\n component.id\n );\n return feedbackRule.feedback[\n this.getCountFeedbackRuleShown(latestSubmitComponentState, feedbackRule) %\n feedbackRule.feedback.length\n ];\n }\n\n private getCountFeedbackRuleShown(\n latestSubmitComponentState: any,\n feedbackRule: FeedbackRule\n ): number {\n return latestSubmitComponentState == null\n ? 0\n : latestSubmitComponentState.studentData.responses.filter(\n (response) => response.feedbackRuleId === feedbackRule.id\n ).length;\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "studentDataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 7, + "jsdoctags": [ + { + "name": "studentDataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "type": "injectable" + }, + { + "name": "DialogGuidanceService", + "id": "injectable-DialogGuidanceService-bed7174994cef22f07d53cf5704565a30989d8f3c8c6fb8ee052c72257898a7b266f334b825ad18f44de09d77e4c8c2d10f1a05469170ae83043ad43487e41d9", + "file": "src/assets/wise5/components/dialogGuidance/dialogGuidanceService.ts", + "properties": [ + { + "name": "notifyConnectedComponentSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "notifyConnectedComponentSource$", + "defaultValue": "this.notifyConnectedComponentSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "requestComponentStateSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "requestComponentStateSource$", + "defaultValue": "this.requestComponentStateSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "sendComponentStateSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "sendComponentStateSource$", + "defaultValue": "this.sendComponentStateSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "ComponentService" + } + } + ], + "methods": [ + { + "name": "createComponent", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 15, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getComponentTypeLabel", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 11, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "isCompleted", + "args": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeEvents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 28, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeEvents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "componentHasCorrectAnswer", + "args": [ + { + "name": "component", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 147, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "component", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "componentHasWork", + "args": [ + { + "name": "component", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 105, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nWhether this component generates student work\nis not provided, we will use the default value of whether the\ncomponent type usually has work.\n", + "description": "

Whether this component generates student work\nis not provided, we will use the default value of whether the\ncomponent type usually has work.

\n", + "jsdoctags": [ + { + "name": { + "pos": 3060, + "end": 3069, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "component" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3054, + "end": 3059, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

(optional) the component object. if the component object\nis not provided, we will use the default value of whether the\ncomponent type usually has work.

\n" + }, + { + "tagName": { + "pos": 3238, + "end": 3244, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether this component generates student work

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "componentStateHasStudentWork", + "args": [ + { + "name": "componentState", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentContent", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 118, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if the component state has student work. Sometimes a component\nstate may be created if the student visits a component but doesn't\nactually perform any work. This is where we will check if the student\nactually performed any work.\n", + "description": "

Check if the component state has student work. Sometimes a component\nstate may be created if the student visits a component but doesn't\nactually perform any work. This is where we will check if the student\nactually performed any work.

\n", + "jsdoctags": [ + { + "name": { + "pos": 3634, + "end": 3648, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3628, + "end": 3633, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component state object

\n" + }, + { + "name": { + "pos": 3688, + "end": 3704, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentContent" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3682, + "end": 3687, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component content

\n" + }, + { + "tagName": { + "pos": 3733, + "end": 3739, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether the component state has any work

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "componentUsesSaveButton", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 135, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nWhether this component uses a save button\n", + "description": "

Whether this component uses a save button

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 4173, + "end": 4179, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether this component uses a save button

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "componentUsesSubmitButton", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 143, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nWhether this component uses a submit button\n", + "description": "

Whether this component uses a submit button

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 4351, + "end": 4357, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether this component uses a submit button

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "displayAnnotation", + "args": [ + { + "name": "componentContent", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "annotation", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 94, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if we need to display the annotation to the student\n", + "description": "

Check if we need to display the annotation to the student

\n", + "jsdoctags": [ + { + "name": { + "pos": 2753, + "end": 2769, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentContent" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2747, + "end": 2752, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component content

\n" + }, + { + "name": { + "pos": 2804, + "end": 2814, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "annotation" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2798, + "end": 2803, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the annotation

\n" + }, + { + "tagName": { + "pos": 2836, + "end": 2843, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

whether we need to display the annotation to the student

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getDomIdEnding", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 18, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getElementId", + "args": [ + { + "name": "domIdBeginning", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "domIdEnding", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "domIdBeginning", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "domIdEnding", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getStudentDataString", + "args": [ + { + "name": "componentState", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 127, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the human readable student data string\n", + "description": "

Get the human readable student data string

\n", + "jsdoctags": [ + { + "name": { + "pos": 3953, + "end": 3967, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3947, + "end": 3952, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component state

\n" + }, + { + "tagName": { + "pos": 3994, + "end": 4000, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

a human readable student data string

\n", + "returnType": "string" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "hasNodeEnteredEvent", + "args": [ + { + "name": "nodeEvents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 155, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeEvents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "isSubmitRequired", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 151, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "notifyConnectedComponentSubscribers", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 42, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "requestComponentState", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 30, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "sendComponentState", + "args": [ + { + "name": "componentStateWrapper", + "type": "ComponentStateWrapper", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 38, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentStateWrapper", + "type": "ComponentStateWrapper", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Injectable } from '@angular/core';\nimport { ComputerAvatarService } from '../../services/computerAvatarService';\nimport { ComponentService } from '../componentService';\n\n@Injectable()\nexport class DialogGuidanceService extends ComponentService {\n constructor(protected computerAvatarService: ComputerAvatarService) {\n super();\n }\n\n getComponentTypeLabel(): string {\n return $localize`Dialog Guidance`;\n }\n\n createComponent() {\n const component: any = super.createComponent();\n component.type = 'DialogGuidance';\n component.itemId = '';\n component.feedbackRules = [];\n component.isComputerAvatarEnabled = false;\n component.computerAvatarSettings =\n this.computerAvatarService.getDefaultComputerAvatarSettings();\n component.version = 2;\n component.cRaterRubric = { ideas: [] };\n return component;\n }\n\n isCompleted(component: any, componentStates: any[], nodeEvents: any[], node: any) {\n return componentStates.length > 0;\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "computerAvatarService", + "type": "ComputerAvatarService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 6, + "jsdoctags": [ + { + "name": "computerAvatarService", + "type": "ComputerAvatarService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "ComponentService" + ], + "type": "injectable" + }, + { + "name": "DiscussionService", + "id": "injectable-DiscussionService-20b15511c1870a6c79db44adafcb04715c5a0534f2f0a4993cbcafadf94af66f185566ca7348a14482b2052eda5db48d27cd76e6d322e1fe5ff0de498166d278", + "file": "src/assets/wise5/components/discussion/discussionService.ts", + "properties": [ + { + "name": "notifyConnectedComponentSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "notifyConnectedComponentSource$", + "defaultValue": "this.notifyConnectedComponentSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "requestComponentStateSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "requestComponentStateSource$", + "defaultValue": "this.requestComponentStateSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "sendComponentStateSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "sendComponentStateSource$", + "defaultValue": "this.sendComponentStateSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "ComponentService" + } + } + ], + "methods": [ + { + "name": "combineClassmatesResponses", + "args": [ + { + "name": "responses", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 94, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "responses", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "componentStateHasStudentWork", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 145, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "componentUsesSaveButton", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 137, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "componentUsesSubmitButton", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 141, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "createComponent", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getClassmateResponses", + "args": [ + { + "name": "runId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 107, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "runId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getClassmateResponsesFromComponents", + "args": [ + { + "name": "runId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "components", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 79, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "runId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "components", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getClassResponses", + "args": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "annotations", + "type": "[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]" + }, + { + "name": "isStudentMode", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 211, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "annotations", + "type": "[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]", + "tagName": { + "text": "param" + } + }, + { + "name": "isStudentMode", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getComponentTypeLabel", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 18, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getLatestInappropriateFlagAnnotationByStudentWorkId", + "args": [ + { + "name": "annotations", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]" + }, + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 199, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "annotations", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]", + "tagName": { + "text": "param" + } + }, + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getLevel1Responses", + "args": [ + { + "name": "classResponses", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isGradingMode", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 285, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the level 1 responses which are posts that are not a reply to another response.\n", + "description": "

Get the level 1 responses which are posts that are not a reply to another response.

\n", + "jsdoctags": [ + { + "name": "classResponses", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "isGradingMode", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + }, + { + "tagName": { + "pos": 9173, + "end": 9179, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

an object containing responses that are not a reply to another response

\n" + } + ] + }, + { + "name": "getResponsesMap", + "args": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 262, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "hasAnyComponentStateWithResponse", + "args": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 47, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "hasComponentStateForConnectedComponent", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 68, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "hasShowWorkConnectedComponentThatHasWork", + "args": [ + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 51, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isCompleted", + "args": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeEvents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 31, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeEvents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "isCompletedV2", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 35, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isComponentHasStarterSentence", + "args": [ + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 159, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isInappropriateFlagDeleteAnnotation", + "args": [ + { + "name": "annotation", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 242, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "annotation", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isStudentResponseDifferentFromStarterSentence", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 164, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isStudentWorkHasAttachment", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 175, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isStudentWorkHasText", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 170, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isTopLevelComponentStateIdFound", + "args": [ + { + "name": "topLevelComponentStateIdsFound", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentStateId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 130, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "topLevelComponentStateIdsFound", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentStateId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isTopLevelPost", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 126, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setUsernames", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 246, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "threadHasPostFromComponentAndWorkgroupId", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 180, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "componentHasCorrectAnswer", + "args": [ + { + "name": "component", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 147, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "component", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "componentHasWork", + "args": [ + { + "name": "component", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 105, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nWhether this component generates student work\nis not provided, we will use the default value of whether the\ncomponent type usually has work.\n", + "description": "

Whether this component generates student work\nis not provided, we will use the default value of whether the\ncomponent type usually has work.

\n", + "jsdoctags": [ + { + "name": { + "pos": 3060, + "end": 3069, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "component" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3054, + "end": 3059, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

(optional) the component object. if the component object\nis not provided, we will use the default value of whether the\ncomponent type usually has work.

\n" + }, + { + "tagName": { + "pos": 3238, + "end": 3244, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether this component generates student work

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "displayAnnotation", + "args": [ + { + "name": "componentContent", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "annotation", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 94, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if we need to display the annotation to the student\n", + "description": "

Check if we need to display the annotation to the student

\n", + "jsdoctags": [ + { + "name": { + "pos": 2753, + "end": 2769, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentContent" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2747, + "end": 2752, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component content

\n" + }, + { + "name": { + "pos": 2804, + "end": 2814, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "annotation" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2798, + "end": 2803, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the annotation

\n" + }, + { + "tagName": { + "pos": 2836, + "end": 2843, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

whether we need to display the annotation to the student

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getDomIdEnding", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 18, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getElementId", + "args": [ + { + "name": "domIdBeginning", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "domIdEnding", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "domIdBeginning", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "domIdEnding", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getStudentDataString", + "args": [ + { + "name": "componentState", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 127, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the human readable student data string\n", + "description": "

Get the human readable student data string

\n", + "jsdoctags": [ + { + "name": { + "pos": 3953, + "end": 3967, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3947, + "end": 3952, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component state

\n" + }, + { + "tagName": { + "pos": 3994, + "end": 4000, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

a human readable student data string

\n", + "returnType": "string" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "hasNodeEnteredEvent", + "args": [ + { + "name": "nodeEvents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 155, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeEvents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "isSubmitRequired", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 151, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "notifyConnectedComponentSubscribers", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 42, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "requestComponentState", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 30, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "sendComponentState", + "args": [ + { + "name": "componentStateWrapper", + "type": "ComponentStateWrapper", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 38, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentStateWrapper", + "type": "ComponentStateWrapper", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { ComponentService } from '../componentService';\nimport { ConfigService } from '../../services/configService';\nimport { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { forkJoin, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { serverSaveTimeComparator } from '../../common/object/object';\n\n@Injectable()\nexport class DiscussionService extends ComponentService {\n constructor(\n protected configService: ConfigService,\n protected http: HttpClient\n ) {\n super();\n }\n\n getComponentTypeLabel(): string {\n return $localize`Discussion`;\n }\n\n createComponent() {\n const component: any = super.createComponent();\n component.type = 'Discussion';\n component.prompt = '';\n component.isStudentAttachmentEnabled = true;\n component.gateClassmateResponses = true;\n return component;\n }\n\n isCompleted(component: any, componentStates: any[], nodeEvents: any[], node: any): boolean {\n throw new Error('No longer used');\n }\n\n isCompletedV2(node: any, component: any, studentData: any): boolean {\n if (this.hasShowWorkConnectedComponentThatHasWork(component, studentData)) {\n const nodeEvents = studentData.events.filter((event) => event.nodeId == node.id);\n return this.hasNodeEnteredEvent(nodeEvents);\n }\n const componentStates = studentData.componentStates.filter(\n (componentState) =>\n componentState.nodeId === node.id && componentState.componentId == component.id\n );\n return this.hasAnyComponentStateWithResponse(componentStates);\n }\n\n private hasAnyComponentStateWithResponse(componentStates: any[]): boolean {\n return componentStates.some((componentState) => componentState.studentData.response != null);\n }\n\n private hasShowWorkConnectedComponentThatHasWork(\n componentContent: any,\n studentData: any\n ): boolean {\n const connectedComponents = componentContent.connectedComponents;\n if (connectedComponents != null) {\n for (const connectedComponent of connectedComponents) {\n if (connectedComponent.type === 'showWork') {\n if (this.hasComponentStateForConnectedComponent(connectedComponent, studentData)) {\n return true;\n }\n }\n }\n }\n return false;\n }\n\n private hasComponentStateForConnectedComponent(\n connectedComponent: any,\n studentData: any\n ): boolean {\n return studentData.componentStates.some(\n (componentState) =>\n componentState.nodeId === connectedComponent.nodeId &&\n componentState.componentId === connectedComponent.componentId\n );\n }\n\n getClassmateResponsesFromComponents(\n runId: number,\n periodId: number,\n components: any[]\n ): Observable {\n const requests = components.map((component) =>\n this.getClassmateResponses(runId, periodId, component.nodeId, component.componentId)\n );\n return forkJoin(requests).pipe(\n map((responses: any[]) => {\n return this.combineClassmatesResponses(responses);\n })\n );\n }\n\n private combineClassmatesResponses(responses: any[]): any {\n const studentWork = [];\n const annotations = [];\n responses.forEach((response) => {\n studentWork.push(...response.studentWork);\n annotations.push(...response.annotations);\n });\n return {\n annotations: annotations,\n studentWork: studentWork\n };\n }\n\n getClassmateResponses(\n runId: number,\n periodId: number,\n nodeId: string,\n componentId: string\n ): Observable {\n const studentWorkRequest = this.http.get(\n `/api/classmate/discussion/student-work/${runId}/${periodId}/${nodeId}/${componentId}`\n );\n const annotationsRequest = this.http.get(\n `/api/classmate/discussion/annotations/${runId}/${periodId}/${nodeId}/${componentId}`\n );\n return forkJoin([studentWorkRequest, annotationsRequest]).pipe(\n map((response) => {\n return { studentWork: response[0], annotations: response[1] };\n })\n );\n }\n\n isTopLevelPost(componentState: any) {\n return componentState.studentData.componentStateIdReplyingTo == null;\n }\n\n isTopLevelComponentStateIdFound(\n topLevelComponentStateIdsFound: string[],\n componentStateId: string\n ) {\n return topLevelComponentStateIdsFound.indexOf(componentStateId) !== -1;\n }\n\n componentUsesSaveButton() {\n return false;\n }\n\n componentUsesSubmitButton() {\n return false;\n }\n\n componentStateHasStudentWork(componentState: any, componentContent: any) {\n if (this.isStudentWorkHasAttachment(componentState)) {\n return true;\n }\n if (this.isComponentHasStarterSentence(componentContent)) {\n return (\n this.isStudentWorkHasText(componentState) &&\n this.isStudentResponseDifferentFromStarterSentence(componentState, componentContent)\n );\n } else {\n return this.isStudentWorkHasText(componentState);\n }\n }\n\n isComponentHasStarterSentence(componentContent: any) {\n const starterSentence = componentContent.starterSentence;\n return starterSentence != null && starterSentence !== '';\n }\n\n isStudentResponseDifferentFromStarterSentence(componentState: any, componentContent: any) {\n const response = componentState.studentData.response;\n const starterSentence = componentContent.starterSentence;\n return response !== starterSentence;\n }\n\n isStudentWorkHasText(componentState: any) {\n const response = componentState.studentData.response;\n return response != null && response !== '';\n }\n\n isStudentWorkHasAttachment(componentState: any) {\n const attachments = componentState.studentData.attachments;\n return attachments != null && attachments.length > 0;\n }\n\n threadHasPostFromComponentAndWorkgroupId(\n componentState: any,\n componentId: string,\n workgroupId: number\n ): any {\n if (componentState.componentId === componentId && componentState.workgroupId === workgroupId) {\n return true;\n }\n for (const replyComponentState of componentState.replies) {\n if (\n replyComponentState.componentId === componentId &&\n replyComponentState.workgroupId === workgroupId\n ) {\n return true;\n }\n }\n return false;\n }\n\n getLatestInappropriateFlagAnnotationByStudentWorkId(\n annotations: any[] = [],\n studentWorkId: number\n ): any {\n for (const annotation of annotations.sort(serverSaveTimeComparator).reverse()) {\n if (studentWorkId === annotation.studentWorkId && annotation.type === 'inappropriateFlag') {\n return annotation;\n }\n }\n return null;\n }\n\n getClassResponses(\n componentStates: any[],\n annotations = [],\n isStudentMode: boolean = false\n ): any[] {\n const classResponses = [];\n componentStates = componentStates.sort(serverSaveTimeComparator);\n for (const componentState of componentStates) {\n if (componentState.studentData.isSubmit) {\n componentState.replies = [];\n this.setUsernames(componentState);\n const latestInappropriateFlagAnnotation =\n this.getLatestInappropriateFlagAnnotationByStudentWorkId(annotations, componentState.id);\n if (isStudentMode) {\n if (\n latestInappropriateFlagAnnotation == null ||\n !this.isInappropriateFlagDeleteAnnotation(latestInappropriateFlagAnnotation)\n ) {\n classResponses.push(componentState);\n }\n } else {\n if (latestInappropriateFlagAnnotation != null) {\n componentState.latestInappropriateFlagAnnotation = latestInappropriateFlagAnnotation;\n }\n classResponses.push(componentState);\n }\n }\n }\n return classResponses;\n }\n\n isInappropriateFlagDeleteAnnotation(annotation: any): boolean {\n return annotation.data.action === 'Delete';\n }\n\n setUsernames(componentState: any): void {\n const workgroupId = componentState.workgroupId;\n const usernames = this.configService.getUsernamesByWorkgroupId(workgroupId);\n if (usernames.length > 0) {\n componentState.usernames = this.configService.getUsernamesStringByWorkgroupId(workgroupId);\n } else if (componentState.usernamesArray != null) {\n componentState.usernames = componentState.usernamesArray\n .map(function (obj) {\n return obj.name;\n })\n .join(', ');\n } else {\n componentState.usernames = this.configService.getUserIdsStringByWorkgroupId(workgroupId);\n }\n }\n\n getResponsesMap(componentStates: any[]): any {\n const responsesMap: any = {};\n for (const componentState of componentStates) {\n responsesMap[componentState.id] = componentState;\n }\n for (const componentState of componentStates) {\n const componentStateIdReplyingTo = componentState.studentData.componentStateIdReplyingTo;\n if (componentStateIdReplyingTo) {\n if (\n responsesMap[componentStateIdReplyingTo] &&\n responsesMap[componentStateIdReplyingTo].replies\n ) {\n responsesMap[componentStateIdReplyingTo].replies.push(componentState);\n }\n }\n }\n return responsesMap;\n }\n\n /**\n * Get the level 1 responses which are posts that are not a reply to another response.\n * @return an object containing responses that are not a reply to another response\n */\n getLevel1Responses(\n classResponses: any[],\n componentId: string,\n workgroupId: number,\n isGradingMode: boolean = false\n ): any {\n const allResponses = [];\n const oddResponses = [];\n const evenResponses = [];\n for (const [index, classResponse] of Object.entries(classResponses)) {\n if (classResponse.studentData.componentStateIdReplyingTo == null) {\n if (\n isGradingMode &&\n !this.threadHasPostFromComponentAndWorkgroupId(classResponse, componentId, workgroupId)\n ) {\n continue;\n }\n if (Number(index) % 2 === 0) {\n evenResponses.push(classResponse);\n } else {\n oddResponses.push(classResponse);\n }\n allResponses.push(classResponse);\n }\n }\n return {\n all: allResponses.reverse(),\n col1: oddResponses.reverse(),\n col2: evenResponses.reverse()\n };\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 10, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "ComponentService" + ], + "type": "injectable" + }, + { + "name": "DrawService", + "id": "injectable-DrawService-ba7da5b756915bc70f5597ddcf552277113e09632a74c3b2d70727459bab4c43217b608fcc38218be2d497c6eee75c5cb440783ef10f923de489772d610325a8", + "file": "src/assets/wise5/components/draw/drawService.ts", + "properties": [ + { + "name": "toolFieldToLabel", + "defaultValue": "{\n select: 'Select tool',\n line: 'Line tool (click and hold to show available line types)',\n shape: 'Basic shape tool (click and hold to show available shapes)',\n freeHand: 'Free hand drawing tool',\n text: 'Text tool (click and hold to show available font sizes)',\n stamp: 'Stamp tool (click and hold to show available categories)',\n strokeColor: 'Stroke color (click and hold to show available colors)',\n fillColor: 'Fill color (click and hold to show available colors)',\n clone: 'Clone tool',\n strokeWidth: 'Stroke width (click and hold to show available options)',\n sendBack: 'Send selected objects to back',\n sendForward: 'Send selected objects to front',\n undo: 'Undo',\n redo: 'Redo',\n delete: 'Delete selected objects'\n }", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 16 + }, + { + "name": "notifyConnectedComponentSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "notifyConnectedComponentSource$", + "defaultValue": "this.notifyConnectedComponentSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "requestComponentStateSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "requestComponentStateSource$", + "defaultValue": "this.requestComponentStateSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "sendComponentStateSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "sendComponentStateSource$", + "defaultValue": "this.sendComponentStateSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "ComponentService" + } + } + ], + "methods": [ + { + "name": "componentStateHasStudentWork", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 111, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "createComponent", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 42, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "generateImageFromRenderedComponentState", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 151, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nThe component state has been rendered in a element\nand now we want to take a snapshot of the work.\n", + "description": "

The component state has been rendered in a element\nand now we want to take a snapshot of the work.

\n", + "jsdoctags": [ + { + "name": { + "pos": 4867, + "end": 4881, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4861, + "end": 4866, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The component state that has been rendered.

\n" + }, + { + "tagName": { + "pos": 4932, + "end": 4938, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

A promise that will return an image object.

\n" + } + ] + }, + { + "name": "getComponentTypeLabel", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 38, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getDrawingToolCanvas", + "args": [ + { + "name": "drawingToolId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 166, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "drawingToolId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getDrawingToolId", + "args": [ + { + "name": "domIdEnding", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 68, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "domIdEnding", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "hasComponentStateWithDrawData", + "args": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 92, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "hasComponentStateWithIsSubmitTrue", + "args": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "initializeDrawingTool", + "args": [ + { + "name": "drawingToolId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "stamps", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "{}" + }, + { + "name": "width", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "800" + }, + { + "name": "height", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "600" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 170, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "drawingToolId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "stamps", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "{}", + "tagName": { + "text": "param" + } + }, + { + "name": "width", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "800", + "tagName": { + "text": "param" + } + }, + { + "name": "height", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "600", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isCompleted", + "args": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeEvents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 72, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeEvents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "isComponentContentNotNullAndStarterDrawDataExists", + "args": [ + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 133, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isDrawDataContainsObjects", + "args": [ + { + "name": "drawData", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 125, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "drawData", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isStarterDrawDataExists", + "args": [ + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 137, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isStudentDrawDataDifferentFromStarterData", + "args": [ + { + "name": "drawDataString", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "starterDrawData", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 141, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "drawDataString", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "starterDrawData", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "removeBackgroundFromComponentState", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 101, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setUpTools", + "args": [ + { + "name": "drawingToolId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "tools", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isDisabled", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 184, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "drawingToolId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "tools", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "isDisabled", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "toggleToolVisibility", + "args": [ + { + "name": "drawingTool", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isShowTool", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "title", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 192, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "drawingTool", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "isShowTool", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "title", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "componentHasCorrectAnswer", + "args": [ + { + "name": "component", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 147, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "component", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "componentHasWork", + "args": [ + { + "name": "component", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 105, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nWhether this component generates student work\nis not provided, we will use the default value of whether the\ncomponent type usually has work.\n", + "description": "

Whether this component generates student work\nis not provided, we will use the default value of whether the\ncomponent type usually has work.

\n", + "jsdoctags": [ + { + "name": { + "pos": 3060, + "end": 3069, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "component" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3054, + "end": 3059, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

(optional) the component object. if the component object\nis not provided, we will use the default value of whether the\ncomponent type usually has work.

\n" + }, + { + "tagName": { + "pos": 3238, + "end": 3244, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether this component generates student work

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "componentUsesSaveButton", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 135, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nWhether this component uses a save button\n", + "description": "

Whether this component uses a save button

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 4173, + "end": 4179, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether this component uses a save button

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "componentUsesSubmitButton", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 143, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nWhether this component uses a submit button\n", + "description": "

Whether this component uses a submit button

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 4351, + "end": 4357, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether this component uses a submit button

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "displayAnnotation", + "args": [ + { + "name": "componentContent", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "annotation", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 94, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if we need to display the annotation to the student\n", + "description": "

Check if we need to display the annotation to the student

\n", + "jsdoctags": [ + { + "name": { + "pos": 2753, + "end": 2769, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentContent" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2747, + "end": 2752, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component content

\n" + }, + { + "name": { + "pos": 2804, + "end": 2814, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "annotation" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2798, + "end": 2803, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the annotation

\n" + }, + { + "tagName": { + "pos": 2836, + "end": 2843, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

whether we need to display the annotation to the student

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getDomIdEnding", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 18, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getElementId", + "args": [ + { + "name": "domIdBeginning", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "domIdEnding", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "domIdBeginning", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "domIdEnding", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getStudentDataString", + "args": [ + { + "name": "componentState", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 127, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the human readable student data string\n", + "description": "

Get the human readable student data string

\n", + "jsdoctags": [ + { + "name": { + "pos": 3953, + "end": 3967, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3947, + "end": 3952, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component state

\n" + }, + { + "tagName": { + "pos": 3994, + "end": 4000, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

a human readable student data string

\n", + "returnType": "string" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "hasNodeEnteredEvent", + "args": [ + { + "name": "nodeEvents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 155, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeEvents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "isSubmitRequired", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 151, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "notifyConnectedComponentSubscribers", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 42, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "requestComponentState", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 30, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "sendComponentState", + "args": [ + { + "name": "componentStateWrapper", + "type": "ComponentStateWrapper", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 38, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentStateWrapper", + "type": "ComponentStateWrapper", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "'use strict';\n\nimport $ from 'jquery';\nimport * as fabric from 'fabric';\nwindow['fabric'] = fabric.fabric;\nimport * as EventEmitter2 from 'eventemitter2';\nwindow['EventEmitter2'] = EventEmitter2;\nimport DrawingTool from '@wise-community/drawing-tool/dist/drawing-tool';\nimport { ComponentService } from '../componentService';\nimport { StudentAssetService } from '../../services/studentAssetService';\nimport { Injectable } from '@angular/core';\nimport { convertToPNGFile } from '../../common/canvas/canvas';\n\n@Injectable()\nexport class DrawService extends ComponentService {\n toolFieldToLabel: any = {\n select: 'Select tool',\n line: 'Line tool (click and hold to show available line types)',\n shape: 'Basic shape tool (click and hold to show available shapes)',\n freeHand: 'Free hand drawing tool',\n text: 'Text tool (click and hold to show available font sizes)',\n stamp: 'Stamp tool (click and hold to show available categories)',\n strokeColor: 'Stroke color (click and hold to show available colors)',\n fillColor: 'Fill color (click and hold to show available colors)',\n clone: 'Clone tool',\n strokeWidth: 'Stroke width (click and hold to show available options)',\n sendBack: 'Send selected objects to back',\n sendForward: 'Send selected objects to front',\n undo: 'Undo',\n redo: 'Redo',\n delete: 'Delete selected objects'\n };\n\n constructor(private StudentAssetService: StudentAssetService) {\n super();\n }\n\n getComponentTypeLabel(): string {\n return $localize`Draw`;\n }\n\n createComponent() {\n const component: any = super.createComponent();\n component.type = 'Draw';\n component.stamps = {\n Stamps: []\n };\n component.tools = {\n select: true,\n line: true,\n shape: true,\n freeHand: true,\n text: true,\n stamp: true,\n strokeColor: true,\n fillColor: true,\n clone: true,\n strokeWidth: true,\n sendBack: true,\n sendForward: true,\n undo: true,\n redo: true,\n delete: true\n };\n return component;\n }\n\n getDrawingToolId(domIdEnding: string): string {\n return this.getElementId('drawing-tool', domIdEnding);\n }\n\n isCompleted(component: any, componentStates: any[], nodeEvents: any[], node: any) {\n if (componentStates != null && componentStates.length > 0) {\n if (this.isSubmitRequired(node, component)) {\n return this.hasComponentStateWithIsSubmitTrue(componentStates);\n } else {\n return this.hasComponentStateWithDrawData(componentStates);\n }\n }\n return false;\n }\n\n hasComponentStateWithIsSubmitTrue(componentStates: any[]) {\n for (let c = componentStates.length - 1; c >= 0; c--) {\n if (componentStates[c].isSubmit) {\n return true;\n }\n }\n return false;\n }\n\n hasComponentStateWithDrawData(componentStates: any[]) {\n for (let c = componentStates.length - 1; c >= 0; c--) {\n if (componentStates[c].studentData.drawData != null) {\n return true;\n }\n }\n return false;\n }\n\n removeBackgroundFromComponentState(componentState: any) {\n const drawData = componentState.studentData.drawData;\n const drawDataObject = JSON.parse(drawData);\n const canvas = drawDataObject.canvas;\n delete canvas.backgroundImage;\n const drawDataJSONString = JSON.stringify(drawDataObject);\n componentState.studentData.drawData = drawDataJSONString;\n return componentState;\n }\n\n componentStateHasStudentWork(componentState: any, componentContent: any) {\n if (componentState != null) {\n const drawDataString = componentState.studentData.drawData;\n const drawData = JSON.parse(drawDataString);\n if (this.isComponentContentNotNullAndStarterDrawDataExists(componentContent)) {\n const starterDrawData = componentContent.starterDrawData;\n return this.isStudentDrawDataDifferentFromStarterData(drawDataString, starterDrawData);\n } else if (this.isDrawDataContainsObjects(drawData)) {\n return true;\n }\n }\n return false;\n }\n\n isDrawDataContainsObjects(drawData: any) {\n return (\n drawData.canvas != null &&\n drawData.canvas.objects != null &&\n drawData.canvas.objects.length > 0\n );\n }\n\n isComponentContentNotNullAndStarterDrawDataExists(componentContent: any) {\n return componentContent != null && this.isStarterDrawDataExists(componentContent);\n }\n\n isStarterDrawDataExists(componentContent: any) {\n return componentContent.starterDrawData != null && componentContent.starterDrawData !== '';\n }\n\n isStudentDrawDataDifferentFromStarterData(drawDataString: string, starterDrawData: string) {\n return drawDataString != null && drawDataString !== '' && drawDataString !== starterDrawData;\n }\n\n /**\n * The component state has been rendered in a element\n * and now we want to take a snapshot of the work.\n * @param componentState The component state that has been rendered.\n * @return A promise that will return an image object.\n */\n generateImageFromRenderedComponentState(componentState: any) {\n return new Promise((resolve, reject) => {\n const domIdEnding = this.getDomIdEnding(\n componentState.nodeId,\n componentState.componentId,\n componentState\n );\n const canvas = this.getDrawingToolCanvas(this.getDrawingToolId(domIdEnding));\n const pngFile = convertToPNGFile(canvas);\n this.StudentAssetService.uploadAsset(pngFile).then((asset) => {\n resolve(asset);\n });\n });\n }\n\n getDrawingToolCanvas(drawingToolId: string): any {\n return document.querySelector(`#${drawingToolId} canvas`);\n }\n\n initializeDrawingTool(\n drawingToolId: string,\n stamps: any = {},\n width: number = 800,\n height: number = 600\n ): any {\n return new DrawingTool(`#${drawingToolId}`, {\n stamps: stamps,\n parseSVG: true,\n width: width,\n height: height\n });\n }\n\n setUpTools(drawingToolId: string, tools: any, isDisabled: boolean): void {\n const drawingTool = $(`#${drawingToolId}`);\n for (const toolName of Object.keys(tools)) {\n const isShowTool = tools[toolName];\n this.toggleToolVisibility(drawingTool, isShowTool, this.toolFieldToLabel[toolName]);\n }\n }\n\n toggleToolVisibility(drawingTool: any, isShowTool: boolean, title: string): void {\n if (isShowTool) {\n drawingTool.find(`[title=\"${title}\"]`).show();\n } else {\n drawingTool.find(`[title=\"${title}\"]`).hide();\n }\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "StudentAssetService", + "type": "StudentAssetService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 32, + "jsdoctags": [ + { + "name": "StudentAssetService", + "type": "StudentAssetService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "ComponentService" + ], + "type": "injectable" + }, + { + "name": "EditBranchService", + "id": "injectable-EditBranchService-467c154b5b91a0d0724fd33ef03b8594a4df04c2d80f5362849266e9e357cfc44f9caf33dbfb5061b06b3b39b9f7c2069f04ba6ec64fbfc21343b5f5565b67e8", + "file": "src/assets/wise5/services/editBranchService.ts", + "properties": [], + "methods": [ + { + "name": "addBranchPath", + "args": [ + { + "name": "pathIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "params", + "type": "AuthorBranchParams", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 39, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "pathIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "params", + "type": "AuthorBranchParams", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addNewNodeIdBeforeMergeStep", + "args": [ + { + "name": "mergeStepId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "newNodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 49, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "mergeStepId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "newNodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createNewPaths", + "args": [ + { + "name": "branchPaths", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "params", + "type": "AuthorBranchParams", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 31, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "branchPaths", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "params", + "type": "AuthorBranchParams", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "editBranch", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "branchPaths", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "params", + "type": "AuthorBranchParams", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "branchPaths", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "params", + "type": "AuthorBranchParams", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "removePaths", + "args": [ + { + "name": "branchPaths", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "params", + "type": "AuthorBranchParams", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 54, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "branchPaths", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "params", + "type": "AuthorBranchParams", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "updateTransition", + "args": [ + { + "name": "params", + "type": "AuthorBranchParams", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "transition", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 77, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "params", + "type": "AuthorBranchParams", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "transition", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "updateTransitionLogic", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "params", + "type": "AuthorBranchParams", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 105, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "params", + "type": "AuthorBranchParams", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "updateTransitions", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "params", + "type": "AuthorBranchParams", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 71, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "params", + "type": "AuthorBranchParams", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addTransitionFromBranchNodeToPathNode", + "args": [ + { + "name": "params", + "type": "AuthorBranchParams", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "branchNode", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "newNode", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "pathIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 47, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "params", + "type": "AuthorBranchParams", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "branchNode", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "newNode", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "pathIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AuthorBranchService" + } + }, + { + "name": "createPathStep", + "args": [ + { + "name": "params", + "type": "AuthorBranchParams", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "branchNode", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "pathIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 17, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "params", + "type": "AuthorBranchParams", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "branchNode", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "pathIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AuthorBranchService" + } + }, + { + "name": "setBranchNodeTransitionLogic", + "args": [ + { + "name": "branchNode", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "criteria", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 40, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "branchNode", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "criteria", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AuthorBranchService" + } + }, + { + "name": "setPathStepTransitions", + "args": [ + { + "name": "newNodeIds", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "mergeStepId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 32, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "newNodeIds", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "mergeStepId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AuthorBranchService" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Injectable } from '@angular/core';\nimport { AuthorBranchService } from './authorBranchService';\nimport { AuthorBranchParams } from '../common/AuthorBranchParams';\nimport { TeacherProjectService } from './teacherProjectService';\nimport { DeleteBranchService } from './deleteBranchService';\nimport {\n CHOICE_CHOSEN_VALUE,\n RANDOM_VALUE,\n SCORE_VALUE,\n WORKGROUP_ID_VALUE\n} from '../../../app/domain/branchCriteria';\n\n@Injectable()\nexport class EditBranchService extends AuthorBranchService {\n constructor(\n private deleteBranchService: DeleteBranchService,\n protected projectService: TeacherProjectService\n ) {\n super(projectService);\n }\n\n editBranch(node: any, branchPaths: any[], params: AuthorBranchParams): Promise {\n this.projectService.parseProject();\n this.createNewPaths(branchPaths, params);\n this.removePaths(branchPaths, params);\n this.updateTransitions(node, params);\n this.updateTransitionLogic(node, params);\n return this.projectService.saveProject();\n }\n\n private createNewPaths(branchPaths: any[], params: AuthorBranchParams): void {\n branchPaths.forEach((path: any, index: number) => {\n if (path.new) {\n this.addBranchPath(index, params);\n }\n });\n }\n\n addBranchPath(pathIndex: number, params: AuthorBranchParams): void {\n const branchStep = this.projectService.getNode(params.branchStepId);\n const mergeStep = this.projectService.getNode(params.mergeStepId);\n const newNodeId = this.projectService.getNextAvailableNodeId();\n this.createPathStep(params, branchStep, newNodeId, pathIndex);\n this.setPathStepTransitions([newNodeId], mergeStep.id);\n this.setBranchNodeTransitionLogic(branchStep, params.criteria);\n this.addNewNodeIdBeforeMergeStep(params.mergeStepId, newNodeId);\n }\n\n private addNewNodeIdBeforeMergeStep(mergeStepId: string, newNodeId: string): void {\n const parentGroup = this.projectService.getParentGroup(mergeStepId);\n parentGroup.ids.splice(parentGroup.ids.indexOf(mergeStepId), 0, newNodeId);\n }\n\n private removePaths(branchPaths: any[], params: AuthorBranchParams): void {\n const nodeIdAfterMergeStep = this.projectService.getNodeIdAfter(params.mergeStepId);\n let nodeIdToPlaceAfter = params.mergeStepId;\n branchPaths\n .filter((path: any) => path.delete)\n .forEach((path: any) => {\n this.deleteBranchService.deleteBranchPathAndPlaceAfter(\n branchPaths,\n path,\n params.branchStepId,\n nodeIdToPlaceAfter,\n nodeIdAfterMergeStep\n );\n nodeIdToPlaceAfter = path.nodesInBranchPath[path.nodesInBranchPath.length - 1].nodeId;\n });\n }\n\n private updateTransitions(node: any, params: AuthorBranchParams): void {\n for (let i = 0; i < node.transitionLogic.transitions.length; i++) {\n this.updateTransition(params, node.transitionLogic.transitions[i], i);\n }\n }\n\n private updateTransition(params: AuthorBranchParams, transition: any, index: number): void {\n if (params.criteria === SCORE_VALUE) {\n transition.criteria = [\n {\n name: SCORE_VALUE,\n params: {\n componentId: params.componentId,\n nodeId: params.nodeId,\n scores: params.paths[index].split(',')\n }\n }\n ];\n } else if (params.criteria === CHOICE_CHOSEN_VALUE) {\n transition.criteria = [\n {\n name: CHOICE_CHOSEN_VALUE,\n params: {\n choiceIds: [params.paths[index]],\n componentId: params.componentId,\n nodeId: params.nodeId\n }\n }\n ];\n } else {\n delete transition.criteria;\n }\n }\n\n private updateTransitionLogic(node: any, params: AuthorBranchParams): void {\n if (params.criteria === WORKGROUP_ID_VALUE || params.criteria === RANDOM_VALUE) {\n node.transitionLogic.howToChooseAmongAvailablePaths = params.criteria;\n node.transitionLogic.whenToChoosePath = 'enterNode';\n } else {\n node.transitionLogic.howToChooseAmongAvailablePaths = RANDOM_VALUE;\n node.transitionLogic.whenToChoosePath =\n params.branchStepId === params.nodeId ? 'studentDataChanged' : 'enterNode';\n }\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "deleteBranchService", + "type": "DeleteBranchService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 14, + "jsdoctags": [ + { + "name": "deleteBranchService", + "type": "DeleteBranchService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "AuthorBranchService" + ], + "type": "injectable" + }, + { + "name": "EditTranslationsService", + "id": "injectable-EditTranslationsService-66101b39b29ab46579e073a3a4f7bb50ede2e2e1f0418dbacca2d435bd78d47883908514e9d22303d1c8f338beee04bb2ab715f06930181943081aa93dcd0e88", + "file": "src/assets/wise5/services/editProjectTranslationsService.ts", + "properties": [], + "methods": [ + { + "name": "fetchAllTranslations", + "args": [], + "optional": false, + "returnType": "Promise>", + "typeParameters": [], + "line": 20, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124, + 134 + ] + }, + { + "name": "getI18NKey", + "args": [ + { + "name": "componentElement", + "type": "object", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "key", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 50, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "componentElement", + "type": "object", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "key", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getI18NKeys", + "args": [ + { + "name": "componentElement", + "type": "object", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 36, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "componentElement", + "type": "object", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getSaveTranslationRequest", + "args": [ + { + "name": "translations", + "type": "Translations", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "language", + "type": "Language", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 54, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "translations", + "type": "Translations", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "language", + "type": "Language", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "fetchTranslations", + "args": [ + { + "name": "locale", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 16, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "locale", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectTranslationService" + } + }, + { + "name": "getTranslationMappingURL", + "args": [ + { + "name": "locale", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 24, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "locale", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectTranslationService" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { HttpClient } from '@angular/common/http';\nimport { ConfigService } from './configService';\nimport { ProjectTranslationService } from './projectTranslationService';\nimport { TeacherProjectService } from './teacherProjectService';\nimport { lastValueFrom, Observable } from 'rxjs';\nimport { Translations } from '../../../app/domain/translations';\nimport { Language } from '../../../app/domain/language';\nimport { Injectable } from '@angular/core';\n\n@Injectable()\nexport class EditTranslationsService extends ProjectTranslationService {\n constructor(\n protected configService: ConfigService,\n protected http: HttpClient,\n protected projectService: TeacherProjectService\n ) {\n super(configService, http, projectService);\n }\n\n protected async fetchAllTranslations(): Promise> {\n const allTranslations = new Map();\n await Promise.all(\n this.projectService\n .getLocale()\n .getSupportedLanguages()\n .map(async (language) => {\n allTranslations.set(\n language,\n await lastValueFrom(this.fetchTranslations(language.locale))\n );\n })\n );\n return allTranslations;\n }\n\n protected getI18NKeys(componentElement: object): any[] {\n let i18nKeys = Object.keys(componentElement)\n .filter((key) => key.endsWith('.i18n'))\n .map((key) => this.getI18NKey(componentElement, key));\n Object.values(componentElement).forEach((value) => {\n if (Array.isArray(value)) {\n i18nKeys = i18nKeys.concat(...value.map((val) => this.getI18NKeys(val)));\n } else if (typeof value === 'object' && value != null) {\n i18nKeys = i18nKeys.concat(this.getI18NKeys(value));\n }\n });\n return i18nKeys;\n }\n\n protected getI18NKey(componentElement: object, key: string): any {\n return componentElement[key].id;\n }\n\n protected getSaveTranslationRequest(\n translations: Translations,\n language: Language\n ): Observable {\n return this.http.post(\n `/api/author/project/translate/${this.configService.getProjectId()}/${language.locale}`,\n translations\n );\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 11, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "ProjectTranslationService" + ], + "type": "injectable" + }, + { + "name": "EmbeddedService", + "id": "injectable-EmbeddedService-676867b65091ec0c3731a96beb399f579254e77f2209c5d7edb90e66a27029a8762ce896c1c2dd31148b61133e253f78213c5d7deff9ce6d431f4c7efeb0f383", + "file": "src/assets/wise5/components/embedded/embeddedService.ts", + "properties": [ + { + "name": "defaultHeight", + "defaultValue": "'600px'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 15 + }, + { + "name": "defaultWidth", + "defaultValue": "'100%'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 14 + }, + { + "name": "iframePrefix", + "defaultValue": "'embedded-application-iframe-'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 16 + }, + { + "name": "notifyConnectedComponentSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "notifyConnectedComponentSource$", + "defaultValue": "this.notifyConnectedComponentSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "requestComponentStateSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "requestComponentStateSource$", + "defaultValue": "this.requestComponentStateSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "sendComponentStateSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "sendComponentStateSource$", + "defaultValue": "this.sendComponentStateSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "ComponentService" + } + } + ], + "methods": [ + { + "name": "componentHasWork", + "args": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 73, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "componentStateHasStudentWork", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 77, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "createComponent", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 33, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "createLatestStudentWorkMessage", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 137, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createProjectPathMessage", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 144, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "generateImageFromRenderedComponentState", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 87, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nThe component state has been rendered in a element\nand now we want to take a snapshot of the work.\n", + "description": "

The component state has been rendered in a element\nand now we want to take a snapshot of the work.

\n", + "jsdoctags": [ + { + "name": { + "pos": 2476, + "end": 2490, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2470, + "end": 2475, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The component state that has been rendered.

\n" + }, + { + "tagName": { + "pos": 2541, + "end": 2547, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

A promise that will return an image object.

\n" + } + ] + }, + { + "name": "getComponentTypeLabel", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 29, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getEmbeddedApplicationIframeId", + "args": [ + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 25, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getModelElement", + "args": [ + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 99, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "handleGetParametersMessage", + "args": [ + { + "name": "iframeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 118, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "iframeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "hasComponentStateWithIsCompletedField", + "args": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 53, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "hasComponentStateWithIsCompletedTrue", + "args": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 63, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isCompleted", + "args": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeEvents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 41, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeEvents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "sendMessageToApplication", + "args": [ + { + "name": "iframeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "message", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 111, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "iframeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "message", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "componentHasCorrectAnswer", + "args": [ + { + "name": "component", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 147, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "component", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "componentUsesSaveButton", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 135, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nWhether this component uses a save button\n", + "description": "

Whether this component uses a save button

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 4173, + "end": 4179, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether this component uses a save button

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "componentUsesSubmitButton", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 143, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nWhether this component uses a submit button\n", + "description": "

Whether this component uses a submit button

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 4351, + "end": 4357, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether this component uses a submit button

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "displayAnnotation", + "args": [ + { + "name": "componentContent", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "annotation", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 94, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if we need to display the annotation to the student\n", + "description": "

Check if we need to display the annotation to the student

\n", + "jsdoctags": [ + { + "name": { + "pos": 2753, + "end": 2769, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentContent" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2747, + "end": 2752, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component content

\n" + }, + { + "name": { + "pos": 2804, + "end": 2814, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "annotation" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2798, + "end": 2803, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the annotation

\n" + }, + { + "tagName": { + "pos": 2836, + "end": 2843, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

whether we need to display the annotation to the student

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getDomIdEnding", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 18, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getElementId", + "args": [ + { + "name": "domIdBeginning", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "domIdEnding", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "domIdBeginning", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "domIdEnding", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getStudentDataString", + "args": [ + { + "name": "componentState", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 127, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the human readable student data string\n", + "description": "

Get the human readable student data string

\n", + "jsdoctags": [ + { + "name": { + "pos": 3953, + "end": 3967, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3947, + "end": 3952, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component state

\n" + }, + { + "tagName": { + "pos": 3994, + "end": 4000, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

a human readable student data string

\n", + "returnType": "string" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "hasNodeEnteredEvent", + "args": [ + { + "name": "nodeEvents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 155, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeEvents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "isSubmitRequired", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 151, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "notifyConnectedComponentSubscribers", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 42, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "requestComponentState", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 30, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "sendComponentState", + "args": [ + { + "name": "componentStateWrapper", + "type": "ComponentStateWrapper", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 38, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentStateWrapper", + "type": "ComponentStateWrapper", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "'use strict';\n\nimport $ from 'jquery';\nimport html2canvas from 'html2canvas';\nimport { ComponentService } from '../componentService';\nimport { StudentAssetService } from '../../services/studentAssetService';\nimport { Injectable } from '@angular/core';\nimport { ConfigService } from '../../services/configService';\nimport { copy } from '../../common/object/object';\nimport { convertToPNGFile } from '../../common/canvas/canvas';\n\n@Injectable()\nexport class EmbeddedService extends ComponentService {\n defaultWidth: string = '100%';\n defaultHeight: string = '600px';\n iframePrefix: string = 'embedded-application-iframe-';\n\n constructor(\n protected ConfigService: ConfigService,\n protected StudentAssetService: StudentAssetService\n ) {\n super();\n }\n\n getEmbeddedApplicationIframeId(componentId: string): string {\n return `${this.iframePrefix}-${componentId}`;\n }\n\n getComponentTypeLabel(): string {\n return $localize`Embedded (Custom)`;\n }\n\n createComponent() {\n const component: any = super.createComponent();\n component.type = 'Embedded';\n component.url = '';\n component.height = 600;\n return component;\n }\n\n isCompleted(component: any, componentStates: any[], nodeEvents: any[], node: any) {\n if (componentStates != null) {\n if (\n this.hasComponentStateWithIsCompletedField(componentStates) &&\n this.hasComponentStateWithIsCompletedTrue(componentStates)\n ) {\n return true;\n }\n }\n return this.hasNodeEnteredEvent(nodeEvents);\n }\n\n hasComponentStateWithIsCompletedField(componentStates: any[]) {\n for (const componentState of componentStates) {\n const studentData = componentState.studentData;\n if (studentData != null && studentData.isCompleted != null) {\n return true;\n }\n }\n return false;\n }\n\n hasComponentStateWithIsCompletedTrue(componentStates: any[]) {\n for (const componentState of componentStates) {\n const studentData = componentState.studentData;\n if (studentData != null && studentData.isCompleted === true) {\n return true;\n }\n }\n return false;\n }\n\n componentHasWork(component: any): boolean {\n return component.hasWork;\n }\n\n componentStateHasStudentWork(componentState: any, componentContent: any) {\n return componentState.studentData != null;\n }\n\n /**\n * The component state has been rendered in a element\n * and now we want to take a snapshot of the work.\n * @param componentState The component state that has been rendered.\n * @return A promise that will return an image object.\n */\n generateImageFromRenderedComponentState(componentState: any) {\n const modelElement = this.getModelElement(componentState.componentId);\n return new Promise((resolve, reject) => {\n html2canvas(modelElement as HTMLElement).then((canvas) => {\n const pngFile = convertToPNGFile(canvas);\n this.StudentAssetService.uploadAsset(pngFile).then((asset) => {\n resolve(asset);\n });\n });\n });\n }\n\n getModelElement(componentId: string) {\n const iframeId = this.getEmbeddedApplicationIframeId(componentId);\n const iframe = $(`#${iframeId}`);\n if (iframe != null && iframe.length > 0) {\n const modelElement: any = iframe.contents().find('html');\n if (modelElement != null && modelElement.length > 0) {\n return modelElement[0];\n }\n }\n return null;\n }\n\n sendMessageToApplication(iframeId: string, message: any): void {\n (window.document.getElementById(iframeId) as HTMLIFrameElement).contentWindow.postMessage(\n message,\n '*'\n );\n }\n\n handleGetParametersMessage(\n iframeId: string,\n nodeId: string,\n componentId: string,\n componentContent: any\n ): void {\n let parameters: any = {};\n if (componentContent.parameters != null) {\n parameters = copy(componentContent.parameters);\n }\n parameters.nodeId = nodeId;\n parameters.componentId = componentId;\n const message = {\n messageType: 'parameters',\n parameters: parameters\n };\n this.sendMessageToApplication(iframeId, message);\n }\n\n createLatestStudentWorkMessage(componentState: any): any {\n return {\n messageType: 'latestStudentWork',\n latestStudentWork: componentState\n };\n }\n\n createProjectPathMessage(): any {\n return {\n messageType: 'projectPath',\n projectPath: this.ConfigService.getConfigParam('projectBaseURL'),\n projectAssetsPath: this.ConfigService.getConfigParam('projectBaseURL') + 'assets'\n };\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "ConfigService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "StudentAssetService", + "type": "StudentAssetService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 16, + "jsdoctags": [ + { + "name": "ConfigService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "StudentAssetService", + "type": "StudentAssetService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "ComponentService" + ], + "type": "injectable" + }, + { + "name": "GenerateImageService", + "id": "injectable-GenerateImageService-bf249c9b4f7f3f16959df57b7a43801504bba9c17ea60385e8dd0646eba440cddc1ea72bdb30464f61f2b8ebc7fb94a107d47e3ae9f138023e1b172f0dc31e9e", + "file": "src/assets/wise5/services/generateImageService.ts", + "properties": [], + "methods": [ + { + "name": "generateImageFromComponentState", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 19, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Injectable } from '@angular/core';\nimport { StudentDataService } from './studentDataService';\nimport { MatDialog } from '@angular/material/dialog';\nimport { GenerateImageDialogComponent } from '../directives/generate-image-dialog/generate-image-dialog.component';\n\n@Injectable({ providedIn: 'root' })\nexport class GenerateImageService {\n constructor(\n private dataService: StudentDataService,\n private dialog: MatDialog\n ) {\n this.dataService.generateImageRequest$.subscribe((componentState) => {\n this.generateImageFromComponentState(componentState).then((image) => {\n this.dataService.generateImageResponse(image);\n });\n });\n }\n\n generateImageFromComponentState(componentState: any): any {\n const dialogRef = this.dialog.open(GenerateImageDialogComponent, {\n data: componentState\n });\n return new Promise((resolve, reject) => {\n dialogRef.afterClosed().subscribe((result) => {\n resolve(result);\n });\n });\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "dataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 7, + "jsdoctags": [ + { + "name": "dataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "type": "injectable" + }, + { + "name": "GetWorkgroupService", + "id": "injectable-GetWorkgroupService-4918f0618a6131621755c47fde68ccb06a9172d489655e017e9e730b013f026285ff17baf7da7cc763924ce1956a6d1f054272650a3d4dbace8e51f043a82b91", + "file": "src/app/services/getWorkgroupService.ts", + "properties": [], + "methods": [ + { + "name": "getAllWorkgroupsInPeriod", + "args": [ + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 9, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { ConfigService } from '../../assets/wise5/services/configService';\n\n@Injectable()\nexport class GetWorkgroupService {\n constructor(private ConfigService: ConfigService, private http: HttpClient) {}\n\n getAllWorkgroupsInPeriod(periodId: number) {\n return this.http.get(\n `/api/teacher/run/${this.ConfigService.getRunId()}/period/${periodId}/workgroups`\n );\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "ConfigService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 6, + "jsdoctags": [ + { + "name": "ConfigService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "type": "injectable" + }, + { + "name": "GradingNodeService", + "id": "injectable-GradingNodeService-6a9cac1ab2da654ccebbf3de9fcb2fdfe7d36a9b9856dedf8807ac627b3c5f6beeb3a0fdb25f1ac2110a2c256a56baed13cba6d61f0179093beb9beb365599b9", + "file": "src/assets/wise5/services/gradingNodeService.ts", + "properties": [ + { + "name": "componentShowSubmitButtonValueChanged$", + "defaultValue": "this.componentShowSubmitButtonValueChangedSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "Observable", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "TeacherNodeService" + } + }, + { + "name": "componentShowSubmitButtonValueChangedSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "TeacherNodeService" + } + }, + { + "name": "deleteStarterState$", + "defaultValue": "this.deleteStarterStateSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "Observable", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "TeacherNodeService" + } + }, + { + "name": "deleteStarterStateSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "TeacherNodeService" + } + }, + { + "name": "starterStateResponse$", + "defaultValue": "this.starterStateResponseSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "Observable", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "TeacherNodeService" + } + }, + { + "name": "starterStateResponseSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "TeacherNodeService" + } + }, + { + "name": "doneRenderingComponent$", + "defaultValue": "this.doneRenderingComponentSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "NodeService" + } + }, + { + "name": "doneRenderingComponentSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "NodeService" + } + }, + { + "name": "nodeSubmitClicked$", + "defaultValue": "this.nodeSubmitClickedSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "Observable", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "NodeService" + } + }, + { + "name": "nodeSubmitClickedSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "NodeService" + } + } + ], + "methods": [ + { + "name": "getNextNodeId", + "args": [ + { + "name": "currentId", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 6, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "currentId", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "NodeService" + } + }, + { + "name": "getPrevNodeId", + "args": [ + { + "name": "currentId", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 15, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "currentId", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "NodeService" + } + }, + { + "name": "broadcastComponentShowSubmitButtonValueChanged", + "args": [ + { + "name": "args", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 28, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "args", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TeacherNodeService" + } + }, + { + "name": "deleteStarterState", + "args": [ + { + "name": "args", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 32, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "args", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TeacherNodeService" + } + }, + { + "name": "respondStarterState", + "args": [ + { + "name": "args", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 36, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "args", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TeacherNodeService" + } + }, + { + "name": "broadcastDoneRenderingComponent", + "args": [ + { + "name": "nodeIdAndComponentId", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 55, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeIdAndComponentId", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "NodeService" + } + }, + { + "name": "broadcastNodeSubmitClicked", + "args": [ + { + "name": "args", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 51, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "args", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "NodeService" + } + }, + { + "name": "closeNode", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 43, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "NodeService" + } + }, + { + "name": "goToNextNode", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "NodeService" + } + }, + { + "name": "goToPrevNode", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 37, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "NodeService" + } + }, + { + "name": "setCurrentNode", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "NodeService" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Injectable } from '@angular/core';\nimport { TeacherNodeService } from './teacherNodeService';\n\n@Injectable()\nexport class GradingNodeService extends TeacherNodeService {\n getNextNodeId(currentId = null): Promise {\n return super.getNextNodeId(currentId).then((nextNodeId: string) => {\n if (!nextNodeId) return null;\n return this.projectService.nodeHasWork(nextNodeId)\n ? nextNodeId\n : this.getNextNodeId(nextNodeId);\n });\n }\n\n getPrevNodeId(currentId = null) {\n const prevNodeId = super.getPrevNodeId(currentId);\n if (!prevNodeId) return null;\n return this.projectService.nodeHasWork(prevNodeId)\n ? prevNodeId\n : this.getPrevNodeId(prevNodeId);\n }\n}\n", + "extends": [ + "TeacherNodeService" + ], + "type": "injectable" + }, + { + "name": "GraphService", + "id": "injectable-GraphService-4cd119a8b40e175f00206ef0d1fcfb5a6f65a862a3ae1e43b7abb3b5924bbb2e33896a6b09cc176e8043000bc622828556b834ee0693a42602c18aa39f158de3", + "file": "src/assets/wise5/components/graph/graphService.ts", + "properties": [ + { + "name": "seriesColors", + "defaultValue": "['blue', 'red', 'green', 'orange', 'purple', 'black']", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 14 + }, + { + "name": "notifyConnectedComponentSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "notifyConnectedComponentSource$", + "defaultValue": "this.notifyConnectedComponentSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "requestComponentStateSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "requestComponentStateSource$", + "defaultValue": "this.requestComponentStateSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "sendComponentStateSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "sendComponentStateSource$", + "defaultValue": "this.sendComponentStateSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "ComponentService" + } + } + ], + "methods": [ + { + "name": "anySeriesHasDataPoint", + "args": [ + { + "name": "multipleSeries", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 276, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if an array of series has any data point\n", + "description": "

Check if an array of series has any data point

\n", + "jsdoctags": [ + { + "name": { + "pos": 7667, + "end": 7681, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "multipleSeries" + }, + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 7661, + "end": 7666, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

an array of series

\n" + }, + { + "tagName": { + "pos": 7707, + "end": 7713, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether any of the series has a data point

\n" + } + ] + }, + { + "name": "anyTrialHasDataPoint", + "args": [ + { + "name": "trials", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 248, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if any of the trials contains a data point\n", + "description": "

Check if any of the trials contains a data point

\n", + "jsdoctags": [ + { + "name": { + "pos": 6968, + "end": 6974, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "trials" + }, + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 6962, + "end": 6967, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

an array of trials

\n" + }, + { + "tagName": { + "pos": 7000, + "end": 7006, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether any of the trials contains a data point

\n" + } + ] + }, + { + "name": "canEdit", + "args": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 130, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nDetermine if the student can perform any work on this component.\n", + "description": "

Determine if the student can perform any work on this component.

\n", + "jsdoctags": [ + { + "name": { + "pos": 3495, + "end": 3504, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "component" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3489, + "end": 3494, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The component content.

\n" + }, + { + "tagName": { + "pos": 3534, + "end": 3540, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

Whether the student can perform any work on this component.

\n" + } + ] + }, + { + "name": "combineSeriesNameXTextYText", + "args": [ + { + "name": "seriesName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "xText", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "yText", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 438, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "seriesName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "xText", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "yText", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "componentStateHasStudentWork", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 167, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "createComponent", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 32, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCreate a Graph component object\n", + "description": "

Create a Graph component object

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 909, + "end": 916, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

a new Graph component object

\n" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "createTooltipFormatter", + "args": [ + { + "name": "xAxis", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "yAxis", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "roundValuesTo", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 322, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "xAxis", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "yAxis", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "roundValuesTo", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "generateImageFromRenderedComponentState", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 302, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nThe component state has been rendered in a element\nand now we want to take a snapshot of the work.\n", + "description": "

The component state has been rendered in a element\nand now we want to take a snapshot of the work.

\n", + "jsdoctags": [ + { + "name": { + "pos": 8411, + "end": 8425, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 8405, + "end": 8410, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The component state that has been rendered.

\n" + }, + { + "tagName": { + "pos": 8476, + "end": 8482, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

A promise that will return an image object.

\n" + } + ] + }, + { + "name": "getAxisTextForLimitGraph", + "args": [ + { + "name": "series", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "num", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "axisName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "axisObj", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "roundValuesTo", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 392, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "series", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "num", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "axisName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "axisObj", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "roundValuesTo", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getAxisTitle", + "args": [ + { + "name": "series", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "axisObj", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 405, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "series", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "axisObj", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getAxisUnits", + "args": [ + { + "name": "series", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "axisName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "axisObj", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 536, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "series", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "axisName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "axisObj", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getBoldText", + "args": [ + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 388, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getCategoriesAxisTypeTooltip", + "args": [ + { + "name": "point", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "series", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "xAxis", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "yAxis", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "roundValuesTo", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 452, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "point", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "series", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "xAxis", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "yAxis", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "roundValuesTo", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getCategoryByIndex", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "xAxis", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 495, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "xAxis", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getClassmateStudentWork", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "showWorkNodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "showWorkComponentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "showClassmateWorkSource", + "type": "\"period\" | \"class\"", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 574, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "showWorkNodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "showWorkComponentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "showClassmateWorkSource", + "type": "\"period\" | \"class\"", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getComponentTypeLabel", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 24, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getHighchartsDiv", + "args": [ + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 314, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getLimitAxisTypeTooltip", + "args": [ + { + "name": "point", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "series", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "xAxis", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "yAxis", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "roundValuesTo", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 358, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "point", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "series", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "xAxis", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "yAxis", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "roundValuesTo", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getPlotBandsFromTrials", + "args": [ + { + "name": "trials", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 554, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "trials", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getPointDisplay", + "args": [ + { + "name": "label", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "value", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "units", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 434, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "label", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "value", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "units", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getSeriesColor", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 318, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getSeriesFromTrials", + "args": [ + { + "name": "trials", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 564, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "trials", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getTooltipHeader", + "args": [ + { + "name": "point", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "series", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "yAxis", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 371, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "point", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "series", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "yAxis", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getValueForLimitGraph", + "args": [ + { + "name": "series", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "num", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "roundValuesTo", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 422, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "series", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "num", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "roundValuesTo", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getXTextForCategoriesGraph", + "args": [ + { + "name": "series", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "point", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "x", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "xAxis", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "roundValuesTo", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 471, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "series", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "point", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "x", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "xAxis", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "roundValuesTo", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getXValueForCategoriesGraph", + "args": [ + { + "name": "point", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "x", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "xAxis", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "roundValuesTo", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 484, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "point", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "x", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "xAxis", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "roundValuesTo", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getYTextForCategoriesGraph", + "args": [ + { + "name": "series", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "y", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "axis", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "roundValuesTo", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 502, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "series", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "y", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "axis", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "roundValuesTo", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "hasCompletedComponentState", + "args": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 100, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "hasComponentStates", + "args": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 112, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "hasSeriesData", + "args": [ + { + "name": "studentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 140, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "hasSubmitComponentState", + "args": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 116, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "hasTrialData", + "args": [ + { + "name": "studentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 152, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isCategoriesXAxisType", + "args": [ + { + "name": "xAxis", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 354, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "xAxis", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isCompleted", + "args": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeEvents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 92, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeEvents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "isLimitXAxisType", + "args": [ + { + "name": "xAxis", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 350, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "xAxis", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isStudentChangedAxisLimit", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 207, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if the student has changed any of the axis limits\n", + "description": "

Check if the student has changed any of the axis limits

\n", + "jsdoctags": [ + { + "name": { + "pos": 5594, + "end": 5608, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 5588, + "end": 5593, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component state

\n" + }, + { + "name": { + "pos": 5641, + "end": 5657, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentContent" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 5635, + "end": 5640, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component content

\n" + }, + { + "tagName": { + "pos": 5686, + "end": 5692, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether the student has changed any of the axis limits

\n" + } + ] + }, + { + "name": "isStudentDataHasWork", + "args": [ + { + "name": "studentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 180, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isXAxisChanged", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 219, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isYAxisChanged", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 231, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "performRounding", + "args": [ + { + "name": "number", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "roundValuesTo", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 509, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "number", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "roundValuesTo", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "pointHasCustomTooltip", + "args": [ + { + "name": "point", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 550, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "point", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "roundToNearest", + "args": [ + { + "name": "x", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "divisor", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 532, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "x", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "divisor", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "roundToNearestHundredth", + "args": [ + { + "name": "x", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 528, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "x", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "roundToNearestInteger", + "args": [ + { + "name": "x", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 520, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "x", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "roundToNearestTenth", + "args": [ + { + "name": "x", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 524, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "x", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "seriesHasDataPoint", + "args": [ + { + "name": "singleSeries", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 292, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if a series has a data point\n", + "description": "

Check if a series has a data point

\n", + "jsdoctags": [ + { + "name": { + "pos": 8078, + "end": 8090, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "singleSeries" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 8072, + "end": 8077, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

a series object

\n" + }, + { + "tagName": { + "pos": 8113, + "end": 8119, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether the series object has any data points

\n" + } + ] + }, + { + "name": "trialHasDataPoint", + "args": [ + { + "name": "trial", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 262, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if a trial has a data point\n", + "description": "

Check if a trial has a data point

\n", + "jsdoctags": [ + { + "name": { + "pos": 7293, + "end": 7298, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "trial" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 7287, + "end": 7292, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

a trial object which can contain multiple series

\n" + }, + { + "tagName": { + "pos": 7354, + "end": 7360, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether the trial contains a data point

\n" + } + ] + }, + { + "name": "componentHasCorrectAnswer", + "args": [ + { + "name": "component", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 147, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "component", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "componentHasWork", + "args": [ + { + "name": "component", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 105, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nWhether this component generates student work\nis not provided, we will use the default value of whether the\ncomponent type usually has work.\n", + "description": "

Whether this component generates student work\nis not provided, we will use the default value of whether the\ncomponent type usually has work.

\n", + "jsdoctags": [ + { + "name": { + "pos": 3060, + "end": 3069, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "component" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3054, + "end": 3059, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

(optional) the component object. if the component object\nis not provided, we will use the default value of whether the\ncomponent type usually has work.

\n" + }, + { + "tagName": { + "pos": 3238, + "end": 3244, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether this component generates student work

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "componentUsesSaveButton", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 135, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nWhether this component uses a save button\n", + "description": "

Whether this component uses a save button

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 4173, + "end": 4179, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether this component uses a save button

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "componentUsesSubmitButton", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 143, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nWhether this component uses a submit button\n", + "description": "

Whether this component uses a submit button

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 4351, + "end": 4357, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether this component uses a submit button

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "displayAnnotation", + "args": [ + { + "name": "componentContent", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "annotation", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 94, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if we need to display the annotation to the student\n", + "description": "

Check if we need to display the annotation to the student

\n", + "jsdoctags": [ + { + "name": { + "pos": 2753, + "end": 2769, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentContent" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2747, + "end": 2752, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component content

\n" + }, + { + "name": { + "pos": 2804, + "end": 2814, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "annotation" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2798, + "end": 2803, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the annotation

\n" + }, + { + "tagName": { + "pos": 2836, + "end": 2843, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

whether we need to display the annotation to the student

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getDomIdEnding", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 18, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getElementId", + "args": [ + { + "name": "domIdBeginning", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "domIdEnding", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "domIdBeginning", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "domIdEnding", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getStudentDataString", + "args": [ + { + "name": "componentState", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 127, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the human readable student data string\n", + "description": "

Get the human readable student data string

\n", + "jsdoctags": [ + { + "name": { + "pos": 3953, + "end": 3967, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3947, + "end": 3952, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component state

\n" + }, + { + "tagName": { + "pos": 3994, + "end": 4000, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

a human readable student data string

\n", + "returnType": "string" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "hasNodeEnteredEvent", + "args": [ + { + "name": "nodeEvents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 155, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeEvents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "isSubmitRequired", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 151, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "notifyConnectedComponentSubscribers", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 42, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "requestComponentState", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 30, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "sendComponentState", + "args": [ + { + "name": "componentStateWrapper", + "type": "ComponentStateWrapper", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 38, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentStateWrapper", + "type": "ComponentStateWrapper", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "'use strict';\n\nimport html2canvas from 'html2canvas';\nimport { Injectable } from '@angular/core';\nimport { ComponentService } from '../componentService';\nimport { StudentAssetService } from '../../services/studentAssetService';\nimport { ConfigService } from '../../services/configService';\nimport { HttpClient } from '@angular/common/http';\nimport { convertToPNGFile } from '../../common/canvas/canvas';\nimport { hasConnectedComponent } from '../../common/ComponentContent';\n\n@Injectable()\nexport class GraphService extends ComponentService {\n seriesColors: string[] = ['blue', 'red', 'green', 'orange', 'purple', 'black'];\n\n constructor(\n private configService: ConfigService,\n private http: HttpClient,\n private StudentAssetService: StudentAssetService\n ) {\n super();\n }\n\n getComponentTypeLabel(): string {\n return $localize`Graph`;\n }\n\n /**\n * Create a Graph component object\n * @returns a new Graph component object\n */\n createComponent() {\n const component: any = super.createComponent();\n component.type = 'Graph';\n component.title = '';\n component.width = 800;\n component.height = 500;\n component.enableTrials = false;\n component.canCreateNewTrials = false;\n component.canDeleteTrials = false;\n component.hideAllTrialsOnNewTrial = false;\n component.canStudentHideSeriesOnLegendClick = false;\n component.roundValuesTo = 'integer';\n component.graphType = 'line';\n component.xAxis = {\n title: {\n text: $localize`Time (seconds)`,\n useHTML: true\n },\n min: 0,\n max: 100,\n units: $localize`s`,\n locked: true,\n type: 'limits',\n allowDecimals: false\n };\n component.yAxis = {\n title: {\n text: $localize`Position (meters)`,\n useHTML: true,\n style: {\n color: null\n }\n },\n labels: {\n style: {\n color: null\n }\n },\n min: 0,\n max: 100,\n units: $localize`m`,\n locked: true,\n allowDecimals: false\n };\n component.series = [\n {\n name: $localize`Prediction`,\n data: [],\n color: 'blue',\n dashStyle: 'Solid',\n marker: {\n symbol: 'circle'\n },\n canEdit: true,\n type: 'line'\n }\n ];\n return component;\n }\n\n isCompleted(component: any, componentStates: any[], nodeEvents: any[], node: any) {\n if (this.canEdit(component)) {\n return this.hasCompletedComponentState(componentStates, node, component);\n } else {\n return this.hasNodeEnteredEvent(nodeEvents);\n }\n }\n\n hasCompletedComponentState(componentStates: any[], node: any, component: any) {\n if (this.hasComponentStates(componentStates)) {\n if (this.isSubmitRequired(node, component)) {\n return this.hasSubmitComponentState(componentStates);\n } else {\n const latestComponentState = componentStates[componentStates.length - 1];\n return this.componentStateHasStudentWork(latestComponentState);\n }\n }\n return false;\n }\n\n hasComponentStates(componentStates: any[]) {\n return componentStates != null && componentStates.length > 0;\n }\n\n hasSubmitComponentState(componentStates: any[]) {\n for (const componentState of componentStates) {\n if (componentState.isSubmit && this.componentStateHasStudentWork(componentState)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Determine if the student can perform any work on this component.\n * @param component The component content.\n * @return Whether the student can perform any work on this component.\n */\n canEdit(component: any): boolean {\n const series = component.series;\n for (const singleSeries of series) {\n if (singleSeries.canEdit) {\n return true;\n }\n }\n return hasConnectedComponent(component, 'importWork');\n }\n\n hasSeriesData(studentData: any) {\n const series = studentData.series;\n if (series != null) {\n for (const singleSeries of series) {\n if (singleSeries.data != null && singleSeries.data.length > 0) {\n return true;\n }\n }\n }\n return false;\n }\n\n hasTrialData(studentData: any) {\n const trials = studentData.trials;\n if (trials != null) {\n for (const trial of trials) {\n for (const singleSeries of trial.series) {\n const seriesData = singleSeries.data;\n if (seriesData.length > 0) {\n return true;\n }\n }\n }\n }\n return false;\n }\n\n componentStateHasStudentWork(componentState: any, componentContent: any = null) {\n if (componentState != null) {\n const studentData = componentState.studentData;\n if (studentData != null && this.isStudentDataHasWork(studentData)) {\n return true;\n }\n if (this.isStudentChangedAxisLimit(componentState, componentContent)) {\n return true;\n }\n }\n return false;\n }\n\n isStudentDataHasWork(studentData: any) {\n if (studentData.version == 1) {\n /*\n * this is the old graph student data format where the\n * student data can contain multiple series.\n */\n if (this.anySeriesHasDataPoint(studentData.series)) {\n return true;\n }\n } else {\n /*\n * this is the new graph student data format where the student data can contain multiple\n * trials and each trial can contain multiple series.\n */\n if (this.anyTrialHasDataPoint(studentData.trials)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Check if the student has changed any of the axis limits\n * @param componentState the component state\n * @param componentContent the component content\n * @return whether the student has changed any of the axis limits\n */\n isStudentChangedAxisLimit(componentState: any, componentContent: any) {\n if (componentState != null && componentState.studentData != null && componentContent != null) {\n if (\n this.isXAxisChanged(componentState, componentContent) ||\n this.isYAxisChanged(componentState, componentContent)\n ) {\n return true;\n }\n }\n return false;\n }\n\n isXAxisChanged(componentState: any, componentContent: any) {\n if (componentState.studentData.xAxis != null && componentContent.xAxis != null) {\n if (\n componentState.studentData.xAxis.min != componentContent.xAxis.min ||\n componentState.studentData.xAxis.max != componentContent.xAxis.max\n ) {\n return true;\n }\n }\n return false;\n }\n\n isYAxisChanged(componentState: any, componentContent: any) {\n if (componentState.studentData.yAxis != null && componentContent.yAxis != null) {\n if (\n componentState.studentData.yAxis.min != componentContent.yAxis.min ||\n componentState.studentData.yAxis.max != componentContent.yAxis.max\n ) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Check if any of the trials contains a data point\n * @param trials an array of trials\n * @return whether any of the trials contains a data point\n */\n anyTrialHasDataPoint(trials: any[]) {\n for (const trial of trials) {\n if (this.trialHasDataPoint(trial)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Check if a trial has a data point\n * @param trial a trial object which can contain multiple series\n * @return whether the trial contains a data point\n */\n trialHasDataPoint(trial: any) {\n for (const singleSeries of trial.series) {\n if (this.seriesHasDataPoint(singleSeries)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Check if an array of series has any data point\n * @param multipleSeries an array of series\n * @return whether any of the series has a data point\n */\n anySeriesHasDataPoint(multipleSeries: any[]) {\n if (multipleSeries != null) {\n for (const singleSeries of multipleSeries) {\n if (this.seriesHasDataPoint(singleSeries)) {\n return true;\n }\n }\n }\n return false;\n }\n\n /**\n * Check if a series has a data point\n * @param singleSeries a series object\n * @return whether the series object has any data points\n */\n seriesHasDataPoint(singleSeries: any) {\n return singleSeries.data.length > 0;\n }\n\n /**\n * The component state has been rendered in a element\n * and now we want to take a snapshot of the work.\n * @param componentState The component state that has been rendered.\n * @return A promise that will return an image object.\n */\n generateImageFromRenderedComponentState(componentState: any) {\n return new Promise((resolve, reject) => {\n const highchartsDiv = this.getHighchartsDiv(componentState.componentId);\n html2canvas(highchartsDiv as HTMLElement).then((canvas) => {\n const pngFile = convertToPNGFile(canvas);\n this.StudentAssetService.uploadAsset(pngFile).then((asset) => {\n resolve(asset);\n });\n });\n });\n }\n\n getHighchartsDiv(componentId: string) {\n return document.querySelector(`#chart_${componentId} .highcharts-container`);\n }\n\n getSeriesColor(index: number): string {\n return this.seriesColors[index];\n }\n\n createTooltipFormatter(xAxis: any, yAxis: any, roundValuesTo: string): any {\n const thisGraphService = this;\n return function () {\n let text = '';\n if (thisGraphService.isLimitXAxisType(xAxis)) {\n text = thisGraphService.getLimitAxisTypeTooltip(\n this,\n this.series,\n xAxis,\n yAxis,\n roundValuesTo\n );\n } else if (thisGraphService.isCategoriesXAxisType(xAxis)) {\n text = thisGraphService.getCategoriesAxisTypeTooltip(\n this,\n this.series,\n xAxis,\n yAxis,\n roundValuesTo\n );\n }\n if (thisGraphService.pointHasCustomTooltip(this.point)) {\n text += '
' + this.point.tooltip;\n }\n return text;\n };\n }\n\n isLimitXAxisType(xAxis: any): boolean {\n return xAxis.type === 'limits' || xAxis.type == null;\n }\n\n isCategoriesXAxisType(xAxis: any): boolean {\n return xAxis.type === 'categories';\n }\n\n getLimitAxisTypeTooltip(\n point: any,\n series: any,\n xAxis: any,\n yAxis: any,\n roundValuesTo: string\n ): string {\n const tooltipHeader = this.getTooltipHeader(point, series, yAxis);\n const xText = this.getAxisTextForLimitGraph(series, point.x, 'xAxis', xAxis, roundValuesTo);\n const yText = this.getAxisTextForLimitGraph(series, point.y, 'yAxis', yAxis, roundValuesTo);\n return this.combineSeriesNameXTextYText(tooltipHeader, xText, yText);\n }\n\n getTooltipHeader(point: any, series: any, yAxis: any): string {\n let tooltipHeader = '';\n if (point.point.tooltipHeader) {\n tooltipHeader = point.point.tooltipHeader;\n } else {\n const yAxisLabel = this.getAxisTitle(series, yAxis);\n const seriesName = series.name;\n if (yAxisLabel !== seriesName) {\n tooltipHeader = seriesName;\n }\n }\n if (tooltipHeader !== '') {\n tooltipHeader = this.getBoldText(tooltipHeader);\n }\n return tooltipHeader;\n }\n\n getBoldText(text: string): string {\n return `${text}`;\n }\n\n getAxisTextForLimitGraph(\n series: any,\n num: number,\n axisName: string,\n axisObj: any,\n roundValuesTo: string\n ): string {\n const label = this.getAxisTitle(series, axisObj);\n const value = this.getValueForLimitGraph(series, num, roundValuesTo);\n const units = this.getAxisUnits(series, axisName, axisObj);\n return this.getPointDisplay(label, value, units);\n }\n\n getAxisTitle(series: any, axisObj: any): string {\n if (Array.isArray(axisObj)) {\n const axisIndex = series.options.yAxis == null ? series.index : series.options.yAxis;\n if (axisObj[axisIndex] != null) {\n if (axisObj[axisIndex].title.text == null || axisObj[axisIndex].title.text === '') {\n return series.name;\n } else {\n return axisObj[axisIndex].title.text;\n }\n }\n } else if (axisObj.title.text == null || axisObj.title.text === '') {\n return series.name;\n } else {\n return axisObj.title.text;\n }\n }\n\n getValueForLimitGraph(series: any, num: number, roundValuesTo: string): any {\n if (\n series.data[num] != null &&\n series.data[num].category === num &&\n series.data[num].name != null\n ) {\n return series.data[num].name;\n } else {\n return this.performRounding(num, roundValuesTo);\n }\n }\n\n getPointDisplay(label: string, value: any, units: string): string {\n return `${label}: ${value} ${units}`;\n }\n\n combineSeriesNameXTextYText(seriesName: string, xText: string, yText: string): string {\n let text = '';\n if (seriesName !== '') {\n text += seriesName + '
';\n }\n if (xText !== '') {\n text += xText + '
';\n }\n if (yText !== '') {\n text += yText + '
';\n }\n return text;\n }\n\n getCategoriesAxisTypeTooltip(\n point: any,\n series: any,\n xAxis: any,\n yAxis: any,\n roundValuesTo: string\n ): string {\n const tooltipHeader = this.getTooltipHeader(point, series, yAxis);\n const xText = this.getXTextForCategoriesGraph(\n series,\n point.point,\n point.x,\n xAxis,\n roundValuesTo\n );\n const yText = this.getYTextForCategoriesGraph(series, point.y, yAxis, roundValuesTo);\n return this.combineSeriesNameXTextYText(tooltipHeader, xText, yText);\n }\n\n getXTextForCategoriesGraph(\n series: any,\n point: any,\n x: number,\n xAxis: any,\n roundValuesTo: string\n ): string {\n const label = xAxis.title.text;\n const value = this.getXValueForCategoriesGraph(point, x, xAxis, roundValuesTo);\n const units = this.getAxisUnits(series, xAxis.name, xAxis);\n return this.getPointDisplay(label, value, units);\n }\n\n getXValueForCategoriesGraph(point: any, x: number, xAxis: any, roundValuesTo: string): any {\n const category = this.getCategoryByIndex(point.index, xAxis);\n if (category != null) {\n return category;\n } else if (point.category === x && point.name != null) {\n return point.name;\n } else {\n return this.performRounding(x, roundValuesTo);\n }\n }\n\n getCategoryByIndex(index: number, xAxis: any): string {\n if (xAxis != null && xAxis.categories != null && index < xAxis.categories.length) {\n return xAxis.categories[index];\n }\n return null;\n }\n\n getYTextForCategoriesGraph(series: any, y: number, axis: any, roundValuesTo: string): string {\n const label = this.getAxisTitle(series, axis);\n const value = this.performRounding(y, roundValuesTo);\n const units = this.getAxisUnits(series, axis.name, axis);\n return this.getPointDisplay(label, value, units);\n }\n\n performRounding(number: number, roundValuesTo: string): number {\n if (roundValuesTo === 'integer') {\n number = this.roundToNearestInteger(number);\n } else if (roundValuesTo === 'tenth') {\n number = this.roundToNearestTenth(number);\n } else if (roundValuesTo === 'hundredth') {\n number = this.roundToNearestHundredth(number);\n }\n return number;\n }\n\n roundToNearestInteger(x): number {\n return Math.round(parseFloat(x));\n }\n\n roundToNearestTenth(x): number {\n return this.roundToNearest(x, 10);\n }\n\n roundToNearestHundredth(x): number {\n return this.roundToNearest(x, 100);\n }\n\n roundToNearest(x: any, divisor: number): number {\n return Math.round(parseFloat(x) * divisor) / divisor;\n }\n\n getAxisUnits(series: any, axisName: string, axisObj: any): string {\n if (\n series[axisName] != null &&\n series[axisName].userOptions != null &&\n series[axisName].userOptions.units != null\n ) {\n return series[axisName].userOptions.units;\n } else if (axisObj.units != null) {\n return axisObj.units;\n } else {\n return '';\n }\n }\n\n pointHasCustomTooltip(point: any): boolean {\n return point.tooltip != null && point.tooltip !== '';\n }\n\n getPlotBandsFromTrials(trials: any[]): any[] {\n let trialPlotBands = [];\n for (const trial of trials) {\n if (trial.show && trial.xAxis != null && trial.xAxis.plotBands != null) {\n trialPlotBands = trialPlotBands.concat(trial.xAxis.plotBands);\n }\n }\n return trialPlotBands;\n }\n\n getSeriesFromTrials(trials: any[]): any[] {\n let series = [];\n for (const trial of trials) {\n if (trial.show) {\n series = series.concat(trial.series);\n }\n }\n return series;\n }\n\n getClassmateStudentWork(\n nodeId: string,\n componentId: string,\n periodId: number,\n showWorkNodeId: string,\n showWorkComponentId: string,\n showClassmateWorkSource: 'period' | 'class'\n ) {\n const runId = this.configService.getRunId();\n if (showClassmateWorkSource === 'period') {\n return this.http.get(\n `/api/classmate/graph/student-work/${runId}/${nodeId}/${componentId}/${showWorkNodeId}/${showWorkComponentId}/period/${periodId}`\n );\n } else {\n return this.http.get(\n `/api/classmate/graph/student-work/${runId}/${nodeId}/${componentId}/${showWorkNodeId}/${showWorkComponentId}/class`\n );\n }\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "StudentAssetService", + "type": "StudentAssetService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 14, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "StudentAssetService", + "type": "StudentAssetService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "ComponentService" + ], + "type": "injectable" + }, + { + "name": "HTMLService", + "id": "injectable-HTMLService-1f4ad34ef7e1a57d07dd2cea51d9cdee2c94b8edd47629da2345067bc559756db4812f612f96b3e02f0c642315a8e07f64cee25a0f40334f260b5c4e469fa964", + "file": "src/assets/wise5/components/html/htmlService.ts", + "properties": [ + { + "name": "notifyConnectedComponentSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "notifyConnectedComponentSource$", + "defaultValue": "this.notifyConnectedComponentSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "requestComponentStateSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "requestComponentStateSource$", + "defaultValue": "this.requestComponentStateSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "sendComponentStateSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "sendComponentStateSource$", + "defaultValue": "this.sendComponentStateSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "ComponentService" + } + } + ], + "methods": [ + { + "name": "componentHasWork", + "args": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 28, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "componentUsesSaveButton", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 32, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "componentUsesSubmitButton", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 36, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "createComponent", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 10, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getComponentTypeLabel", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 6, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "isCompleted", + "args": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeEvents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 17, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeEvents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "componentHasCorrectAnswer", + "args": [ + { + "name": "component", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 147, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "component", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "componentStateHasStudentWork", + "args": [ + { + "name": "componentState", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentContent", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 118, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if the component state has student work. Sometimes a component\nstate may be created if the student visits a component but doesn't\nactually perform any work. This is where we will check if the student\nactually performed any work.\n", + "description": "

Check if the component state has student work. Sometimes a component\nstate may be created if the student visits a component but doesn't\nactually perform any work. This is where we will check if the student\nactually performed any work.

\n", + "jsdoctags": [ + { + "name": { + "pos": 3634, + "end": 3648, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3628, + "end": 3633, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component state object

\n" + }, + { + "name": { + "pos": 3688, + "end": 3704, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentContent" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3682, + "end": 3687, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component content

\n" + }, + { + "tagName": { + "pos": 3733, + "end": 3739, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether the component state has any work

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "displayAnnotation", + "args": [ + { + "name": "componentContent", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "annotation", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 94, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if we need to display the annotation to the student\n", + "description": "

Check if we need to display the annotation to the student

\n", + "jsdoctags": [ + { + "name": { + "pos": 2753, + "end": 2769, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentContent" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2747, + "end": 2752, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component content

\n" + }, + { + "name": { + "pos": 2804, + "end": 2814, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "annotation" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2798, + "end": 2803, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the annotation

\n" + }, + { + "tagName": { + "pos": 2836, + "end": 2843, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

whether we need to display the annotation to the student

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getDomIdEnding", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 18, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getElementId", + "args": [ + { + "name": "domIdBeginning", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "domIdEnding", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "domIdBeginning", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "domIdEnding", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getStudentDataString", + "args": [ + { + "name": "componentState", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 127, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the human readable student data string\n", + "description": "

Get the human readable student data string

\n", + "jsdoctags": [ + { + "name": { + "pos": 3953, + "end": 3967, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3947, + "end": 3952, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component state

\n" + }, + { + "tagName": { + "pos": 3994, + "end": 4000, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

a human readable student data string

\n", + "returnType": "string" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "hasNodeEnteredEvent", + "args": [ + { + "name": "nodeEvents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 155, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeEvents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "isSubmitRequired", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 151, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "notifyConnectedComponentSubscribers", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 42, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "requestComponentState", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 30, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "sendComponentState", + "args": [ + { + "name": "componentStateWrapper", + "type": "ComponentStateWrapper", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 38, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentStateWrapper", + "type": "ComponentStateWrapper", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { ComponentService } from '../componentService';\nimport { Injectable } from '@angular/core';\n\n@Injectable()\nexport class HTMLService extends ComponentService {\n getComponentTypeLabel(): string {\n return $localize`Rich Text (HTML)`;\n }\n\n createComponent() {\n const component: any = super.createComponent();\n component.type = 'HTML';\n component.html = $localize`Enter html here`;\n return component;\n }\n\n isCompleted(component: any, componentStates: any[], nodeEvents: any[], node: any) {\n if (nodeEvents != null) {\n for (const nodeEvent of nodeEvents) {\n if (nodeEvent.event === 'nodeEntered') {\n return true;\n }\n }\n }\n return false;\n }\n\n componentHasWork(component: any) {\n return false;\n }\n\n componentUsesSaveButton() {\n return false;\n }\n\n componentUsesSubmitButton() {\n return false;\n }\n}\n", + "extends": [ + "ComponentService" + ], + "type": "injectable" + }, + { + "name": "IdeasSortingService", + "id": "injectable-IdeasSortingService-9bddfac8899f9fedd19b2c4b3bfb3dd04e528e4251354c2eb227aa712550332bfbcc0d3cdd50f1b7eb1471a2797102680947c3ba69c8169183c58e7840ba1756", + "file": "src/assets/wise5/services/ideasSortingService.ts", + "properties": [], + "methods": [ + { + "name": "compareByStringNumericPrefix", + "args": [ + { + "name": "idea", + "type": "IdeaData", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "otherIdea", + "type": "IdeaData", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 28, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "idea", + "type": "IdeaData", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "otherIdea", + "type": "IdeaData", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getSortedIdeasWithLetters", + "args": [ + { + "name": "ideas", + "type": "IdeaData[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "IdeaData[]", + "typeParameters": [], + "line": 18, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "ideas", + "type": "IdeaData[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "insertIdeasWithLetters", + "args": [ + { + "name": "sorted", + "type": "IdeaData[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "sortedIdeasWithLetters", + "type": "IdeaData[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "IdeaData[]", + "typeParameters": [], + "line": 33, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "sorted", + "type": "IdeaData[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "sortedIdeasWithLetters", + "type": "IdeaData[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "sortByCount", + "args": [ + { + "name": "ideas", + "type": "IdeaData[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "IdeaData[]", + "typeParameters": [], + "line": 6, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "ideas", + "type": "IdeaData[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "sortById", + "args": [ + { + "name": "ideas", + "type": "IdeaData[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "IdeaData[]", + "typeParameters": [], + "line": 10, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "ideas", + "type": "IdeaData[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "stringContainsLetters", + "args": [ + { + "name": "str", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 24, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "str", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "stringNumericPrefix", + "args": [ + { + "name": "str", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 51, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "str", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { IdeaData } from '../components/common/cRater/IdeaData';\nimport { Injectable } from '@angular/core';\n\n@Injectable()\nexport class IdeasSortingService {\n sortByCount(ideas: IdeaData[]): IdeaData[] {\n return ideas.filter((idea) => idea.count > 0).sort((a, b) => b.count - a.count);\n }\n\n sortById(ideas: IdeaData[]): IdeaData[] {\n let sorted = ideas\n .filter((idea) => !this.stringContainsLetters(idea.id))\n .sort((a, b) => Number(a.id) - Number(b.id));\n const sortedIdeasWithLetters = this.getSortedIdeasWithLetters(ideas);\n return this.insertIdeasWithLetters(sorted, sortedIdeasWithLetters);\n }\n\n private getSortedIdeasWithLetters(ideas: IdeaData[]): IdeaData[] {\n return ideas\n .filter((idea) => this.stringContainsLetters(idea.id))\n .sort((a, b) => this.compareByStringNumericPrefix(a, b));\n }\n\n private stringContainsLetters(str: string): boolean {\n return Array.from(str).some((char) => isNaN(Number(char)));\n }\n\n private compareByStringNumericPrefix(idea: IdeaData, otherIdea: IdeaData): number {\n const prefixDif = this.stringNumericPrefix(idea.id) - this.stringNumericPrefix(otherIdea.id);\n return prefixDif === 0 ? idea.id.localeCompare(otherIdea.id) : prefixDif;\n }\n\n private insertIdeasWithLetters(\n sorted: IdeaData[],\n sortedIdeasWithLetters: IdeaData[]\n ): IdeaData[] {\n for (let i = 0; i < sorted.length; i++) {\n while (\n sortedIdeasWithLetters.length > 0 &&\n Number(sorted.at(i).id) > this.stringNumericPrefix(sortedIdeasWithLetters.at(0).id)\n ) {\n const ideaWithLetter = sortedIdeasWithLetters.at(0);\n sortedIdeasWithLetters = sortedIdeasWithLetters.slice(1, sortedIdeasWithLetters.length);\n sorted.splice(i, 0, ideaWithLetter);\n i++;\n }\n }\n return sorted;\n }\n\n private stringNumericPrefix(str: string): number {\n let numericPrefix = '';\n const strArray = Array.from(str);\n for (let charIndex = 0; charIndex < strArray.length; charIndex++) {\n const char = strArray.at(charIndex);\n if (isNaN(Number(char))) {\n break;\n } else {\n numericPrefix = numericPrefix.concat(char);\n }\n }\n return Number(numericPrefix);\n }\n}\n", + "extends": [], + "type": "injectable" + }, + { + "name": "ImportComponentService", + "id": "injectable-ImportComponentService-d48fb9710ea183eeecc07f73feae68ab06d06f16bac00effd09ffbb29434eeb4c05f8d691c78081a065c65e6ca1f93e94bfd158b4ef1f4181e93c919bfbbdc52", + "file": "src/assets/wise5/services/importComponentService.ts", + "properties": [], + "methods": [ + { + "name": "importComponents", + "args": [ + { + "name": "components", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "importProjectId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "insertAfterComponentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 27, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nImport components from a project. Also import asset files that are\nreferenced in any of those components.\n", + "description": "

Import components from a project. Also import asset files that are\nreferenced in any of those components.

\n", + "jsdoctags": [ + { + "name": { + "pos": 786, + "end": 796, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "components" + }, + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 780, + "end": 785, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

an array of component objects that we are importing

\n" + }, + { + "name": { + "pos": 861, + "end": 876, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "importProjectId" + }, + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 855, + "end": 860, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the id of the project we are importing from

\n" + }, + { + "name": { + "pos": 933, + "end": 939, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 927, + "end": 932, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node we are adding the components to

\n" + }, + { + "name": { + "pos": 993, + "end": 1015, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "insertAfterComponentId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 987, + "end": 992, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

insert the components after this component id

\n" + }, + { + "tagName": { + "pos": 1068, + "end": 1074, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

an array of the new components

\n" + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Injectable } from '@angular/core';\nimport { copy } from '../common/object/object';\nimport { ConfigService } from './configService';\nimport { CopyNodesService } from './copyNodesService';\nimport { InsertComponentService } from './insertComponentService';\nimport { TeacherProjectService } from './teacherProjectService';\nimport { map, Observable } from 'rxjs';\n\n@Injectable()\nexport class ImportComponentService {\n constructor(\n protected ConfigService: ConfigService,\n protected CopyNodesService: CopyNodesService,\n protected InsertComponentService: InsertComponentService,\n protected ProjectService: TeacherProjectService\n ) {}\n\n /**\n * Import components from a project. Also import asset files that are\n * referenced in any of those components.\n * @param components an array of component objects that we are importing\n * @param importProjectId the id of the project we are importing from\n * @param nodeId the node we are adding the components to\n * @param insertAfterComponentId insert the components after this component id\n * @return an array of the new components\n */\n importComponents(\n components: any[],\n importProjectId: number,\n nodeId: string,\n insertAfterComponentId: string\n ): Observable {\n const newComponents = [];\n const newComponentIds = [];\n for (const component of components) {\n const newComponent = copy(component);\n let newComponentId = newComponent.id;\n if (this.ProjectService.isComponentIdUsed(newComponentId)) {\n newComponentId = this.ProjectService.getUnusedComponentId(newComponentIds);\n newComponent.id = newComponentId;\n }\n newComponents.push(newComponent);\n newComponentIds.push(newComponentId);\n }\n\n return this.CopyNodesService.copyNodes(\n newComponents,\n importProjectId,\n this.ConfigService.getConfigParam('projectId')\n ).pipe(\n map((newComponents: any) => {\n this.InsertComponentService.insertComponents(newComponents, nodeId, insertAfterComponentId);\n return newComponents;\n })\n );\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "ConfigService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "CopyNodesService", + "type": "CopyNodesService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "InsertComponentService", + "type": "InsertComponentService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ProjectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 10, + "jsdoctags": [ + { + "name": "ConfigService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "CopyNodesService", + "type": "CopyNodesService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "InsertComponentService", + "type": "InsertComponentService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "ProjectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "type": "injectable" + }, + { + "name": "InitializeVLEService", + "id": "injectable-InitializeVLEService-e83fb28dc19a4be99a3f8aa90543032d9b3a6698b7d90dbd2c982c2cc44cb2fb9e7a0a88b6bea674563e3f8a3e87e696055cced498ea434a09d9450877d845bc", + "file": "src/assets/wise5/services/initializeVLEService.ts", + "properties": [ + { + "name": "initialized$", + "defaultValue": "this.intializedSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "Observable", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "modifierKind": [ + 125 + ] + }, + { + "name": "intializedSource", + "defaultValue": "new BehaviorSubject(false)", + "deprecated": false, + "deprecationMessage": "", + "type": "BehaviorSubject", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "modifierKind": [ + 123 + ] + } + ], + "methods": [ + { + "name": "initializePreview", + "args": [ + { + "name": "unitId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 58, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ], + "jsdoctags": [ + { + "name": "unitId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "initializeStudent", + "args": [ + { + "name": "unitId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 36, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ], + "jsdoctags": [ + { + "name": "unitId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { VLEProjectService } from '../vle/vleProjectService';\nimport { AchievementService } from './achievementService';\nimport { ConfigService } from './configService';\nimport { NotebookService } from './notebookService';\nimport { PauseScreenService } from './pauseScreenService';\nimport { SessionService } from './sessionService';\nimport { StompService } from './stompService';\nimport { StudentAssetService } from './studentAssetService';\nimport { StudentDataService } from './studentDataService';\nimport { StudentNotificationService } from './studentNotificationService';\nimport { StudentStatusService } from './studentStatusService';\nimport { StudentWebSocketService } from './studentWebSocketService';\n\n@Injectable()\nexport class InitializeVLEService {\n private intializedSource: BehaviorSubject = new BehaviorSubject(false);\n public initialized$: Observable = this.intializedSource.asObservable();\n\n constructor(\n private achievementService: AchievementService,\n private configService: ConfigService,\n private notebookService: NotebookService,\n private notificationService: StudentNotificationService,\n private pauseScreenService: PauseScreenService,\n private projectService: VLEProjectService,\n private sessionService: SessionService,\n private stompService: StompService,\n private studentAssetService: StudentAssetService,\n private studentDataService: StudentDataService,\n private studentStatusService: StudentStatusService,\n private studentWebSocketService: StudentWebSocketService\n ) {}\n\n async initializeStudent(unitId: string) {\n await this.configService\n .retrieveConfig(`/api/config/studentRun/${unitId}`)\n .subscribe(async () => {\n this.sessionService.initializeSession();\n this.studentStatusService.retrieveStudentStatus();\n await this.projectService.retrieveProject().subscribe(async () => {\n await this.stompService.initialize();\n this.studentWebSocketService.initialize();\n await this.studentDataService.retrieveStudentData();\n await this.notificationService.retrieveNotifications();\n await this.achievementService.retrieveStudentAchievements();\n await this.studentDataService.retrieveRunStatus();\n this.pauseScreenService.initialize();\n this.notificationService.initialize();\n await this.studentAssetService.retrieveAssets();\n await this.notebookService.retrieveNotebookItems(this.configService.getWorkgroupId());\n this.intializedSource.next(true);\n });\n });\n }\n\n async initializePreview(unitId: string) {\n this.configService.retrieveConfig(`/api/config/preview/${unitId}`).subscribe(async () => {\n await this.projectService.retrieveProject().subscribe(async () => {\n this.studentDataService.retrieveStudentData();\n this.studentDataService.retrieveRunStatus();\n this.notificationService.retrieveNotifications();\n this.intializedSource.next(true);\n });\n });\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "achievementService", + "type": "AchievementService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "notebookService", + "type": "NotebookService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "notificationService", + "type": "StudentNotificationService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "pauseScreenService", + "type": "PauseScreenService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "VLEProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "sessionService", + "type": "SessionService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "stompService", + "type": "StompService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentAssetService", + "type": "StudentAssetService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentDataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentStatusService", + "type": "StudentStatusService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentWebSocketService", + "type": "StudentWebSocketService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 19, + "jsdoctags": [ + { + "name": "achievementService", + "type": "AchievementService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "notebookService", + "type": "NotebookService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "notificationService", + "type": "StudentNotificationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "pauseScreenService", + "type": "PauseScreenService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "VLEProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "sessionService", + "type": "SessionService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "stompService", + "type": "StompService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentAssetService", + "type": "StudentAssetService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentDataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentStatusService", + "type": "StudentStatusService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentWebSocketService", + "type": "StudentWebSocketService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "type": "injectable" + }, + { + "name": "InsertComponentService", + "id": "injectable-InsertComponentService-5ce0bf499cfc3e98b3551550878087cc6f765f9be36c61565db9cd952ed903083f197d4df67d9a0754502338c64fdbd1baa60332ff80a8dca56f33018d31a35d", + "file": "src/assets/wise5/services/insertComponentService.ts", + "properties": [], + "methods": [ + { + "name": "getInitialInsertPosition", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "insertAfterComponentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 17, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "insertAfterComponentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "insertComponents", + "args": [ + { + "name": "components", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "insertAfterComponentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 8, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "components", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "insertAfterComponentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Injectable } from '@angular/core';\nimport { TeacherProjectService } from './teacherProjectService';\n\n@Injectable()\nexport class InsertComponentService {\n constructor(protected projectService: TeacherProjectService) {}\n\n insertComponents(components: any[], nodeId: string, insertAfterComponentId: string): void {\n const node = this.projectService.getNodeById(nodeId);\n let insertPosition = this.getInitialInsertPosition(nodeId, insertAfterComponentId);\n components.forEach((component) => {\n node.components.splice(insertPosition, 0, component);\n insertPosition++;\n });\n }\n\n private getInitialInsertPosition(nodeId: string, insertAfterComponentId: string): number {\n return insertAfterComponentId == null\n ? 0\n : this.projectService.getNode(nodeId).getComponentPosition(insertAfterComponentId) + 1;\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 5, + "jsdoctags": [ + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "type": "injectable" + }, + { + "name": "InsertFirstNodeInBranchPathService", + "id": "injectable-InsertFirstNodeInBranchPathService-7c46307d0399cb86bbd45b4a100ef9caeb1e5665ef974f2264fd0da284d8f53eabd67861dacdc73cce56e32120401d782c95ad90e0ffe031240788f91289de61", + "file": "src/assets/wise5/services/insertFirstNodeInBranchPathService.ts", + "properties": [], + "methods": [ + { + "name": "insertNode", + "args": [ + { + "name": "newNode", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeIdBefore", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeIdAfter", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 8, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "newNode", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeIdBefore", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeIdAfter", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "insertNodeBeforeInGroup", + "args": [ + { + "name": "group", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "newNodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeIdAfter", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 40, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "group", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "newNodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeIdAfter", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "insertNodeBetweenInGroups", + "args": [ + { + "name": "newNodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeIdAfter", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 31, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "newNodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeIdAfter", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "insertNodeBetweenInTransitions", + "args": [ + { + "name": "newNode", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeIdBefore", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeIdAfter", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 52, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "newNode", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeIdBefore", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeIdAfter", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "insertNodes", + "args": [ + { + "name": "nodes", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "targetId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "firstNodeInBranchPath", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 20, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodes", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "targetId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "firstNodeInBranchPath", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "updateBranchPathTakenConstraintToNode", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "toNodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 75, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "toNodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Injectable } from '@angular/core';\nimport { TeacherProjectService } from './teacherProjectService';\n\n@Injectable()\nexport class InsertFirstNodeInBranchPathService {\n constructor(private projectService: TeacherProjectService) {}\n\n insertNode(newNode: any, nodeIdBefore: string, nodeIdAfter: string): void {\n if (this.projectService.isInactive(nodeIdBefore)) {\n this.projectService.setIdToNode(newNode.id, newNode);\n this.projectService.addInactiveNodeInsertAfter(newNode, nodeIdBefore);\n } else {\n this.projectService.addNode(newNode);\n this.projectService.setIdToNode(newNode.id, newNode);\n this.insertNodeBetweenInGroups(newNode.id, nodeIdAfter);\n this.insertNodeBetweenInTransitions(newNode, nodeIdBefore, nodeIdAfter);\n }\n }\n\n insertNodes(nodes: any[], targetId: string, firstNodeInBranchPath: string): void {\n for (const node of nodes) {\n if (this.projectService.isFirstNodeInBranchPath(firstNodeInBranchPath)) {\n this.insertNode(node, targetId, firstNodeInBranchPath);\n } else {\n this.projectService.createNodeAfter(node, targetId);\n }\n targetId = node.id;\n }\n }\n\n private insertNodeBetweenInGroups(newNodeId: string, nodeIdAfter: string): void {\n for (const group of this.projectService.getGroupNodes()) {\n this.insertNodeBeforeInGroup(group, newNodeId, nodeIdAfter);\n }\n for (const inactiveGroup of this.projectService.getInactiveGroupNodes()) {\n this.insertNodeBeforeInGroup(inactiveGroup, newNodeId, nodeIdAfter);\n }\n }\n\n private insertNodeBeforeInGroup(group: any, newNodeId: string, nodeIdAfter: string): boolean {\n const ids = group.ids;\n for (let i = 0; i < ids.length; i++) {\n const id = ids[i];\n if (nodeIdAfter === id) {\n ids.splice(i, 0, newNodeId);\n return true;\n }\n }\n return false;\n }\n\n private insertNodeBetweenInTransitions(\n newNode: any,\n nodeIdBefore: string,\n nodeIdAfter: string\n ): void {\n const nodeBefore = this.projectService.getNodeById(nodeIdBefore);\n const nodeBeforeTransition = nodeBefore.transitionLogic.transitions.find(\n (transition: any) => transition.to === nodeIdAfter\n );\n nodeBeforeTransition.to = newNode.id;\n newNode.transitionLogic.transitions = [{ to: nodeIdAfter }];\n this.projectService.updateBranchPathTakenConstraints(newNode, nodeIdAfter);\n nodeBefore.transitionLogic.transitions;\n const branch = this.projectService.getBranchesByBranchStartPointNodeId(nodeIdBefore)[0];\n const path = branch.paths.find((path) => path[0] === newNode.id);\n for (const nodeInPath of path) {\n this.updateBranchPathTakenConstraintToNode(\n this.projectService.getNodeById(nodeInPath),\n newNode.id\n );\n }\n }\n\n private updateBranchPathTakenConstraintToNode(node: any, toNodeId: string): void {\n const constraints = node.constraints;\n for (const constraint of constraints) {\n for (const removalCriterion of constraint.removalCriteria) {\n if (removalCriterion.name === 'branchPathTaken') {\n removalCriterion.params.toNodeId = toNodeId;\n }\n }\n }\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 5, + "jsdoctags": [ + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "type": "injectable" + }, + { + "name": "InsertNodesService", + "id": "injectable-InsertNodesService-1ea3abdbc3641597b3e46d0fab11a4f298f35f3e10e16166f15e681eefcf0365b63a59704cc31b23e73aa0fccfa329a60022670307bc112e306e72bd42d8575a", + "file": "src/assets/wise5/services/insertNodesService.ts", + "properties": [], + "methods": [ + { + "name": "insertNodes", + "args": [ + { + "name": "nodes", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "targetId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 14, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nInsert nodes in specified location. Modifies project.\nnew step the first step in the group. If this is a step, we will place the new step after it.\n", + "description": "

Insert nodes in specified location. Modifies project.\nnew step the first step in the group. If this is a step, we will place the new step after it.

\n", + "jsdoctags": [ + { + "name": { + "pos": 300, + "end": 305, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodes" + }, + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 294, + "end": 299, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

nodes to insert

\n" + }, + { + "name": { + "pos": 334, + "end": 342, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "targetId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 328, + "end": 333, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

id of node or group. If this is a group, we will make the\nnew step the first step in the group. If this is a step, we will place the new step after it.

\n" + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Injectable } from '@angular/core';\nimport { TeacherProjectService } from './teacherProjectService';\n\n@Injectable()\nexport class InsertNodesService {\n constructor(private projectService: TeacherProjectService) {}\n\n /**\n * Insert nodes in specified location. Modifies project.\n * @param nodes nodes to insert\n * @param targetId id of node or group. If this is a group, we will make the\n * new step the first step in the group. If this is a step, we will place the new step after it.\n */\n insertNodes(nodes: any[], targetId: string): void {\n if (targetId == null) {\n /*\n * Insert the node after the last inactive node. If there\n * are no inactive nodes it will just be placed in the\n * inactive nodes section. In the latter case we do this by\n * setting targetId to 'inactiveSteps'.\n */\n const inactiveNodes = this.projectService.getInactiveNodes();\n if (inactiveNodes != null && inactiveNodes.length > 0) {\n targetId = inactiveNodes[inactiveNodes.length - 1];\n } else {\n targetId = 'inactiveSteps';\n }\n }\n\n for (const node of nodes) {\n if (this.projectService.isGroupNode(targetId)) {\n this.projectService.createNodeInside(node, targetId);\n } else {\n this.projectService.createNodeAfter(node, targetId);\n }\n\n /*\n * Update the targetId so that when we are\n * importing multiple steps, the steps get placed in the correct\n * order.\n *\n * Example\n * We are importing nodeA and nodeB and want to place them after\n * nodeX. Therefore we want the order to be\n *\n * nodeX\n * nodeA\n * nodeB\n *\n * This means after we add nodeA, we must update\n * targetId to be nodeA so that when we add\n * nodeB, it will be placed after nodeA.\n */\n targetId = node.id;\n }\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 5, + "jsdoctags": [ + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "type": "injectable" + }, + { + "name": "LabelService", + "id": "injectable-LabelService-c834bae9968444453ff419280c3614772d4e68cc6b1bf27347b53af117d58a0b00845987eb954576530019a99304ec96d1fe46492d5e794525849603b6e2bfd6", + "file": "src/assets/wise5/components/label/labelService.ts", + "properties": [ + { + "name": "circleZIndex", + "defaultValue": "2", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 15 + }, + { + "name": "defaultTextBackgroundColor", + "defaultValue": "'blue'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 16 + }, + { + "name": "lineZIndex", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 13 + }, + { + "name": "textZIndex", + "defaultValue": "1", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 14 + }, + { + "name": "notifyConnectedComponentSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "notifyConnectedComponentSource$", + "defaultValue": "this.notifyConnectedComponentSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "requestComponentStateSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "requestComponentStateSource$", + "defaultValue": "this.requestComponentStateSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "sendComponentStateSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "sendComponentStateSource$", + "defaultValue": "this.sendComponentStateSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "ComponentService" + } + } + ], + "methods": [ + { + "name": "addLabelsToCanvas", + "args": [ + { + "name": "canvas", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "labels", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "width", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "height", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "pointSize", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "fontSize", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "labelWidth", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "enableCircles", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentDataVersion", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 312, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "canvas", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "labels", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "width", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "height", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "pointSize", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "fontSize", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "labelWidth", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "enableCircles", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentDataVersion", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addLabelToCanvas", + "args": [ + { + "name": "canvas", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "label", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "enableCircles", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 459, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "canvas", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "label", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "enableCircles", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "canEdit", + "args": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 82, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nDetermine if the student can perform any work on this component.\n", + "description": "

Determine if the student can perform any work on this component.

\n", + "jsdoctags": [ + { + "name": { + "pos": 2558, + "end": 2567, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "component" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2552, + "end": 2557, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The component content.

\n" + }, + { + "tagName": { + "pos": 2597, + "end": 2603, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

Whether the student can perform any work on this component.

\n" + } + ] + }, + { + "name": "componentHasStarterLabel", + "args": [ + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 101, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "componentStateHasLabel", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 69, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "componentStateHasStudentWork", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 86, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "componentStateHasSubmitWithLabel", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 65, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "componentStateIsSameAsStarter", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 113, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if the component state has the exact same labels as the starter\nlabels.\nstarter labels\n", + "description": "

Check if the component state has the exact same labels as the starter\nlabels.\nstarter labels

\n", + "jsdoctags": [ + { + "name": { + "pos": 3537, + "end": 3551, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3531, + "end": 3536, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component state object

\n" + }, + { + "name": { + "pos": 3591, + "end": 3607, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentContent" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3585, + "end": 3590, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component content

\n" + }, + { + "tagName": { + "pos": 3636, + "end": 3642, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether the component state has the exact same labels as the\nstarter labels

\n" + } + ] + }, + { + "name": "createComponent", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 30, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "createImageFromText", + "args": [ + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "width", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "height", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "maxCharactersPerLine", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "xPositionOfText", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "spaceInbetweenLines", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "fontSize", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 134, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCreate an image from the text string.\n", + "description": "

Create an image from the text string.

\n", + "jsdoctags": [ + { + "name": { + "pos": 4175, + "end": 4179, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "text" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4169, + "end": 4174, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

A text string.

\n" + }, + { + "name": { + "pos": 4207, + "end": 4212, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "width" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4201, + "end": 4206, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The width of the image we will create.

\n" + }, + { + "name": { + "pos": 4264, + "end": 4270, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "height" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4258, + "end": 4263, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The height of the image we will create.

\n" + }, + { + "name": { + "pos": 4323, + "end": 4343, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "maxCharactersPerLine" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4317, + "end": 4322, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The max number of characters per line.

\n" + }, + { + "name": { + "pos": 4395, + "end": 4410, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "xPositionOfText" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4389, + "end": 4394, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The x position of the text in the image.

\n" + }, + { + "name": { + "pos": 4464, + "end": 4483, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "spaceInbetweenLines" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4458, + "end": 4463, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The amount of space inbetween each line.

\n" + }, + { + "name": { + "pos": 4537, + "end": 4545, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "fontSize" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4531, + "end": 4536, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The font size.

\n" + } + ] + }, + { + "name": "createLabel", + "args": [ + { + "name": "pointX", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "pointY", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "textX", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "textY", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "textString", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "color", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "this.defaultTextBackgroundColor" + }, + { + "name": "canEdit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "true" + }, + { + "name": "canDelete", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "true" + }, + { + "name": "canvasWidth", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "canvasHeight", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "pointSize", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "5" + }, + { + "name": "fontSize", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "20" + }, + { + "name": "labelWidth", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentDataVersion", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "2" + }, + { + "name": "timestamp", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isStarterLabel", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 350, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "pointX", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "pointY", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "textX", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "textY", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "textString", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "color", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "this.defaultTextBackgroundColor", + "tagName": { + "text": "param" + } + }, + { + "name": "canEdit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "true", + "tagName": { + "text": "param" + } + }, + { + "name": "canDelete", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "true", + "tagName": { + "text": "param" + } + }, + { + "name": "canvasWidth", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "canvasHeight", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "pointSize", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "5", + "tagName": { + "text": "param" + } + }, + { + "name": "fontSize", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "20", + "tagName": { + "text": "param" + } + }, + { + "name": "labelWidth", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentDataVersion", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "2", + "tagName": { + "text": "param" + } + }, + { + "name": "timestamp", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "isStarterLabel", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "generateImage", + "args": [ + { + "name": "svgString", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 208, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "svgString", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "generateImageFromRenderedComponentState", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 277, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nThe component state has been rendered in a element\nand now we want to take a snapshot of the work.\n", + "description": "

The component state has been rendered in a element\nand now we want to take a snapshot of the work.

\n", + "jsdoctags": [ + { + "name": { + "pos": 9600, + "end": 9614, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 9594, + "end": 9599, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The component state that has been rendered.

\n" + }, + { + "tagName": { + "pos": 9665, + "end": 9671, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

A promise that will return an image object.

\n" + } + ] + }, + { + "name": "getCanvas", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 287, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getCanvasId", + "args": [ + { + "name": "domIdEnding", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "domIdEnding", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getComponentTypeLabel", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getSVGTextElementString", + "args": [ + { + "name": "fontSize", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "tspans", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 264, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "fontSize", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "tspans", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getTimestamp", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 479, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getTSpans", + "args": [ + { + "name": "textWrapped", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "xPositionOfText", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "spaceInbetweenLines", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 255, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "textWrapped", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "xPositionOfText", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "spaceInbetweenLines", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "initializeCanvas", + "args": [ + { + "name": "canvasId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "width", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "height", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isDisabled", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 293, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "canvasId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "width", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "height", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "isDisabled", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isCompleted", + "args": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeEvents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 47, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeEvents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "setBackgroundImage", + "args": [ + { + "name": "canvas", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "backgroundPath", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 475, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "canvas", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "backgroundPath", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setCanvasDimension", + "args": [ + { + "name": "canvas", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "width", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "height", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 307, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "canvas", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "width", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "height", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "componentHasCorrectAnswer", + "args": [ + { + "name": "component", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 147, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "component", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "componentHasWork", + "args": [ + { + "name": "component", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 105, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nWhether this component generates student work\nis not provided, we will use the default value of whether the\ncomponent type usually has work.\n", + "description": "

Whether this component generates student work\nis not provided, we will use the default value of whether the\ncomponent type usually has work.

\n", + "jsdoctags": [ + { + "name": { + "pos": 3060, + "end": 3069, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "component" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3054, + "end": 3059, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

(optional) the component object. if the component object\nis not provided, we will use the default value of whether the\ncomponent type usually has work.

\n" + }, + { + "tagName": { + "pos": 3238, + "end": 3244, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether this component generates student work

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "componentUsesSaveButton", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 135, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nWhether this component uses a save button\n", + "description": "

Whether this component uses a save button

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 4173, + "end": 4179, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether this component uses a save button

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "componentUsesSubmitButton", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 143, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nWhether this component uses a submit button\n", + "description": "

Whether this component uses a submit button

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 4351, + "end": 4357, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether this component uses a submit button

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "displayAnnotation", + "args": [ + { + "name": "componentContent", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "annotation", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 94, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if we need to display the annotation to the student\n", + "description": "

Check if we need to display the annotation to the student

\n", + "jsdoctags": [ + { + "name": { + "pos": 2753, + "end": 2769, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentContent" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2747, + "end": 2752, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component content

\n" + }, + { + "name": { + "pos": 2804, + "end": 2814, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "annotation" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2798, + "end": 2803, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the annotation

\n" + }, + { + "tagName": { + "pos": 2836, + "end": 2843, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

whether we need to display the annotation to the student

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getDomIdEnding", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 18, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getElementId", + "args": [ + { + "name": "domIdBeginning", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "domIdEnding", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "domIdBeginning", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "domIdEnding", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getStudentDataString", + "args": [ + { + "name": "componentState", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 127, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the human readable student data string\n", + "description": "

Get the human readable student data string

\n", + "jsdoctags": [ + { + "name": { + "pos": 3953, + "end": 3967, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3947, + "end": 3952, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component state

\n" + }, + { + "tagName": { + "pos": 3994, + "end": 4000, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

a human readable student data string

\n", + "returnType": "string" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "hasNodeEnteredEvent", + "args": [ + { + "name": "nodeEvents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 155, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeEvents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "isSubmitRequired", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 151, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "notifyConnectedComponentSubscribers", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 42, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "requestComponentState", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 30, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "sendComponentState", + "args": [ + { + "name": "componentStateWrapper", + "type": "ComponentStateWrapper", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 38, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentStateWrapper", + "type": "ComponentStateWrapper", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { fabric } from 'fabric';\nimport SVG from 'svg.js';\nimport { ComponentService } from '../componentService';\nimport { StudentAssetService } from '../../services/studentAssetService';\nimport { Injectable } from '@angular/core';\nimport { convertToPNGFile } from '../../common/canvas/canvas';\nimport { wordWrap } from '../../common/string/string';\nimport { hasConnectedComponent } from '../../common/ComponentContent';\nimport { labelArraysAreTheSame, makeSureValueIsWithinLimit } from './label';\n\n@Injectable()\nexport class LabelService extends ComponentService {\n lineZIndex: number = 0;\n textZIndex: number = 1;\n circleZIndex: number = 2;\n defaultTextBackgroundColor: string = 'blue';\n\n constructor(private assetService: StudentAssetService) {\n super();\n }\n\n getComponentTypeLabel(): string {\n return $localize`Label`;\n }\n\n getCanvasId(domIdEnding: string): string {\n return this.getElementId('canvas', domIdEnding);\n }\n\n createComponent() {\n const component: any = super.createComponent();\n component.type = 'Label';\n component.backgroundImage = '';\n component.canCreateLabels = true;\n component.canEditLabels = true;\n component.canDeleteLabels = true;\n component.enableCircles = true;\n component.width = 800;\n component.height = 600;\n component.pointSize = 5;\n component.fontSize = 20;\n component.labelWidth = 20;\n component.labels = [];\n return component;\n }\n\n isCompleted(component: any, componentStates: any[], nodeEvents: any[], node: any) {\n if (!this.canEdit(component) && this.hasNodeEnteredEvent(nodeEvents)) {\n return true;\n }\n if (componentStates != null && componentStates.length > 0) {\n if (this.isSubmitRequired(node, component)) {\n for (let i = componentStates.length - 1; i >= 0; i--) {\n if (this.componentStateHasSubmitWithLabel(componentStates[i])) {\n return true;\n }\n }\n } else {\n return this.componentStateHasLabel(componentStates[componentStates.length - 1]);\n }\n }\n return false;\n }\n\n componentStateHasSubmitWithLabel(componentState: any) {\n return componentState.isSubmit && this.componentStateHasLabel(componentState);\n }\n\n componentStateHasLabel(componentState: any) {\n if (componentState != null) {\n const studentData = componentState.studentData;\n return studentData != null && studentData.labels != null && studentData.labels.length > 0;\n }\n return false;\n }\n\n /**\n * Determine if the student can perform any work on this component.\n * @param component The component content.\n * @return Whether the student can perform any work on this component.\n */\n canEdit(component: any): boolean {\n return !hasConnectedComponent(component, 'showWork');\n }\n\n componentStateHasStudentWork(componentState: any, componentContent: any): boolean {\n if (componentContent == null) {\n return this.componentStateHasLabel(componentState);\n } else {\n if (this.componentHasStarterLabel(componentContent)) {\n return (\n componentState != null &&\n !labelArraysAreTheSame(componentState.studentData.labels, componentContent.labels)\n );\n } else {\n return this.componentStateHasLabel(componentState);\n }\n }\n }\n\n private componentHasStarterLabel(componentContent: any): boolean {\n return componentContent.labels != null && componentContent.labels.length > 0;\n }\n\n /**\n * Check if the component state has the exact same labels as the starter\n * labels.\n * @param componentState the component state object\n * @param componentContent the component content\n * @return whether the component state has the exact same labels as the\n * starter labels\n */\n componentStateIsSameAsStarter(componentState: any, componentContent: any) {\n if (componentState != null) {\n if (this.componentHasStarterLabel(componentContent)) {\n return labelArraysAreTheSame(componentState.studentData.labels, componentContent.labels);\n } else {\n return !this.componentStateHasLabel(componentState);\n }\n }\n return false;\n }\n\n /**\n * Create an image from the text string.\n * @param text A text string.\n * @param width The width of the image we will create.\n * @param height The height of the image we will create.\n * @param maxCharactersPerLine The max number of characters per line.\n * @param xPositionOfText The x position of the text in the image.\n * @param spaceInbetweenLines The amount of space inbetween each line.\n * @param fontSize The font size.\n */\n createImageFromText(\n text: string,\n width: any,\n height: any,\n maxCharactersPerLine: any,\n xPositionOfText: any,\n spaceInbetweenLines: any,\n fontSize: any\n ) {\n if (width == null || width === '') {\n width = 800;\n }\n if (height == null || height === '') {\n height = 600;\n }\n if (maxCharactersPerLine == null || maxCharactersPerLine === '') {\n maxCharactersPerLine = 100;\n }\n if (xPositionOfText == null || xPositionOfText === '') {\n xPositionOfText = 10;\n }\n if (spaceInbetweenLines == null || spaceInbetweenLines === '') {\n spaceInbetweenLines = 40;\n }\n if (fontSize == null || fontSize === '') {\n fontSize = 16;\n }\n\n /*\n * Line wrap the text so that each line does not exceed the max number of\n * characters.\n */\n const textWrapped = wordWrap(text, maxCharactersPerLine);\n\n // create a div to draw the SVG in\n const svgElement = document.createElement('div');\n const draw = SVG(svgElement);\n draw.width(width);\n draw.height(height);\n\n /*\n * We will create a tspan for each line.\n * Example\n * The quick brown fox jumps over the lazy dog. One fish, two fish, red fish, blue fish. Green eggs\n * and ham.\n */\n const tspans = this.getTSpans(textWrapped, xPositionOfText, spaceInbetweenLines);\n\n /*\n * Wrap the tspans in a text element.\n * Example\n * \n * The quick brown fox jumps over the lazy dog. One fish, two fish, red fish, blue fish. Green eggs\n * and ham.\n * \n */\n const svgTextElementString = this.getSVGTextElementString(fontSize, tspans);\n\n /*\n * Insert the text element into the svg.\n * Example\n * \n * \n * \n * The quick brown fox jumps over the lazy dog. One fish, two fish, red fish, blue fish. Green eggs\n * and ham.\n * \n * \n */\n const svgString = svgElement.innerHTML.replace('', svgTextElementString + '');\n\n return this.generateImage(svgString);\n }\n\n generateImage(svgString: string) {\n // create a canvas to draw the image on\n const myCanvas = document.createElement('canvas');\n const ctx = myCanvas.getContext('2d');\n\n // create an svg blob\n const svg = new Blob([svgString], { type: 'image/svg+xml;charset=utf-8' });\n const domURL = self.URL || (self as any).webkitURL || self;\n const url = domURL.createObjectURL(svg);\n const image = new Image();\n return new Promise((resolve, reject) => {\n image.onload = (event) => {\n const image: any = event.target;\n myCanvas.width = image.width;\n myCanvas.height = image.height;\n ctx.drawImage(image, 0, 0);\n const pngFile = convertToPNGFile(myCanvas);\n this.assetService.uploadAsset(pngFile).then((unreferencedAsset) => {\n /*\n * make a copy of the unreferenced asset so that we\n * get a referenced asset\n */\n this.assetService.copyAssetForReference(unreferencedAsset).then((referencedAsset) => {\n if (referencedAsset != null) {\n /*\n * get the asset url\n * for example\n * /wise/studentuploads/11261/297478/referenced/picture_1494016652542.png\n * if we are in preview mode this url will be a base64 string instead\n */\n const referencedAssetUrl = referencedAsset.url;\n\n // remove the unreferenced asset\n this.assetService.deleteAsset(unreferencedAsset);\n\n // resolve the promise with the image url\n resolve(referencedAssetUrl);\n }\n });\n });\n };\n\n // set the src of the image so that the image gets loaded\n image.src = url;\n });\n }\n\n getTSpans(textWrapped: string, xPositionOfText: any, spaceInbetweenLines: any) {\n let tspans = '';\n const textLines = textWrapped.split('\\n');\n for (const textLine of textLines) {\n tspans += `${textLine}`;\n }\n return tspans;\n }\n\n getSVGTextElementString(fontSize: any, tspans: string) {\n return (\n `${tspans}`\n );\n }\n\n /**\n * The component state has been rendered in a element\n * and now we want to take a snapshot of the work.\n * @param componentState The component state that has been rendered.\n * @return A promise that will return an image object.\n */\n generateImageFromRenderedComponentState(componentState: any) {\n return new Promise((resolve, reject) => {\n const canvas = this.getCanvas(componentState);\n const pngFile = convertToPNGFile(canvas);\n this.assetService.uploadAsset(pngFile).then((asset: any) => {\n resolve(asset);\n });\n });\n }\n\n getCanvas(componentState: any): any {\n return document.querySelector(\n `#canvas-${componentState.nodeId}-${componentState.componentId}-${componentState.id}`\n );\n }\n\n initializeCanvas(canvasId: string, width: number, height: number, isDisabled: boolean): any {\n let canvas: any = null;\n if (isDisabled) {\n canvas = new fabric.StaticCanvas(canvasId);\n } else {\n canvas = new fabric.Canvas(canvasId);\n }\n canvas.selection = false;\n canvas.hoverCursor = 'pointer';\n this.setCanvasDimension(canvas, width, height);\n $('#canvasParent_' + canvasId).css('height', height + 2);\n return canvas;\n }\n\n setCanvasDimension(canvas: any, width: number, height: number): void {\n canvas.setWidth(width);\n canvas.setHeight(height);\n }\n\n addLabelsToCanvas(\n canvas: any,\n labels: any[],\n width: number,\n height: number,\n pointSize: number,\n fontSize: number,\n labelWidth: number,\n enableCircles: boolean,\n studentDataVersion: number\n ): any[] {\n const fabricLabels: any[] = [];\n labels.forEach((label) => {\n const timestamp = label.timestamp ? label.timestamp : this.getTimestamp();\n const fabricLabel = this.createLabel(\n label.pointX,\n label.pointY,\n label.textX,\n label.textY,\n label.text,\n label.color,\n label.canEdit,\n label.canDelete,\n width,\n height,\n pointSize,\n fontSize,\n labelWidth,\n studentDataVersion,\n timestamp,\n label.isStarterLabel\n );\n this.addLabelToCanvas(canvas, fabricLabel, enableCircles);\n fabricLabels.push(fabricLabel);\n });\n return fabricLabels;\n }\n\n createLabel(\n pointX: number,\n pointY: number,\n textX: number,\n textY: number,\n textString: string,\n color: string = this.defaultTextBackgroundColor,\n canEdit: boolean = true,\n canDelete: boolean = true,\n canvasWidth: number,\n canvasHeight: number,\n pointSize: number = 5,\n fontSize: number = 20,\n labelWidth: number,\n studentDataVersion: number = 2,\n timestamp: number,\n isStarterLabel: boolean\n ): any {\n // get the position of the point\n let x1: number = pointX;\n let y1: number = pointY;\n let x2: number = null;\n let y2: number = null;\n\n if (studentDataVersion === 1) {\n // get the absolute position of the text\n x2 = pointX + textX;\n y2 = pointY + textY;\n } else {\n x2 = textX;\n y2 = textY;\n }\n\n /*\n * Make sure all the positions are within the bounds of the canvas. If there\n * are any positions that are outside the bounds, we will change the\n * position to be within the bounds.\n */\n x1 = makeSureValueIsWithinLimit(x1, canvasWidth);\n y1 = makeSureValueIsWithinLimit(y1, canvasHeight);\n x2 = makeSureValueIsWithinLimit(x2, canvasWidth);\n y2 = makeSureValueIsWithinLimit(y2, canvasHeight);\n\n const circle: any = new fabric.Circle({\n radius: pointSize,\n left: x1,\n top: y1,\n originX: 'center',\n originY: 'center',\n hasControls: false,\n borderColor: 'red',\n hasBorders: true,\n selectable: true\n });\n\n const line: any = new fabric.Line([x1, y1, x2, y2], {\n fill: 'black',\n stroke: 'black',\n strokeWidth: 3,\n selectable: false\n });\n\n let wrappedTextString = textString;\n if (labelWidth != null) {\n wrappedTextString = wordWrap(textString, labelWidth);\n }\n\n // create an editable text element\n const text: any = new fabric.IText(wrappedTextString, {\n left: x2,\n top: y2,\n originX: 'center',\n originY: 'center',\n fontSize: fontSize,\n fill: 'white',\n backgroundColor: color,\n width: 100,\n hasControls: false,\n hasBorders: true,\n borderColor: 'red',\n borderDashArray: [8, 8],\n borderScaleFactor: 3,\n borderOpacityWhenMoving: 1,\n selectable: true,\n cursorWidth: 0,\n editable: false,\n padding: 16\n });\n\n // give the circle a reference to the line and text elements\n circle.line = line;\n circle.text = text;\n\n // give the text element a reference to the line and circle elements\n text.line = line;\n text.circle = circle;\n\n return {\n circle: circle,\n line: line,\n text: text,\n textString: textString,\n canEdit: canEdit,\n canDelete: canDelete,\n timestamp: timestamp,\n isStarterLabel: isStarterLabel\n };\n }\n\n addLabelToCanvas(canvas: any, label: any, enableCircles: boolean): void {\n const circle: any = label.circle;\n const line: any = label.line;\n const text: any = label.text;\n if (enableCircles) {\n canvas.add(circle, line, text);\n canvas.moveTo(line, this.lineZIndex);\n canvas.moveTo(text, this.textZIndex);\n canvas.moveTo(circle, this.circleZIndex);\n } else {\n canvas.add(text);\n canvas.moveTo(text, this.textZIndex);\n }\n canvas.renderAll();\n }\n\n setBackgroundImage(canvas: any, backgroundPath: string): void {\n canvas.setBackgroundImage(backgroundPath, canvas.renderAll.bind(canvas));\n }\n\n getTimestamp(): number {\n return new Date().getTime();\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "assetService", + "type": "StudentAssetService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 16, + "jsdoctags": [ + { + "name": "assetService", + "type": "StudentAssetService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "ComponentService" + ], + "type": "injectable" + }, + { + "name": "LibraryPaginatorIntl", + "id": "injectable-LibraryPaginatorIntl-f20451c5430528da3fffd0538e4d128000823ec4961a43a9c9a1d182ab7457c1250e4c944513f158779b903b2fe3e4d19983eb2529d66db2929c4937438ad273", + "file": "src/app/modules/library/libraryPaginatorIntl.ts", + "properties": [ + { + "name": "getRangeLabel", + "defaultValue": "function (page, pageSize, length) {\n if (length == 0 || pageSize == 0) {\n return $localize`0 of ${length}:total:`;\n }\n const startIndex = page * pageSize + 1;\n const endIndex =\n startIndex < length ? Math.min(startIndex + pageSize - 1, length) : startIndex + pageSize - 1;\n return $localize`${startIndex}:start: - ${endIndex}:end: of ${length}:total:`;\n }", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 10 + }, + { + "name": "itemsPerPageLabel", + "defaultValue": "$localize`Show:`", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 6 + }, + { + "name": "nextPageLabel", + "defaultValue": "$localize`Next page`", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 7 + }, + { + "name": "previousPageLabel", + "defaultValue": "$localize`Previous page`", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 8 + } + ], + "methods": [], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { MatPaginatorIntl } from '@angular/material/paginator';\nimport { Injectable } from '@angular/core';\n\n@Injectable()\nexport class LibraryPaginatorIntl extends MatPaginatorIntl {\n itemsPerPageLabel = $localize`Show:`;\n nextPageLabel = $localize`Next page`;\n previousPageLabel = $localize`Previous page`;\n\n getRangeLabel = function (page, pageSize, length) {\n if (length == 0 || pageSize == 0) {\n return $localize`0 of ${length}:total:`;\n }\n const startIndex = page * pageSize + 1;\n const endIndex =\n startIndex < length ? Math.min(startIndex + pageSize - 1, length) : startIndex + pageSize - 1;\n return $localize`${startIndex}:start: - ${endIndex}:end: of ${length}:total:`;\n };\n}\n", + "extends": [ + "MatPaginatorIntl" + ], + "type": "injectable" + }, + { + "name": "LibraryService", + "id": "injectable-LibraryService-33fa4ba66eb40e61fb10cf12d6a46b44a27f07914d6f0707afcea61855eac406b367331b63da47732e762b9e463fb774a1b6614a9c64eea413256a76db404683", + "file": "src/app/services/library.service.ts", + "properties": [ + { + "name": "communityLibraryProjectsSource", + "defaultValue": "new BehaviorSubject([])", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 22, + "modifierKind": [ + 123 + ] + }, + { + "name": "communityLibraryProjectsSource$", + "defaultValue": "this.communityLibraryProjectsSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 23, + "modifierKind": [ + 125 + ] + }, + { + "name": "communityProjectsUrl", + "defaultValue": "'/api/project/community'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "modifierKind": [ + 123 + ] + }, + { + "name": "copyProjectUrl", + "defaultValue": "'/api/project/copy'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 123 + ] + }, + { + "name": "libraryGroups", + "deprecated": false, + "deprecationMessage": "", + "type": "LibraryGroup[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "modifierKind": [ + 125 + ] + }, + { + "name": "libraryGroupsSource", + "defaultValue": "new BehaviorSubject([])", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "modifierKind": [ + 123 + ] + }, + { + "name": "libraryGroupsSource$", + "defaultValue": "this.libraryGroupsSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "modifierKind": [ + 125 + ] + }, + { + "name": "libraryGroupsUrl", + "defaultValue": "'/api/project/library'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "modifierKind": [ + 123 + ] + }, + { + "name": "newProjectSource", + "defaultValue": "new BehaviorSubject(null)", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 28, + "modifierKind": [ + 123 + ] + }, + { + "name": "newProjectSource$", + "defaultValue": "this.newProjectSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 29, + "modifierKind": [ + 125 + ] + }, + { + "name": "numberOfPersonalProjectsVisible", + "defaultValue": "new BehaviorSubject(0)", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 32, + "modifierKind": [ + 125 + ] + }, + { + "name": "numberOfPersonalProjectsVisible$", + "defaultValue": "this.numberOfPersonalProjectsVisible.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 33, + "modifierKind": [ + 125 + ] + }, + { + "name": "numberOfPublicProjectsVisible", + "defaultValue": "new BehaviorSubject(0)", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 30, + "modifierKind": [ + 125 + ] + }, + { + "name": "numberOfPublicProjectsVisible$", + "defaultValue": "this.numberOfPublicProjectsVisible.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 31, + "modifierKind": [ + 125 + ] + }, + { + "name": "officialLibraryProjectsSource", + "defaultValue": "new BehaviorSubject([])", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 20, + "modifierKind": [ + 123 + ] + }, + { + "name": "officialLibraryProjectsSource$", + "defaultValue": "this.officialLibraryProjectsSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 21, + "modifierKind": [ + 125 + ] + }, + { + "name": "personalLibraryProjectsSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 24, + "modifierKind": [ + 123 + ] + }, + { + "name": "personalLibraryProjectsSource$", + "defaultValue": "this.personalLibraryProjectsSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 25, + "modifierKind": [ + 125 + ] + }, + { + "name": "personalProjectsUrl", + "defaultValue": "'/api/project/personal'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "modifierKind": [ + 123 + ] + }, + { + "name": "projectInfoUrl", + "defaultValue": "'/api/project/info'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "modifierKind": [ + 123 + ] + }, + { + "name": "sharedLibraryProjectsSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 26, + "modifierKind": [ + 123 + ] + }, + { + "name": "sharedLibraryProjectsSource$", + "defaultValue": "this.sharedLibraryProjectsSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 27, + "modifierKind": [ + 125 + ] + }, + { + "name": "sharedProjectsUrl", + "defaultValue": "'/api/project/shared'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "modifierKind": [ + 123 + ] + } + ], + "methods": [ + { + "name": "addPersonalLibraryProject", + "args": [ + { + "name": "project", + "type": "LibraryProject", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 128, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "project", + "type": "LibraryProject", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "clearAll", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 145, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "convertLibraryGroup", + "args": [ + { + "name": "libraryObj", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 61, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "libraryObj", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "convertLibraryGroups", + "args": [ + { + "name": "libraryGroups", + "type": "LibraryGroup[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "{}", + "typeParameters": [], + "line": 53, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "libraryGroups", + "type": "LibraryGroup[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "convertToLibraryProjects", + "args": [ + { + "name": "projectsJSON", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "{}", + "typeParameters": [], + "line": 100, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "projectsJSON", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "copyProject", + "args": [ + { + "name": "projectId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 121, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "projectId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getCommunityLibraryProjects", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 75, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getOfficialLibraryProjects", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 40, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getPersonalLibraryProjects", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getProjectInfo", + "args": [ + { + "name": "projectId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 133, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "projectId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getSharedLibraryProjects", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 90, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "populateProjects", + "args": [ + { + "name": "item", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projects", + "type": "LibraryProject[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 109, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "item", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projects", + "type": "LibraryProject[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "updateNumberOfPersonalProjectsVisible", + "args": [ + { + "name": "count", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 141, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "count", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "updateNumberOfPublicProjectsVisible", + "args": [ + { + "name": "count", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 137, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "count", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Injectable } from '@angular/core';\nimport { Observable, BehaviorSubject, Subject } from 'rxjs';\nimport { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\nimport { LibraryGroup } from '../modules/library/libraryGroup';\nimport { LibraryProject } from '../modules/library/libraryProject';\nimport { Project } from '../domain/project';\nimport { Router } from '@angular/router';\n\n@Injectable({ providedIn: 'root' })\nexport class LibraryService {\n private libraryGroupsUrl = '/api/project/library';\n private communityProjectsUrl = '/api/project/community';\n private personalProjectsUrl = '/api/project/personal';\n private sharedProjectsUrl = '/api/project/shared';\n private copyProjectUrl = '/api/project/copy';\n private projectInfoUrl = '/api/project/info';\n public libraryGroups: LibraryGroup[];\n private libraryGroupsSource = new BehaviorSubject([]);\n public libraryGroupsSource$ = this.libraryGroupsSource.asObservable();\n private officialLibraryProjectsSource = new BehaviorSubject([]);\n public officialLibraryProjectsSource$ = this.officialLibraryProjectsSource.asObservable();\n private communityLibraryProjectsSource = new BehaviorSubject([]);\n public communityLibraryProjectsSource$ = this.communityLibraryProjectsSource.asObservable();\n private personalLibraryProjectsSource = new Subject();\n public personalLibraryProjectsSource$ = this.personalLibraryProjectsSource.asObservable();\n private sharedLibraryProjectsSource = new Subject();\n public sharedLibraryProjectsSource$ = this.sharedLibraryProjectsSource.asObservable();\n private newProjectSource = new BehaviorSubject(null);\n public newProjectSource$ = this.newProjectSource.asObservable();\n public numberOfPublicProjectsVisible = new BehaviorSubject(0);\n public numberOfPublicProjectsVisible$ = this.numberOfPublicProjectsVisible.asObservable();\n public numberOfPersonalProjectsVisible = new BehaviorSubject(0);\n public numberOfPersonalProjectsVisible$ = this.numberOfPersonalProjectsVisible.asObservable();\n\n constructor(\n private http: HttpClient,\n private router: Router\n ) {}\n\n getOfficialLibraryProjects(): void {\n this.http.get(this.libraryGroupsUrl).subscribe((libraryGroups) => {\n const projects: LibraryProject[] = [];\n this.libraryGroups = this.convertLibraryGroups(libraryGroups);\n for (let group of this.libraryGroups) {\n this.populateProjects(group, projects);\n }\n projects.forEach((project) => (project.metadata.publicUnitType = 'wiseTested'));\n this.officialLibraryProjectsSource.next(projects);\n this.libraryGroupsSource.next(this.libraryGroups);\n });\n }\n\n convertLibraryGroups(libraryGroups: LibraryGroup[]) {\n const convertedLibraryGroups: LibraryGroup[] = [];\n for (let libraryGroup of libraryGroups) {\n convertedLibraryGroups.push(this.convertLibraryGroup(libraryGroup));\n }\n return convertedLibraryGroups;\n }\n\n convertLibraryGroup(libraryObj: any) {\n if (libraryObj.type === 'project') {\n return new LibraryProject(libraryObj);\n } else if (libraryObj.type === 'group') {\n const children = libraryObj.children;\n const convertedLibraryGroup = [];\n for (let child of children) {\n convertedLibraryGroup.push(this.convertLibraryGroup(child));\n }\n libraryObj.children = convertedLibraryGroup;\n return libraryObj;\n }\n }\n\n getCommunityLibraryProjects(): void {\n this.http.get(this.communityProjectsUrl).subscribe((projects) => {\n const communityProjects: LibraryProject[] = this.convertToLibraryProjects(projects);\n communityProjects.forEach((project) => (project.metadata.publicUnitType = 'communityBuilt'));\n this.communityLibraryProjectsSource.next(communityProjects);\n });\n }\n\n getPersonalLibraryProjects() {\n this.http.get(this.personalProjectsUrl).subscribe((projects) => {\n const personalLibraryProjects: LibraryProject[] = this.convertToLibraryProjects(projects);\n this.personalLibraryProjectsSource.next(personalLibraryProjects);\n });\n }\n\n getSharedLibraryProjects() {\n this.http.get(this.sharedProjectsUrl).subscribe((projects) => {\n const sharedLibraryProjects: LibraryProject[] = this.convertToLibraryProjects(projects);\n for (let sharedLibraryProject of sharedLibraryProjects) {\n sharedLibraryProject.shared = true;\n }\n this.sharedLibraryProjectsSource.next(sharedLibraryProjects);\n });\n }\n\n convertToLibraryProjects(projectsJSON) {\n const libraryProjects: LibraryProject[] = [];\n for (let project of projectsJSON) {\n const libraryProject = new LibraryProject(project);\n libraryProjects.push(libraryProject);\n }\n return libraryProjects;\n }\n\n populateProjects(item: any, projects: LibraryProject[]): void {\n if (item.type === 'project') {\n item.visible = true;\n projects.push(item);\n } else if (item.type === 'group') {\n let children = item.children;\n for (let child of children) {\n this.populateProjects(child, projects);\n }\n }\n }\n\n copyProject(projectId) {\n const headers = new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded');\n let body = new HttpParams();\n body = body.set('projectId', projectId + '');\n return this.http.post(this.copyProjectUrl, body, { headers: headers });\n }\n\n addPersonalLibraryProject(project: LibraryProject) {\n this.newProjectSource.next(project);\n this.router.navigate(['/curriculum/personal'], { state: { newProjectId: project.id } });\n }\n\n getProjectInfo(projectId): Observable {\n return this.http.get(this.projectInfoUrl + '/' + projectId);\n }\n\n updateNumberOfPublicProjectsVisible(count) {\n this.numberOfPublicProjectsVisible.next(count);\n }\n\n updateNumberOfPersonalProjectsVisible(count) {\n this.numberOfPersonalProjectsVisible.next(count);\n }\n\n clearAll(): void {\n this.libraryGroupsSource.next([]);\n this.officialLibraryProjectsSource.next([]);\n this.communityLibraryProjectsSource.next([]);\n this.personalLibraryProjectsSource.next([]);\n this.sharedLibraryProjectsSource.next([]);\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 33, + "jsdoctags": [ + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "type": "injectable" + }, + { + "name": "MatchService", + "id": "injectable-MatchService-f071be6cd7a5e622642ae43817e5f3b6e0f769607f98379fa802d25176d8453c808c74bec43ba33594bca30bab564cfda75a70522c223d198bc0ca853c542f8f", + "file": "src/assets/wise5/components/match/matchService.ts", + "properties": [ + { + "name": "notifyConnectedComponentSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "notifyConnectedComponentSource$", + "defaultValue": "this.notifyConnectedComponentSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "requestComponentStateSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "requestComponentStateSource$", + "defaultValue": "this.requestComponentStateSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "sendComponentStateSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "sendComponentStateSource$", + "defaultValue": "this.sendComponentStateSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "ComponentService" + } + } + ], + "methods": [ + { + "name": "componentHasCorrectAnswer", + "args": [ + { + "name": "component", + "type": "MatchContent", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 50, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "component", + "type": "MatchContent", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "componentStateHasStudentWork", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 37, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "createComponent", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 11, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getComponentTypeLabel", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 7, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "isCompleted", + "args": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeEvents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeEvents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "setItemStatus", + "args": [ + { + "name": "item", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "hasCorrectAnswer", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 56, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "item", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "hasCorrectAnswer", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "componentHasWork", + "args": [ + { + "name": "component", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 105, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nWhether this component generates student work\nis not provided, we will use the default value of whether the\ncomponent type usually has work.\n", + "description": "

Whether this component generates student work\nis not provided, we will use the default value of whether the\ncomponent type usually has work.

\n", + "jsdoctags": [ + { + "name": { + "pos": 3060, + "end": 3069, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "component" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3054, + "end": 3059, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

(optional) the component object. if the component object\nis not provided, we will use the default value of whether the\ncomponent type usually has work.

\n" + }, + { + "tagName": { + "pos": 3238, + "end": 3244, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether this component generates student work

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "componentUsesSaveButton", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 135, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nWhether this component uses a save button\n", + "description": "

Whether this component uses a save button

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 4173, + "end": 4179, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether this component uses a save button

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "componentUsesSubmitButton", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 143, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nWhether this component uses a submit button\n", + "description": "

Whether this component uses a submit button

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 4351, + "end": 4357, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether this component uses a submit button

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "displayAnnotation", + "args": [ + { + "name": "componentContent", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "annotation", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 94, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if we need to display the annotation to the student\n", + "description": "

Check if we need to display the annotation to the student

\n", + "jsdoctags": [ + { + "name": { + "pos": 2753, + "end": 2769, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentContent" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2747, + "end": 2752, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component content

\n" + }, + { + "name": { + "pos": 2804, + "end": 2814, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "annotation" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2798, + "end": 2803, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the annotation

\n" + }, + { + "tagName": { + "pos": 2836, + "end": 2843, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

whether we need to display the annotation to the student

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getDomIdEnding", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 18, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getElementId", + "args": [ + { + "name": "domIdBeginning", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "domIdEnding", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "domIdBeginning", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "domIdEnding", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getStudentDataString", + "args": [ + { + "name": "componentState", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 127, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the human readable student data string\n", + "description": "

Get the human readable student data string

\n", + "jsdoctags": [ + { + "name": { + "pos": 3953, + "end": 3967, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3947, + "end": 3952, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component state

\n" + }, + { + "tagName": { + "pos": 3994, + "end": 4000, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

a human readable student data string

\n", + "returnType": "string" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "hasNodeEnteredEvent", + "args": [ + { + "name": "nodeEvents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 155, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeEvents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "isSubmitRequired", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 151, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "notifyConnectedComponentSubscribers", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 42, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "requestComponentState", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 30, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "sendComponentState", + "args": [ + { + "name": "componentStateWrapper", + "type": "ComponentStateWrapper", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 38, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentStateWrapper", + "type": "ComponentStateWrapper", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { ComponentService } from '../componentService';\nimport { Injectable } from '@angular/core';\nimport { MatchContent } from './MatchContent';\n\n@Injectable()\nexport class MatchService extends ComponentService {\n getComponentTypeLabel(): string {\n return $localize`Match`;\n }\n\n createComponent() {\n const component: any = super.createComponent();\n component.type = 'Match';\n component.choices = [];\n component.choiceReuseEnabled = false;\n component.buckets = [];\n component.feedback = [{ bucketId: '0', choices: [] }];\n component.ordered = false;\n return component;\n }\n\n isCompleted(component: any, componentStates: any[], nodeEvents: any[], node: any) {\n if (componentStates && componentStates.length > 0) {\n const isSubmitRequired = this.isSubmitRequired(node, component);\n for (const componentState of componentStates) {\n const buckets = componentState.studentData.buckets;\n if (buckets && buckets.length > 0) {\n if (!isSubmitRequired || (isSubmitRequired && componentState.isSubmit)) {\n return true;\n }\n }\n }\n }\n return false;\n }\n\n componentStateHasStudentWork(componentState: any, componentContent: any) {\n if (componentState != null) {\n const buckets = componentState.studentData.buckets;\n for (const bucket of buckets) {\n const items = bucket.items;\n if (items != null && items.length > 0) {\n return true;\n }\n }\n }\n return false;\n }\n\n componentHasCorrectAnswer(component: MatchContent): boolean {\n return component.feedback.some((feedback) =>\n feedback.choices.some((choice) => choice.isCorrect)\n );\n }\n\n setItemStatus(item: any, hasCorrectAnswer: boolean): void {\n item.status = '';\n if (item.isCorrect) {\n item.status = 'correct';\n } else if (item.isIncorrectPosition) {\n item.status = 'warn';\n } else if (hasCorrectAnswer && !item.isCorrect && !item.isIncorrectPosition) {\n item.status = 'incorrect';\n }\n }\n}\n", + "extends": [ + "ComponentService" + ], + "type": "injectable" + }, + { + "name": "MathService", + "id": "injectable-MathService-aa8d39ef2650b2add7523f8cc5560526ce9e3adc045195f6c0f58117e8c3e58beb7419ddc00dd019539a582bb80422c24ffe96de0b24888e042e05ba8b070d0b", + "file": "src/app/math/math.service.ts", + "properties": [ + { + "name": "mathJax", + "defaultValue": "{\n id: 'MathJaxScript',\n source: 'mathjax/es5/tex-mml-chtml.js'\n }", + "deprecated": false, + "deprecationMessage": "", + "type": "MathJaxConfig", + "indexKey": "", + "optional": false, + "description": "", + "line": 26, + "modifierKind": [ + 123 + ] + }, + { + "name": "signal", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 25, + "modifierKind": [ + 123 + ] + } + ], + "methods": [ + { + "name": "ready", + "args": [], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 55, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "registerMathJaxAsync", + "args": [ + { + "name": "config", + "type": "MathJaxConfig", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 41, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123, + 134 + ], + "jsdoctags": [ + { + "name": "config", + "type": "MathJaxConfig", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "renderPage", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 59, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Injectable } from '@angular/core';\nimport { Observable, ReplaySubject, Subject } from 'rxjs';\nimport { NodeService } from '../../assets/wise5/services/nodeService';\n\ninterface MathJaxConfig {\n id: string;\n source: string;\n}\n\ndeclare global {\n interface Window {\n MathJax: {\n typesetPromise: () => void;\n startup: {\n promise: Promise;\n };\n };\n }\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MathService {\n private signal: Subject;\n private mathJax: MathJaxConfig = {\n id: 'MathJaxScript',\n source: 'mathjax/es5/tex-mml-chtml.js'\n };\n\n constructor(private nodeService: NodeService) {\n this.signal = new ReplaySubject();\n void this.registerMathJaxAsync(this.mathJax)\n .then(() => {\n this.signal.next(true);\n })\n .catch((error) => console.error(error));\n this.nodeService.doneRenderingComponent$.subscribe(() => this.renderPage());\n }\n\n private async registerMathJaxAsync(config: MathJaxConfig): Promise {\n return new Promise((resolve: any, reject) => {\n const script: HTMLScriptElement = document.createElement('script');\n script.id = config.id;\n script.type = 'text/javascript';\n script.src = config.source;\n script.crossOrigin = 'anonymous';\n script.async = true;\n script.onload = () => resolve();\n script.onerror = (error) => reject(error);\n document.head.appendChild(script);\n });\n }\n\n ready(): Observable {\n return this.signal;\n }\n\n private renderPage(): void {\n window.MathJax.startup.promise.then(() => {\n window.MathJax.typesetPromise();\n });\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 29, + "jsdoctags": [ + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "type": "injectable" + }, + { + "name": "MilestoneReportService", + "id": "injectable-MilestoneReportService-71808bec3d15171ac8299a234a503db27fa2bc49f817fbe805efd57e32881943a801db6eb5ea84a096d485a2f5f24b07f8a6da9c48666339e8bbcfa795252229", + "file": "src/assets/wise5/services/milestoneReportService.ts", + "properties": [ + { + "name": "milestoneCriteriaEvaluator", + "defaultValue": "new MilestoneCriteriaEvaluator()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "modifierKind": [ + 123 + ] + } + ], + "methods": [ + { + "name": "addAggregateDataBySubScoreId", + "args": [ + { + "name": "aggregateDataBySubScoreId", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "subScoreId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "aggregateData", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "stepTitle", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 280, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "aggregateDataBySubScoreId", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "subScoreId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "aggregateData", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "stepTitle", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addDataToAggregate", + "args": [ + { + "name": "aggregate", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "annotation", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "reportSettings", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 164, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "aggregate", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "annotation", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "reportSettings", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "adjustKIScore", + "args": [ + { + "name": "scoreValue", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "reportSettings", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 139, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "scoreValue", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "reportSettings", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "calculateAggregateAutoScores", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "reportSettings", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "{}", + "typeParameters": [], + "line": 70, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "reportSettings", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "chooseTemplate", + "args": [ + { + "name": "templates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "aggregateAutoScores", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 222, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "templates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "aggregateAutoScores", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "generate", + "args": [ + { + "name": "projectAchievement", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 17, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "projectAchievement", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getAggregateDataBySubScoreId", + "args": [ + { + "name": "componentAggregateAutoScores", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 261, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentAggregateAutoScores", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getAllLatestScoreAnnotations", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Annotation[]", + "typeParameters": [], + "line": 101, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getComponentAggregateAutoScore", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "report", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 50, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "report", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getComponentAggregateAutoScores", + "args": [ + { + "name": "projectAchievement", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 36, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "projectAchievement", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getCustomScoreValueCounts", + "args": [ + { + "name": "scoreValues", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "{}", + "typeParameters": [], + "line": 196, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "scoreValues", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getKIScoreBounds", + "args": [ + { + "name": "reportSettings", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "{ min: number; max: number; }", + "typeParameters": [], + "line": 152, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "reportSettings", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getPossibleScoreValueCounts", + "args": [ + { + "name": "subScoreId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "{ 1: number; 2: number; 3: number; 4: number; 5: number; } | { 1: number; 2: number; 3: number; 4?: undefined; 5?: undefined; }", + "typeParameters": [], + "line": 204, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "subScoreId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "injectAdditionalFieldsIntoAggregateData", + "args": [ + { + "name": "aggregateData", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "stepTitle", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 295, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "aggregateData", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "stepTitle", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isTemplateMatch", + "args": [ + { + "name": "template", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "aggregateAutoScores", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 233, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "template", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "aggregateAutoScores", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "mergeAutoScoreAndTeacherScore", + "args": [ + { + "name": "autoScoreAnnotation", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "teacherScoreAnnotation", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "reportSettings", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 124, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "autoScoreAnnotation", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "teacherScoreAnnotation", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "reportSettings", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "processMilestoneGraphsAndData", + "args": [ + { + "name": "content", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentAggregateAutoScores", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 247, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "content", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentAggregateAutoScores", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setupAggregateSubScore", + "args": [ + { + "name": "subScoreId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "reportSettings", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "{ scoreSum: number; scoreCount: number; counts: {}; average: number; }", + "typeParameters": [], + "line": 181, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "subScoreId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "reportSettings", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Injectable } from '@angular/core';\nimport { AnnotationService } from './annotationService';\nimport { ProjectService } from './projectService';\nimport { MilestoneCriteriaEvaluator } from '../classroomMonitor/milestones/milestoneCriteriaEvaluator';\nimport { Annotation } from '../common/Annotation';\nimport { isMatchingPeriods } from '../common/period/period';\n\n@Injectable()\nexport class MilestoneReportService {\n private milestoneCriteriaEvaluator = new MilestoneCriteriaEvaluator();\n\n constructor(\n private annotationService: AnnotationService,\n private projectService: ProjectService\n ) {}\n\n generate(projectAchievement: any, periodId: number): any {\n const componentAggregateAutoScores = this.getComponentAggregateAutoScores(\n projectAchievement,\n periodId\n );\n const template = this.chooseTemplate(\n projectAchievement.report.templates,\n componentAggregateAutoScores\n );\n let content = template.content ? template.content : '';\n if (content) {\n content = this.processMilestoneGraphsAndData(content, componentAggregateAutoScores);\n }\n return {\n content: content,\n recommendations: template.recommendations ? template.recommendations : ''\n };\n }\n\n private getComponentAggregateAutoScores(projectAchievement: any, periodId: number): any[] {\n const componentAggregateAutoScores = [];\n for (const referencedComponent of projectAchievement.report.locations) {\n const componentAggregateAutoScore = this.getComponentAggregateAutoScore(\n referencedComponent.nodeId,\n referencedComponent.componentId,\n periodId,\n projectAchievement.report\n );\n componentAggregateAutoScores.push(componentAggregateAutoScore);\n }\n return componentAggregateAutoScores;\n }\n\n private getComponentAggregateAutoScore(\n nodeId: string,\n componentId: string,\n periodId: number,\n report: any\n ): any {\n const aggregateAutoScore: any = this.calculateAggregateAutoScores(\n nodeId,\n componentId,\n periodId,\n report\n );\n return {\n nodeId: nodeId,\n componentId: componentId,\n stepTitle: this.projectService.getNodePositionAndTitle(nodeId),\n aggregateAutoScore: aggregateAutoScore\n };\n }\n\n calculateAggregateAutoScores(\n nodeId: string,\n componentId: string,\n periodId: number,\n reportSettings: any\n ) {\n const aggregate = {};\n const scoreAnnotations = this.getAllLatestScoreAnnotations(nodeId, componentId, periodId);\n for (const scoreAnnotation of scoreAnnotations) {\n if (scoreAnnotation.type === 'autoScore') {\n this.addDataToAggregate(aggregate, scoreAnnotation, reportSettings);\n } else {\n const autoScoreAnnotation = this.annotationService.getLatestScoreAnnotation(\n nodeId,\n componentId,\n scoreAnnotation.toWorkgroupId,\n 'autoScore'\n );\n if (autoScoreAnnotation) {\n const mergedAnnotation = this.mergeAutoScoreAndTeacherScore(\n autoScoreAnnotation,\n scoreAnnotation,\n reportSettings\n );\n this.addDataToAggregate(aggregate, mergedAnnotation, reportSettings);\n }\n }\n }\n return aggregate;\n }\n\n private getAllLatestScoreAnnotations(\n nodeId: string,\n componentId: string,\n periodId: number\n ): Annotation[] {\n return this.annotationService\n .getAnnotationsByNodeIdComponentId(nodeId, componentId)\n .filter(\n (annotation) =>\n isMatchingPeriods(annotation.periodId, periodId) &&\n ['autoScore', 'score'].includes(annotation.type)\n )\n .reduceRight(\n (latestAnnotations, annotation) =>\n latestAnnotations.some(\n (latestAnnotation) => latestAnnotation.toWorkgroupId === annotation.toWorkgroupId\n )\n ? latestAnnotations\n : latestAnnotations.concat(annotation),\n []\n );\n }\n\n private mergeAutoScoreAndTeacherScore(\n autoScoreAnnotation: any,\n teacherScoreAnnotation: any,\n reportSettings: any\n ) {\n if (autoScoreAnnotation.data.scores) {\n for (const subScore of autoScoreAnnotation.data.scores) {\n if (subScore.id === 'ki') {\n subScore.score = this.adjustKIScore(teacherScoreAnnotation.data.value, reportSettings);\n }\n }\n }\n return autoScoreAnnotation;\n }\n\n adjustKIScore(scoreValue: number, reportSettings: any) {\n const teacherScore = Math.round(scoreValue);\n const kiScoreBounds = this.getKIScoreBounds(reportSettings);\n let score = teacherScore;\n if (teacherScore > kiScoreBounds.max) {\n score = kiScoreBounds.max;\n }\n if (teacherScore < kiScoreBounds.min) {\n score = kiScoreBounds.min;\n }\n return score;\n }\n\n getKIScoreBounds(reportSettings: any) {\n const bounds = {\n min: 1,\n max: 5\n };\n if (reportSettings.customScoreValues && reportSettings.customScoreValues['ki']) {\n bounds.min = Math.min(...reportSettings.customScoreValues['ki']);\n bounds.max = Math.max(...reportSettings.customScoreValues['ki']);\n }\n return bounds;\n }\n\n addDataToAggregate(aggregate: any, annotation: any, reportSettings: any) {\n for (const subScore of annotation.data.scores) {\n if (aggregate[subScore.id] == null) {\n aggregate[subScore.id] = this.setupAggregateSubScore(subScore.id, reportSettings);\n }\n const subScoreVal = subScore.score;\n if (aggregate[subScore.id].counts[subScoreVal] > -1) {\n aggregate[subScore.id].counts[subScoreVal]++;\n aggregate[subScore.id].scoreSum += subScoreVal;\n aggregate[subScore.id].scoreCount++;\n aggregate[subScore.id].average =\n aggregate[subScore.id].scoreSum / aggregate[subScore.id].scoreCount;\n }\n }\n return aggregate;\n }\n\n setupAggregateSubScore(subScoreId: string, reportSettings: any) {\n let counts = {};\n if (reportSettings.customScoreValues && reportSettings.customScoreValues[subScoreId]) {\n counts = this.getCustomScoreValueCounts(reportSettings.customScoreValues[subScoreId]);\n } else {\n counts = this.getPossibleScoreValueCounts(subScoreId);\n }\n return {\n scoreSum: 0,\n scoreCount: 0,\n counts: counts,\n average: 0\n };\n }\n\n getCustomScoreValueCounts(scoreValues: any[]) {\n let counts = {};\n for (const value of scoreValues) {\n counts[value] = 0;\n }\n return counts;\n }\n\n getPossibleScoreValueCounts(subScoreId: string) {\n if (subScoreId === 'ki') {\n return {\n 1: 0,\n 2: 0,\n 3: 0,\n 4: 0,\n 5: 0\n };\n } else {\n return {\n 1: 0,\n 2: 0,\n 3: 0\n };\n }\n }\n\n chooseTemplate(templates: any[], aggregateAutoScores: any[]) {\n for (const template of templates) {\n if (this.isTemplateMatch(template, aggregateAutoScores)) {\n return template;\n }\n }\n return {\n content: null\n };\n }\n\n isTemplateMatch(template: any, aggregateAutoScores: any[]): boolean {\n const matchedCriteria = [];\n for (const satisfyCriterion of template.satisfyCriteria) {\n if (this.milestoneCriteriaEvaluator.isSatisfied(satisfyCriterion, aggregateAutoScores)) {\n matchedCriteria.push(satisfyCriterion);\n }\n }\n if (template.satisfyConditional === 'all') {\n return matchedCriteria.length === template.satisfyCriteria.length;\n } else if (template.satisfyConditional === 'any') {\n return matchedCriteria.length > 0;\n }\n }\n\n processMilestoneGraphsAndData(content: any, componentAggregateAutoScores: any): string {\n const aggregateDataBySubScoreId = this.getAggregateDataBySubScoreId(\n componentAggregateAutoScores\n );\n for (const [subScoreId, subScoreData] of Object.entries(aggregateDataBySubScoreId)) {\n const data = JSON.stringify(subScoreData).replace(/\\\"/g, \"'\");\n const graphRegex = new RegExp(`milestone-report-graph{1,} id=\"(${subScoreId})\"`, 'g');\n content = content.replace(graphRegex, `$& data=\\\"${data}\\\"`);\n const dataRegex = new RegExp(`milestone-report-data{1,} score-id=\"(${subScoreId})\"`, 'g');\n content = content.replace(dataRegex, `$& data=\\\"${data}\\\"`);\n }\n return content;\n }\n\n private getAggregateDataBySubScoreId(componentAggregateAutoScores: any[]): any {\n const aggregateDataBySubScoreId = {};\n for (const componentAggregateAutoScore of componentAggregateAutoScores) {\n const aggregateAutoScore = componentAggregateAutoScore.aggregateAutoScore;\n for (const subScoreId of Object.keys(aggregateAutoScore)) {\n const aggregateData = aggregateAutoScore[subScoreId];\n this.addAggregateDataBySubScoreId(\n aggregateDataBySubScoreId,\n subScoreId,\n aggregateData,\n componentAggregateAutoScore.nodeId,\n componentAggregateAutoScore.componentId,\n componentAggregateAutoScore.stepTitle\n );\n }\n }\n return aggregateDataBySubScoreId;\n }\n\n private addAggregateDataBySubScoreId(\n aggregateDataBySubScoreId: any,\n subScoreId: string,\n aggregateData: any,\n nodeId: string,\n componentId: string,\n stepTitle: string\n ): void {\n if (aggregateDataBySubScoreId[subScoreId] == null) {\n aggregateDataBySubScoreId[subScoreId] = [];\n }\n this.injectAdditionalFieldsIntoAggregateData(aggregateData, nodeId, componentId, stepTitle);\n aggregateDataBySubScoreId[subScoreId].push(aggregateData);\n }\n\n private injectAdditionalFieldsIntoAggregateData(\n aggregateData: any,\n nodeId: string,\n componentId: string,\n stepTitle: string\n ): any {\n aggregateData.nodeId = nodeId;\n aggregateData.componentId = componentId;\n aggregateData.stepTitle = stepTitle;\n return aggregateData;\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 10, + "jsdoctags": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "type": "injectable" + }, + { + "name": "MilestoneService", + "id": "injectable-MilestoneService-fe9a1f9de016bd8a7fe747a82bea5d429af74faf2749d22b3f4b59bedabec1ee789548e199ce1fc77dfe6b1c6fe5e2353e21c9babcee646cb50a63221e2d917c", + "file": "src/assets/wise5/services/milestoneService.ts", + "properties": [ + { + "name": "numberOfStudentsInRun", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 14 + }, + { + "name": "periodId", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 15 + }, + { + "name": "projectMilestones", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 16 + }, + { + "name": "workgroupIds", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 17 + } + ], + "methods": [ + { + "name": "getMilestoneReport", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 37, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getProjectMilestoneReports", + "args": [], + "optional": false, + "returnType": "Milestone[]", + "typeParameters": [], + "line": 47, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "getProjectMilestones", + "args": [], + "optional": false, + "returnType": "Milestone[]", + "typeParameters": [], + "line": 27, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getProjectMilestoneStatus", + "args": [ + { + "name": "milestoneId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 51, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "milestoneId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getReferencedComponent", + "args": [ + { + "name": "milestone", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 155, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "milestone", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getSatisfyCriteriaReferencedComponents", + "args": [ + { + "name": "projectAchievement", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 168, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "projectAchievement", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "insertMilestoneCompletion", + "args": [ + { + "name": "milestone", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 75, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "milestone", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "insertMilestoneItems", + "args": [ + { + "name": "milestone", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 63, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "milestone", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "insertMilestoneReport", + "args": [ + { + "name": "milestone", + "type": "Milestone", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Milestone", + "typeParameters": [], + "line": 140, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "milestone", + "type": "Milestone", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isCompletionReached", + "args": [ + { + "name": "projectAchievement", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 161, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "projectAchievement", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setWorkgroupsInCurrentPeriod", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 129, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "'use strict';\n\nimport { AchievementService } from './achievementService';\nimport { ConfigService } from './configService';\nimport { ProjectService } from './projectService';\nimport { TeacherDataService } from './teacherDataService';\nimport { Injectable } from '@angular/core';\nimport { copy } from '../common/object/object';\nimport { MilestoneReportService } from './milestoneReportService';\nimport { Milestone } from '../../../app/domain/milestone';\n\n@Injectable()\nexport class MilestoneService {\n numberOfStudentsInRun: number;\n periodId: any;\n projectMilestones: any[];\n workgroupIds: any[];\n\n constructor(\n private achievementService: AchievementService,\n private configService: ConfigService,\n private dataService: TeacherDataService,\n private milestoneReportService: MilestoneReportService,\n private projectService: ProjectService\n ) {}\n\n getProjectMilestones(): Milestone[] {\n const achievements = this.projectService.getAchievements();\n if (achievements.isEnabled) {\n return achievements.items.filter((achievement) => {\n return ['milestone', 'milestoneReport'].includes(achievement.type);\n });\n }\n return [];\n }\n\n getMilestoneReport(nodeId: string, componentId: string): any {\n const milestoneReport = this.getProjectMilestoneReports().find((report) => {\n const referencedComponent = this.getReferencedComponent(report);\n return (\n referencedComponent.nodeId === nodeId && referencedComponent.componentId === componentId\n );\n });\n return milestoneReport ? this.getProjectMilestoneStatus(milestoneReport.id) : null;\n }\n\n private getProjectMilestoneReports(): Milestone[] {\n return this.getProjectMilestones().filter((milestone) => milestone.type === 'milestoneReport');\n }\n\n getProjectMilestoneStatus(milestoneId: string): any {\n this.periodId = this.dataService.getCurrentPeriod().periodId;\n this.setWorkgroupsInCurrentPeriod();\n let milestone = this.projectService.getAchievementByAchievementId(milestoneId);\n milestone = this.insertMilestoneItems(milestone);\n milestone = this.insertMilestoneCompletion(milestone);\n if (milestone.type === 'milestoneReport') {\n milestone = this.insertMilestoneReport(milestone);\n }\n return milestone;\n }\n\n insertMilestoneItems(milestone: any): any {\n milestone.items = copy(this.projectService.idToOrder);\n if (milestone.params != null && milestone.params.nodeIds != null) {\n for (const nodeId of milestone.params.nodeIds) {\n if (milestone.items[nodeId] != null) {\n milestone.items[nodeId].checked = true;\n }\n }\n }\n return milestone;\n }\n\n insertMilestoneCompletion(milestone: any): any {\n const achievementIdToStudentAchievements =\n this.achievementService.getAchievementIdToStudentAchievementsMappings();\n const studentAchievements = achievementIdToStudentAchievements[milestone.id];\n const workgroupIdsCompleted = [];\n const achievementTimes = [];\n const workgroupIdsNotCompleted = [];\n\n for (const studentAchievement of studentAchievements) {\n const currentWorkgroupId = studentAchievement.workgroupId;\n if (this.workgroupIds.indexOf(currentWorkgroupId) > -1) {\n workgroupIdsCompleted.push(currentWorkgroupId);\n achievementTimes.push(studentAchievement.achievementTime);\n }\n }\n\n for (const workgroupId of this.workgroupIds) {\n if (workgroupIdsCompleted.indexOf(workgroupId) === -1) {\n workgroupIdsNotCompleted.push(workgroupId);\n }\n }\n\n milestone.workgroups = [];\n\n for (let c = 0; c < workgroupIdsCompleted.length; c++) {\n const workgroupId = workgroupIdsCompleted[c];\n const achievementTime = achievementTimes[c];\n const workgroupObject = {\n workgroupId: workgroupId,\n displayNames: this.configService.getDisplayUsernamesByWorkgroupId(workgroupId),\n achievementTime: achievementTime,\n completed: true\n };\n milestone.workgroups.push(workgroupObject);\n }\n\n for (const workgroupId of workgroupIdsNotCompleted) {\n const workgroupObject = {\n workgroupId: workgroupId,\n displayNames: this.configService.getDisplayUsernamesByWorkgroupId(workgroupId),\n achievementTime: null,\n completed: false\n };\n milestone.workgroups.push(workgroupObject);\n }\n\n milestone.numberOfStudentsCompleted = workgroupIdsCompleted.length;\n milestone.numberOfStudentsInRun = this.numberOfStudentsInRun;\n milestone.percentageCompleted = Math.round(\n (100 * milestone.numberOfStudentsCompleted) / this.numberOfStudentsInRun\n );\n return milestone;\n }\n\n setWorkgroupsInCurrentPeriod(): void {\n this.workgroupIds = [];\n for (const workgroupId of this.configService.getClassmateWorkgroupIds()) {\n const currentPeriodId = this.configService.getPeriodIdByWorkgroupId(workgroupId);\n if (this.periodId === -1 || currentPeriodId === this.periodId) {\n this.workgroupIds.push(workgroupId);\n }\n }\n this.numberOfStudentsInRun = this.workgroupIds.length;\n }\n\n insertMilestoneReport(milestone: Milestone): Milestone {\n const referencedComponent = this.getReferencedComponent(milestone);\n milestone.nodeId = referencedComponent.nodeId;\n milestone.componentId = referencedComponent.componentId;\n if (this.isCompletionReached(milestone)) {\n const report = this.milestoneReportService.generate(milestone, this.periodId);\n milestone.isReportAvailable = true;\n milestone.generatedReport = report.content ? report.content : null;\n milestone.generatedRecommendations = report.recommendations ? report.recommendations : null;\n } else {\n milestone.isReportAvailable = false;\n }\n return milestone;\n }\n\n getReferencedComponent(milestone: any): any {\n const referencedComponents = this.getSatisfyCriteriaReferencedComponents(milestone);\n const referencedComponentValues: any[] = Object.values(referencedComponents);\n return referencedComponentValues[referencedComponentValues.length - 1];\n }\n\n isCompletionReached(projectAchievement: any): boolean {\n return (\n projectAchievement.percentageCompleted >= projectAchievement.satisfyMinPercentage &&\n projectAchievement.numberOfStudentsCompleted >= projectAchievement.satisfyMinNumWorkgroups\n );\n }\n\n getSatisfyCriteriaReferencedComponents(projectAchievement: any): any {\n const components = {};\n const templates = projectAchievement.report.templates;\n for (const template of templates) {\n for (const satisfyCriterion of template.satisfyCriteria) {\n const nodeId = satisfyCriterion.nodeId;\n const componentId = satisfyCriterion.componentId;\n const component = {\n nodeId: nodeId,\n componentId: componentId\n };\n components[nodeId + '_' + componentId] = component;\n }\n }\n return components;\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "achievementService", + "type": "AchievementService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "milestoneReportService", + "type": "MilestoneReportService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 17, + "jsdoctags": [ + { + "name": "achievementService", + "type": "AchievementService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "milestoneReportService", + "type": "MilestoneReportService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "type": "injectable" + }, + { + "name": "MockConfigService", + "id": "injectable-MockConfigService-ac8f3f25082faa4fe4b20c7f6c730f0404ca18ac0e1cf78551b33d7ba242ba332a4a386945b612a549b32a466db2ef18226c0efe6e822a20b45dfb906d3154db", + "file": "src/app/services/test.config.service.ts", + "properties": [], + "methods": [], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Injectable } from '@angular/core';\n\n@Injectable()\nexport class MockConfigService {}\n", + "extends": [], + "type": "injectable" + }, + { + "name": "MoveNodesService", + "id": "injectable-MoveNodesService-01684e4696a6afd56a6e103e93c708603d937f0e57ff8f4986dec90780ef1e61be8c4a5afbdc48429345aeb34417b9f6a6ada25701e2733523e24d1f6bacc6ad", + "file": "src/assets/wise5/services/moveNodesService.ts", + "properties": [], + "methods": [ + { + "name": "moveFromActiveToInactiveInsertInside", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeIdToInsertInside", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 77, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nMove the node from active to inside an inactive group\n", + "description": "

Move the node from active to inside an inactive group

\n", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": { + "pos": 3013, + "end": 3017, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "node" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3007, + "end": 3012, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node to move

\n" + }, + { + "name": { + "pos": 3047, + "end": 3067, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeIdToInsertInside" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3041, + "end": 3046, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

place the node inside this

\n" + } + ] + }, + { + "name": "moveFromInactiveToInactiveInsertInside", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeIdToInsertInside", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 134, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nMove the node from inactive to inside an inactive group\n", + "description": "

Move the node from inactive to inside an inactive group

\n", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": { + "pos": 4830, + "end": 4834, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "node" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4824, + "end": 4829, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node to move

\n" + }, + { + "name": { + "pos": 4864, + "end": 4884, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeIdToInsertInside" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4858, + "end": 4863, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

place the node inside this

\n" + } + ] + }, + { + "name": "moveInactiveNodeToInactiveSection", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeIdToInsertAfter", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 202, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeIdToInsertAfter", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "moveNodesAfter", + "args": [ + { + "name": "nodeIds", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "moveAfterNodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 171, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nMove nodes after a certain node id\n", + "description": "

Move nodes after a certain node id

\n", + "jsdoctags": [ + { + "name": { + "pos": 6336, + "end": 6343, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeIds" + }, + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 6330, + "end": 6335, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node ids to move

\n" + }, + { + "name": { + "pos": 6377, + "end": 6392, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "moveAfterNodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 6371, + "end": 6376, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id we will put the moved nodes after

\n" + } + ] + }, + { + "name": "moveNodesInsideGroup", + "args": [ + { + "name": "nodeIds", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "groupNodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 17, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nMove nodes inside an active/inactive group node\n", + "description": "

Move nodes inside an active/inactive group node

\n", + "jsdoctags": [ + { + "name": { + "pos": 477, + "end": 484, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeIds" + }, + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 471, + "end": 476, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node ids to move

\n" + }, + { + "name": { + "pos": 518, + "end": 529, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "groupNodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 512, + "end": 517, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id of the group we are moving the nodes inside

\n" + } + ] + }, + { + "name": "moveToActive", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 119, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nMove the node to the active nodes array. If the node is a group node,\nalso move all of its children to active.\n", + "description": "

Move the node to the active nodes array. If the node is a group node,\nalso move all of its children to active.

\n", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "moveToInactive", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeIdToInsertAfter", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 161, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nMove an active node to the inactive nodes array.\n", + "description": "

Move an active node to the inactive nodes array.

\n", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": { + "pos": 5990, + "end": 5994, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "node" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 5984, + "end": 5989, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node to move

\n" + }, + { + "name": { + "pos": 6024, + "end": 6043, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeIdToInsertAfter" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 6018, + "end": 6023, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

place the node after this

\n" + } + ] + }, + { + "name": "removeChildNodesFromActiveNodes", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 109, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nMove the child nodes of a group from the active nodes.\n", + "description": "

Move the child nodes of a group from the active nodes.

\n", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": { + "pos": 4115, + "end": 4119, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "node" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4109, + "end": 4114, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The group node.

\n" + } + ] + }, + { + "name": "removeNodeFromActiveNodes", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 88, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nRemove the node from the active nodes.\nIf the node is a group node, also remove its children.\n", + "description": "

Remove the node from the active nodes.\nIf the node is a group node, also remove its children.

\n", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": { + "pos": 3450, + "end": 3456, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3444, + "end": 3449, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node to remove

\n" + }, + { + "tagName": { + "pos": 3482, + "end": 3489, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

the node that was removed

\n" + } + ] + }, + { + "name": "removeNodeFromInactiveGroupNodes", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 236, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "removeNodeFromInactiveNodes", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 207, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "removeNodeFromInactiveStepNodes", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 227, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Injectable } from '@angular/core';\nimport { TeacherProjectService } from './teacherProjectService';\nimport { RemoveNodeIdFromTransitionsService } from './removeNodeIdFromTransitionsService';\n\n@Injectable()\nexport class MoveNodesService {\n constructor(\n protected projectService: TeacherProjectService,\n private removeNodeIdFromTransitionsService: RemoveNodeIdFromTransitionsService\n ) {}\n\n /**\n * Move nodes inside an active/inactive group node\n * @param nodeIds the node ids to move\n * @param groupNodeId the node id of the group we are moving the nodes inside\n */\n moveNodesInsideGroup(nodeIds: string[], groupNodeId: string): any[] {\n const movedNodes = [];\n for (let n = 0; n < nodeIds.length; n++) {\n const nodeId = nodeIds[n];\n const node = this.projectService.getNodeById(nodeId);\n movedNodes.push(node);\n const movingNodeIsActive = this.projectService.isActive(nodeId);\n const stationaryNodeIsActive = this.projectService.isActive(groupNodeId);\n\n if (movingNodeIsActive && stationaryNodeIsActive) {\n this.removeNodeIdFromTransitionsService.remove(nodeId);\n this.projectService.removeNodeIdFromGroups(nodeId);\n\n if (n == 0) {\n this.projectService.insertNodeInsideOnlyUpdateTransitions(nodeId, groupNodeId);\n this.projectService.insertNodeInsideInGroups(nodeId, groupNodeId);\n } else {\n this.projectService.insertNodeAfterInTransitions(node, groupNodeId);\n this.projectService.insertNodeAfterInGroups(nodeId, groupNodeId);\n }\n } else if (movingNodeIsActive && !stationaryNodeIsActive) {\n this.removeNodeIdFromTransitionsService.remove(nodeId);\n this.projectService.removeNodeIdFromGroups(nodeId);\n\n if (n == 0) {\n this.moveFromActiveToInactiveInsertInside(node, groupNodeId);\n } else {\n this.moveToInactive(node, groupNodeId);\n }\n } else if (!movingNodeIsActive && stationaryNodeIsActive) {\n this.moveToActive(node);\n\n if (n == 0) {\n this.projectService.insertNodeInsideOnlyUpdateTransitions(nodeId, groupNodeId);\n this.projectService.insertNodeInsideInGroups(nodeId, groupNodeId);\n } else {\n this.projectService.insertNodeAfterInTransitions(node, groupNodeId);\n this.projectService.insertNodeAfterInGroups(nodeId, groupNodeId);\n }\n } else if (!movingNodeIsActive && !stationaryNodeIsActive) {\n this.removeNodeIdFromTransitionsService.remove(nodeId);\n this.projectService.removeNodeIdFromGroups(nodeId);\n\n if (n == 0) {\n this.moveFromInactiveToInactiveInsertInside(node, groupNodeId);\n } else {\n this.moveInactiveNodeToInactiveSection(node, groupNodeId);\n }\n }\n // remember the node id so we can put the next node (if any) after this one\n groupNodeId = node.id;\n }\n return movedNodes;\n }\n\n /**\n * Move the node from active to inside an inactive group\n * @param node the node to move\n * @param nodeIdToInsertInside place the node inside this\n */\n private moveFromActiveToInactiveInsertInside(node: any, nodeIdToInsertInside: string): void {\n this.removeNodeFromActiveNodes(node.id);\n this.projectService.addInactiveNodeInsertInside(node, nodeIdToInsertInside);\n }\n\n /**\n * Remove the node from the active nodes.\n * If the node is a group node, also remove its children.\n * @param nodeId the node to remove\n * @returns the node that was removed\n */\n private removeNodeFromActiveNodes(nodeId: string): any {\n let nodeRemoved = null;\n const activeNodes = this.projectService.project.nodes;\n for (let a = 0; a < activeNodes.length; a++) {\n const activeNode = activeNodes[a];\n if (activeNode.id === nodeId) {\n activeNodes.splice(a, 1);\n nodeRemoved = activeNode;\n if (activeNode.type === 'group') {\n this.removeChildNodesFromActiveNodes(activeNode);\n }\n break;\n }\n }\n return nodeRemoved;\n }\n\n /**\n * Move the child nodes of a group from the active nodes.\n * @param node The group node.\n */\n private removeChildNodesFromActiveNodes(node: any): void {\n for (const childId of node.ids) {\n this.removeNodeFromActiveNodes(childId);\n }\n }\n\n /**\n * Move the node to the active nodes array. If the node is a group node,\n * also move all of its children to active.\n */\n private moveToActive(node: any): void {\n this.removeNodeFromInactiveNodes(node.id);\n this.projectService.addNode(node);\n if (this.projectService.isGroupNode(node.id)) {\n for (const childId of node.ids) {\n this.projectService.addNode(this.removeNodeFromInactiveNodes(childId));\n }\n }\n }\n\n /**\n * Move the node from inactive to inside an inactive group\n * @param node the node to move\n * @param nodeIdToInsertInside place the node inside this\n */\n private moveFromInactiveToInactiveInsertInside(node: any, nodeIdToInsertInside: string): void {\n this.removeNodeFromInactiveNodes(node.id);\n if (this.projectService.isGroupNode(node.id)) {\n /*\n * remove the group's child nodes from our data structures so that we can\n * add them back in later\n */\n for (const childId of node.ids) {\n const childNode = this.projectService.getNodeById(childId);\n const inactiveNodesIndex = this.projectService.project.inactiveNodes.indexOf(childNode);\n if (inactiveNodesIndex != -1) {\n this.projectService.project.inactiveNodes.splice(inactiveNodesIndex, 1);\n }\n const inactiveStepNodesIndex = this.projectService.inactiveStepNodes.indexOf(childNode);\n if (inactiveStepNodesIndex != -1) {\n this.projectService.inactiveStepNodes.splice(inactiveStepNodesIndex, 1);\n }\n }\n }\n this.projectService.addInactiveNodeInsertInside(node, nodeIdToInsertInside);\n }\n\n /**\n * Move an active node to the inactive nodes array.\n * @param node the node to move\n * @param nodeIdToInsertAfter place the node after this\n */\n private moveToInactive(node: any, nodeIdToInsertAfter: string): void {\n this.removeNodeFromActiveNodes(node.id);\n this.projectService.addInactiveNodeInsertAfter(node, nodeIdToInsertAfter);\n }\n\n /**\n * Move nodes after a certain node id\n * @param nodeIds the node ids to move\n * @param moveAfterNodeId the node id we will put the moved nodes after\n */\n moveNodesAfter(nodeIds: string[], moveAfterNodeId: string): any[] {\n const movedNodes = [];\n for (let nodeId of nodeIds) {\n const node = this.projectService.getNodeById(nodeId);\n movedNodes.push(node);\n const movingNodeIsActive = this.projectService.isActive(nodeId);\n const stationaryNodeIsActive = this.projectService.isActive(moveAfterNodeId);\n if (movingNodeIsActive && stationaryNodeIsActive) {\n this.removeNodeIdFromTransitionsService.remove(nodeId);\n this.projectService.removeNodeIdFromGroups(nodeId);\n this.projectService.insertNodeAfterInGroups(nodeId, moveAfterNodeId);\n this.projectService.insertNodeAfterInTransitions(node, moveAfterNodeId);\n } else if (movingNodeIsActive && !stationaryNodeIsActive) {\n this.removeNodeIdFromTransitionsService.remove(nodeId);\n this.projectService.removeNodeIdFromGroups(nodeId);\n this.moveToInactive(node, moveAfterNodeId);\n } else if (!movingNodeIsActive && stationaryNodeIsActive) {\n this.moveToActive(node);\n this.projectService.insertNodeAfterInGroups(nodeId, moveAfterNodeId);\n this.projectService.insertNodeAfterInTransitions(node, moveAfterNodeId);\n } else if (!movingNodeIsActive && !stationaryNodeIsActive) {\n this.removeNodeIdFromTransitionsService.remove(nodeId);\n this.projectService.removeNodeIdFromGroups(nodeId);\n this.moveInactiveNodeToInactiveSection(node, moveAfterNodeId);\n }\n // remember the node id so we can put the next node (if any) after this one\n moveAfterNodeId = node.id;\n }\n return movedNodes;\n }\n\n private moveInactiveNodeToInactiveSection(node: any, nodeIdToInsertAfter: string): void {\n this.removeNodeFromInactiveNodes(node.id);\n this.projectService.addInactiveNodeInsertAfter(node, nodeIdToInsertAfter);\n }\n\n private removeNodeFromInactiveNodes(nodeId: string): void {\n let node = null;\n if (this.projectService.getParentGroup(nodeId) != null) {\n this.projectService.removeChildFromParent(nodeId);\n }\n\n const inactiveNodes = this.projectService.project.inactiveNodes;\n for (let i = 0; i < inactiveNodes.length; i++) {\n let inactiveNode = inactiveNodes[i];\n if (inactiveNode.id === nodeId) {\n node = inactiveNode;\n inactiveNodes.splice(i, 1);\n break;\n }\n }\n this.removeNodeFromInactiveStepNodes(nodeId);\n this.removeNodeFromInactiveGroupNodes(nodeId);\n return node;\n }\n\n private removeNodeFromInactiveStepNodes(nodeId: string): void {\n for (let i = 0; i < this.projectService.inactiveStepNodes.length; i++) {\n if (nodeId == this.projectService.inactiveStepNodes[i].id) {\n this.projectService.inactiveStepNodes.splice(i, 1);\n break;\n }\n }\n }\n\n private removeNodeFromInactiveGroupNodes(nodeId: string): void {\n for (let i = 0; i < this.projectService.inactiveGroupNodes.length; i++) {\n if (nodeId == this.projectService.inactiveGroupNodes[i].id) {\n this.projectService.inactiveGroupNodes.splice(i, 1);\n break;\n }\n }\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "removeNodeIdFromTransitionsService", + "type": "RemoveNodeIdFromTransitionsService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 6, + "jsdoctags": [ + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "removeNodeIdFromTransitionsService", + "type": "RemoveNodeIdFromTransitionsService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "type": "injectable" + }, + { + "name": "MultipleChoiceService", + "id": "injectable-MultipleChoiceService-6e22ee3cc37a2b8b1c694bbe5a6d5408dfd616d60924a42878960274e4f7f2fde5200cfde52c41c664546260ad31ddc2861256c1c8d3882a58f065125665921d", + "file": "src/assets/wise5/components/multipleChoice/multipleChoiceService.ts", + "properties": [ + { + "name": "notifyConnectedComponentSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "notifyConnectedComponentSource$", + "defaultValue": "this.notifyConnectedComponentSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "requestComponentStateSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "requestComponentStateSource$", + "defaultValue": "this.requestComponentStateSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "sendComponentStateSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "sendComponentStateSource$", + "defaultValue": "this.sendComponentStateSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "ComponentService" + } + } + ], + "methods": [ + { + "name": "choiceChosen", + "args": [ + { + "name": "criteria", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 33, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nReturns true iff the student chose a choice specified in the criteria\ncriteria object\n", + "description": "

Returns true iff the student chose a choice specified in the criteria\ncriteria object

\n", + "jsdoctags": [ + { + "name": { + "pos": 970, + "end": 978, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "criteria" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 964, + "end": 969, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the criteria object

\n" + }, + { + "name": { + "pos": 1011, + "end": 1025, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 1005, + "end": 1010, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

contains student's last choice

\n" + }, + { + "tagName": { + "pos": 1063, + "end": 1070, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

a boolean value whether the student chose the choice specified in the\ncriteria object

\n" + } + ] + }, + { + "name": "componentHasCorrectAnswer", + "args": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 99, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "componentStateHasStudentWork", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 86, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "createComponent", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 13, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getComponentTypeLabel", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 9, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getStudentChoicesFromComponentState", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 64, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getStudentDataString", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 73, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the human readable student data string\n", + "description": "

Get the human readable student data string

\n", + "jsdoctags": [ + { + "name": { + "pos": 2570, + "end": 2584, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2564, + "end": 2569, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component state

\n" + }, + { + "tagName": { + "pos": 2611, + "end": 2617, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

a human readable student data string

\n" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "isChoicesSelected", + "args": [ + { + "name": "studentChoiceIds", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "constraintChoiceIds", + "type": "string | string[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 38, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "studentChoiceIds", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "constraintChoiceIds", + "type": "string | string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isCompleted", + "args": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeEvents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 47, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeEvents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "componentHasWork", + "args": [ + { + "name": "component", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 105, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nWhether this component generates student work\nis not provided, we will use the default value of whether the\ncomponent type usually has work.\n", + "description": "

Whether this component generates student work\nis not provided, we will use the default value of whether the\ncomponent type usually has work.

\n", + "jsdoctags": [ + { + "name": { + "pos": 3060, + "end": 3069, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "component" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3054, + "end": 3059, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

(optional) the component object. if the component object\nis not provided, we will use the default value of whether the\ncomponent type usually has work.

\n" + }, + { + "tagName": { + "pos": 3238, + "end": 3244, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether this component generates student work

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "componentUsesSaveButton", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 135, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nWhether this component uses a save button\n", + "description": "

Whether this component uses a save button

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 4173, + "end": 4179, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether this component uses a save button

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "componentUsesSubmitButton", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 143, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nWhether this component uses a submit button\n", + "description": "

Whether this component uses a submit button

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 4351, + "end": 4357, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether this component uses a submit button

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "displayAnnotation", + "args": [ + { + "name": "componentContent", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "annotation", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 94, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if we need to display the annotation to the student\n", + "description": "

Check if we need to display the annotation to the student

\n", + "jsdoctags": [ + { + "name": { + "pos": 2753, + "end": 2769, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentContent" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2747, + "end": 2752, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component content

\n" + }, + { + "name": { + "pos": 2804, + "end": 2814, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "annotation" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2798, + "end": 2803, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the annotation

\n" + }, + { + "tagName": { + "pos": 2836, + "end": 2843, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

whether we need to display the annotation to the student

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getDomIdEnding", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 18, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getElementId", + "args": [ + { + "name": "domIdBeginning", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "domIdEnding", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "domIdBeginning", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "domIdEnding", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "hasNodeEnteredEvent", + "args": [ + { + "name": "nodeEvents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 155, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeEvents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "isSubmitRequired", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 151, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "notifyConnectedComponentSubscribers", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 42, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "requestComponentState", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 30, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "sendComponentState", + "args": [ + { + "name": "componentStateWrapper", + "type": "ComponentStateWrapper", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 38, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentStateWrapper", + "type": "ComponentStateWrapper", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { ComponentService } from '../componentService';\nimport { Injectable } from '@angular/core';\nimport { arraysContainSameValues } from '../../common/array/array';\nimport { Choice } from './Choice';\nimport { generateRandomKey } from '../../common/string/string';\n\n@Injectable()\nexport class MultipleChoiceService extends ComponentService {\n getComponentTypeLabel(): string {\n return $localize`Multiple Choice`;\n }\n\n createComponent(): any {\n const component: any = super.createComponent();\n component.type = 'MultipleChoice';\n component.prompt = $localize`Choose an option from below`;\n component.choiceType = 'radio';\n component.choices = [\n new Choice(generateRandomKey(), $localize`Choice 1`, false, ''),\n new Choice(generateRandomKey(), $localize`Choice 2`, false, '')\n ];\n component.showFeedback = true;\n return component;\n }\n\n /**\n * Returns true iff the student chose a choice specified in the criteria\n * @param criteria the criteria object\n * @param componentState contains student's last choice\n * @returns a boolean value whether the student chose the choice specified in the\n * criteria object\n */\n choiceChosen(criteria: any, componentState: any): boolean {\n const studentChoiceIds = componentState.studentData.studentChoices.map((choice) => choice.id);\n return this.isChoicesSelected(studentChoiceIds, criteria.params.choiceIds);\n }\n\n private isChoicesSelected(\n studentChoiceIds: string[],\n constraintChoiceIds: string | string[]\n ): boolean {\n return constraintChoiceIds instanceof Array\n ? arraysContainSameValues(studentChoiceIds, constraintChoiceIds)\n : studentChoiceIds.includes(constraintChoiceIds);\n }\n\n isCompleted(component: any, componentStates: any[], nodeEvents: any[], node: any) {\n if (componentStates && componentStates.length) {\n const isSubmitRequired = this.isSubmitRequired(node, component);\n for (let c = componentStates.length - 1; c >= 0; c--) {\n const componentState = componentStates[c];\n const studentChoices = this.getStudentChoicesFromComponentState(componentState);\n if (\n studentChoices != null &&\n (!isSubmitRequired || (isSubmitRequired && componentState.isSubmit))\n ) {\n return true;\n }\n }\n }\n return false;\n }\n\n private getStudentChoicesFromComponentState(componentState: any): any[] {\n return componentState.studentData ? componentState.studentData.studentChoices : [];\n }\n\n /**\n * Get the human readable student data string\n * @param componentState the component state\n * @return a human readable student data string\n */\n getStudentDataString(componentState: any) {\n if (componentState != null) {\n const studentData = componentState.studentData;\n if (studentData != null) {\n const studentChoices = studentData.studentChoices;\n if (studentChoices != null) {\n return studentChoices.map((studentChoice) => studentChoice.text).join(', ');\n }\n }\n }\n return '';\n }\n\n componentStateHasStudentWork(componentState: any, componentContent: any) {\n if (componentState != null) {\n const studentData = componentState.studentData;\n if (studentData != null) {\n const studentChoices = studentData.studentChoices;\n if (studentChoices != null && studentChoices.length > 0) {\n return true;\n }\n }\n }\n return false;\n }\n\n componentHasCorrectAnswer(component: any): boolean {\n return component.choices.some((choice) => choice.isCorrect);\n }\n}\n", + "extends": [ + "ComponentService" + ], + "type": "injectable" + }, + { + "name": "NewsService", + "id": "injectable-NewsService-c4dea931ce4d827b593445c125cfd948a48b63f11bcffd3c9d99bae797a48bf7ac8fb706b350d00806bbd23b316a7ce572c0794527c8739ea25bc442850926e5", + "file": "src/app/services/news.service.ts", + "properties": [ + { + "name": "newsUrl", + "defaultValue": "'/api/news'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "modifierKind": [ + 123 + ] + } + ], + "methods": [ + { + "name": "getAllNews", + "args": [], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 14, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Injectable } from '@angular/core';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { News } from '../domain/news';\nimport { Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NewsService {\n private newsUrl = '/api/news';\n\n constructor(private http: HttpClient) {}\n\n getAllNews(): Observable {\n const headers = new HttpHeaders({ 'Cache-Control': 'no-cache' });\n return this.http.get(this.newsUrl, { headers: headers }) as Observable;\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 10, + "jsdoctags": [ + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "type": "injectable" + }, + { + "name": "NodeProgressService", + "id": "injectable-NodeProgressService-60bfb1fa4645e1308719b867d1585e948e6aca1da55adf272f168ff6ecc47dd9cba3489d927e9e47d57103d70049cc022fcb53907c78cdf30496523d37ac3aab", + "file": "src/assets/wise5/services/nodeProgressService.ts", + "properties": [], + "methods": [ + { + "name": "calculateAndInjectCompletionPercentage", + "args": [ + { + "name": "progress", + "type": "NodeProgress", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "progress", + "type": "NodeProgress", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "calculateAndInjectCompletionPercentageWithWork", + "args": [ + { + "name": "progress", + "type": "NodeProgress", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 89, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "progress", + "type": "NodeProgress", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getNodeProgress", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeStatuses", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "NodeProgress", + "typeParameters": [], + "line": 17, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet progress information for a given node\nwork), number of visible items (all/with work), completion % (for all items, items with student\nwork)\n", + "description": "

Get progress information for a given node\nwork), number of visible items (all/with work), completion % (for all items, items with student\nwork)

\n", + "jsdoctags": [ + { + "name": { + "pos": 325, + "end": 331, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 319, + "end": 324, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id

\n" + }, + { + "name": { + "pos": 356, + "end": 368, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeStatuses" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 350, + "end": 355, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

all the NodeStatuses for the student

\n" + }, + { + "tagName": { + "pos": 412, + "end": 419, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

object with number of completed items (both all and for items that capture student\nwork), number of visible items (all/with work), completion % (for all items, items with student\nwork)

\n" + } + ] + }, + { + "name": "updateGroupNodeProgress", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "progress", + "type": "NodeProgress", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeStatuses", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "NodeProgress", + "typeParameters": [], + "line": 39, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "progress", + "type": "NodeProgress", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeStatuses", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "updateStepNodeProgress", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "progress", + "type": "NodeProgress", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeStatuses", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "NodeProgress", + "typeParameters": [], + "line": 61, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "progress", + "type": "NodeProgress", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeStatuses", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Injectable } from '@angular/core';\nimport { NodeProgress } from '../common/NodeProgress';\nimport { ProjectService } from './projectService';\n\n@Injectable()\nexport class NodeProgressService {\n constructor(protected projectService: ProjectService) {}\n\n /**\n * Get progress information for a given node\n * @param nodeId the node id\n * @param nodeStatuses all the NodeStatuses for the student\n * @returns object with number of completed items (both all and for items that capture student\n * work), number of visible items (all/with work), completion % (for all items, items with student\n * work)\n */\n getNodeProgress(nodeId: string, nodeStatuses: any): NodeProgress {\n const progress: NodeProgress = {\n totalItems: 0,\n totalItemsWithWork: 0,\n completedItems: 0,\n completedItemsWithWork: 0\n };\n if (this.projectService.isGroupNode(nodeId)) {\n for (const childNodeId of this.projectService.getChildNodeIdsById(nodeId)) {\n if (this.projectService.isGroupNode(childNodeId)) {\n this.updateGroupNodeProgress(childNodeId, progress, nodeStatuses);\n } else {\n this.updateStepNodeProgress(childNodeId, progress, nodeStatuses);\n }\n }\n this.calculateAndInjectCompletionPercentage(progress);\n this.calculateAndInjectCompletionPercentageWithWork(progress);\n }\n // TODO: implement for steps (using components instead of child nodes)?\n return progress;\n }\n\n private updateGroupNodeProgress(\n nodeId: string,\n progress: NodeProgress,\n nodeStatuses: any\n ): NodeProgress {\n const nodeStatus = nodeStatuses[nodeId];\n if (nodeStatus.progress.totalItemsWithWork > -1) {\n progress.completedItems += nodeStatus.progress.completedItems;\n progress.totalItems += nodeStatus.progress.totalItems;\n progress.completedItemsWithWork += nodeStatus.progress.completedItemsWithWork;\n progress.totalItemsWithWork += nodeStatus.progress.totalItemsWithWork;\n } else {\n // we have a legacy node status so we'll need to calculate manually\n const groupProgress = this.getNodeProgress(nodeId, nodeStatuses);\n progress.completedItems += groupProgress.completedItems;\n progress.totalItems += groupProgress.totalItems;\n progress.completedItemsWithWork += groupProgress.completedItemsWithWork;\n progress.totalItemsWithWork += groupProgress.totalItemsWithWork;\n }\n return progress;\n }\n\n private updateStepNodeProgress(\n nodeId: string,\n progress: NodeProgress,\n nodeStatuses: any\n ): NodeProgress {\n const nodeStatus = nodeStatuses[nodeId];\n if (nodeStatus.isVisible) {\n progress.totalItems++;\n const hasWork = this.projectService.nodeHasWork(nodeId);\n if (hasWork) {\n progress.totalItemsWithWork++;\n }\n if (nodeStatus.isCompleted) {\n progress.completedItems++;\n if (hasWork) {\n progress.completedItemsWithWork++;\n }\n }\n }\n return progress;\n }\n\n private calculateAndInjectCompletionPercentage(progress: NodeProgress): void {\n const totalItems = progress.totalItems;\n const completedItems = progress.completedItems;\n progress.completionPct = totalItems ? Math.round((completedItems / totalItems) * 100) : 0;\n }\n\n private calculateAndInjectCompletionPercentageWithWork(progress: NodeProgress): void {\n const totalItemsWithWork = progress.totalItemsWithWork;\n const completedItemsWithWork = progress.completedItemsWithWork;\n progress.completionPctWithWork = totalItemsWithWork\n ? Math.round((completedItemsWithWork / totalItemsWithWork) * 100)\n : 0;\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 6, + "jsdoctags": [ + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "type": "injectable" + }, + { + "name": "NodeService", + "id": "injectable-NodeService-c86c484f1dc0002067be37aafa316b60e4c99e9dbf222a7edc4bb5857988dccf887349f19bacc62429f2d3465ad89d57ffee82c848b7e585de8b986b16687af2", + "file": "src/assets/wise5/services/nodeService.ts", + "properties": [ + { + "name": "doneRenderingComponent$", + "defaultValue": "this.doneRenderingComponentSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "modifierKind": [ + 125 + ] + }, + { + "name": "doneRenderingComponentSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "modifierKind": [ + 123 + ] + }, + { + "name": "nodeSubmitClicked$", + "defaultValue": "this.nodeSubmitClickedSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "Observable", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "modifierKind": [ + 125 + ] + }, + { + "name": "nodeSubmitClickedSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "modifierKind": [ + 123 + ] + } + ], + "methods": [ + { + "name": "broadcastDoneRenderingComponent", + "args": [ + { + "name": "nodeIdAndComponentId", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 55, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeIdAndComponentId", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "broadcastNodeSubmitClicked", + "args": [ + { + "name": "args", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 51, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "args", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "closeNode", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 43, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getNextNodeId", + "args": [ + { + "name": "currentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "optional": true + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 35, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 128 + ], + "jsdoctags": [ + { + "name": "currentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "optional": true, + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getPrevNodeId", + "args": [ + { + "name": "currentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "optional": true + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 41, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 128 + ], + "jsdoctags": [ + { + "name": "currentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "optional": true, + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "goToNextNode", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "goToPrevNode", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 37, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "setCurrentNode", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Injectable } from '@angular/core';\nimport { ConfigService } from './configService';\nimport { ProjectService } from './projectService';\nimport { DataService } from '../../../app/services/data.service';\nimport { Observable, Subject } from 'rxjs';\nimport { ConstraintService } from './constraintService';\n\n@Injectable()\nexport abstract class NodeService {\n private doneRenderingComponentSource: Subject = new Subject();\n public doneRenderingComponent$ = this.doneRenderingComponentSource.asObservable();\n private nodeSubmitClickedSource: Subject = new Subject();\n public nodeSubmitClicked$: Observable = this.nodeSubmitClickedSource.asObservable();\n\n constructor(\n protected configService: ConfigService,\n protected constraintService: ConstraintService,\n protected dataService: DataService,\n protected projectService: ProjectService\n ) {}\n\n setCurrentNode(nodeId: string): void {\n this.dataService.setCurrentNodeByNodeId(nodeId);\n }\n\n goToNextNode(): Promise {\n return this.getNextNodeId().then((nextNodeId: string) => {\n if (nextNodeId != null) {\n this.setCurrentNode(nextNodeId);\n }\n return nextNodeId;\n });\n }\n\n abstract getNextNodeId(currentId?: string): Promise;\n\n goToPrevNode(): void {\n this.setCurrentNode(this.getPrevNodeId());\n }\n\n abstract getPrevNodeId(currentId?: string): string;\n\n closeNode(): void {\n const currentNode = this.dataService.getCurrentNode();\n if (currentNode) {\n const parentNode = this.projectService.getParentGroup(currentNode.id);\n this.setCurrentNode(parentNode.id);\n }\n }\n\n broadcastNodeSubmitClicked(args: any) {\n this.nodeSubmitClickedSource.next(args);\n }\n\n broadcastDoneRenderingComponent(nodeIdAndComponentId: any) {\n this.doneRenderingComponentSource.next(nodeIdAndComponentId);\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "constraintService", + "type": "ConstraintService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dataService", + "type": "DataService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 13, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "constraintService", + "type": "ConstraintService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dataService", + "type": "DataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "type": "injectable" + }, + { + "name": "NodeStatusService", + "id": "injectable-NodeStatusService-2de99b3506939e032281e90b0dad4174c49f15d657e18c6701b359c90d33bea5685e245a4d659bcf80051f79ce98ec0d96b81cf1381cf9b303ea3cd4eddf7300", + "file": "src/assets/wise5/services/nodeStatusService.ts", + "properties": [ + { + "name": "nodeIdToIsVisited", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "literal type", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "modifierKind": [ + 123 + ] + } + ], + "methods": [ + { + "name": "calculateComponentStatuses", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "literal type", + "typeParameters": [], + "line": 127, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "calculateNodeStatus", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "NodeStatus", + "typeParameters": [], + "line": 98, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "canVisitNode", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 48, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getNodeStatusByNodeId", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 53, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getNodeStatuses", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 58, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isAllVisibleComponentsCompleted", + "args": [ + { + "name": "componentStatuses", + "type": "literal type", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 116, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentStatuses", + "type": "literal type", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "populateNodeIdToIsVisited", + "args": [ + { + "name": "events", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 38, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "events", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setNodeIsVisited", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 44, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setNodeStatusByNodeId", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeStatus", + "type": "NodeStatus", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 168, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeStatus", + "type": "NodeStatus", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setNotVisibleIfRequired", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "constraintsForNode", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeStatus", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 138, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "constraintsForNode", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeStatus", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "updateGroupNodeStatuses", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 76, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "updateNodeStatus", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeStatus", + "type": "NodeStatus", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 152, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeStatus", + "type": "NodeStatus", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "updateNodeStatusByNode", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 89, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "updateNodeStatusClientSaveTime", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "latestComponentStatesForNode", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 191, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "latestComponentStatesForNode", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "updateNodeStatuses", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 62, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "updateNodeStatusIcon", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 179, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "updateNodeStatusProgress", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 172, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "updateNodeStatusServerSaveTime", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "latestComponentStatesForNode", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 196, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "latestComponentStatesForNode", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "updateNodeStatusTimestamps", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 183, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "updateStepNodeStatuses", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 68, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Injectable } from '@angular/core';\nimport { ComponentStatus } from '../common/ComponentStatus';\nimport { NodeStatus } from '../common/NodeStatus';\nimport { ConstraintService } from './constraintService';\nimport { NodeProgressService } from './nodeProgressService';\nimport { NotebookService } from './notebookService';\nimport { ProjectService } from './projectService';\nimport { StudentDataService } from './studentDataService';\nimport { CompletionService } from './completionService';\n\n@Injectable()\nexport class NodeStatusService {\n private nodeIdToIsVisited: { [nodeId: string]: boolean } = {};\n\n constructor(\n private completionService: CompletionService,\n private constraintService: ConstraintService,\n private dataService: StudentDataService,\n private nodeProgressService: NodeProgressService,\n private notebookService: NotebookService,\n private projectService: ProjectService\n ) {\n this.constraintService.constraintsUpdated$.subscribe(() => {\n this.updateNodeStatuses();\n });\n this.dataService.dataRetrieved$.subscribe((studentData) => {\n this.populateNodeIdToIsVisited(studentData.events);\n this.updateNodeStatuses();\n });\n this.dataService.updateNodeStatuses$.subscribe(() => {\n this.updateNodeStatuses();\n });\n this.notebookService.notebookUpdated$.subscribe(() => {\n this.updateNodeStatuses();\n });\n }\n\n private populateNodeIdToIsVisited(events: any[]): void {\n events\n .filter((event) => event.event === 'nodeEntered')\n .forEach((event) => this.setNodeIsVisited(event.nodeId));\n }\n\n setNodeIsVisited(nodeId: string): void {\n this.nodeIdToIsVisited[nodeId] = true;\n }\n\n canVisitNode(nodeId: string): boolean {\n const nodeStatus = this.getNodeStatusByNodeId(nodeId);\n return nodeStatus != null && nodeStatus.isVisitable;\n }\n\n getNodeStatusByNodeId(nodeId: string): any {\n // TODO: move nodeStatus from StudentDataService to this class\n return this.dataService.getNodeStatusByNodeId(nodeId);\n }\n\n getNodeStatuses(): any {\n return this.dataService.nodeStatuses;\n }\n\n private updateNodeStatuses(): void {\n this.updateStepNodeStatuses();\n this.updateGroupNodeStatuses();\n this.dataService.broadcastNodeStatusesChanged();\n }\n\n private updateStepNodeStatuses(): void {\n for (const nodeId of this.projectService.getFlattenedProjectAsNodeIds()) {\n if (!this.projectService.isGroupNode(nodeId)) {\n this.updateNodeStatusByNode(this.projectService.getNodeById(nodeId));\n }\n }\n }\n\n private updateGroupNodeStatuses(): void {\n const groups = this.projectService.getGroups();\n for (const group of groups) {\n group.depth = this.projectService.getNodeDepth(group.id, 0);\n }\n groups.sort(function (a, b) {\n return b.depth - a.depth;\n });\n for (const group of groups) {\n this.updateNodeStatusByNode(group);\n }\n }\n\n private updateNodeStatusByNode(node: any): void {\n const nodeId = node.id;\n const nodeStatus = this.calculateNodeStatus(node);\n this.updateNodeStatus(nodeId, nodeStatus);\n this.updateNodeStatusProgress(nodeId);\n this.updateNodeStatusIcon(nodeId);\n this.updateNodeStatusTimestamps(nodeId);\n }\n\n private calculateNodeStatus(node: any): NodeStatus {\n const nodeId = node.id;\n const nodeStatus = new NodeStatus(nodeId);\n const constraintsForNode = this.constraintService.getConstraintsThatAffectNode(node);\n const constraintResults = this.constraintService.evaluate(constraintsForNode);\n nodeStatus.isVisible = constraintResults.isVisible;\n nodeStatus.isVisitable = constraintResults.isVisitable;\n this.setNotVisibleIfRequired(nodeId, constraintsForNode, nodeStatus);\n if (this.projectService.isApplicationNode(node.id)) {\n nodeStatus.componentStatuses = this.calculateComponentStatuses(node);\n nodeStatus.isCompleted = this.isAllVisibleComponentsCompleted(nodeStatus.componentStatuses);\n } else {\n nodeStatus.isCompleted = this.completionService.isCompleted(nodeId);\n }\n nodeStatus.isVisited = this.nodeIdToIsVisited[nodeId] == true;\n return nodeStatus;\n }\n\n private isAllVisibleComponentsCompleted(componentStatuses: {\n [componentId: string]: ComponentStatus;\n }): boolean {\n for (const componentId in componentStatuses) {\n if (componentStatuses[componentId].isVisibleAndNotCompleted()) {\n return false;\n }\n }\n return true;\n }\n\n private calculateComponentStatuses(node: any): { [componentId: string]: ComponentStatus } {\n const componentStatuses = {};\n node.components.forEach((component) => {\n componentStatuses[component.id] = new ComponentStatus(\n this.completionService.isCompleted(node.id, component.id),\n this.constraintService.evaluate(component.constraints).isVisible\n );\n });\n return componentStatuses;\n }\n\n private setNotVisibleIfRequired(\n nodeId: string,\n constraintsForNode: any[],\n nodeStatus: any\n ): void {\n if (\n constraintsForNode.length == 0 &&\n this.projectService.getFlattenedProjectAsNodeIds().indexOf(nodeId) == -1 &&\n !this.projectService.isGroupNode(nodeId)\n ) {\n nodeStatus.isVisible = false;\n }\n }\n\n private updateNodeStatus(nodeId: string, nodeStatus: NodeStatus): void {\n // TODO: figure out why we need this if-else check. Why not just over-write the NodeStatus?\n const oldNodeStatus = this.getNodeStatusByNodeId(nodeId);\n if (oldNodeStatus == null) {\n this.setNodeStatusByNodeId(nodeId, nodeStatus);\n } else {\n this.dataService.nodeStatuses[nodeId].isVisited = nodeStatus.isVisited;\n this.dataService.nodeStatuses[nodeId].isVisible = nodeStatus.isVisible;\n this.dataService.nodeStatuses[nodeId].isVisitable = nodeStatus.isVisitable;\n this.dataService.nodeStatuses[nodeId].isCompleted = nodeStatus.isCompleted;\n if (this.projectService.isApplicationNode(nodeId)) {\n this.dataService.nodeStatuses[nodeId].componentStatuses = nodeStatus.componentStatuses;\n }\n }\n }\n\n private setNodeStatusByNodeId(nodeId: string, nodeStatus: NodeStatus): void {\n this.dataService.nodeStatuses[nodeId] = nodeStatus;\n }\n\n private updateNodeStatusProgress(nodeId: string): void {\n this.dataService.nodeStatuses[nodeId].progress = this.nodeProgressService.getNodeProgress(\n nodeId,\n this.getNodeStatuses()\n );\n }\n\n private updateNodeStatusIcon(nodeId: string): void {\n this.dataService.nodeStatuses[nodeId].icon = this.projectService.getNode(nodeId).getIcon();\n }\n\n private updateNodeStatusTimestamps(nodeId: string): void {\n const latestComponentStatesForNode = this.dataService.getLatestComponentStateByNodeId(nodeId);\n if (latestComponentStatesForNode != null) {\n this.updateNodeStatusClientSaveTime(nodeId, latestComponentStatesForNode);\n this.updateNodeStatusServerSaveTime(nodeId, latestComponentStatesForNode);\n }\n }\n\n private updateNodeStatusClientSaveTime(nodeId: string, latestComponentStatesForNode: any): void {\n this.dataService.nodeStatuses[nodeId].latestComponentStateClientSaveTime =\n latestComponentStatesForNode.clientSaveTime;\n }\n\n private updateNodeStatusServerSaveTime(nodeId: string, latestComponentStatesForNode: any): void {\n this.dataService.nodeStatuses[nodeId].latestComponentStateServerSaveTime =\n latestComponentStatesForNode.serverSaveTime;\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "completionService", + "type": "CompletionService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "constraintService", + "type": "ConstraintService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeProgressService", + "type": "NodeProgressService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "notebookService", + "type": "NotebookService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 13, + "jsdoctags": [ + { + "name": "completionService", + "type": "CompletionService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "constraintService", + "type": "ConstraintService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeProgressService", + "type": "NodeProgressService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "notebookService", + "type": "NotebookService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "type": "injectable" + }, + { + "name": "NotebookService", + "id": "injectable-NotebookService-ed1d642d7ad35512fd10967ba59be8a230df73592eea8ce258fe50437b4bf1c625be34f5ebbf5bbefb9c4ebabc0240f191aef6112927af862a9b74e2824114d4", + "file": "src/assets/wise5/services/notebookService.ts", + "properties": [ + { + "name": "config", + "defaultValue": "{\n enabled: false,\n label: $localize`Notebook`,\n icon: 'book',\n enableAddNew: true,\n addIcon: 'note_add',\n itemTypes: {\n note: {\n enabled: true,\n requireTextOnEveryNote: false,\n enableLink: true,\n enableClipping: true,\n enableStudentUploads: true,\n type: 'note',\n label: {\n singular: $localize`note`,\n plural: $localize`notes`,\n link: $localize`Manage Notes`,\n icon: 'note',\n color: '#1565C0'\n }\n },\n report: {\n enabled: false,\n enableLink: true,\n type: 'report',\n label: {\n singular: $localize`report`,\n plural: $localize`reports`,\n link: $localize`Report`,\n icon: 'assignment',\n color: '#AD1457'\n },\n notes: []\n }\n }\n }", + "deprecated": false, + "deprecationMessage": "", + "type": "object", + "indexKey": "", + "optional": false, + "description": "", + "line": 16 + }, + { + "name": "http", + "deprecated": false, + "deprecationMessage": "", + "type": "HttpClient", + "indexKey": "", + "optional": false, + "description": "", + "line": 75, + "modifierKind": [ + 125 + ] + }, + { + "name": "insertMode$", + "defaultValue": "this.insertModeSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 69, + "modifierKind": [ + 125 + ] + }, + { + "name": "insertModeSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 68, + "modifierKind": [ + 123 + ] + }, + { + "name": "notebookItemAnnotationReceived$", + "defaultValue": "this.notebookItemAnnotationReceivedSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 57, + "modifierKind": [ + 125 + ] + }, + { + "name": "notebookItemAnnotationReceivedSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 56, + "modifierKind": [ + 123 + ] + }, + { + "name": "notebookItemChosen$", + "defaultValue": "this.notebookItemChosenSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 59, + "modifierKind": [ + 125 + ] + }, + { + "name": "notebookItemChosenSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 58, + "modifierKind": [ + 123 + ] + }, + { + "name": "notebooksByWorkgroup", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "object", + "indexKey": "", + "optional": false, + "description": "", + "line": 55 + }, + { + "name": "notebookUpdated$", + "defaultValue": "this.notebookUpdatedSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 61, + "modifierKind": [ + 125 + ] + }, + { + "name": "notebookUpdatedSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 60, + "modifierKind": [ + 123 + ] + }, + { + "name": "notesVisible$", + "defaultValue": "this.notesVisibleSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 67, + "modifierKind": [ + 125 + ] + }, + { + "name": "notesVisibleSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 66, + "modifierKind": [ + 123 + ] + }, + { + "name": "publicNotebookItems", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "object", + "indexKey": "", + "optional": false, + "description": "", + "line": 54 + }, + { + "name": "publicNotebookItemsRetrieved$", + "defaultValue": "this.publicNotebookItemsRetrievedSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 63, + "modifierKind": [ + 125 + ] + }, + { + "name": "publicNotebookItemsRetrievedSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 62, + "modifierKind": [ + 123 + ] + }, + { + "name": "reportFullScreen$", + "defaultValue": "this.reportFullScreenSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 71, + "modifierKind": [ + 125 + ] + }, + { + "name": "reportFullScreenSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 70, + "modifierKind": [ + 123 + ] + }, + { + "name": "reports", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 53 + }, + { + "name": "showReportAnnotations$", + "defaultValue": "this.showReportAnnotationsSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 65, + "modifierKind": [ + 125 + ] + }, + { + "name": "showReportAnnotationsSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 64, + "modifierKind": [ + 123 + ] + } + ], + "methods": [ + { + "name": "addNote", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "file", + "type": "File", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + }, + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + }, + { + "name": "studentWorkIds", + "type": "number[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + }, + { + "name": "isEditTextEnabled", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "true" + }, + { + "name": "isFileUploadEnabled", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "true" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 93, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "file", + "type": "File", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + }, + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + }, + { + "name": "studentWorkIds", + "type": "number[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + }, + { + "name": "isEditTextEnabled", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "true", + "tagName": { + "text": "param" + } + }, + { + "name": "isFileUploadEnabled", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "true", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addToNotebooksByWorgkroup", + "args": [ + { + "name": "notebookItem", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "workgroupId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 346, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "notebookItem", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "workgroupId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "broadcastNotebookItemAnnotationReceived", + "args": [ + { + "name": "annotation", + "type": "Annotation", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 81, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "annotation", + "type": "Annotation", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "broadcastNotebookItemChosen", + "args": [ + { + "name": "args", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 627, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "args", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "broadcastNotebookUpdated", + "args": [ + { + "name": "args", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 631, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "args", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "broadcastPublicNotebookItemsRetrieved", + "args": [ + { + "name": "args", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 635, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "args", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "broadcastShowReportAnnotations", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 639, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "closeNotes", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 643, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "copyNotebookItem", + "args": [ + { + "name": "notebookItemId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 597, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "notebookItemId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "deleteNote", + "args": [ + { + "name": "note", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 185, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "note", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "doRetrieveNotebookItems", + "args": [ + { + "name": "workgroupId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 313, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "workgroupId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "doRetrievePublicNotebookItems", + "args": [ + { + "name": "group", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "periodId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 431, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "group", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "periodId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "doSaveNotebookItem", + "args": [ + { + "name": "notebookItemId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "localNotebookItemId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "type", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "title", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "content", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "groups", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "clientDeleteTime", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 532, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "notebookItemId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "localNotebookItemId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "type", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "title", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "content", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "groups", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "clientDeleteTime", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "editNote", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "note", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isEditMode", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "true" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 115, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "note", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "isEditMode", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "true", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getLatestNotebookItemByLocalNotebookItemId", + "args": [ + { + "name": "localNotebookItemId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "workgroupId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "this.ConfigService.getWorkgroupId()" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 213, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "localNotebookItemId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "workgroupId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "this.ConfigService.getWorkgroupId()", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getLatestNotebookReportItemByReportId", + "args": [ + { + "name": "reportId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "workgroupId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "this.ConfigService.getWorkgroupId()" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 229, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "reportId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "workgroupId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "this.ConfigService.getWorkgroupId()", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getMaxScoreByReportId", + "args": [ + { + "name": "reportId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 251, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "reportId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getNotebookByWorkgroup", + "args": [ + { + "name": "workgroupId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "this.ConfigService.getWorkgroupId()" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 408, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "workgroupId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "this.ConfigService.getWorkgroupId()", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getNotebookConfig", + "args": [], + "optional": false, + "returnType": "{ enabled: boolean; label: any; icon: string; enableAddNew: boolean; addIcon: string; itemTypes: { note: { enabled: boolean; requireTextOnEveryNote: boolean; enableLink: boolean; enableClipping: boolean; enableStudentUploads: boolean; type: string; label: { ...; }; }; report: { ...; }; }; }", + "typeParameters": [], + "line": 259, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getPrivateNotebookItems", + "args": [ + { + "name": "workgroupId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "this.ConfigService.getWorkgroupId()" + } + ], + "optional": false, + "returnType": "{}", + "typeParameters": [], + "line": 397, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "workgroupId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "this.ConfigService.getWorkgroupId()", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getReportNoteContentByReportId", + "args": [ + { + "name": "reportId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 267, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nReturns the report content for the specified reportId, or null if not exists.\n", + "description": "

Returns the report content for the specified reportId, or null if not exists.

\n", + "jsdoctags": [ + { + "name": { + "pos": 7791, + "end": 7799, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "reportId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 7785, + "end": 7790, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "" + } + ] + }, + { + "name": "getStudentNotebookConfig", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 85, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getTeacherNotebookConfig", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 89, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getTemplateReportItemByReportId", + "args": [ + { + "name": "reportId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "{ id: any; type: string; localNotebookItemId: any; content: any; }", + "typeParameters": [], + "line": 236, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "reportId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "groupNotebookItems", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 357, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGroups the notebook items together in to a map-like structure by workgroup inside this.notebook.items.\n", + "description": "

Groups the notebook items together in to a map-like structure by workgroup inside this.notebook.items.

\n" + }, + { + "name": "handleNewNotebookItem", + "args": [ + { + "name": "notebookItem", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 615, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "notebookItem", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "handleRetrieveNotebookItems", + "args": [ + { + "name": "notebookItems", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "{}", + "typeParameters": [], + "line": 327, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "notebookItems", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "handleRetrievePublicNotebookItems", + "args": [ + { + "name": "publicNotebookItemsForGroup", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "group", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "{}", + "typeParameters": [], + "line": 449, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "publicNotebookItemsForGroup", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "group", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "handleSaveNotebookItem", + "args": [ + { + "name": "notebookItem", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 568, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "notebookItem", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isNotebookEnabled", + "args": [ + { + "name": "type", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "'notebook'" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 277, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "type", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "'notebook'", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isNotebookItemPrivate", + "args": [ + { + "name": "notebookItem", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 593, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "notebookItem", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isNotebookItemPublic", + "args": [ + { + "name": "notebookItem", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 589, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "notebookItem", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isStudentNoteClippingEnabled", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 288, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isStudentNoteEnabled", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 281, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "retrieveNotebookItems", + "args": [ + { + "name": "workgroupId", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 295, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "workgroupId", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "retrievePublicNotebookItems", + "args": [ + { + "name": "group", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + }, + { + "name": "periodId", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 420, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "group", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + }, + { + "name": "periodId", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "reviveNote", + "args": [ + { + "name": "note", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 192, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "note", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "saveNotebookItem", + "args": [ + { + "name": "notebookItemId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "localNotebookItemId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "type", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "title", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "content", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "groups", + "type": "[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]" + }, + { + "name": "clientSaveTime", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + }, + { + "name": "clientDeleteTime", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 458, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "notebookItemId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "localNotebookItemId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "type", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "title", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "content", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "groups", + "type": "[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]", + "tagName": { + "text": "param" + } + }, + { + "name": "clientSaveTime", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + }, + { + "name": "clientDeleteTime", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "savePreviewNotebookItem", + "args": [ + { + "name": "notebookItemId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "localNotebookItemId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "type", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "title", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "content", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "groups", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "clientSaveTime", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "clientDeleteTime", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 495, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "notebookItemId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "localNotebookItemId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "type", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "title", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "content", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "groups", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "clientSaveTime", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "clientDeleteTime", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setInsertMode", + "args": [ + { + "name": "args", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 652, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "args", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setNotesVisible", + "args": [ + { + "name": "value", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 648, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "value", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setReportFullScreen", + "args": [ + { + "name": "value", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 656, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "value", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "showEditNoteDialog", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "note", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isEditMode", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "file", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isEditTextEnabled", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isFileUploadEnabled", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentWorkIds", + "type": "number[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 133, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "note", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "isEditMode", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "file", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "isEditTextEnabled", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "isFileUploadEnabled", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentWorkIds", + "type": "number[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "updateNote", + "args": [ + { + "name": "note", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "clientSaveTime", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "Date.parse(new Date().toString())" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 198, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "note", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "clientSaveTime", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "Date.parse(new Date().toString())", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "updatePrivateNotebookItem", + "args": [ + { + "name": "notebookItem", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "workgroupId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 584, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "notebookItem", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "workgroupId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "'use strict';\n\nimport { Injectable } from '@angular/core';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { ConfigService } from './configService';\nimport { ProjectService } from './projectService';\nimport { StudentAssetService } from './studentAssetService';\nimport { Subject } from 'rxjs';\nimport { MatDialog } from '@angular/material/dialog';\nimport { EditNotebookItemDialogComponent } from '../themes/default/notebook/edit-notebook-item-dialog/edit-notebook-item-dialog.component';\nimport { Annotation } from '../common/Annotation';\n\n@Injectable()\nexport class NotebookService {\n // TODO: allow wise instance to set defaults in wise config?\n config = {\n enabled: false,\n label: $localize`Notebook`,\n icon: 'book',\n enableAddNew: true,\n addIcon: 'note_add',\n itemTypes: {\n note: {\n enabled: true,\n requireTextOnEveryNote: false,\n enableLink: true,\n enableClipping: true,\n enableStudentUploads: true,\n type: 'note',\n label: {\n singular: $localize`note`,\n plural: $localize`notes`,\n link: $localize`Manage Notes`,\n icon: 'note',\n color: '#1565C0'\n }\n },\n report: {\n enabled: false,\n enableLink: true,\n type: 'report',\n label: {\n singular: $localize`report`,\n plural: $localize`reports`,\n link: $localize`Report`,\n icon: 'assignment',\n color: '#AD1457'\n },\n notes: []\n }\n }\n };\n reports = [];\n publicNotebookItems = {};\n notebooksByWorkgroup = {};\n private notebookItemAnnotationReceivedSource: Subject = new Subject();\n public notebookItemAnnotationReceived$ = this.notebookItemAnnotationReceivedSource.asObservable();\n private notebookItemChosenSource: Subject = new Subject();\n public notebookItemChosen$ = this.notebookItemChosenSource.asObservable();\n private notebookUpdatedSource: Subject = new Subject();\n public notebookUpdated$ = this.notebookUpdatedSource.asObservable();\n private publicNotebookItemsRetrievedSource: Subject = new Subject();\n public publicNotebookItemsRetrieved$ = this.publicNotebookItemsRetrievedSource.asObservable();\n private showReportAnnotationsSource: Subject = new Subject();\n public showReportAnnotations$ = this.showReportAnnotationsSource.asObservable();\n private notesVisibleSource: Subject = new Subject();\n public notesVisible$ = this.notesVisibleSource.asObservable();\n private insertModeSource: Subject = new Subject();\n public insertMode$ = this.insertModeSource.asObservable();\n private reportFullScreenSource: Subject = new Subject();\n public reportFullScreen$ = this.reportFullScreenSource.asObservable();\n\n constructor(\n private dialog: MatDialog,\n public http: HttpClient,\n private ConfigService: ConfigService,\n private ProjectService: ProjectService,\n private StudentAssetService: StudentAssetService\n ) {}\n\n broadcastNotebookItemAnnotationReceived(annotation: Annotation) {\n this.notebookItemAnnotationReceivedSource.next(annotation);\n }\n\n getStudentNotebookConfig() {\n return Object.assign(this.config, this.ProjectService.project.notebook);\n }\n\n getTeacherNotebookConfig() {\n return Object.assign(this.config, this.ProjectService.project.teacherNotebook);\n }\n\n addNote(\n nodeId: string,\n file: File = null,\n text: string = null,\n studentWorkIds: number[] = null,\n isEditTextEnabled: boolean = true,\n isFileUploadEnabled: boolean = true\n ) {\n const note = null;\n const isEditMode = true;\n this.showEditNoteDialog(\n nodeId,\n note,\n isEditMode,\n file,\n text,\n isEditTextEnabled,\n isFileUploadEnabled,\n studentWorkIds\n );\n }\n\n editNote(nodeId: string, note: any, isEditMode: boolean = true) {\n const file = null;\n const noteText = null;\n const isEditTextEnabled = true;\n const isFileUploadEnabled = true;\n const studentWorkIds = null;\n this.showEditNoteDialog(\n nodeId,\n note,\n isEditMode,\n file,\n noteText,\n isEditTextEnabled,\n isFileUploadEnabled,\n studentWorkIds\n );\n }\n\n private showEditNoteDialog(\n nodeId: string,\n note: any,\n isEditMode: boolean,\n file: any,\n text: string,\n isEditTextEnabled: boolean,\n isFileUploadEnabled: boolean,\n studentWorkIds: number[]\n ): void {\n this.dialog.open(EditNotebookItemDialogComponent, {\n width: '600px',\n data: {\n copyNotebookItem: (notebookItemId: string) => {\n return this.copyNotebookItem(notebookItemId);\n },\n file: file,\n isEditMode: isEditMode,\n isEditTextEnabled: isEditTextEnabled,\n isFileUploadEnabled: isFileUploadEnabled,\n nodeId: nodeId,\n note: note,\n notebookConfig: this.config,\n saveNotebookItem: (\n notebookItemId,\n nodeId,\n localNotebookItemId,\n type,\n title,\n content,\n groups,\n clientSaveTime,\n clientDeleteTime\n ) => {\n return this.saveNotebookItem(\n notebookItemId,\n nodeId,\n localNotebookItemId,\n type,\n title,\n content,\n groups,\n clientSaveTime,\n clientDeleteTime\n );\n },\n studentWorkIds: studentWorkIds,\n text: text\n }\n });\n }\n\n deleteNote(note) {\n const noteCopy = { ...note };\n const clientTime = Date.parse(new Date().toString());\n noteCopy.clientDeleteTime = clientTime;\n return this.updateNote(noteCopy, clientTime);\n }\n\n reviveNote(note) {\n const noteCopy = { ...note };\n noteCopy.clientDeleteTime = null;\n return this.updateNote(noteCopy);\n }\n\n updateNote(note, clientSaveTime = Date.parse(new Date().toString())) {\n note.id = null; // set to null so we're creating a new notebook item\n return this.saveNotebookItem(\n note.id,\n note.nodeId,\n note.localNotebookItemId,\n note.type,\n note.title,\n note.content,\n note.groups,\n clientSaveTime,\n note.clientDeleteTime\n );\n }\n\n getLatestNotebookItemByLocalNotebookItemId(\n localNotebookItemId,\n workgroupId = this.ConfigService.getWorkgroupId()\n ) {\n const notebookByWorkgroup = this.getNotebookByWorkgroup(workgroupId);\n if (notebookByWorkgroup != null) {\n const allNotebookItems = [...notebookByWorkgroup.allItems].reverse();\n for (let notebookItem of allNotebookItems) {\n if (notebookItem.localNotebookItemId === localNotebookItemId) {\n return notebookItem;\n }\n }\n }\n return null;\n }\n\n getLatestNotebookReportItemByReportId(\n reportId,\n workgroupId = this.ConfigService.getWorkgroupId()\n ) {\n return this.getLatestNotebookItemByLocalNotebookItemId(reportId, workgroupId);\n }\n\n getTemplateReportItemByReportId(reportId) {\n const reportNotes = this.config.itemTypes.report.notes;\n for (let reportNote of reportNotes) {\n if (reportNote.reportId === reportId) {\n return {\n id: null,\n type: 'report',\n localNotebookItemId: reportId,\n content: reportNote\n };\n }\n }\n return null;\n }\n\n getMaxScoreByReportId(reportId) {\n const reportNoteContent = this.getReportNoteContentByReportId(reportId);\n if (reportNoteContent != null && reportNoteContent.maxScore != null) {\n return reportNoteContent.maxScore;\n }\n return 0;\n }\n\n getNotebookConfig() {\n return this.config;\n }\n\n /**\n * Returns the report content for the specified reportId, or null if not exists.\n * @param reportId\n */\n getReportNoteContentByReportId(reportId) {\n const reportNotes = this.config.itemTypes.report.notes;\n for (let reportNote of reportNotes) {\n if (reportNote.reportId === reportId) {\n return reportNote;\n }\n }\n return null;\n }\n\n isNotebookEnabled(type: string = 'notebook') {\n return this.ProjectService.project[type] != null && this.ProjectService.project[type].enabled;\n }\n\n isStudentNoteEnabled() {\n return (\n this.ProjectService.project.notebook != null &&\n this.ProjectService.project.notebook.itemTypes.note.enabled\n );\n }\n\n isStudentNoteClippingEnabled() {\n return (\n this.isStudentNoteEnabled() &&\n this.ProjectService.project.notebook.itemTypes.note.enableClipping\n );\n }\n\n retrieveNotebookItems(workgroupId = null) {\n if (this.ConfigService.isPreview()) {\n // we are previewing the project, initialize dummy student data\n const workgroupId = this.ConfigService.getWorkgroupId();\n this.notebooksByWorkgroup[workgroupId] = {};\n this.notebooksByWorkgroup[workgroupId].allItems = [];\n this.notebooksByWorkgroup[workgroupId].items = [];\n this.notebooksByWorkgroup[workgroupId].deletedItems = [];\n this.groupNotebookItems();\n // pretend sending data to server\n return new Promise((resolve, reject) => {\n resolve(this.notebooksByWorkgroup[workgroupId]);\n });\n } else {\n return this.doRetrieveNotebookItems(workgroupId);\n }\n }\n\n doRetrieveNotebookItems(workgroupId) {\n let url = this.ConfigService.getNotebookURL();\n if (workgroupId != null) {\n url += `/workgroup/${workgroupId}`;\n }\n return this.http\n .get(url)\n .toPromise()\n .then((resultData) => {\n const notebookItems = resultData;\n return this.handleRetrieveNotebookItems(notebookItems);\n });\n }\n\n handleRetrieveNotebookItems(notebookItems) {\n this.notebooksByWorkgroup = {};\n for (let notebookItem of notebookItems) {\n try {\n if (notebookItem.studentAssetId != null) {\n notebookItem.studentAsset = this.StudentAssetService.getAssetById(\n notebookItem.studentAssetId\n );\n } else {\n notebookItem.content = JSON.parse(notebookItem.content);\n }\n const workgroupId = notebookItem.workgroupId;\n this.addToNotebooksByWorgkroup(notebookItem, workgroupId);\n } catch (e) {}\n }\n this.groupNotebookItems();\n return this.notebooksByWorkgroup;\n }\n\n addToNotebooksByWorgkroup(notebookItem, workgroupId) {\n if (this.notebooksByWorkgroup.hasOwnProperty(workgroupId)) {\n this.notebooksByWorkgroup[workgroupId].allItems.push(notebookItem);\n } else {\n this.notebooksByWorkgroup[workgroupId] = { allItems: [notebookItem] };\n }\n }\n\n /**\n * Groups the notebook items together in to a map-like structure by workgroup inside this.notebook.items.\n */\n groupNotebookItems() {\n for (let workgroupId in this.notebooksByWorkgroup) {\n if (this.notebooksByWorkgroup.hasOwnProperty(workgroupId)) {\n const notebookByWorkgroup = this.notebooksByWorkgroup[workgroupId];\n notebookByWorkgroup.items = {};\n notebookByWorkgroup.deletedItems = {}; // reset deleted items\n for (let ni = 0; ni < notebookByWorkgroup.allItems.length; ni++) {\n const notebookItem = notebookByWorkgroup.allItems[ni];\n const notebookItemLocalNotebookItemId = notebookItem.localNotebookItemId;\n if (notebookByWorkgroup.items.hasOwnProperty(notebookItemLocalNotebookItemId)) {\n notebookByWorkgroup.items[notebookItemLocalNotebookItemId].push(notebookItem);\n } else {\n notebookByWorkgroup.items[notebookItemLocalNotebookItemId] = [notebookItem];\n }\n }\n // Go through the items and look at the last revision of each item.\n // If it's deleted, then move the entire item array to deletedItems\n for (let notebookItemLocalNotebookItemIdKey in notebookByWorkgroup.items) {\n if (notebookByWorkgroup.items.hasOwnProperty(notebookItemLocalNotebookItemIdKey)) {\n const allRevisionsForThisLocalNotebookItemId =\n notebookByWorkgroup.items[notebookItemLocalNotebookItemIdKey];\n if (allRevisionsForThisLocalNotebookItemId != null) {\n const lastRevision =\n allRevisionsForThisLocalNotebookItemId[\n allRevisionsForThisLocalNotebookItemId.length - 1\n ];\n if (lastRevision != null && lastRevision.serverDeleteTime != null) {\n // the last revision for this was deleted,\n // so move the entire note (with all its revisions) to deletedItems\n notebookByWorkgroup.deletedItems[notebookItemLocalNotebookItemIdKey] =\n allRevisionsForThisLocalNotebookItemId;\n delete notebookByWorkgroup.items[notebookItemLocalNotebookItemIdKey];\n }\n }\n }\n }\n }\n }\n }\n\n getPrivateNotebookItems(workgroupId = this.ConfigService.getWorkgroupId()) {\n const notebookByWorkgroup = this.getNotebookByWorkgroup(workgroupId);\n const privateNotebookItems = [];\n for (let notebookItem of notebookByWorkgroup.allItems) {\n if (notebookItem.groups == null || notebookItem.groups.length == 0) {\n privateNotebookItems.push(notebookItem);\n }\n }\n return privateNotebookItems;\n }\n\n getNotebookByWorkgroup(workgroupId = this.ConfigService.getWorkgroupId()) {\n let notebookByWorkgroup = this.notebooksByWorkgroup[workgroupId];\n if (notebookByWorkgroup == null) {\n notebookByWorkgroup = {\n allItems: [],\n items: {},\n deletedItems: {}\n };\n }\n return notebookByWorkgroup;\n }\n\n retrievePublicNotebookItems(group = null, periodId = null) {\n if (this.ConfigService.isPreview()) {\n // pretend we made a request to server\n return new Promise((resolve, reject) => {\n resolve({});\n });\n } else {\n return this.doRetrievePublicNotebookItems(group, periodId);\n }\n }\n\n doRetrievePublicNotebookItems(group, periodId) {\n const url = `${this.ConfigService.getNotebookURL()}/group/${group}`;\n const params = {};\n if (periodId != null) {\n params['periodId'] = periodId;\n }\n const options = {\n params: params\n };\n return this.http\n .get(url, options)\n .toPromise()\n .then((resultData) => {\n const publicNotebookItemsForGroup = resultData;\n return this.handleRetrievePublicNotebookItems(publicNotebookItemsForGroup, group);\n });\n }\n\n handleRetrievePublicNotebookItems(publicNotebookItemsForGroup, group) {\n for (let publicNotebookItemForGroup of publicNotebookItemsForGroup) {\n publicNotebookItemForGroup.content = JSON.parse(publicNotebookItemForGroup.content);\n }\n this.publicNotebookItems[group] = publicNotebookItemsForGroup;\n this.broadcastPublicNotebookItemsRetrieved({ publicNotebookItems: this.publicNotebookItems });\n return this.publicNotebookItems;\n }\n\n saveNotebookItem(\n notebookItemId,\n nodeId,\n localNotebookItemId,\n type,\n title,\n content,\n groups = [],\n clientSaveTime = null,\n clientDeleteTime = null\n ) {\n if (this.ConfigService.isPreview()) {\n return this.savePreviewNotebookItem(\n notebookItemId,\n nodeId,\n localNotebookItemId,\n type,\n title,\n content,\n groups,\n clientSaveTime,\n clientDeleteTime\n );\n } else {\n return this.doSaveNotebookItem(\n notebookItemId,\n nodeId,\n localNotebookItemId,\n type,\n title,\n content,\n groups,\n clientDeleteTime\n );\n }\n }\n\n savePreviewNotebookItem(\n notebookItemId,\n nodeId,\n localNotebookItemId,\n type,\n title,\n content,\n groups,\n clientSaveTime,\n clientDeleteTime\n ) {\n return new Promise((resolve, reject) => {\n const notebookItem = {\n content: content,\n localNotebookItemId: localNotebookItemId,\n nodeId: nodeId,\n notebookItemId: notebookItemId,\n title: title,\n type: type,\n workgroupId: this.ConfigService.getWorkgroupId(),\n groups: groups,\n clientSaveTime: clientSaveTime,\n serverSaveTime: clientSaveTime,\n clientDeleteTime: clientDeleteTime,\n serverDeleteTime: clientDeleteTime ? clientDeleteTime : null\n };\n const workgroupId = notebookItem.workgroupId;\n this.addToNotebooksByWorgkroup(notebookItem, workgroupId);\n this.groupNotebookItems();\n this.broadcastNotebookUpdated({\n notebook: this.notebooksByWorkgroup[workgroupId],\n notebookItem: notebookItem\n });\n resolve(notebookItem);\n });\n }\n\n doSaveNotebookItem(\n notebookItemId,\n nodeId,\n localNotebookItemId,\n type,\n title,\n content,\n groups,\n clientDeleteTime\n ) {\n const params = {\n workgroupId: this.ConfigService.getWorkgroupId(),\n notebookItemId: notebookItemId,\n localNotebookItemId: localNotebookItemId,\n nodeId: nodeId,\n type: type,\n title: title,\n content: JSON.stringify(content),\n groups: JSON.stringify(groups),\n clientSaveTime: Date.parse(new Date().toString()),\n clientDeleteTime: clientDeleteTime\n };\n if (this.ConfigService.getMode() !== 'classroomMonitor') {\n params['periodId'] = this.ConfigService.getPeriodId();\n }\n const headers = new HttpHeaders({ 'Content-Type': 'application/x-www-form-urlencoded' });\n return this.http\n .post(this.ConfigService.getNotebookURL(), $.param(params), { headers: headers })\n .toPromise()\n .then((resultData) => {\n const notebookItem = resultData;\n this.handleSaveNotebookItem(notebookItem);\n return resultData;\n });\n }\n\n handleSaveNotebookItem(notebookItem) {\n if (notebookItem != null) {\n if (notebookItem.type === 'note' || notebookItem.type === 'report') {\n notebookItem.content = JSON.parse(notebookItem.content);\n }\n const workgroupId = notebookItem.workgroupId;\n if (this.isNotebookItemPrivate(notebookItem)) {\n this.updatePrivateNotebookItem(notebookItem, workgroupId);\n }\n this.broadcastNotebookUpdated({\n notebook: this.notebooksByWorkgroup[workgroupId],\n notebookItem: notebookItem\n });\n }\n }\n\n updatePrivateNotebookItem(notebookItem, workgroupId) {\n this.addToNotebooksByWorgkroup(notebookItem, workgroupId);\n this.groupNotebookItems();\n }\n\n isNotebookItemPublic(notebookItem) {\n return !this.isNotebookItemPrivate(notebookItem);\n }\n\n isNotebookItemPrivate(notebookItem) {\n return notebookItem.groups == null;\n }\n\n copyNotebookItem(notebookItemId) {\n if (!this.ConfigService.isPreview()) {\n const url = `${this.ConfigService.getNotebookURL()}/parent/${notebookItemId}`;\n const params = {\n workgroupId: this.ConfigService.getWorkgroupId(),\n clientSaveTime: Date.parse(new Date().toString())\n };\n const headers = new HttpHeaders({ 'Content-Type': 'application/x-www-form-urlencoded' });\n return this.http\n .post(url, $.param(params), { headers: headers })\n .toPromise()\n .then((resultData) => {\n const notebookItem = resultData;\n return this.handleNewNotebookItem(notebookItem);\n });\n }\n }\n\n handleNewNotebookItem(notebookItem) {\n notebookItem.content = JSON.parse(notebookItem.content);\n const workgroupId = notebookItem.workgroupId;\n this.notebooksByWorkgroup[workgroupId].allItems.push(notebookItem);\n this.groupNotebookItems();\n this.broadcastNotebookUpdated({\n notebook: this.notebooksByWorkgroup[workgroupId],\n notebookItem: notebookItem\n });\n return notebookItem;\n }\n\n broadcastNotebookItemChosen(args: any) {\n this.notebookItemChosenSource.next(args);\n }\n\n broadcastNotebookUpdated(args: any) {\n this.notebookUpdatedSource.next(args);\n }\n\n broadcastPublicNotebookItemsRetrieved(args: any) {\n this.publicNotebookItemsRetrievedSource.next(args);\n }\n\n broadcastShowReportAnnotations() {\n this.showReportAnnotationsSource.next();\n }\n\n closeNotes(): void {\n this.setNotesVisible(false);\n this.setInsertMode({ insertMode: false });\n }\n\n setNotesVisible(value: boolean): void {\n this.notesVisibleSource.next(value);\n }\n\n setInsertMode(args: any): void {\n this.insertModeSource.next(args);\n }\n\n setReportFullScreen(value: boolean): void {\n this.reportFullScreenSource.next(value);\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ConfigService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ProjectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "StudentAssetService", + "type": "StudentAssetService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 71, + "jsdoctags": [ + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "ConfigService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "ProjectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "StudentAssetService", + "type": "StudentAssetService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "type": "injectable" + }, + { + "name": "NotificationService", + "id": "injectable-NotificationService-b9c84b895bde1df4d196f1749b66b0667ab05f5e5c7c362f8fa6be470a69d63418d71c5cf86fe1d36ef59683f04be3ca6183d84f56d4f878a05e7e11dd7cdd33", + "file": "src/assets/wise5/services/notificationService.ts", + "properties": [ + { + "name": "notificationChanged$", + "defaultValue": "this.notificationChangedSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "Observable", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "modifierKind": [ + 125 + ] + }, + { + "name": "notificationChangedSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 123 + ] + }, + { + "name": "notifications", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "Notification[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 14 + }, + { + "name": "setGlobalMessage$", + "defaultValue": "this.setGlobalMessageSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "Observable", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "modifierKind": [ + 125 + ] + }, + { + "name": "setGlobalMessageSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "modifierKind": [ + 123 + ] + }, + { + "name": "setIsJSONValid$", + "defaultValue": "this.setIsJSONValidSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "Observable", + "indexKey": "", + "optional": false, + "description": "", + "line": 20, + "modifierKind": [ + 125 + ] + }, + { + "name": "setIsJSONValidSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "modifierKind": [ + 123 + ] + }, + { + "name": "viewCurrentAmbientNotification$", + "defaultValue": "this.viewCurrentAmbientNotificationSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "Observable", + "indexKey": "", + "optional": false, + "description": "", + "line": 22, + "modifierKind": [ + 125 + ] + }, + { + "name": "viewCurrentAmbientNotificationSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 21, + "modifierKind": [ + 123 + ] + } + ], + "methods": [ + { + "name": "addNotification", + "args": [ + { + "name": "notification", + "type": "Notification", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 412, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "notification", + "type": "Notification", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "broadcastNotificationChanged", + "args": [ + { + "name": "notification", + "type": "Notification", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 434, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "notification", + "type": "Notification", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "broadcastSetGlobalMessage", + "args": [ + { + "name": "args", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 461, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "args", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "broadcastSetIsJSONValid", + "args": [ + { + "name": "args", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 465, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "args", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "broadcastViewCurrentAmbientNotification", + "args": [ + { + "name": "args", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 469, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "args", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createNewNotification", + "args": [ + { + "name": "runId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "periodId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "notificationType", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "fromWorkgroupId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "toWorkgroupId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "message", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "data", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + }, + { + "name": "groupId", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + } + ], + "optional": false, + "returnType": "Notification", + "typeParameters": [], + "line": 45, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCreates a new notification object\n", + "description": "

Creates a new notification object

\n", + "jsdoctags": [ + { + "name": "runId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "periodId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": { + "pos": 1698, + "end": 1714, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "notificationType" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 1692, + "end": 1697, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

type of notification [component, node, annotation, etc]

\n" + }, + { + "name": { + "pos": 1783, + "end": 1789, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 1777, + "end": 1782, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

id of node

\n" + }, + { + "name": { + "pos": 1813, + "end": 1824, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 1807, + "end": 1812, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

id of component

\n" + }, + { + "name": { + "pos": 1853, + "end": 1868, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "fromWorkgroupId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 1847, + "end": 1852, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

id of workgroup that created this notification

\n" + }, + { + "name": { + "pos": 1928, + "end": 1941, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "toWorkgroupId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 1922, + "end": 1927, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

id of workgroup this notification is for

\n" + }, + { + "name": { + "pos": 1995, + "end": 2002, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "message" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 1989, + "end": 1994, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

notification message

\n" + }, + { + "name": { + "pos": 2036, + "end": 2040, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "data" + }, + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "pos": 2030, + "end": 2035, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

other extra information about this notification

\n" + }, + { + "name": { + "pos": 2101, + "end": 2108, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "groupId" + }, + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "pos": 2095, + "end": 2100, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

id that groups multiple notifications together

\n" + }, + { + "tagName": { + "pos": 2162, + "end": 2169, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

newly created notification object

\n" + } + ] + }, + { + "name": "dismissNotification", + "args": [ + { + "name": "notification", + "type": "Notification", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 262, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "notification", + "type": "Notification", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "dismissNotifications", + "args": [ + { + "name": "notifications", + "type": "Notification[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 284, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "notifications", + "type": "Notification[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "displayAmbientNotification", + "args": [ + { + "name": "notification", + "type": "Notification", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 425, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "notification", + "type": "Notification", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getActiveNotifications", + "args": [ + { + "name": "notifications", + "type": "Notification[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Notification[]", + "typeParameters": [], + "line": 314, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "notifications", + "type": "Notification[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getActiveNotificationsWithSameSource", + "args": [ + { + "name": "notifications", + "type": "Notification[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "notificationToCompare", + "type": "Notification", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Notification[]", + "typeParameters": [], + "line": 273, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "notifications", + "type": "Notification[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "notificationToCompare", + "type": "Notification", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getAlertNotifications", + "args": [ + { + "name": "args", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "{}", + "typeParameters": [], + "line": 386, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nReturns all CRaterResult notifications for given parameters\nTODO: expand to encompass other notification types that should be shown in classroom monitor\n", + "description": "

Returns all CRaterResult notifications for given parameters\nTODO: expand to encompass other notification types that should be shown in classroom monitor

\n", + "jsdoctags": [ + { + "name": { + "pos": 14227, + "end": 14231, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "args" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 14221, + "end": 14226, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

object of optional parameters to filter on (e.g. nodeId, componentId, toWorkgroupId, fromWorkgroupId, periodId)

\n" + }, + { + "tagName": { + "pos": 14350, + "end": 14357, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

array of cRater notificaitons

\n" + } + ] + }, + { + "name": "getDismissedNotifications", + "args": [ + { + "name": "notifications", + "type": "Notification[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Notification[]", + "typeParameters": [], + "line": 335, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "notifications", + "type": "Notification[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getDismissedNotificationsForWorkgroup", + "args": [ + { + "name": "notifications", + "type": "Notification[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Notification[]", + "typeParameters": [], + "line": 324, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "notifications", + "type": "Notification[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getLatestActiveNotificationsFromUniqueSource", + "args": [ + { + "name": "notifications", + "type": "Notification[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Notification[]", + "typeParameters": [], + "line": 295, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "notifications", + "type": "Notification[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getLatestUniqueSourceNotifications", + "args": [ + { + "name": "notifications", + "type": "Notification[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Notification[]", + "typeParameters": [], + "line": 339, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "notifications", + "type": "Notification[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getNewNotifications", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 107, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getNotifications", + "args": [ + { + "name": "args", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "{}", + "typeParameters": [], + "line": 368, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nReturns all notifications for the given parameters\n(e.g. nodeId, componentId, toWorkgroupId, fromWorkgroupId, periodId, type)\n", + "description": "

Returns all notifications for the given parameters\n(e.g. nodeId, componentId, toWorkgroupId, fromWorkgroupId, periodId, type)

\n", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": { + "pos": 13544, + "end": 13548, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "args" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 13538, + "end": 13543, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

object of optional parameters to filter on\n(e.g. nodeId, componentId, toWorkgroupId, fromWorkgroupId, periodId, type)

\n" + }, + { + "tagName": { + "pos": 13678, + "end": 13685, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

array of notificaitons

\n" + } + ] + }, + { + "name": "getNotificationsSentToWorkgroup", + "args": [ + { + "name": "notifications", + "type": "Notification[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Notification[]", + "typeParameters": [], + "line": 307, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "notifications", + "type": "Notification[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getSourceKey", + "args": [ + { + "name": "notification", + "type": "Notification", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 353, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "notification", + "type": "Notification", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "hideJSONValidMessage", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 446, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isActiveNotification", + "args": [ + { + "name": "notification", + "type": "Notification", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 320, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "notification", + "type": "Notification", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "pretendServerRequest", + "args": [ + { + "name": "notification", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 358, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "notification", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "retrieveNotifications", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 84, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "saveNotificationToServer", + "args": [ + { + "name": "notification", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 249, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "notification", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "sendNotificationForScore", + "args": [ + { + "name": "notificationForScore", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 174, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "notificationForScore", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "sendNotificationToUser", + "args": [ + { + "name": "notificationMessageTemplate", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "fromWorkgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "notificationForScore", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "runId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "periodId", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "notificationType", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "toWorkgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "notificationData", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "notificationGroupId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 219, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "notificationMessageTemplate", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "fromWorkgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "notificationForScore", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "runId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "periodId", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "notificationType", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "toWorkgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "notificationData", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "notificationGroupId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setIsJSONValidMessage", + "args": [ + { + "name": "isJSONValid", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 457, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nShow the message in the toolbar that says \"JSON Valid\" or \"JSON Invalid\".\ntrue if we want to show \"JSON Valid\"\nfalse if we want to show \"JSON Invalid\"\nnull if we don't want to show anything\n", + "description": "

Show the message in the toolbar that says "JSON Valid" or "JSON Invalid".\ntrue if we want to show "JSON Valid"\nfalse if we want to show "JSON Invalid"\nnull if we don't want to show anything

\n", + "jsdoctags": [ + { + "name": { + "pos": 16511, + "end": 16522, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "isJSONValid" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 16505, + "end": 16510, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

true if we want to show "JSON Valid"\nfalse if we want to show "JSON Invalid"\nnull if we don't want to show anything

\n" + } + ] + }, + { + "name": "setNotificationNodePositionAndTitle", + "args": [ + { + "name": "notification", + "type": "Notification", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 167, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "notification", + "type": "Notification", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "showJSONInvalidMessage", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 442, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "showJSONValidMessage", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 438, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "showSavedMessage", + "args": [ + { + "name": "message", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "timeout", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "500" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 483, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "message", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "timeout", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "500", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "showSavingMessage", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 473, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { ConfigService } from './configService';\nimport { ProjectService } from './projectService';\nimport { Notification } from '../../../app/domain/notification';\nimport { Observable, Subject } from 'rxjs';\nimport { AnnotationService } from './annotationService';\nimport { DismissAmbientNotificationDialogComponent } from '../vle/dismiss-ambient-notification-dialog/dismiss-ambient-notification-dialog.component';\nimport { MatDialog } from '@angular/material/dialog';\nimport { generateRandomKey } from '../common/string/string';\n\n@Injectable()\nexport class NotificationService {\n notifications: Notification[] = [];\n private notificationChangedSource: Subject = new Subject();\n public notificationChanged$: Observable = this.notificationChangedSource.asObservable();\n private setGlobalMessageSource: Subject = new Subject();\n public setGlobalMessage$: Observable = this.setGlobalMessageSource.asObservable();\n private setIsJSONValidSource: Subject = new Subject();\n public setIsJSONValid$: Observable = this.setIsJSONValidSource.asObservable();\n private viewCurrentAmbientNotificationSource: Subject = new Subject();\n public viewCurrentAmbientNotification$: Observable =\n this.viewCurrentAmbientNotificationSource.asObservable();\n\n constructor(\n protected annotationService: AnnotationService,\n protected dialog: MatDialog,\n protected http: HttpClient,\n protected ConfigService: ConfigService,\n protected ProjectService: ProjectService\n ) {}\n\n /**\n * Creates a new notification object\n * @param notificationType type of notification [component, node, annotation, etc]\n * @param nodeId id of node\n * @param componentId id of component\n * @param fromWorkgroupId id of workgroup that created this notification\n * @param toWorkgroupId id of workgroup this notification is for\n * @param message notification message\n * @param data other extra information about this notification\n * @param groupId id that groups multiple notifications together\n * @returns newly created notification object\n */\n createNewNotification(\n runId,\n periodId,\n notificationType,\n nodeId,\n componentId,\n fromWorkgroupId,\n toWorkgroupId,\n message,\n data = null,\n groupId = null\n ): Notification {\n const nodePosition = this.ProjectService.getNodePositionById(nodeId);\n const nodePositionAndTitle = this.ProjectService.getNodePositionAndTitle(nodeId);\n const component = this.ProjectService.getComponent(nodeId, componentId);\n let componentType = null;\n if (component != null) {\n componentType = component.type;\n }\n return new Notification({\n id: null,\n runId: runId,\n periodId: periodId,\n type: notificationType,\n nodeId: nodeId,\n groupId: groupId,\n componentId: componentId,\n componentType: componentType,\n nodePosition: nodePosition,\n nodePositionAndTitle: nodePositionAndTitle,\n fromWorkgroupId: fromWorkgroupId,\n toWorkgroupId: toWorkgroupId,\n message: message,\n data: data,\n timeGenerated: Date.parse(new Date().toString()),\n timeDismissed: null\n });\n }\n\n retrieveNotifications() {\n if (this.ConfigService.isPreview()) {\n this.notifications = [];\n return;\n }\n const options: any = {};\n if (this.ConfigService.getMode() === 'studentRun') {\n options.params = new HttpParams()\n .set('periodId', this.ConfigService.getPeriodId())\n .set('toWorkgroupId', this.ConfigService.getWorkgroupId());\n }\n return this.http\n .get(this.ConfigService.getNotificationURL(), options)\n .toPromise()\n .then((notifications: any) => {\n this.notifications = notifications;\n this.notifications.map((notification: Notification) => {\n this.setNotificationNodePositionAndTitle(notification);\n });\n return this.notifications;\n });\n }\n\n getNewNotifications(): any[] {\n const newNotificationAggregates = [];\n this.notifications\n .filter((notification) => notification.timeDismissed == null)\n .forEach((notification) => {\n const notificationNodeId = notification.nodeId;\n const notificationType = notification.type;\n let newNotificationForNodeIdAndTypeExists = false;\n for (const newNotificationAggregate of newNotificationAggregates) {\n if (\n newNotificationAggregate.nodeId == notificationNodeId &&\n newNotificationAggregate.type == notificationType\n ) {\n newNotificationForNodeIdAndTypeExists = true;\n newNotificationAggregate.notifications.push(notification);\n if (notification.timeGenerated > newNotificationAggregate.latestNotificationTimestamp) {\n newNotificationAggregate.latestNotificationTimestamp = notification.timeGenerated;\n }\n }\n }\n let notebookItemId = null; // if this notification was created because teacher commented on a notebook report.\n if (!newNotificationForNodeIdAndTypeExists) {\n let message = '';\n if (notificationType === 'DiscussionReply') {\n message = $localize`You have new replies to your discussion post!`;\n } else if (notificationType === 'teacherToStudent') {\n message = $localize`You have new feedback from your teacher!`;\n if (notification.data != null) {\n if (typeof notification.data === 'string') {\n notification.data = JSON.parse(notification.data);\n }\n\n const annotationId = (notification.data as any).annotationId;\n if (annotationId != null) {\n const annotation = this.annotationService.getAnnotationById(annotationId);\n if (annotation != null && annotation.notebookItemId != null) {\n notebookItemId = annotation.notebookItemId;\n }\n }\n }\n } else if (notificationType === 'CRaterResult') {\n message = $localize`You have new feedback!`;\n } else {\n message = notification.message;\n }\n newNotificationAggregates.push({\n latestNotificationTimestamp: notification.timeGenerated,\n message: message,\n nodeId: notificationNodeId,\n notebookItemId: notebookItemId,\n notifications: [notification],\n type: notificationType\n });\n }\n });\n return newNotificationAggregates.sort(\n (n1, n2) => n2.latestNotificationTimestamp - n1.latestNotificationTimestamp\n );\n }\n\n setNotificationNodePositionAndTitle(notification: Notification) {\n notification.nodePosition = this.ProjectService.getNodePositionById(notification.nodeId);\n notification.nodePositionAndTitle = this.ProjectService.getNodePositionAndTitle(\n notification.nodeId\n );\n }\n\n sendNotificationForScore(notificationForScore) {\n const notificationType = notificationForScore.notificationType;\n if (notificationForScore.isNotifyTeacher || notificationForScore.isNotifyStudent) {\n const fromWorkgroupId = this.ConfigService.getWorkgroupId();\n const runId = this.ConfigService.getRunId();\n const periodId = this.ConfigService.getPeriodId();\n const notificationGroupId = runId + '_' + generateRandomKey(); // links student and teacher notifications together\n const notificationData: any = {};\n if (notificationForScore.isAmbient) {\n notificationData.isAmbient = true;\n }\n if (notificationForScore.dismissCode != null) {\n notificationData.dismissCode = notificationForScore.dismissCode;\n }\n if (notificationForScore.isNotifyStudent) {\n this.sendNotificationToUser(\n notificationForScore.notificationMessageToStudent,\n fromWorkgroupId,\n notificationForScore,\n runId,\n periodId,\n notificationType,\n this.ConfigService.getWorkgroupId(),\n notificationData,\n notificationGroupId\n ).then((notification) => {\n this.addNotification(notification);\n });\n }\n if (notificationForScore.isNotifyTeacher) {\n this.sendNotificationToUser(\n notificationForScore.notificationMessageToTeacher,\n fromWorkgroupId,\n notificationForScore,\n runId,\n periodId,\n notificationType,\n this.ConfigService.getTeacherWorkgroupId(),\n notificationData,\n notificationGroupId\n );\n }\n }\n }\n\n private sendNotificationToUser(\n notificationMessageTemplate: string,\n fromWorkgroupId: number,\n notificationForScore: any,\n runId: number,\n periodId: any,\n notificationType: string,\n toWorkgroupId: number,\n notificationData: any,\n notificationGroupId: string\n ) {\n const notificationMessage = notificationMessageTemplate\n .replace('{{username}}', this.ConfigService.getUsernameByWorkgroupId(fromWorkgroupId))\n .replace('{{score}}', notificationForScore.score)\n .replace('{{dismissCode}}', notificationForScore.dismissCode);\n const notification = this.createNewNotification(\n runId,\n periodId,\n notificationType,\n notificationForScore.nodeId,\n notificationForScore.componentId,\n fromWorkgroupId,\n toWorkgroupId,\n notificationMessage,\n notificationData,\n notificationGroupId\n );\n return this.saveNotificationToServer(notification);\n }\n\n saveNotificationToServer(notification) {\n if (this.ConfigService.isPreview()) {\n return this.pretendServerRequest(notification);\n } else {\n return this.http\n .post(this.ConfigService.getNotificationURL(), notification)\n .toPromise()\n .then((notification: Notification) => {\n return notification;\n });\n }\n }\n\n dismissNotification(notification: Notification): void {\n if (this.ConfigService.isPreview()) {\n this.pretendServerRequest(notification);\n }\n const notificationsToDismiss = this.getActiveNotificationsWithSameSource(\n this.notifications,\n notification\n );\n this.dismissNotifications(notificationsToDismiss);\n }\n\n private getActiveNotificationsWithSameSource(\n notifications: Notification[],\n notificationToCompare: Notification\n ): Notification[] {\n const sourceKey = this.getSourceKey(notificationToCompare);\n return notifications.filter(\n (notification) =>\n this.isActiveNotification(notification) && this.getSourceKey(notification) === sourceKey\n );\n }\n\n dismissNotifications(notifications: Notification[]): void {\n notifications.forEach((notification: any) => {\n notification.timeDismissed = Date.parse(new Date().toString());\n return this.http\n .post(`${this.ConfigService.getNotificationURL()}/dismiss`, notification)\n .subscribe((notification: Notification) => {\n this.addNotification(notification);\n });\n });\n }\n\n getLatestActiveNotificationsFromUniqueSource(\n notifications: Notification[],\n workgroupId: number\n ): Notification[] {\n const notificationsToWorkgroup = this.getNotificationsSentToWorkgroup(\n notifications,\n workgroupId\n );\n const activeNotifications = this.getActiveNotifications(notificationsToWorkgroup);\n return this.getLatestUniqueSourceNotifications(activeNotifications);\n }\n\n private getNotificationsSentToWorkgroup(\n notifications: Notification[],\n workgroupId: number\n ): Notification[] {\n return notifications.filter((notification) => notification.toWorkgroupId === workgroupId);\n }\n\n private getActiveNotifications(notifications: Notification[]): Notification[] {\n return notifications.filter((notification) => {\n return this.isActiveNotification(notification);\n });\n }\n\n private isActiveNotification(notification: Notification): boolean {\n return notification.timeDismissed == null;\n }\n\n getDismissedNotificationsForWorkgroup(\n notifications: Notification[],\n workgroupId: number\n ): Notification[] {\n const notificationsToWorkgroup = this.getNotificationsSentToWorkgroup(\n notifications,\n workgroupId\n );\n return this.getDismissedNotifications(notificationsToWorkgroup);\n }\n\n private getDismissedNotifications(notifications: Notification[]): Notification[] {\n return notifications.filter((notification) => notification.timeDismissed != null);\n }\n\n private getLatestUniqueSourceNotifications(notifications: Notification[]): Notification[] {\n const sourcesFound = new Set();\n const latestUniqueSourceNotifications = [];\n for (let n = notifications.length - 1; n >= 0; n--) {\n const notification = notifications[n];\n const sourceKey = this.getSourceKey(notification);\n if (!sourcesFound.has(sourceKey)) {\n latestUniqueSourceNotifications.push(notification);\n sourcesFound.add(sourceKey);\n }\n }\n return latestUniqueSourceNotifications;\n }\n\n private getSourceKey(notification: Notification): string {\n const { nodeId, componentId, fromWorkgroupId, toWorkgroupId, type } = notification;\n return `${nodeId}-${componentId}-${fromWorkgroupId}-${toWorkgroupId}-${type}`;\n }\n\n private pretendServerRequest(notification) {\n return Promise.resolve(notification);\n }\n\n /**\n * Returns all notifications for the given parameters\n * @param args object of optional parameters to filter on\n * (e.g. nodeId, componentId, toWorkgroupId, fromWorkgroupId, periodId, type)\n * @returns array of notificaitons\n */\n private getNotifications(args) {\n let notifications = this.notifications;\n for (const p in args) {\n if (args.hasOwnProperty(p) && args[p] !== null) {\n notifications = notifications.filter((notification) => {\n return notification[p] === args[p];\n });\n }\n }\n return notifications;\n }\n\n /**\n * Returns all CRaterResult notifications for given parameters\n * TODO: expand to encompass other notification types that should be shown in classroom monitor\n * @param args object of optional parameters to filter on (e.g. nodeId, componentId, toWorkgroupId, fromWorkgroupId, periodId)\n * @returns array of cRater notificaitons\n */\n getAlertNotifications(args) {\n // get all CRaterResult notifications for the given parameters\n // TODO: expand to encompass other notification types that should be shown to teacher\n let alertNotifications = [];\n const nodeId = args.nodeId;\n const params = args;\n params.type = 'CRaterResult';\n\n if (args.periodId) {\n params.periodId = args.periodId === -1 ? null : args.periodId;\n }\n\n if (nodeId && this.ProjectService.isGroupNode(nodeId)) {\n const groupNode = this.ProjectService.getNodeById(nodeId);\n const children = groupNode.ids;\n for (let childId of children) {\n params.nodeId = childId;\n const childAlerts = this.getAlertNotifications(args);\n alertNotifications = alertNotifications.concat(childAlerts);\n }\n } else {\n alertNotifications = this.getNotifications(params);\n }\n return alertNotifications;\n }\n\n addNotification(notification: Notification) {\n this.setNotificationNodePositionAndTitle(notification);\n for (let n = 0; n < this.notifications.length; n++) {\n if (this.notifications[n].id === notification.id) {\n this.notifications[n] = notification;\n this.broadcastNotificationChanged(notification);\n return;\n }\n }\n this.notifications.push(notification);\n this.broadcastNotificationChanged(notification);\n }\n\n displayAmbientNotification(notification: Notification): void {\n const dialogRef = this.dialog.open(DismissAmbientNotificationDialogComponent, {\n data: notification\n });\n dialogRef.componentInstance.dismiss$.subscribe((notification: Notification) => {\n this.dismissNotification(notification);\n });\n }\n\n broadcastNotificationChanged(notification: Notification) {\n this.notificationChangedSource.next(notification);\n }\n\n showJSONValidMessage() {\n this.setIsJSONValidMessage(true);\n }\n\n showJSONInvalidMessage() {\n this.setIsJSONValidMessage(false);\n }\n\n hideJSONValidMessage() {\n this.setIsJSONValidMessage(null);\n }\n\n /**\n * Show the message in the toolbar that says \"JSON Valid\" or \"JSON Invalid\".\n * @param isJSONValid\n * true if we want to show \"JSON Valid\"\n * false if we want to show \"JSON Invalid\"\n * null if we don't want to show anything\n */\n setIsJSONValidMessage(isJSONValid) {\n this.broadcastSetIsJSONValid({ isJSONValid: isJSONValid });\n }\n\n broadcastSetGlobalMessage(args) {\n this.setGlobalMessageSource.next(args);\n }\n\n broadcastSetIsJSONValid(args) {\n this.setIsJSONValidSource.next(args);\n }\n\n broadcastViewCurrentAmbientNotification(args: any) {\n this.viewCurrentAmbientNotificationSource.next(args);\n }\n\n showSavingMessage(): void {\n this.broadcastSetGlobalMessage({\n globalMessage: {\n text: $localize`Saving...`,\n isProgressIndicatorVisible: true,\n time: null\n }\n });\n }\n\n showSavedMessage(message: string, timeout: number = 500): void {\n setTimeout(() => {\n this.broadcastSetGlobalMessage({\n globalMessage: {\n text: message,\n isProgressIndicatorVisible: false,\n time: new Date().getTime()\n }\n });\n }, timeout);\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ConfigService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ProjectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 23, + "jsdoctags": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "ConfigService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "ProjectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "type": "injectable" + }, + { + "name": "NotifyAuthorService", + "id": "injectable-NotifyAuthorService-529ce199d32dfba883f2dc708186ced4172042be7aaba045be2eef01d8e834975702ee29fe8ac95cf355ed710887d7ff252232edbcb79813675617a354ebac1d", + "file": "src/assets/wise5/services/notifyAuthorService.ts", + "properties": [], + "methods": [ + { + "name": "editBegin", + "args": [ + { + "name": "projectId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 8, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "projectId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "editEnd", + "args": [ + { + "name": "projectId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 12, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "projectId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\n\n@Injectable()\nexport class NotifyAuthorService {\n constructor(private http: HttpClient) {}\n\n editBegin(projectId: number): void {\n this.http.post(`/api/author/project/notify/${projectId}/true`, null).subscribe();\n }\n\n editEnd(projectId: number): Promise {\n return new Promise((resolve, reject) => {\n if (projectId == null) {\n resolve();\n }\n this.http.post(`/api/author/project/notify/${projectId}/false`, null).subscribe(() => {\n resolve();\n });\n });\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 5, + "jsdoctags": [ + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "type": "injectable" + }, + { + "name": "OpenResponseCompletionCriteriaService", + "id": "injectable-OpenResponseCompletionCriteriaService-95ddc6433ae80513adaed4b5ffae138c4a6ee3e3d25c987e960f47e73c72b9f62f38e142c1c996b5b0b2e8bc2dbd2755a43bae81b3f4ad3627ae62fdc322aac6", + "file": "src/assets/wise5/components/openResponse/openResponseCompletionCriteriaService.ts", + "properties": [], + "methods": [ + { + "name": "getComponentStateSavedAfter", + "args": [ + { + "name": "studentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "timestamp", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 90, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "studentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "timestamp", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getComponentStateSubmittedAfter", + "args": [ + { + "name": "studentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "timestamp", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 71, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "studentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "timestamp", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getVisitEventAfter", + "args": [ + { + "name": "studentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "timestamp", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 108, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "studentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "timestamp", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isInOrderCompletionCriteriaSatisfied", + "args": [ + { + "name": "studentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "completionCriteria", + "type": "CompletionCriteria", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 23, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "studentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "completionCriteria", + "type": "CompletionCriteria", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isSatisfied", + "args": [ + { + "name": "studentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "completionCriteria", + "type": "CompletionCriteria", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 16, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "completionCriteria", + "type": "CompletionCriteria", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Injectable } from '@angular/core';\n\nexport interface CompletionCriteria {\n inOrder: boolean;\n criteria: CompletionCriterion[];\n}\n\ninterface CompletionCriterion {\n name: string;\n nodeId: string;\n componentId: string;\n}\n\n@Injectable()\nexport class OpenResponseCompletionCriteriaService {\n isSatisfied(studentData: any, completionCriteria: CompletionCriteria): boolean {\n if (completionCriteria.inOrder) {\n return this.isInOrderCompletionCriteriaSatisfied(studentData, completionCriteria);\n }\n return true;\n }\n\n private isInOrderCompletionCriteriaSatisfied(\n studentData: any,\n completionCriteria: CompletionCriteria\n ): boolean {\n let result = true;\n let tempTimestamp = 0;\n for (const completionCriterion of completionCriteria.criteria) {\n const functionName = completionCriterion.name;\n if (functionName == 'isSubmitted') {\n const tempComponentState = this.getComponentStateSubmittedAfter(\n studentData,\n completionCriterion.nodeId,\n completionCriterion.componentId,\n tempTimestamp\n );\n if (tempComponentState == null) {\n return false;\n } else {\n tempTimestamp = tempComponentState.serverSaveTime;\n }\n } else if (functionName == 'isSaved') {\n const tempComponentState = this.getComponentStateSavedAfter(\n studentData,\n completionCriterion.nodeId,\n completionCriterion.componentId,\n tempTimestamp\n );\n if (tempComponentState == null) {\n return false;\n } else {\n tempTimestamp = tempComponentState.serverSaveTime;\n }\n } else if (functionName == 'isVisited') {\n const tempEvent = this.getVisitEventAfter(\n studentData,\n completionCriterion.nodeId,\n tempTimestamp\n );\n if (tempEvent == null) {\n return false;\n } else {\n tempTimestamp = tempEvent.serverSaveTime;\n }\n }\n }\n return result;\n }\n\n private getComponentStateSubmittedAfter(\n studentData: any,\n nodeId: string,\n componentId: string,\n timestamp: number\n ): any {\n for (const componentState of studentData.componentStates) {\n if (\n componentState.nodeId === nodeId &&\n componentState.componentId === componentId &&\n componentState.serverSaveTime > timestamp &&\n componentState.isSubmit\n ) {\n return componentState;\n }\n }\n return null;\n }\n\n private getComponentStateSavedAfter(\n studentData: any,\n nodeId: string,\n componentId: string,\n timestamp: number\n ): any {\n for (const componentState of studentData.componentStates) {\n if (\n componentState.nodeId === nodeId &&\n componentState.componentId === componentId &&\n componentState.serverSaveTime > timestamp\n ) {\n return componentState;\n }\n }\n return null;\n }\n\n private getVisitEventAfter(studentData: any, nodeId: string, timestamp: number): any {\n for (const tempEvent of studentData.events) {\n if (\n tempEvent.nodeId === nodeId &&\n tempEvent.serverSaveTime > timestamp &&\n tempEvent.event === 'nodeEntered'\n ) {\n return tempEvent;\n }\n }\n return null;\n }\n}\n", + "extends": [], + "type": "injectable" + }, + { + "name": "OpenResponseService", + "id": "injectable-OpenResponseService-e6533c025fbeee7d8feaaf3416004efbc6aec2c13d76e5bb7461fca19b1f37287ef11a44ec0b971ef940158f564806d27e235845d21be4ee82579c20fa466258", + "file": "src/assets/wise5/components/openResponse/openResponseService.ts", + "properties": [ + { + "name": "notifyConnectedComponentSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "notifyConnectedComponentSource$", + "defaultValue": "this.notifyConnectedComponentSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "requestComponentStateSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "requestComponentStateSource$", + "defaultValue": "this.requestComponentStateSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "sendComponentStateSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "sendComponentStateSource$", + "defaultValue": "this.sendComponentStateSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "ComponentService" + } + } + ], + "methods": [ + { + "name": "componentStateHasStudentWork", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 87, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "createComponent", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 17, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "displayAnnotation", + "args": [ + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "annotation", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 52, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "annotation", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getComponentTypeLabel", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 13, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getStudentDataString", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "hasComponentState", + "args": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 97, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "hasResponse", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 106, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "hasStarterSentence", + "args": [ + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 101, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isAnyComponentStateHasResponse", + "args": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 112, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isAnyComponentStateHasResponseAndIsSubmit", + "args": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 121, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isCompleted", + "args": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeEvents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 25, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeEvents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "isCompletedByComponentStates", + "args": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 44, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isCompletedV2", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 29, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isDisplayAnnotationForAutoComment", + "args": [ + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 73, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isDisplayAnnotationForAutoScore", + "args": [ + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 63, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "componentHasCorrectAnswer", + "args": [ + { + "name": "component", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 147, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "component", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "componentHasWork", + "args": [ + { + "name": "component", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 105, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nWhether this component generates student work\nis not provided, we will use the default value of whether the\ncomponent type usually has work.\n", + "description": "

Whether this component generates student work\nis not provided, we will use the default value of whether the\ncomponent type usually has work.

\n", + "jsdoctags": [ + { + "name": { + "pos": 3060, + "end": 3069, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "component" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3054, + "end": 3059, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

(optional) the component object. if the component object\nis not provided, we will use the default value of whether the\ncomponent type usually has work.

\n" + }, + { + "tagName": { + "pos": 3238, + "end": 3244, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether this component generates student work

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "componentUsesSaveButton", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 135, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nWhether this component uses a save button\n", + "description": "

Whether this component uses a save button

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 4173, + "end": 4179, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether this component uses a save button

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "componentUsesSubmitButton", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 143, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nWhether this component uses a submit button\n", + "description": "

Whether this component uses a submit button

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 4351, + "end": 4357, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether this component uses a submit button

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getDomIdEnding", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 18, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getElementId", + "args": [ + { + "name": "domIdBeginning", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "domIdEnding", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "domIdBeginning", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "domIdEnding", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "hasNodeEnteredEvent", + "args": [ + { + "name": "nodeEvents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 155, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeEvents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "isSubmitRequired", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 151, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "notifyConnectedComponentSubscribers", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 42, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "requestComponentState", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 30, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "sendComponentState", + "args": [ + { + "name": "componentStateWrapper", + "type": "ComponentStateWrapper", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 38, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentStateWrapper", + "type": "ComponentStateWrapper", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "'use strict';\n\nimport { Injectable } from '@angular/core';\nimport { ComponentService } from '../componentService';\nimport { OpenResponseCompletionCriteriaService } from './openResponseCompletionCriteriaService';\n\n@Injectable()\nexport class OpenResponseService extends ComponentService {\n constructor(private completionCriteriaService: OpenResponseCompletionCriteriaService) {\n super();\n }\n\n getComponentTypeLabel(): string {\n return $localize`Open Response`;\n }\n\n createComponent() {\n const component: any = super.createComponent();\n component.type = 'OpenResponse';\n component.starterSentence = null;\n component.isStudentAttachmentEnabled = false;\n return component;\n }\n\n isCompleted(component: any, componentStates: any[], nodeEvents: any[], node: any): boolean {\n throw new Error('No longer used');\n }\n\n isCompletedV2(node: any, component: any, studentData: any) {\n if (component.completionCriteria != null) {\n return this.completionCriteriaService.isSatisfied(studentData, component.completionCriteria);\n } else {\n const componentStates = studentData.componentStates.filter(\n (componentState) =>\n componentState.nodeId === node.id && componentState.componentId == component.id\n );\n if (this.hasComponentState(componentStates)) {\n return this.isCompletedByComponentStates(component, componentStates, node);\n }\n return false;\n }\n }\n\n private isCompletedByComponentStates(component: any, componentStates: any[], node: any) {\n if (this.isSubmitRequired(node, component)) {\n return this.isAnyComponentStateHasResponseAndIsSubmit(componentStates);\n } else {\n return this.isAnyComponentStateHasResponse(componentStates);\n }\n }\n\n displayAnnotation(componentContent: any, annotation: any) {\n if (annotation.displayToStudent === false) {\n return false;\n } else if (annotation.type === 'autoScore') {\n return this.isDisplayAnnotationForAutoScore(componentContent);\n } else if (annotation.type === 'autoComment') {\n return this.isDisplayAnnotationForAutoComment(componentContent);\n }\n return true;\n }\n\n isDisplayAnnotationForAutoScore(componentContent: any) {\n if (\n (componentContent.cRater != null && !componentContent.cRater.showScore) ||\n componentContent.showAutoScore === false\n ) {\n return false;\n }\n return true;\n }\n\n isDisplayAnnotationForAutoComment(componentContent: any) {\n if (\n (componentContent.cRater != null && !componentContent.cRater.showFeedback) ||\n componentContent.showAutoFeedback === false\n ) {\n return false;\n }\n return true;\n }\n\n getStudentDataString(componentState: any) {\n return componentState.studentData.response;\n }\n\n componentStateHasStudentWork(componentState: any, componentContent: any) {\n if (this.hasStarterSentence(componentContent)) {\n const response = componentState.studentData.response;\n const starterSentence = componentContent.starterSentence;\n return this.hasResponse(componentState) && response !== starterSentence;\n } else {\n return this.hasResponse(componentState);\n }\n }\n\n hasComponentState(componentStates: any[]) {\n return componentStates != null && componentStates.length > 0;\n }\n\n hasStarterSentence(componentContent: any) {\n const starterSentence = componentContent.starterSentence;\n return starterSentence != null && starterSentence !== '';\n }\n\n hasResponse(componentState: any) {\n const response = componentState.studentData.response;\n const attachments = componentState.studentData.attachments;\n return (response != null && response !== '') || attachments.length > 0;\n }\n\n private isAnyComponentStateHasResponse(componentStates: any[]) {\n for (let c = componentStates.length - 1; c >= 0; c--) {\n if (this.hasResponse(componentStates[c])) {\n return true;\n }\n }\n return false;\n }\n\n private isAnyComponentStateHasResponseAndIsSubmit(componentStates: any[]) {\n for (let c = componentStates.length - 1; c >= 0; c--) {\n const componentState = componentStates[c];\n if (this.hasResponse(componentState) && componentState.isSubmit) {\n return true;\n }\n }\n return false;\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "completionCriteriaService", + "type": "OpenResponseCompletionCriteriaService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 8, + "jsdoctags": [ + { + "name": "completionCriteriaService", + "type": "OpenResponseCompletionCriteriaService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "ComponentService" + ], + "type": "injectable" + }, + { + "name": "OutsideURLService", + "id": "injectable-OutsideURLService-73ba4f9f390bc585cfe58716f73b603e0514eb75a89177ecb922b001ec2e26f99ce39c9cceb360406837dd9656259d19f855933f721be7b634c46793b9a5ba1d", + "file": "src/assets/wise5/components/outsideURL/outsideURLService.ts", + "properties": [ + { + "name": "notifyConnectedComponentSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "notifyConnectedComponentSource$", + "defaultValue": "this.notifyConnectedComponentSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "requestComponentStateSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "requestComponentStateSource$", + "defaultValue": "this.requestComponentStateSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "sendComponentStateSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "sendComponentStateSource$", + "defaultValue": "this.sendComponentStateSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "ComponentService" + } + } + ], + "methods": [ + { + "name": "componentHasWork", + "args": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 36, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "componentUsesSaveButton", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 40, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "componentUsesSubmitButton", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 44, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "createComponent", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 17, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getComponentTypeLabel", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 13, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getOpenEducationalResources", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 48, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isCompleted", + "args": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeEvents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 25, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeEvents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "componentHasCorrectAnswer", + "args": [ + { + "name": "component", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 147, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "component", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "componentStateHasStudentWork", + "args": [ + { + "name": "componentState", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentContent", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 118, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if the component state has student work. Sometimes a component\nstate may be created if the student visits a component but doesn't\nactually perform any work. This is where we will check if the student\nactually performed any work.\n", + "description": "

Check if the component state has student work. Sometimes a component\nstate may be created if the student visits a component but doesn't\nactually perform any work. This is where we will check if the student\nactually performed any work.

\n", + "jsdoctags": [ + { + "name": { + "pos": 3634, + "end": 3648, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3628, + "end": 3633, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component state object

\n" + }, + { + "name": { + "pos": 3688, + "end": 3704, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentContent" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3682, + "end": 3687, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component content

\n" + }, + { + "tagName": { + "pos": 3733, + "end": 3739, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether the component state has any work

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "displayAnnotation", + "args": [ + { + "name": "componentContent", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "annotation", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 94, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if we need to display the annotation to the student\n", + "description": "

Check if we need to display the annotation to the student

\n", + "jsdoctags": [ + { + "name": { + "pos": 2753, + "end": 2769, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentContent" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2747, + "end": 2752, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component content

\n" + }, + { + "name": { + "pos": 2804, + "end": 2814, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "annotation" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2798, + "end": 2803, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the annotation

\n" + }, + { + "tagName": { + "pos": 2836, + "end": 2843, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

whether we need to display the annotation to the student

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getDomIdEnding", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 18, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getElementId", + "args": [ + { + "name": "domIdBeginning", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "domIdEnding", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "domIdBeginning", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "domIdEnding", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getStudentDataString", + "args": [ + { + "name": "componentState", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 127, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the human readable student data string\n", + "description": "

Get the human readable student data string

\n", + "jsdoctags": [ + { + "name": { + "pos": 3953, + "end": 3967, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3947, + "end": 3952, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component state

\n" + }, + { + "tagName": { + "pos": 3994, + "end": 4000, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

a human readable student data string

\n", + "returnType": "string" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "hasNodeEnteredEvent", + "args": [ + { + "name": "nodeEvents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 155, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeEvents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "isSubmitRequired", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 151, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "notifyConnectedComponentSubscribers", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 42, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "requestComponentState", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 30, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "sendComponentState", + "args": [ + { + "name": "componentStateWrapper", + "type": "ComponentStateWrapper", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 38, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentStateWrapper", + "type": "ComponentStateWrapper", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "'use strict';\n\nimport { ComponentService } from '../componentService';\nimport { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\n\n@Injectable()\nexport class OutsideURLService extends ComponentService {\n constructor(private http: HttpClient) {\n super();\n }\n\n getComponentTypeLabel(): string {\n return $localize`Outside Resource`;\n }\n\n createComponent() {\n const component: any = super.createComponent();\n component.type = 'OutsideURL';\n component.url = '';\n component.height = 600;\n return component;\n }\n\n isCompleted(component: any, componentStates: any[], nodeEvents: any[], node: any) {\n if (nodeEvents != null) {\n for (const event of nodeEvents) {\n if (event.event === 'nodeEntered') {\n return true;\n }\n }\n }\n return false;\n }\n\n componentHasWork(component: any) {\n return false;\n }\n\n componentUsesSaveButton() {\n return false;\n }\n\n componentUsesSubmitButton() {\n return false;\n }\n\n getOpenEducationalResources() {\n return this.http\n .get(`assets/wise5/components/outsideURL/resources.json`)\n .toPromise()\n .then((result) => {\n return result;\n });\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 8, + "jsdoctags": [ + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "ComponentService" + ], + "type": "injectable" + }, + { + "name": "PathService", + "id": "injectable-PathService-6c02eb3f305e74a4cb8c9906f934daa2af39b6f11f16c16b8ea9c31ac2f99948f9b26e4dcd630afc1c634dc80fca0703b5d4bd7feacac2a7fe1094994689e7de", + "file": "src/assets/wise5/services/pathService.ts", + "properties": [], + "methods": [ + { + "name": "areFirstNodeIdsInPathsTheSame", + "args": [ + { + "name": "paths", + "type": "string[][]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 37, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if the first node ids in the paths are the same\n", + "description": "

Check if the first node ids in the paths are the same

\n", + "jsdoctags": [ + { + "name": { + "pos": 972, + "end": 977, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "paths" + }, + "type": "string[][]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 966, + "end": 971, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

an array of paths. each path is an array of node ids

\n" + }, + { + "tagName": { + "pos": 1037, + "end": 1043, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether all the paths have the same first node id

\n" + } + ] + }, + { + "name": "arePathsEmpty", + "args": [ + { + "name": "paths", + "type": "string[][]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 10, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if all the paths are empty\n", + "description": "

Check if all the paths are empty

\n", + "jsdoctags": [ + { + "name": { + "pos": 142, + "end": 147, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "paths" + }, + "type": "string[][]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 136, + "end": 141, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

an array of paths. each path is an array of node ids

\n" + }, + { + "tagName": { + "pos": 207, + "end": 213, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

true iff all the paths are empty

\n" + } + ] + }, + { + "name": "consolidatePaths", + "args": [ + { + "name": "paths", + "type": "[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]" + } + ], + "optional": false, + "returnType": "string[]", + "typeParameters": [], + "line": 109, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nConsolidate all the paths into a linear list of node ids\n", + "description": "

Consolidate all the paths into a linear list of node ids

\n", + "jsdoctags": [ + { + "name": { + "pos": 3145, + "end": 3150, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "paths" + }, + "type": "[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]", + "tagName": { + "pos": 3139, + "end": 3144, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

an array of paths. each path is an array of node ids.

\n" + }, + { + "tagName": { + "pos": 3211, + "end": 3217, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

an array of node ids that have been properly ordered

\n" + } + ] + }, + { + "name": "consumePathsUntilNodeId", + "args": [ + { + "name": "paths", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 149, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nConsume the node ids in the paths until we get to the given node id\n", + "description": "

Consume the node ids in the paths until we get to the given node id

\n", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": { + "pos": 4827, + "end": 4832, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "paths" + }, + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4821, + "end": 4826, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the paths to consume

\n" + }, + { + "name": { + "pos": 4866, + "end": 4872, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4860, + "end": 4865, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id to stop consuming at

\n" + }, + { + "tagName": { + "pos": 4912, + "end": 4918, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

an array of node ids that we have consumed

\n" + } + ] + }, + { + "name": "getFirstNodeIdInPathAtIndex", + "args": [ + { + "name": "paths", + "type": "string[][]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 21, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the path at the given index and get the first node id in\nthe path\n", + "description": "

Get the path at the given index and get the first node id in\nthe path

\n", + "jsdoctags": [ + { + "name": { + "pos": 455, + "end": 460, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "paths" + }, + "type": "string[][]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 449, + "end": 454, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

an array of paths. each path is an array of node ids

\n" + }, + { + "name": { + "pos": 526, + "end": 531, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "index" + }, + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 520, + "end": 525, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the index of the path we want

\n" + }, + { + "tagName": { + "pos": 568, + "end": 574, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

the first node in the given path

\n" + } + ] + }, + { + "name": "getNonEmptyPathIndex", + "args": [ + { + "name": "paths", + "type": "string[][]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 186, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet a non empty path index. It will loop through the paths and\nreturn the index of the first non empty path.\n", + "description": "

Get a non empty path index. It will loop through the paths and\nreturn the index of the first non empty path.

\n", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": { + "pos": 6077, + "end": 6082, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "paths" + }, + "type": "string[][]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]", + "tagName": { + "pos": 6071, + "end": 6076, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

an array of paths. each path is an array of node ids

\n" + }, + { + "tagName": { + "pos": 6142, + "end": 6148, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

the index of the path that is not empty

\n" + } + ] + }, + { + "name": "getPathsThatContainNodeId", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "paths", + "type": "[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]" + } + ], + "optional": false, + "returnType": "[][]", + "typeParameters": [], + "line": 170, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the paths that contain the node id\n", + "description": "

Get the paths that contain the node id

\n", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": { + "pos": 5476, + "end": 5482, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 5470, + "end": 5475, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id we are looking for

\n" + }, + { + "name": { + "pos": 5526, + "end": 5531, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "paths" + }, + "type": "[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]", + "tagName": { + "pos": 5520, + "end": 5525, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

an array of paths. each path is an array of node ids

\n" + }, + { + "tagName": { + "pos": 5591, + "end": 5597, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

an array of paths that contain the given node id

\n" + } + ] + }, + { + "name": "removeNodeIdFromPath", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "path", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 91, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "path", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "removeNodeIdFromPaths", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "paths", + "type": "string[][]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 68, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nRemove the node id from the paths\n", + "description": "

Remove the node id from the paths

\n", + "jsdoctags": [ + { + "name": { + "pos": 1863, + "end": 1869, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 1857, + "end": 1862, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id to remove

\n" + }, + { + "name": { + "pos": 1904, + "end": 1909, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "paths" + }, + "type": "string[][]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 1898, + "end": 1903, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

an array of paths. each path is an array of node ids

\n" + } + ] + }, + { + "name": "removeNodeIdFromPathWithIndex", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "paths", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "pathIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 82, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nRemove the node id from the path\n", + "description": "

Remove the node id from the path

\n", + "jsdoctags": [ + { + "name": { + "pos": 2235, + "end": 2241, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2229, + "end": 2234, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id to remove

\n" + }, + { + "name": { + "pos": 2276, + "end": 2281, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "paths" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2270, + "end": 2275, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

an array of paths. each path is an array of node ids

\n" + }, + { + "name": { + "pos": 2347, + "end": 2356, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "pathIndex" + }, + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2341, + "end": 2346, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the path to remove from

\n" + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Injectable } from '@angular/core';\n\n@Injectable()\nexport class PathService {\n /**\n * Check if all the paths are empty\n * @param paths an array of paths. each path is an array of node ids\n * @return true iff all the paths are empty\n */\n arePathsEmpty(paths: string[][]): boolean {\n return paths.every((path) => path.length === 0);\n }\n\n /**\n * Get the path at the given index and get the first node id in\n * the path\n * @param paths an array of paths. each path is an array of node ids\n * @param index the index of the path we want\n * @return the first node in the given path\n */\n getFirstNodeIdInPathAtIndex(paths: string[][], index: number): string {\n let nodeId = null;\n if (paths != null && index != null) {\n const path = paths[index];\n if (path != null && path.length > 0) {\n nodeId = path[0];\n }\n }\n return nodeId;\n }\n\n /**\n * Check if the first node ids in the paths are the same\n * @param paths an array of paths. each path is an array of node ids\n * @return whether all the paths have the same first node id\n */\n areFirstNodeIdsInPathsTheSame(paths: string[][]): boolean {\n let result = true;\n let nodeId = null;\n if (paths != null) {\n for (let path of paths) {\n const tempNodeId = path[0];\n if (nodeId == null) {\n /*\n * this is the first path we have looked at so we will\n * remember the node id\n */\n nodeId = tempNodeId;\n } else if (nodeId != tempNodeId) {\n /*\n * the node id does not match the first node id from a\n * previous path so the paths do not all have the same\n * first node id\n */\n result = false;\n break;\n }\n }\n }\n return result;\n }\n\n /**\n * Remove the node id from the paths\n * @param nodeId the node id to remove\n * @param paths an array of paths. each path is an array of node ids\n */\n removeNodeIdFromPaths(nodeId: string, paths: string[][]): void {\n if (nodeId != null && paths != null) {\n for (let path of paths) {\n this.removeNodeIdFromPath(nodeId, path);\n }\n }\n }\n\n /**\n * Remove the node id from the path\n * @param nodeId the node id to remove\n * @param paths an array of paths. each path is an array of node ids\n * @param pathIndex the path to remove from\n */\n removeNodeIdFromPathWithIndex(nodeId: string, paths: any, pathIndex: number): void {\n if (nodeId != null && paths != null && pathIndex != null) {\n const path = paths[pathIndex];\n if (path != null) {\n this.removeNodeIdFromPath(nodeId, path);\n }\n }\n }\n\n removeNodeIdFromPath(nodeId: string, path: string[]): void {\n for (let i = 0; i < path.length; i++) {\n if (path[i] === nodeId) {\n path.splice(i, 1);\n /*\n * move the counter back since we just removed a node id. We will continue searching\n * this path for the node id in case the path contains it multiple times.\n */\n i--;\n }\n }\n }\n\n /**\n * Consolidate all the paths into a linear list of node ids\n * @param paths an array of paths. each path is an array of node ids.\n * @return an array of node ids that have been properly ordered\n */\n consolidatePaths(paths = []): string[] {\n let consolidatedPath = [];\n /*\n * continue until all the paths are empty. as we consolidate\n * node ids, we will remove them from the paths. once all the\n * paths are empty we will be done consolidating the paths.\n */\n while (!this.arePathsEmpty(paths)) {\n const currentPath = this.getNonEmptyPathIndex(paths);\n const nodeId = this.getFirstNodeIdInPathAtIndex(paths, currentPath);\n if (this.areFirstNodeIdsInPathsTheSame(paths)) {\n this.removeNodeIdFromPaths(nodeId, paths);\n consolidatedPath.push(nodeId);\n } else {\n // not all the top node ids are the same which means we have branched\n const pathsThatContainNodeId = this.getPathsThatContainNodeId(nodeId, paths);\n if (pathsThatContainNodeId != null) {\n if (pathsThatContainNodeId.length === 1) {\n // only the current path we are on has the node id\n this.removeNodeIdFromPathWithIndex(nodeId, paths, currentPath);\n consolidatedPath.push(nodeId);\n } else {\n // there are multiple paths that have this node id\n const consumedPath = this.consumePathsUntilNodeId(paths, nodeId);\n this.removeNodeIdFromPaths(nodeId, paths);\n consumedPath.push(nodeId);\n consolidatedPath = consolidatedPath.concat(consumedPath);\n }\n }\n }\n }\n return consolidatedPath;\n }\n\n /**\n * Consume the node ids in the paths until we get to the given node id\n * @param paths the paths to consume\n * @param nodeId the node id to stop consuming at\n * @return an array of node ids that we have consumed\n */\n private consumePathsUntilNodeId(paths: any[], nodeId: string): any[] {\n const consumedNodes = [];\n for (const path of paths) {\n if (path.includes(nodeId)) {\n const subPath = path.splice(0, path.indexOf(nodeId));\n for (const nodeIdInPath of subPath) {\n if (!consumedNodes.includes(nodeIdInPath)) {\n consumedNodes.push(nodeIdInPath);\n }\n }\n }\n }\n return consumedNodes;\n }\n\n /**\n * Get the paths that contain the node id\n * @param nodeId the node id we are looking for\n * @param paths an array of paths. each path is an array of node ids\n * @return an array of paths that contain the given node id\n */\n private getPathsThatContainNodeId(nodeId: string, paths = []): string[][] {\n const pathsThatContainNodeId = [];\n for (const path of paths) {\n if (path.indexOf(nodeId) !== -1) {\n pathsThatContainNodeId.push(path);\n }\n }\n return pathsThatContainNodeId;\n }\n\n /**\n * Get a non empty path index. It will loop through the paths and\n * return the index of the first non empty path.\n * @param paths an array of paths. each path is an array of node ids\n * @return the index of the path that is not empty\n */\n private getNonEmptyPathIndex(paths: string[][] = []): number {\n for (let p = 0; p < paths.length; p++) {\n const path = paths[p];\n if (path.length !== 0) {\n return p;\n }\n }\n return null;\n }\n}\n", + "extends": [], + "type": "injectable" + }, + { + "name": "PauseScreenService", + "id": "injectable-PauseScreenService-52bd708e9bee12023daf160fe479271f979889675c9625cb3bd7d4ac954d76723d42bd11632b4f9bc5429b6c826c428376d7d5e35d238888f8fa3fa86996ced8", + "file": "src/assets/wise5/services/pauseScreenService.ts", + "properties": [], + "methods": [ + { + "name": "initialize", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 18, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isPeriodPaused", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 50, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "pauseScreen", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 36, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "subscribeToPauseMessages", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 25, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "unPauseScreen", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 46, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Injectable } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { Message } from '@stomp/stompjs';\nimport { DialogWithoutCloseComponent } from '../directives/dialog-without-close/dialog-without-close.component';\nimport { ConfigService } from './configService';\nimport { StompService } from './stompService';\nimport { StudentDataService } from './studentDataService';\n\n@Injectable()\nexport class PauseScreenService {\n constructor(\n private configService: ConfigService,\n private dialog: MatDialog,\n private stompService: StompService,\n private studentDataService: StudentDataService\n ) {}\n\n initialize(): void {\n this.subscribeToPauseMessages();\n if (this.isPeriodPaused()) {\n this.pauseScreen();\n }\n }\n\n private subscribeToPauseMessages(): void {\n this.stompService.periodMessage$.subscribe((message: Message) => {\n const body = JSON.parse(message.body);\n if (body.type === 'pause') {\n this.pauseScreen();\n } else if (body.type === 'unpause') {\n this.unPauseScreen();\n }\n });\n }\n\n pauseScreen(): void {\n this.dialog.open(DialogWithoutCloseComponent, {\n data: {\n content: $localize`Your teacher has paused all the screens in the class.`,\n title: $localize`Screen Paused`\n },\n disableClose: true\n });\n }\n\n unPauseScreen(): void {\n this.dialog.closeAll();\n }\n\n private isPeriodPaused(): boolean {\n const runStatus = this.studentDataService.getRunStatus();\n const periodId = this.configService.getPeriodId();\n return runStatus.periods.some((period: any) => period.periodId === periodId && period.paused);\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "stompService", + "type": "StompService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentDataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 10, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "stompService", + "type": "StompService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentDataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "type": "injectable" + }, + { + "name": "PeerChatService", + "id": "injectable-PeerChatService-e4f78d40a266c20f40b903c43a98f3c315731e2231406604761f2e6446ab01ac7ad24507aea35a4c9b5d0213b5ad4d3c736a13209e90157d8b86da45ed19e33d", + "file": "src/assets/wise5/components/peerChat/peerChatService.ts", + "properties": [ + { + "name": "notifyConnectedComponentSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "notifyConnectedComponentSource$", + "defaultValue": "this.notifyConnectedComponentSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "requestComponentStateSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "requestComponentStateSource$", + "defaultValue": "this.requestComponentStateSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "sendComponentStateSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "sendComponentStateSource$", + "defaultValue": "this.sendComponentStateSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "ComponentService" + } + } + ], + "methods": [ + { + "name": "convertComponentStateToPeerChatMessage", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "PeerChatMessage", + "typeParameters": [], + "line": 51, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createComponent", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 19, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getComponentTypeLabel", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 15, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "isCompleted", + "args": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeEvents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 78, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeEvents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "processIsDeletedAnnotations", + "args": [ + { + "name": "annotations", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "peerChatMessages", + "type": "PeerChatMessage[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 82, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "annotations", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "peerChatMessages", + "type": "PeerChatMessage[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "retrievePeerChatAnnotations", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 40, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "retrievePeerChatComponentStates", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setPeerChatMessages", + "args": [ + { + "name": "peerChatMessages", + "type": "PeerChatMessage[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentStates", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 72, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "peerChatMessages", + "type": "PeerChatMessage[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentStates", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setPeerChatWorkgroups", + "args": [ + { + "name": "peerChatWorkgroupInfos", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "workgroupIds", + "type": "number[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 60, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "peerChatWorkgroupInfos", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "workgroupIds", + "type": "number[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "componentHasCorrectAnswer", + "args": [ + { + "name": "component", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 147, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "component", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "componentHasWork", + "args": [ + { + "name": "component", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 105, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nWhether this component generates student work\nis not provided, we will use the default value of whether the\ncomponent type usually has work.\n", + "description": "

Whether this component generates student work\nis not provided, we will use the default value of whether the\ncomponent type usually has work.

\n", + "jsdoctags": [ + { + "name": { + "pos": 3060, + "end": 3069, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "component" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3054, + "end": 3059, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

(optional) the component object. if the component object\nis not provided, we will use the default value of whether the\ncomponent type usually has work.

\n" + }, + { + "tagName": { + "pos": 3238, + "end": 3244, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether this component generates student work

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "componentStateHasStudentWork", + "args": [ + { + "name": "componentState", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentContent", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 118, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if the component state has student work. Sometimes a component\nstate may be created if the student visits a component but doesn't\nactually perform any work. This is where we will check if the student\nactually performed any work.\n", + "description": "

Check if the component state has student work. Sometimes a component\nstate may be created if the student visits a component but doesn't\nactually perform any work. This is where we will check if the student\nactually performed any work.

\n", + "jsdoctags": [ + { + "name": { + "pos": 3634, + "end": 3648, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3628, + "end": 3633, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component state object

\n" + }, + { + "name": { + "pos": 3688, + "end": 3704, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentContent" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3682, + "end": 3687, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component content

\n" + }, + { + "tagName": { + "pos": 3733, + "end": 3739, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether the component state has any work

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "componentUsesSaveButton", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 135, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nWhether this component uses a save button\n", + "description": "

Whether this component uses a save button

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 4173, + "end": 4179, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether this component uses a save button

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "componentUsesSubmitButton", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 143, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nWhether this component uses a submit button\n", + "description": "

Whether this component uses a submit button

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 4351, + "end": 4357, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether this component uses a submit button

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "displayAnnotation", + "args": [ + { + "name": "componentContent", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "annotation", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 94, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if we need to display the annotation to the student\n", + "description": "

Check if we need to display the annotation to the student

\n", + "jsdoctags": [ + { + "name": { + "pos": 2753, + "end": 2769, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentContent" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2747, + "end": 2752, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component content

\n" + }, + { + "name": { + "pos": 2804, + "end": 2814, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "annotation" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2798, + "end": 2803, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the annotation

\n" + }, + { + "tagName": { + "pos": 2836, + "end": 2843, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

whether we need to display the annotation to the student

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getDomIdEnding", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 18, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getElementId", + "args": [ + { + "name": "domIdBeginning", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "domIdEnding", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "domIdBeginning", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "domIdEnding", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getStudentDataString", + "args": [ + { + "name": "componentState", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 127, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the human readable student data string\n", + "description": "

Get the human readable student data string

\n", + "jsdoctags": [ + { + "name": { + "pos": 3953, + "end": 3967, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3947, + "end": 3952, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component state

\n" + }, + { + "tagName": { + "pos": 3994, + "end": 4000, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

a human readable student data string

\n", + "returnType": "string" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "hasNodeEnteredEvent", + "args": [ + { + "name": "nodeEvents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 155, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeEvents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "isSubmitRequired", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 151, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "notifyConnectedComponentSubscribers", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 42, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "requestComponentState", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 30, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "sendComponentState", + "args": [ + { + "name": "componentStateWrapper", + "type": "ComponentStateWrapper", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 38, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentStateWrapper", + "type": "ComponentStateWrapper", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { ConfigService } from '../../services/configService';\nimport { ComponentService } from '../componentService';\nimport { PeerChatMessage } from './PeerChatMessage';\nimport { getAvatarColorForWorkgroupId } from '../../common/workgroup/workgroup';\n\n@Injectable()\nexport class PeerChatService extends ComponentService {\n constructor(private configService: ConfigService, private http: HttpClient) {\n super();\n }\n\n getComponentTypeLabel() {\n return $localize`Peer Chat`;\n }\n\n createComponent(): any {\n const component: any = super.createComponent();\n component.type = 'PeerChat';\n component.peerGroupingTag = '';\n return component;\n }\n\n retrievePeerChatComponentStates(\n nodeId: string,\n componentId: string,\n workgroupId: number\n ): Observable {\n const runId = this.configService.getRunId();\n if (this.configService.isPreview()) {\n this.configService.config.runId = 1;\n }\n return this.http.get(\n `/api/peer-group/${runId}/${workgroupId}/${nodeId}/${componentId}/student-work`\n );\n }\n\n retrievePeerChatAnnotations(\n nodeId: string,\n componentId: string,\n workgroupId: number\n ): Observable {\n const runId = this.configService.getRunId();\n return this.http.get(\n `/api/peer-group/${runId}/${workgroupId}/${nodeId}/${componentId}/annotations`\n );\n }\n\n convertComponentStateToPeerChatMessage(componentState: any): PeerChatMessage {\n return new PeerChatMessage(\n componentState.workgroupId,\n componentState.studentData.response,\n componentState.serverSaveTime,\n componentState.id\n );\n }\n\n setPeerChatWorkgroups(peerChatWorkgroupInfos: any, workgroupIds: number[]): any {\n for (const workgroupId of workgroupIds) {\n peerChatWorkgroupInfos[workgroupId] = {\n avatarColor: getAvatarColorForWorkgroupId(workgroupId),\n displayNames: this.configService.isTeacherWorkgroupId(workgroupId)\n ? $localize`Teacher`\n : this.configService.getUsernamesStringByWorkgroupId(workgroupId),\n isTeacher: this.configService.isTeacherWorkgroupId(workgroupId)\n };\n }\n }\n\n setPeerChatMessages(peerChatMessages: PeerChatMessage[], componentStates: any): void {\n componentStates.forEach((componentState: any) => {\n peerChatMessages.push(this.convertComponentStateToPeerChatMessage(componentState));\n });\n }\n\n isCompleted(component: any, componentStates: any[], nodeEvents: any[], node: any) {\n return componentStates.length > 0;\n }\n\n processIsDeletedAnnotations(annotations: any[], peerChatMessages: PeerChatMessage[]): void {\n const componentStateIdToIsDeleted = {};\n for (const annotation of annotations) {\n if (annotation.type === 'inappropriateFlag') {\n if (annotation.data.action === 'Delete') {\n componentStateIdToIsDeleted[annotation.studentWorkId] = true;\n } else if (annotation.data.action === 'Undo Delete') {\n componentStateIdToIsDeleted[annotation.studentWorkId] = false;\n }\n }\n }\n for (const peerChatMessage of peerChatMessages) {\n peerChatMessage.isDeleted = componentStateIdToIsDeleted[peerChatMessage.componentStateId];\n }\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 10, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "ComponentService" + ], + "type": "injectable" + }, + { + "name": "PeerGroupingAuthoringService", + "id": "injectable-PeerGroupingAuthoringService-269338ed5aeae64499775ffaa5f0908e018e6f4a88c350c6d1a592cfefb37ce278a20552f9fa7182b1cdffcb7e17a8bd290b3fa3689bcf6019bb5b0a4a8c14e6", + "file": "src/assets/wise5/services/peerGroupingAuthoringService.ts", + "properties": [], + "methods": [ + { + "name": "createNewPeerGrouping", + "args": [ + { + "name": "newPeerGrouping", + "type": "PeerGrouping", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "newPeerGrouping", + "type": "PeerGrouping", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createNewPeerGroupingInProject", + "args": [ + { + "name": "newPeerGrouping", + "type": "PeerGrouping", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 41, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "newPeerGrouping", + "type": "PeerGrouping", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createNewPeerGroupingOnServer", + "args": [ + { + "name": "newPeerGrouping", + "type": "PeerGrouping", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 47, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "newPeerGrouping", + "type": "PeerGrouping", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "deletePeerGrouping", + "args": [ + { + "name": "peerGroupingToDelete", + "type": "PeerGrouping", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 114, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "peerGroupingToDelete", + "type": "PeerGrouping", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getAllPeerGroupingTags", + "args": [ + { + "name": "peerGrouping", + "type": "PeerGrouping[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string[]", + "typeParameters": [], + "line": 110, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "peerGrouping", + "type": "PeerGrouping[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getDummyObservable", + "args": [], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 35, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "getPeerGrouping", + "args": [ + { + "name": "tag", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "PeerGrouping", + "typeParameters": [], + "line": 126, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "tag", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getPeerGroupings", + "args": [], + "optional": false, + "returnType": "PeerGrouping[]", + "typeParameters": [], + "line": 18, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getStepsUsedIn", + "args": [ + { + "name": "peerGroupingTag", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string[]", + "typeParameters": [], + "line": 88, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "peerGroupingTag", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getUniqueTag", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 101, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "updatePeerGrouping", + "args": [ + { + "name": "peerGroupingToUpdate", + "type": "PeerGrouping", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 56, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "peerGroupingToUpdate", + "type": "PeerGrouping", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "updatePeerGroupingInDatabase", + "args": [ + { + "name": "peerGroupingToUpdate", + "type": "PeerGrouping", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 78, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "peerGroupingToUpdate", + "type": "PeerGrouping", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "updatePeerGroupingInProject", + "args": [ + { + "name": "peerGroupingToUpdate", + "type": "PeerGrouping", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 66, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "peerGroupingToUpdate", + "type": "PeerGrouping", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { tap } from 'rxjs/operators';\nimport { PeerGrouping } from '../../../app/domain/peerGrouping';\nimport { generateRandomKey } from '../common/string/string';\nimport { ConfigService } from './configService';\nimport { TeacherProjectService } from './teacherProjectService';\n\n@Injectable()\nexport class PeerGroupingAuthoringService {\n constructor(\n private configService: ConfigService,\n private http: HttpClient,\n private projectService: TeacherProjectService\n ) {}\n\n getPeerGroupings(): PeerGrouping[] {\n return this.projectService.getPeerGroupings();\n }\n\n createNewPeerGrouping(newPeerGrouping: PeerGrouping): Observable {\n const runId = this.configService.getRunId();\n if (runId == null) {\n return this.getDummyObservable().pipe(\n tap(() => {\n this.createNewPeerGroupingInProject(newPeerGrouping);\n })\n );\n } else {\n return this.createNewPeerGroupingOnServer(newPeerGrouping);\n }\n }\n\n private getDummyObservable(): Observable {\n return new Observable((observer) => {\n observer.next({});\n });\n }\n\n private createNewPeerGroupingInProject(newPeerGrouping: PeerGrouping): void {\n const allPeerGrouping = this.getPeerGroupings();\n allPeerGrouping.push(newPeerGrouping);\n this.projectService.saveProject();\n }\n\n private createNewPeerGroupingOnServer(newPeerGrouping: PeerGrouping): Observable {\n const runId = this.configService.getRunId();\n return this.http.post(`/api/run/${runId}/peer-grouping`, newPeerGrouping).pipe(\n tap(() => {\n this.createNewPeerGroupingInProject(newPeerGrouping);\n })\n );\n }\n\n updatePeerGrouping(peerGroupingToUpdate: PeerGrouping): Observable {\n this.updatePeerGroupingInProject(peerGroupingToUpdate);\n const runId = this.configService.getRunId();\n if (runId == null) {\n return this.getDummyObservable();\n } else {\n return this.updatePeerGroupingInDatabase(peerGroupingToUpdate);\n }\n }\n\n private updatePeerGroupingInProject(peerGroupingToUpdate: PeerGrouping): void {\n const allPeerGroupings = this.getPeerGroupings();\n for (let i = 0; i < allPeerGroupings.length; i++) {\n const peerGrouping = allPeerGroupings[i];\n if (peerGrouping.tag === peerGroupingToUpdate.tag) {\n Object.assign(allPeerGroupings[i], peerGroupingToUpdate);\n break;\n }\n }\n this.projectService.saveProject();\n }\n\n private updatePeerGroupingInDatabase(\n peerGroupingToUpdate: PeerGrouping\n ): Observable {\n const runId = this.configService.getRunId();\n return this.http.put(\n `/api/run/${runId}/peer-grouping/${peerGroupingToUpdate.tag}`,\n peerGroupingToUpdate\n );\n }\n\n getStepsUsedIn(peerGroupingTag: string): string[] {\n const stepsUsedIn = [];\n for (const node of this.projectService.getApplicationNodes()) {\n for (const component of node.components) {\n if (component.peerGroupingTag === peerGroupingTag) {\n stepsUsedIn.push(this.projectService.getNodePositionAndTitle(node.id));\n break;\n }\n }\n }\n return stepsUsedIn;\n }\n\n getUniqueTag(): string {\n let newTag = generateRandomKey();\n const allPeerGroupingTags = this.getAllPeerGroupingTags(this.getPeerGroupings());\n while (allPeerGroupingTags.includes(newTag)) {\n newTag = generateRandomKey();\n }\n return newTag;\n }\n\n private getAllPeerGroupingTags(peerGrouping: PeerGrouping[]): string[] {\n return peerGrouping.map((peerGrouping) => peerGrouping.tag);\n }\n\n deletePeerGrouping(peerGroupingToDelete: PeerGrouping): void {\n const allPeerGroupings = this.getPeerGroupings();\n for (let i = 0; i < allPeerGroupings.length; i++) {\n const peerGrouping = allPeerGroupings[i];\n if (peerGrouping.tag === peerGroupingToDelete.tag) {\n allPeerGroupings.splice(i, 1);\n break;\n }\n }\n this.projectService.saveProject();\n }\n\n getPeerGrouping(tag: string): PeerGrouping {\n return this.getPeerGroupings().find((peerGrouping: PeerGrouping) => {\n return peerGrouping.tag === tag;\n });\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 11, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "type": "injectable" + }, + { + "name": "PeerGroupService", + "id": "injectable-PeerGroupService-4d78718cffcab85a3606b4301d2e761ef3c39a2020a7ae5e9749eab80350c055ad872a8079c0b5df42ad24001c4a062236159cd5d8cf1ac6835e3554cef08afb", + "file": "src/assets/wise5/services/peerGroupService.ts", + "properties": [ + { + "name": "PREVIEW_PEER_GROUP_ID", + "defaultValue": "1", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "modifierKind": [ + 126, + 148 + ] + }, + { + "name": "runId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 15 + } + ], + "methods": [ + { + "name": "createNewGroup", + "args": [ + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "peerGroupingTag", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 87, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "peerGroupingTag", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getPeerGroupingTags", + "args": [ + { + "name": "node", + "type": "Node", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Set", + "typeParameters": [], + "line": 21, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "node", + "type": "Node", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getPreviewPeerGroup", + "args": [], + "optional": false, + "returnType": "PeerGroup", + "typeParameters": [], + "line": 49, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "moveWorkgroupToGroup", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "groupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 94, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "groupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "removeWorkgroupFromGroup", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "groupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 98, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "groupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "retrieveDynamicPromptStudentData", + "args": [ + { + "name": "peerGroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 110, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "peerGroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "retrievePeerGroup", + "args": [ + { + "name": "peerGroupingTag", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "workgroupId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "this.configService.getWorkgroupId()" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 31, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "peerGroupingTag", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "workgroupId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "this.configService.getWorkgroupId()", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "retrievePeerGroupAnnotations", + "args": [ + { + "name": "peerGroup", + "type": "PeerGroup", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 75, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "peerGroup", + "type": "PeerGroup", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "retrievePeerGroupInfo", + "args": [ + { + "name": "peerGroupingTag", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "peerGroupingTag", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "retrievePeerGroupWork", + "args": [ + { + "name": "peerGroup", + "type": "PeerGroup", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 41, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "peerGroup", + "type": "PeerGroup", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "retrieveQuestionBankStudentData", + "args": [ + { + "name": "peerGroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 102, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "peerGroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "retrieveStudentWork", + "args": [ + { + "name": "peerGroup", + "type": "PeerGroup", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "showWorkNodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "showWorkComponentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 63, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "peerGroup", + "type": "PeerGroup", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "showWorkNodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "showWorkComponentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { PeerGroupStudentData } from '../../../app/domain/peerGroupStudentData';\nimport { Node } from '../common/Node';\nimport { PeerGroup } from '../components/peerChat/PeerGroup';\nimport { PeerGroupMember } from '../components/peerChat/PeerGroupMember';\nimport { ConfigService } from './configService';\n\n@Injectable()\nexport class PeerGroupService {\n static readonly PREVIEW_PEER_GROUP_ID = 1;\n\n runId: number;\n\n constructor(protected configService: ConfigService, protected http: HttpClient) {\n this.runId = this.configService.getRunId();\n }\n\n getPeerGroupingTags(node: Node): Set {\n const tags = new Set();\n node.components.forEach((component) => {\n if (component.peerGroupingTag != null) {\n tags.add(component.peerGroupingTag);\n }\n });\n return tags;\n }\n\n retrievePeerGroup(\n peerGroupingTag: string,\n workgroupId = this.configService.getWorkgroupId()\n ): Observable {\n const runId = this.configService.getRunId();\n return this.http\n .get(`/api/peer-group/${runId}/${workgroupId}/${peerGroupingTag}`)\n .pipe(map((value) => new PeerGroup(value.id, value.members, value.peerGrouping)));\n }\n\n retrievePeerGroupWork(\n peerGroup: PeerGroup,\n nodeId: string,\n componentId: string\n ): Observable {\n return this.http.get(`/api/peer-group/${peerGroup.id}/${nodeId}/${componentId}/student-work`);\n }\n\n protected getPreviewPeerGroup(): PeerGroup {\n let workgroupId = 1;\n let periodId = 1;\n if (!this.configService.isAuthoring()) {\n workgroupId = this.configService.getWorkgroupId();\n periodId = this.configService.getPeriodId();\n }\n return new PeerGroup(\n PeerGroupService.PREVIEW_PEER_GROUP_ID,\n [new PeerGroupMember(workgroupId, periodId)],\n null\n );\n }\n\n retrieveStudentWork(\n peerGroup: PeerGroup,\n nodeId: string,\n componentId: string,\n showWorkNodeId: string,\n showWorkComponentId: string\n ): Observable {\n return this.http.get(\n `/api/classmate/peer-group-work/${peerGroup.id}/${nodeId}/${componentId}/${showWorkNodeId}/${showWorkComponentId}`\n );\n }\n\n retrievePeerGroupAnnotations(\n peerGroup: PeerGroup,\n nodeId: string,\n componentId: string\n ): Observable {\n return of([]);\n }\n\n retrievePeerGroupInfo(peerGroupingTag: string): Observable {\n return this.http.get(`/api/teacher/peer-group-info/${this.runId}/${peerGroupingTag}`);\n }\n\n createNewGroup(periodId: number, peerGroupingTag: string): Observable {\n return this.http.post(\n `/api/peer-group/create/${this.runId}/${periodId}/${peerGroupingTag}`,\n {}\n );\n }\n\n moveWorkgroupToGroup(workgroupId: number, groupId: number): Observable {\n return this.http.post(`/api/peer-group/membership/add/${groupId}/${workgroupId}`, {});\n }\n\n removeWorkgroupFromGroup(workgroupId: number, groupId: number): Observable {\n return this.http.delete(`/api/peer-group/membership/${groupId}/${workgroupId}`);\n }\n\n retrieveQuestionBankStudentData(\n peerGroupId: number,\n nodeId: string,\n componentId: string\n ): Observable {\n return of([]);\n }\n\n retrieveDynamicPromptStudentData(\n peerGroupId: number,\n nodeId: string,\n componentId: string\n ): Observable {\n return of([]);\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 15, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "type": "injectable" + }, + { + "name": "ProjectAssetService", + "id": "injectable-ProjectAssetService-5c5420140a1166fd4ef61ae58200bbc40081dbd43497ac7a0e08a3889b3452bb8ce065352f9fb25c42cb12022d6dac10b076bddd0178bb2b2fae2600852101c8", + "file": "src/app/services/projectAssetService.ts", + "properties": [ + { + "name": "projectAssets", + "defaultValue": "new BehaviorSubject(null)", + "deprecated": false, + "deprecationMessage": "", + "type": "BehaviorSubject", + "indexKey": "", + "optional": false, + "description": "", + "line": 14 + }, + { + "name": "projectThumbnailFileName", + "defaultValue": "'project_thumb.png'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 17 + }, + { + "name": "totalFileSize", + "defaultValue": "new BehaviorSubject(0)", + "deprecated": false, + "deprecationMessage": "", + "type": "BehaviorSubject", + "indexKey": "", + "optional": false, + "description": "", + "line": 15 + }, + { + "name": "totalSizeMax", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 13 + }, + { + "name": "totalUnusedFileSize", + "defaultValue": "new BehaviorSubject(0)", + "deprecated": false, + "deprecationMessage": "", + "type": "BehaviorSubject", + "indexKey": "", + "optional": false, + "description": "", + "line": 16 + } + ], + "methods": [ + { + "name": "calculateAssetUsage", + "args": [ + { + "name": "assets", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "this.getProjectAssets().getValue()" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 117, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "assets", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "this.getProjectAssets().getValue()", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "calculateUsedFiles", + "args": [ + { + "name": "assets", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "usedTextContent", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 151, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "assets", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "usedTextContent", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "deleteAssetItem", + "args": [ + { + "name": "assetItem", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 108, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "assetItem", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "downloadAssetItem", + "args": [ + { + "name": "assetItem", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 101, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "assetItem", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "endsWith", + "args": [ + { + "name": "str", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "suffix", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 147, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "str", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "suffix", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getAllTextFiles", + "args": [ + { + "name": "assets", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 128, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "assets", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getAllUsedTextContent", + "args": [ + { + "name": "usedTextContentSoFar", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "textFiles", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 183, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "usedTextContentSoFar", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "textFiles", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getAssetUnusedPercentage", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 59, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getAssetUsagePercentage", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 55, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getFileNameFromURL", + "args": [ + { + "name": "url", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 211, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "url", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getProjectAssets", + "args": [], + "optional": false, + "returnType": "BehaviorSubject", + "typeParameters": [], + "line": 31, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getTextFiles", + "args": [ + { + "name": "textFileNames", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 222, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "textFileNames", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getTotalFileSize", + "args": [], + "optional": false, + "returnType": "BehaviorSubject", + "typeParameters": [], + "line": 39, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getTotalUnusedFileSize", + "args": [], + "optional": false, + "returnType": "BehaviorSubject", + "typeParameters": [], + "line": 47, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "injectFileTypeValues", + "args": [ + { + "name": "projectAssets", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 74, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "projectAssets", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isFileAlreadyAdded", + "args": [ + { + "name": "usedTextFilenames", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "fileName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 203, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "usedTextFilenames", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "fileName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isFileReferencedInContent", + "args": [ + { + "name": "content", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "fileName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 207, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "content", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "fileName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isProjectAssetsAvailable", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 235, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isTextFile", + "args": [ + { + "name": "fileName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 139, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "fileName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "retrieveProjectAssets", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 63, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "retrieveTextFilesAndCalculateUsedFiles", + "args": [ + { + "name": "assets", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "usedTextContent", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "allTextFiles", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 166, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "assets", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "usedTextContent", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "allTextFiles", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setProjectAssets", + "args": [ + { + "name": "projectAssets", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 35, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "projectAssets", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setTotalFileSize", + "args": [ + { + "name": "totalFileSize", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 43, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "totalFileSize", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setTotalUnusedFileSize", + "args": [ + { + "name": "totalUnusedFileSize", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 51, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "totalUnusedFileSize", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "uploadAssets", + "args": [ + { + "name": "files", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 88, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "files", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "'use strict';\n\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { map, tap } from 'rxjs/operators';\nimport { forkJoin, BehaviorSubject } from 'rxjs';\nimport { ConfigService } from '../../assets/wise5/services/configService';\nimport { ProjectService } from '../../assets/wise5/services/projectService';\nimport { isAudio, isImage, isVideo } from '../../assets/wise5/common/file/file';\n\n@Injectable()\nexport class ProjectAssetService {\n totalSizeMax = 0;\n projectAssets: BehaviorSubject = new BehaviorSubject(null);\n totalFileSize: BehaviorSubject = new BehaviorSubject(0);\n totalUnusedFileSize: BehaviorSubject = new BehaviorSubject(0);\n projectThumbnailFileName = 'project_thumb.png';\n\n constructor(\n protected configService: ConfigService,\n protected http: HttpClient,\n protected projectService: ProjectService\n ) {\n this.getProjectAssets().subscribe((projectAssets) => {\n if (projectAssets != null) {\n this.calculateAssetUsage(projectAssets);\n }\n });\n }\n\n getProjectAssets(): BehaviorSubject {\n return this.projectAssets;\n }\n\n setProjectAssets(projectAssets: any) {\n this.projectAssets.next(projectAssets);\n }\n\n getTotalFileSize(): BehaviorSubject {\n return this.totalFileSize;\n }\n\n setTotalFileSize(totalFileSize: number) {\n this.totalFileSize.next(totalFileSize);\n }\n\n getTotalUnusedFileSize(): BehaviorSubject {\n return this.totalUnusedFileSize;\n }\n\n setTotalUnusedFileSize(totalUnusedFileSize: number) {\n this.totalUnusedFileSize.next(totalUnusedFileSize);\n }\n\n getAssetUsagePercentage() {\n return (this.getTotalFileSize().getValue() / this.totalSizeMax) * 100;\n }\n\n getAssetUnusedPercentage() {\n return (this.getTotalUnusedFileSize().getValue() / this.totalSizeMax) * 100;\n }\n\n retrieveProjectAssets(): any {\n const url = this.configService.getConfigParam('projectAssetURL');\n return this.http.get(url).pipe(\n tap((projectAssets: any) => {\n this.totalSizeMax = this.configService.getConfigParam('projectAssetTotalSizeMax');\n this.injectFileTypeValues(projectAssets.files);\n this.setProjectAssets(projectAssets);\n })\n );\n }\n\n injectFileTypeValues(projectAssets: any[]) {\n projectAssets.forEach((projectAsset) => {\n if (isImage(projectAsset.fileName)) {\n projectAsset.fileType = 'image';\n } else if (isVideo(projectAsset.fileName)) {\n projectAsset.fileType = 'video';\n } else if (isAudio(projectAsset.fileName)) {\n projectAsset.fileType = 'audio';\n } else {\n projectAsset.fileType = 'other';\n }\n });\n }\n\n uploadAssets(files: any[]) {\n const url = this.configService.getConfigParam('projectAssetURL');\n const formData = new FormData();\n files.forEach((file: any) => formData.append('files', file, file.name));\n return this.http.post(url, formData).pipe(\n map((data: any) => {\n this.injectFileTypeValues(data.assetDirectoryInfo.files);\n this.setProjectAssets(data.assetDirectoryInfo);\n return data;\n })\n );\n }\n\n downloadAssetItem(assetItem: any) {\n window.open(\n `${this.configService.getConfigParam('projectAssetURL')}` +\n `/download?assetFileName=${assetItem.fileName}`\n );\n }\n\n deleteAssetItem(assetItem: any): any {\n const url = `${this.configService.getConfigParam('projectAssetURL')}/delete`;\n const params = new HttpParams().set('assetFileName', assetItem.fileName);\n return this.http.post(url, params).subscribe((projectAssets: any) => {\n this.injectFileTypeValues(projectAssets.files);\n this.setProjectAssets(projectAssets);\n });\n }\n\n calculateAssetUsage(assets: any = this.getProjectAssets().getValue()): void {\n const usedTextContent =\n JSON.stringify(this.projectService.project) + this.projectThumbnailFileName;\n const allTextFiles = this.getAllTextFiles(assets);\n if (allTextFiles.length == 0) {\n this.calculateUsedFiles(assets, usedTextContent);\n } else {\n this.retrieveTextFilesAndCalculateUsedFiles(assets, usedTextContent, allTextFiles);\n }\n }\n\n private getAllTextFiles(assets: any): any[] {\n const allTextFiles = [];\n for (const asset of assets.files) {\n const fileName = asset.fileName;\n if (this.isTextFile(fileName)) {\n allTextFiles.push(fileName);\n }\n }\n return allTextFiles;\n }\n\n private isTextFile(fileName: string): boolean {\n return (\n this.endsWith(fileName, '.html') ||\n this.endsWith(fileName, '.htm') ||\n this.endsWith(fileName, '.js')\n );\n }\n\n private endsWith(str: string, suffix: string): boolean {\n return str.substring(str.length - suffix.length) === suffix;\n }\n\n calculateUsedFiles(assets: any, usedTextContent: string) {\n let totalUnusedFilesSize = 0;\n for (const asset of assets.files) {\n const fileName = asset.fileName;\n if (usedTextContent.indexOf(fileName) != -1) {\n asset.used = true;\n } else {\n asset.used = false;\n totalUnusedFilesSize += asset.fileSize;\n }\n }\n this.setTotalFileSize(assets.totalFileSize);\n this.setTotalUnusedFileSize(totalUnusedFilesSize);\n }\n\n retrieveTextFilesAndCalculateUsedFiles(\n assets: any,\n usedTextContent: string,\n allTextFiles: any[]\n ) {\n this.getTextFiles(allTextFiles).subscribe((textFiles: any[]) => {\n const allUsedTextContent = this.getAllUsedTextContent(usedTextContent, textFiles);\n this.calculateUsedFiles(assets, allUsedTextContent);\n });\n }\n\n /*\n * Loop through all the text files and check if there are any references to a text file from\n * content that is used. Each time a text file is found to be used, we will check all the assets\n * again to see if the new text file uses other text files. For example, if we find model.html to\n * be used we need to check all the assets again incase model.html uses a text file like model.js.\n */\n getAllUsedTextContent(usedTextContentSoFar: string, textFiles: any[]) {\n const usedTextFileNames = [];\n let foundNewUsedTextFile = true;\n while (foundNewUsedTextFile) {\n foundNewUsedTextFile = false;\n for (const textFile of textFiles) {\n const fileName = this.getFileNameFromURL(textFile.url);\n if (\n !this.isFileAlreadyAdded(usedTextFileNames, fileName) &&\n this.isFileReferencedInContent(usedTextContentSoFar, fileName)\n ) {\n usedTextFileNames.push(fileName);\n usedTextContentSoFar += textFile.body;\n foundNewUsedTextFile = true;\n }\n }\n }\n return usedTextContentSoFar;\n }\n\n isFileAlreadyAdded(usedTextFilenames: any[], fileName: string) {\n return usedTextFilenames.includes(fileName);\n }\n\n isFileReferencedInContent(content: string, fileName: string) {\n return content.indexOf(fileName) != -1;\n }\n\n getFileNameFromURL(url: string) {\n let fileName = '';\n const lastIndexOfSlash = url.lastIndexOf('/');\n if (lastIndexOfSlash == -1) {\n fileName = url;\n } else {\n fileName = url.substring(lastIndexOfSlash + 1);\n }\n return fileName;\n }\n\n getTextFiles(textFileNames: string[]): any {\n const requests = [];\n const projectAssetsDirectoryPath = this.configService.getProjectAssetsDirectoryPath();\n for (const textFileName of textFileNames) {\n const request = this.http.get(`${projectAssetsDirectoryPath}/${textFileName}`, {\n observe: 'response',\n responseType: 'text'\n });\n requests.push(request);\n }\n return forkJoin(requests);\n }\n\n isProjectAssetsAvailable() {\n return this.getProjectAssets().getValue() != null;\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 17, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "type": "injectable" + }, + { + "name": "ProjectLibraryService", + "id": "injectable-ProjectLibraryService-e44c7824eaaa9988910ac78a728e6468e2efcf38a2a00ecf75b5869af5d155b33c49cabfe233db64676ead7f7cca626d6680e702f5ebc6616f953d454dadb0fd", + "file": "src/assets/wise5/services/projectLibraryService.ts", + "properties": [], + "methods": [ + { + "name": "filterUniqueProjects", + "args": [ + { + "name": "projects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 25, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "projects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getLibraryProjects", + "args": [], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 10, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "sortAndFilterUniqueProjects", + "args": [ + { + "name": "projects", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 16, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "projects", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "sortByProjectIdDescending", + "args": [ + { + "name": "project1", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "project2", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 37, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "project1", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "project2", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { ConfigService } from './configService';\nimport { Observable, map } from 'rxjs';\n\n@Injectable()\nexport class ProjectLibraryService {\n constructor(protected configService: ConfigService, protected http: HttpClient) {}\n\n getLibraryProjects(): Observable {\n return this.http\n .get(this.configService.getConfigParam('getLibraryProjectsURL'))\n .pipe(map((projects) => this.sortAndFilterUniqueProjects(projects)));\n }\n\n private sortAndFilterUniqueProjects(projects: any): any[] {\n const flatProjectList = projects\n .map((grade) => {\n return grade.children;\n })\n .flat();\n return this.filterUniqueProjects(flatProjectList).sort(this.sortByProjectIdDescending);\n }\n\n private filterUniqueProjects(projects: any[]): any[] {\n const uniqueProjects = [];\n const foundProjects = new Map();\n for (const project of projects) {\n if (!foundProjects.has(project.id)) {\n foundProjects.set(project.id, project);\n uniqueProjects.push(project);\n }\n }\n return uniqueProjects;\n }\n\n private sortByProjectIdDescending(project1: any, project2: any): number {\n return project2.id - project1.id;\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 7, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "type": "injectable" + }, + { + "name": "ProjectService", + "id": "injectable-ProjectService-23b2bf0d31e85e75a280e257a78d9a7b7d2179055ed3ab4f2c7a3e733d024cc59ee4fcde5184f08634d61465a1b1294f4390b09dcefe584f0d879eafcd5a2353", + "file": "src/assets/wise5/services/projectService.ts", + "properties": [ + { + "name": "achievements", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 26 + }, + { + "name": "additionalProcessingFunctionsMap", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 27 + }, + { + "name": "allPaths", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "string[][]", + "indexKey": "", + "optional": false, + "description": "", + "line": 28 + }, + { + "name": "applicationNodes", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 29 + }, + { + "name": "currentLanguage", + "defaultValue": "this.currentLanguageSignal.asReadonly()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 31, + "modifierKind": [ + 148 + ] + }, + { + "name": "currentLanguageSignal", + "defaultValue": "signal(null)", + "deprecated": false, + "deprecationMessage": "", + "type": "WritableSignal", + "indexKey": "", + "optional": false, + "description": "", + "line": 30, + "modifierKind": [ + 123 + ] + }, + { + "name": "flattenedProjectAsNodeIds", + "defaultValue": "null", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 33 + }, + { + "name": "groupNodes", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 34 + }, + { + "name": "idToNode", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 35 + }, + { + "name": "idToOrder", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 36 + }, + { + "name": "inactiveGroupNodes", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 37 + }, + { + "name": "inactiveStepNodes", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 38 + }, + { + "name": "metadata", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 39 + }, + { + "name": "nodeCount", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 41 + }, + { + "name": "nodeIdsInAnyBranch", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 44 + }, + { + "name": "nodeIdToBranchPathLetter", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 45 + }, + { + "name": "nodeIdToIsInBranchPath", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 43 + }, + { + "name": "nodeIdToNumber", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 42 + }, + { + "name": "nodes", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 40 + }, + { + "name": "originalProject", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 46, + "modifierKind": [ + 123 + ] + }, + { + "name": "project", + "defaultValue": "null", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 47 + }, + { + "name": "projectParsed$", + "defaultValue": "this.projectParsedSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "Observable", + "indexKey": "", + "optional": false, + "description": "", + "line": 51, + "modifierKind": [ + 125 + ] + }, + { + "name": "projectParsedSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 50, + "modifierKind": [ + 123 + ] + }, + { + "name": "rootNode", + "defaultValue": "null", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 48 + }, + { + "name": "transitions", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "Transition[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 49 + } + ], + "methods": [ + { + "name": "addApplicationNode", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 143, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addGroupNode", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 150, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addNode", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 126, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addNodeToGroupNode", + "args": [ + { + "name": "groupId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 157, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "groupId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "broadcastProjectParsed", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1812, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "calculateBranchPathNodeNumbers", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentActivityNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentStepNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "branchPath", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "branchPathNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "maxCurrentStepNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 1429, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentActivityNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentStepNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "branchPath", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "branchPathNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "maxCurrentStepNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "calculateComponentIdToHasWork", + "args": [ + { + "name": "components", + "type": "ComponentContent[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "literal type", + "typeParameters": [], + "line": 1257, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "components", + "type": "ComponentContent[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "calculateNodeNumberForBranchStartPoint", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentActivityNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentStepNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 1403, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentActivityNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentStepNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "calculateNodeNumberForLesson", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentActivityNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentStepNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "branchLetterCode", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 1557, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentActivityNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentStepNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "branchLetterCode", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "calculateNodeNumberForRegularStep", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentActivityNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentStepNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "branchLetterCode", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 1461, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentActivityNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentStepNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "branchLetterCode", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "calculateNodeNumberForRegularStepThatDoesNotHaveTransitions", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentActivityNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentStepNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "branchLetterCode", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 1520, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentActivityNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentStepNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "branchLetterCode", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "calculateNodeNumberForRegularStepThatHasTransitions", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentActivityNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentStepNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "branchLetterCode", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 1497, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentActivityNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentStepNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "branchLetterCode", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "calculateNodeNumberForStep", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentActivityNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentStepNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "branchLetterCode", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 1346, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentActivityNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentStepNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "branchLetterCode", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "calculateNodeNumbers", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1306, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCalculate the node numbers and set them into the nodeIdToNumber map\nIf the step is called \"1.5 View the Potential Energy\", then the node number is 1.5\n\nIf this is a branching step that is called \"1.5 B View the Potential Energy\", then the\nnode number is 1.5 B\n", + "description": "

Calculate the node numbers and set them into the nodeIdToNumber map\nIf the step is called "1.5 View the Potential Energy", then the node number is 1.5

\n

If this is a branching step that is called "1.5 B View the Potential Energy", then the\nnode number is 1.5 B

\n" + }, + { + "name": "calculateNodeNumbersHelper", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentActivityNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentStepNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "branchLetterCode", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 1322, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nRecursively calculate the node numbers by traversing the project tree using transitions\n", + "description": "

Recursively calculate the node numbers by traversing the project tree using transitions

\n", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": { + "pos": 41535, + "end": 41541, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 41529, + "end": 41534, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the current node id we are on

\n" + }, + { + "name": { + "pos": 41584, + "end": 41605, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "currentActivityNumber" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 41578, + "end": 41583, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the current activity number

\n" + }, + { + "name": { + "pos": 41646, + "end": 41663, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "currentStepNumber" + }, + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 41640, + "end": 41645, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the current step number

\n" + }, + { + "name": { + "pos": 41700, + "end": 41716, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "branchLetterCode" + }, + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "pos": 41694, + "end": 41699, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

(optional) the character code for the branch letter e.g. 0=A, 1=B, etc.

\n" + } + ] + }, + { + "name": "calculateNodeOrder", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 265, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "calculateNodeOrderOfProject", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 261, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "clearProjectFields", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 70, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentHasWork", + "args": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 1252, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if a component generates work\n", + "description": "

Check if a component generates work

\n", + "jsdoctags": [ + { + "name": { + "pos": 39045, + "end": 39054, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "component" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 39039, + "end": 39044, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

check if this component generates work

\n" + }, + { + "tagName": { + "pos": 39100, + "end": 39106, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether the component generates work

\n" + } + ] + }, + { + "name": "getAchievementByAchievementId", + "args": [ + { + "name": "achievementId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 1669, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet an achievement by the 10 character alphanumeric achievement id\n", + "description": "

Get an achievement by the 10 character alphanumeric achievement id

\n", + "jsdoctags": [ + { + "name": { + "pos": 52947, + "end": 52960, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "achievementId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 52941, + "end": 52946, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the 10 character alphanumeric achievement id

\n" + }, + { + "tagName": { + "pos": 53012, + "end": 53018, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

the achievement with the given achievement id

\n" + } + ] + }, + { + "name": "getAchievementItems", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 1656, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the achievement items in the project\n", + "description": "

Get the achievement items in the project

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 52629, + "end": 52635, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

the achievement items

\n" + } + ] + }, + { + "name": "getAchievements", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 1642, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet all the projectAchievements object in the project. The projectAchievements object\ncontains the isEnabled field and an array of items.\n", + "description": "

Get all the projectAchievements object in the project. The projectAchievements object\ncontains the isEnabled field and an array of items.

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 52325, + "end": 52331, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

the achievement object

\n" + } + ] + }, + { + "name": "getActiveGroupNodes", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 247, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "getAdditionalProcessingFunctions", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 1722, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nReturns an array of registered additionalProcessingFunctions for the specified node and\ncomponent\n", + "description": "

Returns an array of registered additionalProcessingFunctions for the specified node and\ncomponent

\n", + "jsdoctags": [ + { + "name": { + "pos": 54421, + "end": 54427, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 54415, + "end": 54420, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id

\n" + }, + { + "name": { + "pos": 54452, + "end": 54463, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 54446, + "end": 54451, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component id

\n" + }, + { + "tagName": { + "pos": 54487, + "end": 54494, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

an array of additionalProcessingFunctions

\n" + } + ] + }, + { + "name": "getAllPaths", + "args": [ + { + "name": "pathSoFar", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "''" + }, + { + "name": "includeGroups", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "[][]", + "typeParameters": [], + "line": 854, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet all the possible paths through the project. This function\nrecursively calls itself to traverse the project depth first.\nin this array are referenced to make sure we don't loop back\non the path.\n", + "description": "

Get all the possible paths through the project. This function\nrecursively calls itself to traverse the project depth first.\nin this array are referenced to make sure we don't loop back\non the path.

\n", + "jsdoctags": [ + { + "name": { + "pos": 25709, + "end": 25718, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "pathSoFar" + }, + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 25703, + "end": 25708, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node ids in the path so far. the node ids\nin this array are referenced to make sure we don't loop back\non the path.

\n" + }, + { + "name": { + "pos": 25861, + "end": 25867, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "''", + "tagName": { + "pos": 25855, + "end": 25860, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id we want to get the paths from

\n" + }, + { + "name": { + "pos": 25922, + "end": 25935, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "includeGroups" + }, + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "pos": 25916, + "end": 25921, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

whether to include the group node ids in the paths

\n" + }, + { + "tagName": { + "pos": 25993, + "end": 25999, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

an array of paths. each path is an array of node ids.

\n" + } + ] + }, + { + "name": "getBranches", + "args": [], + "optional": false, + "returnType": "Branch[]", + "typeParameters": [], + "line": 275, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "getBranchesByBranchStartPointNodeId", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Branch[]", + "typeParameters": [], + "line": 1295, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet all the branches whose branch start point is the given node id\n", + "description": "

Get all the branches whose branch start point is the given node id

\n", + "jsdoctags": [ + { + "name": { + "pos": 40551, + "end": 40557, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 40545, + "end": 40550, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the branch start point

\n" + }, + { + "tagName": { + "pos": 40587, + "end": 40593, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

an array of branches that have the given branch start point

\n" + } + ] + }, + { + "name": "getChildNodeIdsById", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string[]", + "typeParameters": [], + "line": 108, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getChoices", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 1156, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the choices of a Multiple Choice component.\n", + "description": "

Get the choices of a Multiple Choice component.

\n", + "jsdoctags": [ + { + "name": { + "pos": 36161, + "end": 36167, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 36155, + "end": 36160, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The node id.

\n" + }, + { + "name": { + "pos": 36193, + "end": 36204, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 36187, + "end": 36192, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The component id.

\n" + }, + { + "tagName": { + "pos": 36229, + "end": 36235, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

The choices from the component.

\n" + } + ] + }, + { + "name": "getChoiceText", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "choiceIds", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string[]", + "typeParameters": [], + "line": 1168, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the choice text for the given choice ids of a multiple choice component.\n", + "description": "

Get the choice text for the given choice ids of a multiple choice component.

\n", + "jsdoctags": [ + { + "name": { + "pos": 36555, + "end": 36561, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 36549, + "end": 36554, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The node id of the component.

\n" + }, + { + "name": { + "pos": 36604, + "end": 36615, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 36598, + "end": 36603, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The component id of the component.

\n" + }, + { + "name": { + "pos": 36663, + "end": 36672, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "choiceIds" + }, + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 36657, + "end": 36662, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

An array of choice ids.

\n" + }, + { + "tagName": { + "pos": 36703, + "end": 36709, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

An array of choice text strings.

\n" + } + ] + }, + { + "name": "getComponent", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "ComponentContent", + "typeParameters": [], + "line": 1089, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the component by node id and component id\n", + "description": "

Get the component by node id and component id

\n", + "jsdoctags": [ + { + "name": { + "pos": 34078, + "end": 34084, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 34072, + "end": 34077, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id

\n" + }, + { + "name": { + "pos": 34109, + "end": 34120, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 34103, + "end": 34108, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component id

\n" + }, + { + "tagName": { + "pos": 34144, + "end": 34151, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

the component or null if the nodeId or componentId are null or does not exist

\n" + } + ] + }, + { + "name": "getComponents", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "ComponentContent[]", + "typeParameters": [], + "line": 1106, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the components in a node\ndoesn't exist in the project.\nif the node exists but doesn't have any components, returns an empty array.\n", + "description": "

Get the components in a node\ndoesn't exist in the project.\nif the node exists but doesn't have any components, returns an empty array.

\n", + "jsdoctags": [ + { + "name": { + "pos": 34557, + "end": 34563, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 34551, + "end": 34556, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id

\n" + }, + { + "tagName": { + "pos": 34582, + "end": 34589, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

an array of components or empty array if nodeId is null or\ndoesn't exist in the project.\nif the node exists but doesn't have any components, returns an empty array.

\n" + } + ] + }, + { + "name": "getComponentType", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 1267, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getConnectedComponentParams", + "args": [ + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 1752, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getCriteriaArrayFromTransition", + "args": [ + { + "name": "transition", + "type": "Transition", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 1787, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "transition", + "type": "Transition", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getCurrentActivityNumber", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentActivityNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentStepNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "branchLetterCode", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 1375, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentActivityNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentStepNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "branchLetterCode", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getDefaultThemePath", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 798, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "getDescendentIdsOfGroup", + "args": [ + { + "name": "group", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string[]", + "typeParameters": [], + "line": 631, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "group", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getFlattenedProjectAsNodeIds", + "args": [ + { + "name": "recalculate", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "true" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 824, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nFlatten the project to obtain a list of node ids\n", + "description": "

Flatten the project to obtain a list of node ids

\n", + "jsdoctags": [ + { + "name": { + "pos": 24721, + "end": 24732, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "recalculate" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "true", + "tagName": { + "pos": 24715, + "end": 24720, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

Whether to force recalculating the flattened node ids.

\n" + }, + { + "tagName": { + "pos": 24794, + "end": 24800, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

An array of the flattened node ids in the project.

\n" + } + ] + }, + { + "name": "getGroupNodes", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 116, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getGroupNodesIdToOrder", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 368, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getGroups", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 181, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getGroupStartId", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 1183, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the start id of a group\n", + "description": "

Get the start id of a group

\n", + "jsdoctags": [ + { + "name": { + "pos": 37109, + "end": 37115, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 37103, + "end": 37108, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

get the start id of this group

\n" + }, + { + "tagName": { + "pos": 37153, + "end": 37160, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

the start id of the group

\n" + } + ] + }, + { + "name": "getInactiveGroupNodes", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 185, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getInactiveNodes", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 742, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getInactiveStepNodes", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 194, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the inactive step nodes. This will include the inactive steps that\nare in an inactive group.\n", + "description": "

Get the inactive step nodes. This will include the inactive steps that\nare in an inactive group.

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 5688, + "end": 5694, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

An array of inactive step nodes.

\n" + } + ] + }, + { + "name": "getLessonPaths", + "args": [ + { + "name": "pathSoFar", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "groupId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "includeGroups", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "allPaths", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1029, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "pathSoFar", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "groupId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "includeGroups", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "allPaths", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getLocale", + "args": [], + "optional": false, + "returnType": "ProjectLocale", + "typeParameters": [], + "line": 1863, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getMaxScoreForComponent", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 1142, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getMaxScoreForNode", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 1122, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the max score for the node\nif null, author/teacher has not set a max score for the node\n", + "description": "

Get the max score for the node\nif null, author/teacher has not set a max score for the node

\n", + "jsdoctags": [ + { + "name": { + "pos": 35049, + "end": 35055, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 35043, + "end": 35048, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id which can be a step or an activity

\n" + }, + { + "tagName": { + "pos": 35109, + "end": 35116, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

the max score for the node which can be null or a number\nif null, author/teacher has not set a max score for the node

\n" + } + ] + }, + { + "name": "getNextNodeId", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 1625, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the next node after the specified node\n", + "description": "

Get the next node after the specified node

\n", + "jsdoctags": [ + { + "name": { + "pos": 51688, + "end": 51694, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 51682, + "end": 51687, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

get the node id that comes after this one

\n" + }, + { + "tagName": { + "pos": 51743, + "end": 51749, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

the node id that comes after

\n" + } + ] + }, + { + "name": "getNode", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Node", + "typeParameters": [], + "line": 527, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getNodeById", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "project", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 506, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nReturns the node specified by the nodeId\nthe case when we want the node from another project such as when we are\nimporting a step from another project\nReturn null if nodeId param is null or the specified node does not exist in the project.\n", + "description": "

Returns the node specified by the nodeId\nthe case when we want the node from another project such as when we are\nimporting a step from another project\nReturn null if nodeId param is null or the specified node does not exist in the project.

\n", + "jsdoctags": [ + { + "name": { + "pos": 15436, + "end": 15442, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 15430, + "end": 15435, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

get the node with this node id

\n" + }, + { + "name": "project", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getNodeDepth", + "args": [ + { + "name": "nodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "val", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 592, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "val", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getNodeIdByOrder", + "args": [ + { + "name": "order", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 386, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "order", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getNodeOrderById", + "args": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 395, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getNodeOrderOfProject", + "args": [ + { + "name": "project", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 286, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the node order mappings of the project\nof nodes\n", + "description": "

Get the node order mappings of the project\nof nodes

\n", + "jsdoctags": [ + { + "name": { + "pos": 8360, + "end": 8367, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "project" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 8354, + "end": 8359, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the project JSOn

\n" + }, + { + "tagName": { + "pos": 8391, + "end": 8397, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

an object containing the idToOrder mapping and also the array\nof nodes

\n" + } + ] + }, + { + "name": "getNodeOrderOfProjectHelper", + "args": [ + { + "name": "project", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "idToOrder", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "stepNumber", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodes", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 315, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nRecursively traverse the project to calculate the node order and step numbers\n", + "description": "

Recursively traverse the project to calculate the node order and step numbers

\n", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": { + "pos": 9079, + "end": 9086, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "project" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 9073, + "end": 9078, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the project JSON

\n" + }, + { + "name": { + "pos": 9116, + "end": 9120, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "node" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 9110, + "end": 9115, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the current node we are on

\n" + }, + { + "name": { + "pos": 9160, + "end": 9169, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "idToOrder" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 9154, + "end": 9159, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the mapping of node id to item

\n" + }, + { + "name": { + "pos": 9213, + "end": 9223, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "stepNumber" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 9207, + "end": 9212, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the current step number

\n" + }, + { + "name": { + "pos": 9260, + "end": 9265, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodes" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 9254, + "end": 9259, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the array of nodes

\n" + } + ] + }, + { + "name": "getNodePositionAndTitle", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 554, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the node position and title\n", + "description": "

Get the node position and title

\n", + "jsdoctags": [ + { + "name": { + "pos": 16908, + "end": 16914, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 16902, + "end": 16907, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id

\n" + }, + { + "tagName": { + "pos": 16933, + "end": 16940, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

the node position and title, e.g. "1.1 Introduction"

\n" + } + ] + }, + { + "name": "getNodePositionById", + "args": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 379, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getNodes", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 104, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getNodesByToNodeId", + "args": [ + { + "name": "toNodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 736, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet nodes that have a transition to the given node id\n", + "description": "

Get nodes that have a transition to the given node id

\n", + "jsdoctags": [ + { + "name": { + "pos": 22028, + "end": 22036, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "toNodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 22022, + "end": 22027, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id

\n" + }, + { + "tagName": { + "pos": 22055, + "end": 22062, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

an array of node objects that transition to the given node id

\n" + } + ] + }, + { + "name": "getNodeTitle", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 541, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nReturns the title of the node with the nodeId\nReturn null if nodeId param is null or the specified node does not exist in the project.\n", + "description": "

Returns the title of the node with the nodeId\nReturn null if nodeId param is null or the specified node does not exist in the project.

\n", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getNotificationByScore", + "args": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "previousScore", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentScore", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 1746, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "previousScore", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentScore", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getOrCalculateAllPaths", + "args": [], + "optional": false, + "returnType": "[][]", + "typeParameters": [], + "line": 696, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "getOrderById", + "args": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 361, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nReturns the order of the given node id in the project. Returns null if no node with id exists.\n", + "description": "

Returns the order of the given node id in the project. Returns null if no node with id exists.

\n", + "jsdoctags": [ + { + "name": { + "pos": 10508, + "end": 10510, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "id" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 10502, + "end": 10507, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

String node id

\n" + }, + { + "tagName": { + "pos": 10532, + "end": 10538, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

Number order of the given node id in the project

\n" + } + ] + }, + { + "name": "getOrderedGroupNodes", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 120, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getOriginalProject", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 790, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getParentGroup", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "''" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 567, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "''", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getParentGroupId", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "''" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 584, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "''", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getPeerGrouping", + "args": [ + { + "name": "tag", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "PeerGrouping", + "typeParameters": [], + "line": 1823, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "tag", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getPeerGroupings", + "args": [], + "optional": false, + "returnType": "PeerGrouping[]", + "typeParameters": [], + "line": 1816, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getPreviousNodeId", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 1879, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getProject", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 61, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getProjectMetadata", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 100, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getProjectRootNode", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 1827, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getProjectScript", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 1616, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getProjectTitle", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 95, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getReferenceComponent", + "args": [ + { + "name": "content", + "type": "QuestionBank | DynamicPrompt", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Component", + "typeParameters": [], + "line": 1857, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "content", + "type": "QuestionBank | DynamicPrompt", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getReferenceComponentForField", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "fieldName", + "type": "\"dynamicPrompt\" | \"questionBank\"", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "ReferenceComponent", + "typeParameters": [], + "line": 1848, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the reference component from a field in the component content\nIn this example the fieldName would be 'dynamicPrompt'\n{\n id: 'component2',\n dynamicPrompt: {\n referenceComponent: {\n nodeId: 'node1',\n componentId: 'component1'\n }\n }\n}\n", + "description": "

Get the reference component from a field in the component content\nIn this example the fieldName would be 'dynamicPrompt'\n{\n id: 'component2',\n dynamicPrompt: {\n referenceComponent: {\n nodeId: 'node1',\n componentId: 'component1'\n }\n }\n}

\n", + "jsdoctags": [ + { + "name": { + "pos": 57501, + "end": 57507, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 57495, + "end": 57500, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id

\n" + }, + { + "name": { + "pos": 57532, + "end": 57543, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 57526, + "end": 57531, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component id

\n" + }, + { + "name": { + "pos": 57573, + "end": 57582, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "fieldName" + }, + "type": "\"dynamicPrompt\" | \"questionBank\"", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 57567, + "end": 57572, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the name of the object that contains a referenceComponent object\nIn this example the fieldName would be 'dynamicPrompt'\n{\nid: 'component2',\ndynamicPrompt: {\nreferenceComponent: {\nnodeId: 'node1',\ncomponentId: 'component1'\n}\n}\n}

\n" + }, + { + "tagName": { + "pos": 57893, + "end": 57900, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

the referenceComponent object from a component

\n" + } + ] + }, + { + "name": "getRootNode", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 604, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getSpaces", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 1686, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getSpeechToTextSettings", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 1875, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getStartGroupId", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 657, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getStartNodeId", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 649, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getStepNodeIds", + "args": [], + "optional": false, + "returnType": "string[]", + "typeParameters": [], + "line": 1077, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getStepPaths", + "args": [ + { + "name": "pathSoFar", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "includeGroups", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "allPaths", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 864, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "pathSoFar", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "includeGroups", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "allPaths", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getStyle", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 91, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getTagFromParams", + "args": [ + { + "name": "params", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 1804, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "params", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getTagFromSingleCriteria", + "args": [ + { + "name": "singleCriteria", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 1795, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "singleCriteria", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getTags", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 1754, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getTagsFromNode", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 1763, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getThemePath", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 794, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getThemeSettings", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 805, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nReturns the theme settings for the current project\n", + "description": "

Returns the theme settings for the current project

\n" + }, + { + "name": "getTransitionsByFromNodeId", + "args": [ + { + "name": "fromNodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Transition[]", + "typeParameters": [], + "line": 727, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the transitions for a node\n", + "description": "

Get the transitions for a node

\n", + "jsdoctags": [ + { + "name": { + "pos": 21709, + "end": 21719, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "fromNodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 21703, + "end": 21708, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node to get transitions from

\n" + }, + { + "tagName": { + "pos": 21759, + "end": 21766, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

an array of transitions

\n", + "returnType": "unknown" + } + ] + }, + { + "name": "getTransitionsFromNode", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Transition[]", + "typeParameters": [], + "line": 1778, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "hasAdditionalProcessingFunctions", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 1711, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nReturns true iff the specified node and component has any registered\nadditionalProcessingFunctions\n", + "description": "

Returns true iff the specified node and component has any registered\nadditionalProcessingFunctions

\n", + "jsdoctags": [ + { + "name": { + "pos": 54037, + "end": 54043, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 54031, + "end": 54036, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id

\n" + }, + { + "name": { + "pos": 54068, + "end": 54079, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 54062, + "end": 54067, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component id

\n" + }, + { + "tagName": { + "pos": 54103, + "end": 54110, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

true/false

\n" + } + ] + }, + { + "name": "injectAssetPaths", + "args": [ + { + "name": "content", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 413, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nReplace relative asset paths with absolute paths\ne.g.\nassets/myimage.jpg\nwill be replaced with\nhttp://wise.berkeley.edu/curriculum/123456/assets/myimage.jpg\nbut with relative asset paths replaced with absolute paths\n", + "description": "

Replace relative asset paths with absolute paths\ne.g.\nassets/myimage.jpg\nwill be replaced with\nhttp://wise.berkeley.edu/curriculum/123456/assets/myimage.jpg\nbut with relative asset paths replaced with absolute paths

\n", + "jsdoctags": [ + { + "name": { + "pos": 11750, + "end": 11757, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "content" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 11744, + "end": 11749, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

a string or JSON object

\n" + }, + { + "tagName": { + "pos": 11788, + "end": 11794, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

the same type of object that was passed in as the content\nbut with relative asset paths replaced with absolute paths

\n" + } + ] + }, + { + "name": "instantiateDefaults", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 252, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isActive", + "args": [ + { + "name": "target", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 1212, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if the target is active\n", + "description": "

Check if the target is active

\n", + "jsdoctags": [ + { + "name": { + "pos": 37925, + "end": 37931, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "target" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 37919, + "end": 37924, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id or inactiveNodes/inactiveGroups to check

\n" + }, + { + "tagName": { + "pos": 37991, + "end": 37998, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

whether the target is active

\n" + } + ] + }, + { + "name": "isApplicationNode", + "args": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 176, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isBranchMergePoint", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 1286, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if a node is a branch end point\n", + "description": "

Check if a node is a branch end point

\n", + "jsdoctags": [ + { + "name": { + "pos": 40227, + "end": 40233, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 40221, + "end": 40226, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

look for a branch with this end node id

\n" + }, + { + "tagName": { + "pos": 40280, + "end": 40286, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether the node is a branch end point

\n" + } + ] + }, + { + "name": "isBranchStartPoint", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 1277, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if a node is a branch start point\n", + "description": "

Check if a node is a branch start point

\n", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": { + "pos": 39918, + "end": 39924, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 39912, + "end": 39917, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

look for a branch with this start node id

\n" + }, + { + "tagName": { + "pos": 39973, + "end": 39979, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether the node is a branch start point

\n" + } + ] + }, + { + "name": "isConnectedComponent", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "connectedComponentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 1748, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "connectedComponentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isDefaultLocale", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 1871, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isFirstStepInLesson", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 1895, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isGroupNode", + "args": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 171, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isNodeActive", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 1220, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if a node is active.\n", + "description": "

Check if a node is active.

\n", + "jsdoctags": [ + { + "name": { + "pos": 38226, + "end": 38232, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 38220, + "end": 38225, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the id of the node

\n" + } + ] + }, + { + "name": "isNodeAfterGroup", + "args": [ + { + "name": "groupId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 708, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\n", + "description": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": { + "pos": 21097, + "end": 21104, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "groupId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 21091, + "end": 21096, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "" + }, + { + "name": { + "pos": 21117, + "end": 21123, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 21111, + "end": 21116, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The node id of a step or group.

\n" + }, + { + "tagName": { + "pos": 21162, + "end": 21169, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

True iff nodeId comes after groupId.

\n", + "returnType": "boolean" + } + ] + }, + { + "name": "isNodeDescendentOfGroup", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "group", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 620, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "group", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isNodeDirectChildOfGroup", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "group", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 609, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "group", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isNodeIdAfter", + "args": [ + { + "name": "nodeId1", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId2", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 671, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if a node id comes after another node id in the project.\n", + "description": "

Check if a node id comes after another node id in the project.

\n", + "jsdoctags": [ + { + "name": { + "pos": 20006, + "end": 20013, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId1" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 20000, + "end": 20005, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The node id of a step or group.

\n" + }, + { + "name": { + "pos": 20058, + "end": 20065, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId2" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 20052, + "end": 20057, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The node id of a step or group.

\n" + }, + { + "tagName": { + "pos": 20104, + "end": 20111, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

True iff nodeId2 comes after nodeId1.

\n", + "returnType": "boolean" + } + ] + }, + { + "name": "isSpaceExists", + "args": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 1694, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isStartNodeId", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 661, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "loadInactiveNodes", + "args": [ + { + "name": "nodes", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1191, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nLoad the inactive nodes\n", + "description": "

Load the inactive nodes

\n", + "jsdoctags": [ + { + "name": { + "pos": 37334, + "end": 37339, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodes" + }, + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 37328, + "end": 37333, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the inactive nodes

\n" + } + ] + }, + { + "name": "loadNodeIdsInAnyBranch", + "args": [ + { + "name": "branches", + "type": "Branch[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 219, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "branches", + "type": "Branch[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "loadNodes", + "args": [ + { + "name": "nodes", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 198, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodes", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "makeProjectRequest", + "args": [], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 784, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "nodeHasTransitionToNodeId", + "args": [ + { + "name": "node", + "type": "Node", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "toNodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 752, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if a node has a transition to the given nodeId.\n", + "description": "

Check if a node has a transition to the given nodeId.

\n", + "jsdoctags": [ + { + "name": { + "pos": 22475, + "end": 22479, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "node" + }, + "type": "Node", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 22469, + "end": 22474, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The node to check.

\n" + }, + { + "name": { + "pos": 22511, + "end": 22519, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "toNodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 22505, + "end": 22510, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

We are looking for a transition to this node id.

\n" + }, + { + "tagName": { + "pos": 22575, + "end": 22582, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

Whether the node has a transition to the given nodeId.

\n" + } + ] + }, + { + "name": "nodeHasWork", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 1234, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if a node generates work by looking at all of its components\n", + "description": "

Check if a node generates work by looking at all of its components

\n", + "jsdoctags": [ + { + "name": { + "pos": 38536, + "end": 38542, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 38530, + "end": 38535, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id

\n" + }, + { + "tagName": { + "pos": 38561, + "end": 38567, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether the node generates work

\n" + } + ] + }, + { + "name": "parseProject", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 227, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "pathIncludesNodesAndOneComesBeforeTwo", + "args": [ + { + "name": "path", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId1", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId2", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 688, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "path", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId1", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId2", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "replaceAssetPaths", + "args": [ + { + "name": "contentString", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 436, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nReplace the relative asset paths with absolute paths\nwith absolute asset paths\n", + "description": "

Replace the relative asset paths with absolute paths\nwith absolute asset paths

\n", + "jsdoctags": [ + { + "name": { + "pos": 12595, + "end": 12608, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "contentString" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 12589, + "end": 12594, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the content string

\n" + }, + { + "tagName": { + "pos": 12634, + "end": 12640, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

the content string with relative asset paths replaced\nwith absolute asset paths

\n" + } + ] + }, + { + "name": "replaceNode", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1726, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "retrieveProject", + "args": [], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 762, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nRetrieves the project JSON from Config.projectURL and returns it.\nIf Config.projectURL is undefined, returns null.\n", + "description": "

Retrieves the project JSON from Config.projectURL and returns it.\nIf Config.projectURL is undefined, returns null.

\n" + }, + { + "name": "retrieveProjectWithoutParsing", + "args": [], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 773, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "retrieveScript", + "args": [ + { + "name": "scriptFilename", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 1742, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "scriptFilename", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setCurrentLanguage", + "args": [ + { + "name": "language", + "type": "Language", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1867, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "language", + "type": "Language", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setIdToNode", + "args": [ + { + "name": "id", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "element", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 399, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "id", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "element", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setLessonNodeNumber", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentActivityNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentStepNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 1598, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentActivityNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentStepNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setProject", + "args": [ + { + "name": "project", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 65, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "project", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setStartNodeId", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 653, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setStepNodeNumber", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentActivityNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentStepNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "branchLetterCode", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1540, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentActivityNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentStepNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "branchLetterCode", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "shouldIncludeInTotalScore", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 1202, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "'use strict';\n\nimport { ConfigService } from './configService';\nimport { Injectable, WritableSignal, signal } from '@angular/core';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Observable, Subject, tap } from 'rxjs';\nimport { Node } from '../common/Node';\nimport { PeerGrouping } from '../../../app/domain/peerGrouping';\nimport { ComponentServiceLookupService } from './componentServiceLookupService';\nimport { Branch } from '../../../app/domain/branch';\nimport { BranchService } from './branchService';\nimport { PathService } from './pathService';\nimport { ComponentContent } from '../common/ComponentContent';\nimport { MultipleChoiceContent } from '../components/multipleChoice/MultipleChoiceContent';\nimport { TransitionLogic } from '../common/TransitionLogic';\nimport { Transition } from '../common/Transition';\nimport { ReferenceComponent } from '../../../app/domain/referenceComponent';\nimport { QuestionBank } from '../components/peerChat/peer-chat-question-bank/QuestionBank';\nimport { DynamicPrompt } from '../directives/dynamic-prompt/DynamicPrompt';\nimport { Component } from '../common/Component';\nimport { ProjectLocale } from '../../../app/domain/projectLocale';\nimport { Language } from '../../../app/domain/language';\n\n@Injectable()\nexport class ProjectService {\n achievements: any = [];\n additionalProcessingFunctionsMap: any = {};\n allPaths: string[][] = [];\n applicationNodes: any = [];\n private currentLanguageSignal: WritableSignal = signal(null);\n readonly currentLanguage = this.currentLanguageSignal.asReadonly();\n\n flattenedProjectAsNodeIds: any = null;\n groupNodes: any[] = [];\n idToNode: any = {};\n idToOrder: any = {};\n inactiveGroupNodes: any[] = [];\n inactiveStepNodes: any[] = [];\n metadata: any = {};\n nodes: any = {};\n nodeCount: number = 0;\n nodeIdToNumber: any = {};\n nodeIdToIsInBranchPath: any = {};\n nodeIdsInAnyBranch: any = [];\n nodeIdToBranchPathLetter: any = {};\n private originalProject: any;\n project: any = null;\n rootNode: any = null;\n transitions: Transition[] = [];\n private projectParsedSource: Subject = new Subject();\n public projectParsed$: Observable = this.projectParsedSource.asObservable();\n\n constructor(\n protected branchService: BranchService,\n protected componentServiceLookupService: ComponentServiceLookupService,\n protected http: HttpClient,\n protected configService: ConfigService,\n protected pathService: PathService\n ) {}\n\n getProject(): any {\n return this.project;\n }\n\n setProject(project: any): void {\n this.project = project;\n this.parseProject();\n }\n\n clearProjectFields(): void {\n this.allPaths = [];\n this.applicationNodes = [];\n this.flattenedProjectAsNodeIds = null;\n this.inactiveStepNodes = [];\n this.inactiveGroupNodes = [];\n this.groupNodes = [];\n Object.keys(this.idToNode).forEach((key) => {\n delete this.idToNode[key];\n });\n this.metadata = {};\n this.rootNode = null;\n this.idToOrder = {};\n this.nodeCount = 0;\n this.nodeIdToIsInBranchPath = {};\n this.nodeIdsInAnyBranch = [];\n this.nodes = {};\n this.achievements = [];\n this.branchService.clearBranchesCache();\n }\n\n getStyle(): any {\n return this.project.style;\n }\n\n getProjectTitle(): string {\n const name = this.getProjectMetadata().title;\n return name ? name : 'A WISE Project (No name)';\n }\n\n getProjectMetadata(): any {\n return this.metadata ? this.metadata : {};\n }\n\n getNodes(): any {\n return this.project.nodes;\n }\n\n getChildNodeIdsById(nodeId: string): string[] {\n const node = this.getNodeById(nodeId);\n if (node.ids) {\n return node.ids;\n }\n return [];\n }\n\n getGroupNodes(): any[] {\n return this.groupNodes;\n }\n\n getOrderedGroupNodes(): any[] {\n return this.groupNodes\n .filter((groupNode) => groupNode.id !== 'group0')\n .sort((a, b) => this.idToOrder[a.id].order - this.idToOrder[b.id].order);\n }\n\n addNode(node: any): void {\n const existingNodes = this.project.nodes;\n let replaced = false;\n if (existingNodes != null) {\n for (let n = 0; n < existingNodes.length; n++) {\n const existingNode = existingNodes[n];\n if (existingNode.id === node.id) {\n existingNodes.splice(n, 1, node);\n replaced = true;\n }\n }\n }\n if (!replaced) {\n existingNodes.push(node);\n }\n }\n\n addApplicationNode(node: any): void {\n const applicationNodes = this.applicationNodes;\n if (applicationNodes != null) {\n applicationNodes.push(node);\n }\n }\n\n private addGroupNode(node: any): void {\n const groupNodes = this.groupNodes;\n if (node != null && groupNodes != null) {\n groupNodes.push(node);\n }\n }\n\n private addNodeToGroupNode(groupId: string, nodeId: string): void {\n if (groupId != null && nodeId != null) {\n const group = this.getNodeById(groupId);\n if (group != null) {\n const groupChildNodeIds = group.ids;\n if (groupChildNodeIds != null) {\n if (groupChildNodeIds.indexOf(nodeId) === -1) {\n groupChildNodeIds.push(nodeId);\n }\n }\n }\n }\n }\n\n isGroupNode(id: string): boolean {\n const node = this.getNodeById(id);\n return node != null && node.type == 'group';\n }\n\n isApplicationNode(id: string): boolean {\n const node = this.getNodeById(id);\n return node != null && node.type !== 'group';\n }\n\n getGroups(): any[] {\n return this.groupNodes;\n }\n\n getInactiveGroupNodes(): any[] {\n return this.inactiveGroupNodes;\n }\n\n /**\n * Get the inactive step nodes. This will include the inactive steps that\n * are in an inactive group.\n * @return An array of inactive step nodes.\n */\n getInactiveStepNodes(): any[] {\n return this.inactiveStepNodes;\n }\n\n loadNodes(nodes: any[]): void {\n for (const node of nodes) {\n const nodeId = node.id;\n const nodeType = node.type;\n\n this.setIdToNode(nodeId, node);\n this.addNode(node);\n\n if (nodeType === 'group') {\n this.addGroupNode(node);\n } else {\n this.addApplicationNode(node);\n }\n\n const groupId = node.groupId;\n if (groupId != null) {\n this.addNodeToGroupNode(groupId, nodeId);\n }\n }\n }\n\n private loadNodeIdsInAnyBranch(branches: Branch[]): void {\n for (const branch of branches) {\n for (const branchPath of branch.paths) {\n this.nodeIdsInAnyBranch = this.nodeIdsInAnyBranch.concat(branchPath);\n }\n }\n }\n\n parseProject(): void {\n this.clearProjectFields();\n this.instantiateDefaults();\n this.metadata = this.project.metadata;\n this.loadNodes(this.project.nodes);\n this.loadInactiveNodes(this.project.inactiveNodes);\n this.rootNode = this.getRootNode(this.project.nodes[0].id);\n this.calculateNodeOrderOfProject();\n this.loadNodeIdsInAnyBranch(this.getBranches());\n this.calculateNodeNumbers();\n this.groupNodes = this.getActiveGroupNodes();\n if (this.project.projectAchievements != null) {\n this.achievements = this.project.projectAchievements;\n }\n if (this.currentLanguage() == null) {\n this.currentLanguageSignal.set(this.getLocale().getDefaultLanguage());\n }\n this.broadcastProjectParsed();\n }\n\n private getActiveGroupNodes(): any[] {\n const activeNodeIds = Object.keys(this.idToOrder);\n return this.groupNodes.filter((node) => activeNodeIds.includes(node.id));\n }\n\n instantiateDefaults(): void {\n this.project.nodes = this.project.nodes ? this.project.nodes : [];\n this.project.inactiveNodes = this.project.inactiveNodes ? this.project.inactiveNodes : [];\n this.project.metadata.locale = this.project.metadata.locale ?? {\n default: 'en_US',\n supported: []\n };\n }\n\n private calculateNodeOrderOfProject(): void {\n this.calculateNodeOrder(this.rootNode);\n }\n\n calculateNodeOrder(node: any): void {\n this.idToOrder[node.id] = { order: this.nodeCount };\n this.nodeCount++;\n if (this.isGroupNode(node.id)) {\n for (const childId of node.ids) {\n this.calculateNodeOrder(this.getNodeById(childId));\n }\n }\n }\n\n private getBranches(): Branch[] {\n const allPaths = this.getAllPaths([], this.getStartNodeId());\n return this.branchService.getBranches(allPaths);\n }\n\n /**\n * Get the node order mappings of the project\n * @param project the project JSOn\n * @return an object containing the idToOrder mapping and also the array\n * of nodes\n */\n getNodeOrderOfProject(project: any): any {\n const rootNode = this.getNodeById(project.startGroupId, project);\n const idToOrder = {\n nodeCount: 0\n };\n const stepNumber = '';\n const nodes = [];\n const importProjectIdToOrder = this.getNodeOrderOfProjectHelper(\n project,\n rootNode,\n idToOrder,\n stepNumber,\n nodes\n );\n delete importProjectIdToOrder.nodeCount;\n return {\n idToOrder: importProjectIdToOrder,\n nodes: nodes\n };\n }\n\n /**\n * Recursively traverse the project to calculate the node order and step numbers\n * @param project the project JSON\n * @param node the current node we are on\n * @param idToOrder the mapping of node id to item\n * @param stepNumber the current step number\n * @param nodes the array of nodes\n */\n private getNodeOrderOfProjectHelper(\n project: any,\n node: any,\n idToOrder: any,\n stepNumber: string,\n nodes: any\n ): any {\n /*\n * Create the item that we will add to the idToOrder mapping.\n * The 'order' field determines how the project nodes are displayed\n * when we flatten the project for displaying.\n */\n const item = {\n order: idToOrder.nodeCount,\n node: node,\n stepNumber: stepNumber\n };\n\n idToOrder[node.id] = item;\n idToOrder.nodeCount++;\n nodes.push(item);\n\n if (node.type == 'group') {\n const childIds = node.ids;\n for (let c = 0; c < childIds.length; c++) {\n const childId = childIds[c];\n const child = this.getNodeById(childId, project);\n let childStepNumber = stepNumber;\n\n if (childStepNumber != '') {\n // add the . separator for the step number e.g. 1.\n childStepNumber += '.';\n }\n\n childStepNumber += c + 1;\n this.getNodeOrderOfProjectHelper(project, child, idToOrder, childStepNumber, nodes);\n }\n }\n return idToOrder;\n }\n\n /**\n * Returns the order of the given node id in the project. Returns null if no node with id exists.\n * @param id String node id\n * @return Number order of the given node id in the project\n */\n getOrderById(id: string): any {\n if (this.idToOrder[id]) {\n return this.idToOrder[id].order;\n }\n return null;\n }\n\n getGroupNodesIdToOrder(): any {\n const idToOrder = {};\n const onlyGroupNodes = Object.entries(this.idToOrder).filter((item) => {\n return this.isGroupNode(item[0]);\n });\n for (const [key, value] of onlyGroupNodes) {\n idToOrder[key] = value;\n }\n return idToOrder;\n }\n\n getNodePositionById(id: string): any {\n if (id != null) {\n return this.nodeIdToNumber[id];\n }\n return null;\n }\n\n getNodeIdByOrder(order: any): string {\n for (let [nodeId, value] of Object.entries(this.idToOrder)) {\n if ((value).order === order) {\n return nodeId;\n }\n }\n return null;\n }\n\n getNodeOrderById(id: string): any {\n return this.idToOrder[id] ? this.idToOrder[id].order : null;\n }\n\n setIdToNode(id: any, element: any): void {\n this.idToNode[id] = element;\n }\n\n /**\n * Replace relative asset paths with absolute paths\n * e.g.\n * assets/myimage.jpg\n * will be replaced with\n * http://wise.berkeley.edu/curriculum/123456/assets/myimage.jpg\n * @param content a string or JSON object\n * @return the same type of object that was passed in as the content\n * but with relative asset paths replaced with absolute paths\n */\n injectAssetPaths(content: any): any {\n if (content != null) {\n if (typeof content === 'object') {\n let contentString = JSON.stringify(content);\n if (contentString != null) {\n // replace the relative asset paths with the absolute paths\n contentString = this.replaceAssetPaths(contentString);\n content = JSON.parse(contentString);\n }\n } else if (typeof content === 'string') {\n // replace the relative asset paths with the absolute paths\n content = this.replaceAssetPaths(content);\n }\n }\n return content;\n }\n\n /**\n * Replace the relative asset paths with absolute paths\n * @param contentString the content string\n * @return the content string with relative asset paths replaced\n * with absolute asset paths\n */\n replaceAssetPaths(contentString: string): string {\n if (contentString != null) {\n // get the content base url e.g. http://wise.berkeley.edu/curriculum/123456/\n const contentBaseURL = this.configService.getConfigParam('projectBaseURL');\n\n // only look for string that starts with ' or \" and ends in png, jpg, jpeg, pdf, etc.\n // the string we're looking for can't start with '/ and \"/.\n // note that this also works for \\\"abc.png and \\'abc.png, where the quotes are escaped\n contentString = contentString.replace(\n new RegExp(\n \"('|\\\"|\\\\\\\\'|\\\\\\\\\\\")[^:][^/]?[^/]?[a-zA-Z0-9\\u4e00-\\u9fa5@%&;\\\\._\\\\/\\\\s\\\\-']*[.]\" +\n '(png|jpe?g|pdf|gif|mov|mp4|mp3|wav|swf|css|txt|json|xlsx?|doc|html.*?|js).*?' +\n '(\\'|\"|\\\\\\\\\\'|\\\\\\\\\")',\n 'gi'\n ),\n (matchedString) => {\n /*\n * once found, we prepend the contentBaseURL + \"assets/\" to the string within the quotes\n * and keep everything else the same.\n */\n let delimiter = '';\n let matchedStringWithoutQuotes = '';\n\n if (matchedString.length > 2 && matchedString.substr(0, 1) == '\\\\') {\n // the string has escaped quotes for example \\\"hello.png\\\"\n\n // get everything between the escaped quotes\n matchedStringWithoutQuotes = matchedString.substr(2, matchedString.length - 4);\n\n // get the delimiter which will be \\' or \\\"\n delimiter = matchedString.substr(0, 2);\n } else {\n // the string does not have escaped quotes for example \"hello.png\"\n\n // get everything between the quotes\n matchedStringWithoutQuotes = matchedString.substr(1, matchedString.length - 2);\n\n // get the delimiter which will be ' or \"\n delimiter = matchedString.substr(0, 1);\n }\n\n if (\n matchedStringWithoutQuotes != null &&\n matchedStringWithoutQuotes.length > 0 &&\n matchedStringWithoutQuotes.charAt(0) == '/'\n ) {\n /*\n * the matched string starts with a \"/\" which means it's\n * an absolute path and does not require path prepending\n * so we will just return the original unmodified string\n */\n return delimiter + matchedStringWithoutQuotes + delimiter;\n } else {\n // make a new string with the contentBaseURL + assets/ prepended to the path\n return delimiter + contentBaseURL + 'assets/' + matchedStringWithoutQuotes + delimiter;\n }\n }\n );\n }\n return contentString;\n }\n\n /**\n * Returns the node specified by the nodeId\n * @param nodeId get the node with this node id\n * @param (optional) the project to retrieve the node from. this is used in\n * the case when we want the node from another project such as when we are\n * importing a step from another project\n * Return null if nodeId param is null or the specified node does not exist in the project.\n */\n getNodeById(nodeId: string, project = null): any {\n if (project == null) {\n if (this.idToNode[nodeId]) {\n return this.idToNode[nodeId];\n }\n } else {\n for (let tempNode of project.nodes) {\n if (tempNode != null && tempNode.id == nodeId) {\n return tempNode;\n }\n }\n\n for (let tempNode of project.inactiveNodes) {\n if (tempNode != null && tempNode.id == nodeId) {\n return tempNode;\n }\n }\n }\n return null;\n }\n\n getNode(nodeId: string): Node {\n if (this.nodes.hasOwnProperty(nodeId)) {\n return this.nodes[nodeId];\n } else {\n const node = Object.assign(new Node(), this.getNodeById(nodeId));\n this.nodes[nodeId] = node;\n return node;\n }\n }\n\n /**\n * Returns the title of the node with the nodeId\n * Return null if nodeId param is null or the specified node does not exist in the project.\n */\n getNodeTitle(nodeId: string): string {\n const node = this.getNodeById(nodeId);\n if (node != null) {\n return node.title;\n }\n return null;\n }\n\n /**\n * Get the node position and title\n * @param nodeId the node id\n * @returns the node position and title, e.g. \"1.1 Introduction\"\n */\n getNodePositionAndTitle(nodeId: string): string {\n const node = this.getNodeById(nodeId);\n if (node != null) {\n const position = this.getNodePositionById(nodeId);\n if (position != null) {\n return position + ': ' + node.title;\n } else {\n return node.title;\n }\n }\n return null;\n }\n\n getParentGroup(nodeId = ''): any {\n const node = this.getNodeById(nodeId);\n if (node != null) {\n for (const groupNode of this.getGroupNodes()) {\n if (this.isNodeDirectChildOfGroup(node, groupNode)) {\n return groupNode;\n }\n }\n for (const inactiveGroupNode of this.getInactiveGroupNodes()) {\n if (this.isNodeDirectChildOfGroup(node, inactiveGroupNode)) {\n return inactiveGroupNode;\n }\n }\n }\n return null;\n }\n\n getParentGroupId(nodeId = ''): string {\n const parentGroup = this.getParentGroup(nodeId);\n if (parentGroup != null) {\n return parentGroup.id;\n }\n return null;\n }\n\n getNodeDepth(nodeId, val) {\n if (nodeId != null) {\n let depth = typeof val === 'number' ? val : 0;\n const parent = this.getParentGroup(nodeId);\n if (parent) {\n depth = this.getNodeDepth(parent.id, depth + 1);\n }\n return depth;\n }\n return null;\n }\n\n getRootNode(nodeId: string): any {\n const parentGroup = this.getParentGroup(nodeId);\n return parentGroup == null ? this.getNodeById(nodeId) : this.getRootNode(parentGroup.id);\n }\n\n private isNodeDirectChildOfGroup(node: any, group: any): boolean {\n if (node != null && group != null) {\n const nodeId = node.id;\n const groupIds = group.ids;\n if (groupIds != null && groupIds.indexOf(nodeId) != -1) {\n return true;\n }\n }\n return false;\n }\n\n isNodeDescendentOfGroup(node: any, group: any): boolean {\n if (node != null && group != null) {\n const descendents = this.getDescendentIdsOfGroup(group);\n const nodeId = node.id;\n if (descendents.indexOf(nodeId) != -1) {\n return true;\n }\n }\n return false;\n }\n\n getDescendentIdsOfGroup(group: any): string[] {\n let descendents = [];\n if (group != null) {\n const childIds = group.ids;\n if (childIds != null) {\n descendents = childIds;\n for (let childId of childIds) {\n const node = this.getNodeById(childId);\n if (node != null) {\n const childDescendents = this.getDescendentIdsOfGroup(node);\n descendents = descendents.concat(childDescendents);\n }\n }\n }\n }\n return descendents;\n }\n\n getStartNodeId(): string {\n return this.project.startNodeId;\n }\n\n setStartNodeId(nodeId: string): void {\n this.project.startNodeId = nodeId;\n }\n\n getStartGroupId(): string {\n return this.project.startGroupId;\n }\n\n isStartNodeId(nodeId: string): boolean {\n return this.project.startNodeId === nodeId;\n }\n\n /**\n * Check if a node id comes after another node id in the project.\n * @param nodeId1 The node id of a step or group.\n * @param nodeId2 The node id of a step or group.\n * @returns {boolean} True iff nodeId2 comes after nodeId1.\n */\n isNodeIdAfter(nodeId1: string, nodeId2: string): boolean {\n if (this.isApplicationNode(nodeId1)) {\n if (nodeId1 == nodeId2) {\n return false;\n } else {\n for (const onePath of this.getOrCalculateAllPaths()) {\n if (this.pathIncludesNodesAndOneComesBeforeTwo(onePath, nodeId1, nodeId2)) {\n return true;\n }\n }\n }\n } else {\n return this.isNodeAfterGroup(nodeId1, nodeId2);\n }\n return false;\n }\n\n pathIncludesNodesAndOneComesBeforeTwo(path: string[], nodeId1: string, nodeId2: string): boolean {\n return (\n path.includes(nodeId1) &&\n path.includes(nodeId2) &&\n path.indexOf(nodeId1) < path.indexOf(nodeId2)\n );\n }\n\n private getOrCalculateAllPaths(): string[][] {\n if (this.allPaths.length === 0) {\n this.allPaths = this.getAllPaths([], this.getStartNodeId(), true);\n }\n return this.allPaths;\n }\n\n /**\n * @param groupId\n * @param nodeId The node id of a step or group.\n * @returns {boolean} True iff nodeId comes after groupId.\n */\n private isNodeAfterGroup(groupId: string, nodeId: string): boolean {\n try {\n for (const transition of this.getTransitionsByFromNodeId(groupId)) {\n const pathFromGroupToEnd = this.getAllPaths([], transition.to, true);\n for (let pathToEnd of pathFromGroupToEnd) {\n if (pathToEnd.indexOf(nodeId) != -1) {\n return true;\n }\n }\n }\n } catch (e) {}\n return false;\n }\n\n /**\n * Get the transitions for a node\n * @param fromNodeId the node to get transitions from\n * @returns {Array} an array of transitions\n */\n getTransitionsByFromNodeId(fromNodeId: string): Transition[] {\n return this.getNode(fromNodeId).getTransitionLogic().transitions ?? [];\n }\n\n /**\n * Get nodes that have a transition to the given node id\n * @param toNodeId the node id\n * @returns an array of node objects that transition to the given node id\n */\n getNodesByToNodeId(toNodeId: string): any[] {\n return this.project.nodes\n .concat(this.getInactiveNodes())\n .filter((node) => this.nodeHasTransitionToNodeId(node, toNodeId));\n }\n\n getInactiveNodes(): any {\n return this.project.inactiveNodes;\n }\n\n /**\n * Check if a node has a transition to the given nodeId.\n * @param node The node to check.\n * @param toNodeId We are looking for a transition to this node id.\n * @returns Whether the node has a transition to the given nodeId.\n */\n nodeHasTransitionToNodeId(node: Node, toNodeId: string): boolean {\n return this.getTransitionsByFromNodeId(node.id).some(\n (transition) => transition.to === toNodeId\n );\n }\n\n /**\n * Retrieves the project JSON from Config.projectURL and returns it.\n * If Config.projectURL is undefined, returns null.\n */\n retrieveProject(): Observable {\n return this.makeProjectRequest().pipe(\n tap((projectJSON: any) => {\n this.originalProject = projectJSON;\n this.setCurrentLanguage(null);\n this.setProject(projectJSON);\n return projectJSON;\n })\n );\n }\n\n retrieveProjectWithoutParsing(): Observable {\n return this.makeProjectRequest().pipe(\n tap((projectJSON: any) => {\n this.originalProject = projectJSON;\n this.project = projectJSON;\n this.metadata = projectJSON.metadata;\n return projectJSON;\n })\n );\n }\n\n private makeProjectRequest(): Observable {\n const projectURL = this.configService.getConfigParam('projectURL');\n const headers = new HttpHeaders().set('cache-control', 'no-cache');\n return this.http.get(projectURL, { headers: headers });\n }\n\n getOriginalProject(): any {\n return this.originalProject;\n }\n\n getThemePath(): string {\n return this.getDefaultThemePath();\n }\n\n private getDefaultThemePath(): string {\n return `${this.configService.getWISEBaseURL()}/assets/wise5/themes/default`;\n }\n\n /**\n * Returns the theme settings for the current project\n */\n getThemeSettings(): any {\n let themeSettings = {};\n if (this.project.themeSettings) {\n if (this.project.theme) {\n // TODO: check if this is a valid theme (using ConfigService) rather than just truthy\n themeSettings = this.project.themeSettings[this.project.theme];\n } else {\n // TODO: get default theme name from ConfigService\n themeSettings = this.project.themeSettings['default'];\n }\n }\n return themeSettings ? themeSettings : {};\n }\n\n /**\n * Flatten the project to obtain a list of node ids\n * @param recalculate Whether to force recalculating the flattened node ids.\n * @return An array of the flattened node ids in the project.\n */\n getFlattenedProjectAsNodeIds(recalculate = true): any {\n if (!recalculate && this.flattenedProjectAsNodeIds != null) {\n // use the previously calculated flattened node ids\n return this.flattenedProjectAsNodeIds;\n }\n\n const startNodeId = this.getStartNodeId();\n\n /*\n * an array to keep track of the node ids in the path that\n * we are currently on as we traverse the nodes in the project\n * depth first\n */\n const pathsSoFar = [];\n const allPaths = this.getAllPaths(pathsSoFar, startNodeId);\n const nodeIds = this.pathService.consolidatePaths(allPaths);\n this.flattenedProjectAsNodeIds = nodeIds; // cache flatted node ids\n return nodeIds;\n }\n\n /**\n * Get all the possible paths through the project. This function\n * recursively calls itself to traverse the project depth first.\n * @param pathSoFar the node ids in the path so far. the node ids\n * in this array are referenced to make sure we don't loop back\n * on the path.\n * @param nodeId the node id we want to get the paths from\n * @param includeGroups whether to include the group node ids in the paths\n * @return an array of paths. each path is an array of node ids.\n */\n getAllPaths(pathSoFar: string[], nodeId: string = '', includeGroups: boolean = false): any[][] {\n const allPaths = [];\n if (this.isApplicationNode(nodeId)) {\n this.getStepPaths(pathSoFar, nodeId, includeGroups, allPaths);\n } else {\n this.getLessonPaths(pathSoFar, nodeId, includeGroups, allPaths);\n }\n return allPaths;\n }\n\n private getStepPaths(\n pathSoFar: string[],\n nodeId: string,\n includeGroups: boolean,\n allPaths: any[]\n ): void {\n const path = [];\n const transitions = this.getTransitionsByFromNodeId(nodeId);\n if (includeGroups) {\n const parentGroup = this.getParentGroup(nodeId);\n if (parentGroup != null) {\n const parentGroupId = parentGroup.id;\n if (parentGroupId != null && pathSoFar.indexOf(parentGroupId) == -1) {\n pathSoFar.push(parentGroup.id);\n }\n }\n }\n\n /*\n * add the node id to the path so far so we can later check\n * which nodes are already in the path to prevent looping\n * back in the path\n */\n pathSoFar.push(nodeId);\n\n if (transitions.length === 0) {\n /*\n * there are no transitions from the node id so we will\n * look for a transition in the parent group\n */\n let addedCurrentNodeId = false;\n const parentGroupId = this.getParentGroupId(nodeId);\n const parentGroupTransitions = this.getTransitionsByFromNodeId(parentGroupId);\n for (const parentGroupTransition of parentGroupTransitions) {\n if (parentGroupTransition != null) {\n const toNodeId = parentGroupTransition.to;\n if (pathSoFar.indexOf(toNodeId) == -1) {\n /*\n * recursively get the paths by getting all\n * the paths for the to node\n */\n const allPathsFromToNode = this.getAllPaths(pathSoFar, toNodeId, includeGroups);\n\n for (let tempPath of allPathsFromToNode) {\n tempPath.unshift(nodeId);\n allPaths.push(tempPath);\n addedCurrentNodeId = true;\n }\n }\n }\n }\n\n if (!addedCurrentNodeId) {\n /*\n * if the parent group doesn't have any transitions we will\n * need to add the current node id to the path\n */\n path.push(nodeId);\n allPaths.push(path);\n }\n } else {\n // there are transitions from this node id\n for (let transition of transitions) {\n if (transition != null) {\n const toNodeId = transition.to;\n if (toNodeId != null && pathSoFar.indexOf(toNodeId) == -1) {\n // we have not found the to node in the path yet so we can traverse it\n /*\n * recursively get the paths by getting all\n * the paths from the to node\n */\n const allPathsFromToNode = this.getAllPaths(pathSoFar, toNodeId, includeGroups);\n\n if (allPathsFromToNode != null) {\n for (let tempPath of allPathsFromToNode) {\n if (includeGroups) {\n // we need to add the group id to the path\n if (tempPath.length > 0) {\n const firstNodeId = tempPath[0];\n const firstParentGroupId = this.getParentGroupId(firstNodeId);\n const parentGroupId = this.getParentGroupId(nodeId);\n if (parentGroupId != firstParentGroupId) {\n /*\n * the parent ids are different which means this is a boundary\n * between two groups. for example if the project looked like\n * group1>node1>node2>group2>node3>node4\n * and the current node was node2 then the first node in the\n * path would be node3 which means we would need to place\n * group2 on the path before node3\n */\n tempPath.unshift(firstParentGroupId);\n }\n }\n }\n\n tempPath.unshift(nodeId);\n allPaths.push(tempPath);\n }\n }\n } else {\n /*\n * the node is already in the path so far which means\n * the transition is looping back to a previous node.\n * we do not want to take this transition because\n * it will lead to an infinite loop. we will just\n * add the current node id to the path and not take\n * the transition which essentially ends the path.\n */\n path.push(nodeId);\n allPaths.push(path);\n }\n }\n }\n }\n\n if (pathSoFar.length > 0) {\n const lastNodeId = pathSoFar[pathSoFar.length - 1];\n if (this.isGroupNode(lastNodeId)) {\n /*\n * the last node id is a group id so we will remove it\n * since we are moving back up the path as we traverse\n * the nodes depth first\n */\n pathSoFar.pop();\n }\n }\n\n /*\n * remove the latest node id (this will be a step node id)\n * since we are moving back up the path as we traverse the\n * nodes depth first\n */\n pathSoFar.pop();\n\n if (includeGroups) {\n if (pathSoFar.length == 1) {\n /*\n * we are including groups and we have traversed\n * back up to the start node id for the project.\n * the only node id left in pathSoFar is now the\n * parent group of the start node id. we will\n * now add this parent group of the start node id\n * to all of the paths\n */\n for (let path of allPaths) {\n if (path != null) {\n /*\n * prepend the parent group of the start node id\n * to the path\n */\n path.unshift(pathSoFar[0]);\n }\n }\n\n /*\n * remove the parent group of the start node id from\n * pathSoFar which leaves us with an empty pathSoFar\n * which means we are completely done with\n * calculating all the paths\n */\n pathSoFar.pop();\n }\n }\n }\n\n private getLessonPaths(\n pathSoFar: string[],\n groupId: string,\n includeGroups: boolean,\n allPaths: any[]\n ): void {\n /*\n * add the node id to the path so far so we can later check\n * which nodes are already in the path to prevent looping\n * back in the path\n */\n pathSoFar.push(groupId);\n\n const groupNode = this.getNodeById(groupId);\n const startId = groupNode.startId;\n if (startId == null || startId == '') {\n // there is no start id (e.g., this is an empty lesson)\n // so we will take the transition from the group\n // TODO? there is no start id so we will loop through all the child nodes\n const transitions = this.getTransitionsByFromNodeId(groupNode.id);\n if (transitions.length > 0) {\n for (const transition of transitions) {\n const allPathsFromToNode = this.getAllPaths(pathSoFar, transition.to, includeGroups);\n for (const tempPath of allPathsFromToNode) {\n tempPath.unshift(groupId);\n allPaths.push(tempPath);\n }\n }\n } else {\n // this activity does not have any transitions so we have reached the end of this path\n allPaths.push([groupId]);\n }\n } else {\n // there is a start id so we will traverse it\n const allPathsFromToNode = this.getAllPaths(pathSoFar, startId, includeGroups);\n for (const tempPath of allPathsFromToNode) {\n tempPath.unshift(groupId);\n allPaths.push(tempPath);\n }\n }\n\n /*\n * remove the latest node id since we are moving back\n * up the path as we traverse the nodes depth first\n */\n pathSoFar.pop();\n }\n\n getStepNodeIds(): string[] {\n return this.getFlattenedProjectAsNodeIds().filter((nodeId: string) => {\n return this.isApplicationNode(nodeId);\n });\n }\n\n /**\n * Get the component by node id and component id\n * @param nodeId the node id\n * @param componentId the component id\n * @returns the component or null if the nodeId or componentId are null or does not exist\n */\n getComponent(nodeId: string, componentId: string): ComponentContent {\n const components = this.getComponents(nodeId);\n for (const component of components) {\n if (component.id === componentId) {\n return component;\n }\n }\n return null;\n }\n\n /**\n * Get the components in a node\n * @param nodeId the node id\n * @returns an array of components or empty array if nodeId is null or\n * doesn't exist in the project.\n * if the node exists but doesn't have any components, returns an empty array.\n */\n getComponents(nodeId: string): ComponentContent[] {\n const node = this.getNodeById(nodeId);\n if (node != null) {\n if (node.components != null) {\n return node.components;\n }\n }\n return [];\n }\n\n /**\n * Get the max score for the node\n * @param nodeId the node id which can be a step or an activity\n * @returns the max score for the node which can be null or a number\n * if null, author/teacher has not set a max score for the node\n */\n getMaxScoreForNode(nodeId: string): number {\n let maxScore = null;\n if (!this.isGroupNode(nodeId)) {\n const node = this.getNodeById(nodeId);\n for (const component of node.components) {\n if (!component.excludeFromTotalScore) {\n const componentMaxScore = component.maxScore;\n if (typeof componentMaxScore == 'number') {\n if (maxScore == null) {\n maxScore = componentMaxScore;\n } else {\n maxScore += componentMaxScore;\n }\n }\n }\n }\n }\n return maxScore;\n }\n\n getMaxScoreForComponent(nodeId: string, componentId: string): number {\n const component = this.getComponent(nodeId, componentId);\n if (component != null && !component.excludeFromTotalScore) {\n return component.maxScore;\n }\n return null;\n }\n\n /**\n * Get the choices of a Multiple Choice component.\n * @param nodeId The node id.\n * @param componentId The component id.\n * @return The choices from the component.\n */\n getChoices(nodeId: string, componentId: string): any[] {\n const component = this.getComponent(nodeId, componentId) as MultipleChoiceContent;\n return component.choices;\n }\n\n /**\n * Get the choice text for the given choice ids of a multiple choice component.\n * @param nodeId The node id of the component.\n * @param componentId The component id of the component.\n * @param choiceIds An array of choice ids.\n * @return An array of choice text strings.\n */\n getChoiceText(nodeId: string, componentId: string, choiceIds: string[]): string[] {\n const choicesText = [];\n for (const choice of this.getChoices(nodeId, componentId)) {\n if (choiceIds.indexOf(choice.id) != -1) {\n choicesText.push(choice.text);\n }\n }\n return choicesText;\n }\n\n /**\n * Get the start id of a group\n * @param nodeId get the start id of this group\n * @returns the start id of the group\n */\n getGroupStartId(nodeId: string): string {\n return this.getNodeById(nodeId).startId;\n }\n\n /**\n * Load the inactive nodes\n * @param nodes the inactive nodes\n */\n loadInactiveNodes(nodes: any[]): void {\n for (const node of nodes) {\n this.setIdToNode(node.id, node);\n if (node.type === 'group') {\n this.inactiveGroupNodes.push(node);\n } else {\n this.inactiveStepNodes.push(node);\n }\n }\n }\n\n shouldIncludeInTotalScore(nodeId: string, componentId: string): boolean {\n const component = this.getComponent(nodeId, componentId);\n return this.isNodeActive(nodeId) && component != null && !component.excludeFromTotalScore;\n }\n\n /**\n * Check if the target is active\n * @param target the node id or inactiveNodes/inactiveGroups to check\n * @returns whether the target is active\n */\n isActive(target: string): boolean {\n return target !== 'inactiveNodes' && target !== 'inactiveGroups' && this.isNodeActive(target);\n }\n\n /**\n * Check if a node is active.\n * @param nodeId the id of the node\n */\n isNodeActive(nodeId: string): boolean {\n for (const activeNode of this.project.nodes) {\n if (activeNode.id == nodeId) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Check if a node generates work by looking at all of its components\n * @param nodeId the node id\n * @return whether the node generates work\n */\n nodeHasWork(nodeId: string): boolean {\n const node = this.getNodeById(nodeId);\n // TODO: remove need for component null check by ensuring that node always has components\n if (node.components != null) {\n for (const component of node.components) {\n if (this.componentHasWork(component)) {\n return true;\n }\n }\n }\n return false;\n }\n\n /**\n * Check if a component generates work\n * @param component check if this component generates work\n * @return whether the component generates work\n */\n componentHasWork(component: any): boolean {\n const componentService = this.componentServiceLookupService.getService(component.type);\n return componentService.componentHasWork(component);\n }\n\n calculateComponentIdToHasWork(components: ComponentContent[]): {\n [componentId: string]: boolean;\n } {\n const componentIdToHasWork: { [componentId: string]: boolean } = {};\n for (const component of components) {\n componentIdToHasWork[component.id] = this.componentHasWork(component);\n }\n return componentIdToHasWork;\n }\n\n getComponentType(nodeId: string, componentId: string): string {\n const component = this.getComponent(nodeId, componentId);\n return component.type;\n }\n\n /**\n * Check if a node is a branch start point\n * @param nodeId look for a branch with this start node id\n * @return whether the node is a branch start point\n */\n private isBranchStartPoint(nodeId: string): boolean {\n return this.getBranches().some((branch) => branch.startPoint === nodeId);\n }\n\n /**\n * Check if a node is a branch end point\n * @param nodeId look for a branch with this end node id\n * @return whether the node is a branch end point\n */\n isBranchMergePoint(nodeId: string): boolean {\n return this.getBranches().some((branch) => branch.endPoint === nodeId);\n }\n\n /**\n * Get all the branches whose branch start point is the given node id\n * @param nodeId the branch start point\n * @return an array of branches that have the given branch start point\n */\n getBranchesByBranchStartPointNodeId(nodeId: string): Branch[] {\n return this.getBranches().filter((branch) => branch.startPoint === nodeId);\n }\n\n /**\n * Calculate the node numbers and set them into the nodeIdToNumber map\n * If the step is called \"1.5 View the Potential Energy\", then the node number is 1.5\n *\n * If this is a branching step that is called \"1.5 B View the Potential Energy\", then the\n * node number is 1.5 B\n */\n calculateNodeNumbers(): void {\n this.nodeIdToNumber = {};\n this.nodeIdToBranchPathLetter = {};\n const startNodeId = this.getStartNodeId();\n const currentActivityNumber = 0;\n const currentStepNumber = 0;\n this.calculateNodeNumbersHelper(startNodeId, currentActivityNumber, currentStepNumber);\n }\n\n /**\n * Recursively calculate the node numbers by traversing the project tree using transitions\n * @param nodeId the current node id we are on\n * @param currentActivityNumber the current activity number\n * @param currentStepNumber the current step number\n * @param branchLetterCode (optional) the character code for the branch letter e.g. 0=A, 1=B, etc.\n */\n private calculateNodeNumbersHelper(\n nodeId: string,\n currentActivityNumber: any,\n currentStepNumber: number,\n branchLetterCode: number = null\n ): number {\n if (this.isApplicationNode(nodeId)) {\n currentStepNumber = this.calculateNodeNumberForStep(\n nodeId,\n currentActivityNumber,\n currentStepNumber,\n branchLetterCode\n );\n } else {\n currentStepNumber = this.calculateNodeNumberForLesson(\n nodeId,\n currentActivityNumber,\n currentStepNumber,\n branchLetterCode\n );\n }\n return currentStepNumber;\n }\n\n private calculateNodeNumberForStep(\n nodeId: string,\n currentActivityNumber: any,\n currentStepNumber: number,\n branchLetterCode: number = null\n ): number {\n ({ currentActivityNumber, currentStepNumber, branchLetterCode } = this.getCurrentActivityNumber(\n nodeId,\n currentActivityNumber,\n currentStepNumber,\n branchLetterCode\n ));\n if (this.isBranchStartPoint(nodeId)) {\n currentStepNumber = this.calculateNodeNumberForBranchStartPoint(\n nodeId,\n currentActivityNumber,\n currentStepNumber\n );\n } else {\n currentStepNumber = this.calculateNodeNumberForRegularStep(\n nodeId,\n currentActivityNumber,\n currentStepNumber,\n branchLetterCode\n );\n }\n return currentStepNumber;\n }\n\n private getCurrentActivityNumber(\n nodeId: string,\n currentActivityNumber: any,\n currentStepNumber: number,\n branchLetterCode: number = null\n ): any {\n const parentGroup = this.getParentGroup(nodeId);\n if (parentGroup != null) {\n if (this.nodeIdToNumber[parentGroup.id] == null) {\n // the parent group has not been assigned a number so we will assign a number now\n currentActivityNumber = parseInt(currentActivityNumber) + 1;\n\n // set the current step number to 1 now that we have entered a new group\n currentStepNumber = 1;\n this.nodeIdToNumber[parentGroup.id] = '' + currentActivityNumber;\n } else {\n // the parent group has previously been assigned a number so we will use it\n currentActivityNumber = this.nodeIdToNumber[parentGroup.id];\n }\n }\n if (this.isBranchMergePoint(nodeId)) {\n // the node is a merge point so we will not use a letter anymore now that we are no longer in\n // a branch path\n branchLetterCode = null;\n }\n return { currentActivityNumber, currentStepNumber, branchLetterCode };\n }\n\n private calculateNodeNumberForBranchStartPoint(\n nodeId: string,\n currentActivityNumber: any,\n currentStepNumber: number\n ): number {\n this.nodeIdToNumber[nodeId] = currentActivityNumber + '.' + currentStepNumber;\n currentStepNumber++;\n let maxCurrentStepNumber = 0;\n const branchesByBranchStartPointNodeId = this.getBranchesByBranchStartPointNodeId(nodeId);\n const branches = branchesByBranchStartPointNodeId[0];\n const branchPaths = branches.paths;\n for (let branchPathNumber = 0; branchPathNumber < branchPaths.length; branchPathNumber++) {\n maxCurrentStepNumber = this.calculateBranchPathNodeNumbers(\n nodeId,\n currentActivityNumber,\n currentStepNumber,\n branchPaths[branchPathNumber],\n branchPathNumber,\n maxCurrentStepNumber\n );\n }\n currentStepNumber = maxCurrentStepNumber;\n this.calculateNodeNumbersHelper(branches.endPoint, currentActivityNumber, currentStepNumber);\n return currentStepNumber;\n }\n\n private calculateBranchPathNodeNumbers(\n nodeId: string,\n currentActivityNumber: any,\n currentStepNumber: number,\n branchPath: any,\n branchPathNumber: number,\n maxCurrentStepNumber: number\n ): number {\n // get the letter code e.g. 0=A, 1=B, etc.\n const branchLetterCode = branchPathNumber;\n let branchCurrentStepNumber = currentStepNumber;\n for (let bpn = 0; bpn < branchPath.length; bpn++) {\n if (bpn == 0) {\n if (this.getParentGroupId(nodeId) !== this.getParentGroupId(branchPath[bpn])) {\n branchCurrentStepNumber = 1;\n }\n // Calculate the node numbers for the steps in this branch path\n const branchPathNodeId = branchPath[bpn];\n branchCurrentStepNumber = this.calculateNodeNumbersHelper(\n branchPathNodeId,\n currentActivityNumber,\n branchCurrentStepNumber,\n branchLetterCode\n );\n }\n if (branchCurrentStepNumber > maxCurrentStepNumber) {\n maxCurrentStepNumber = branchCurrentStepNumber;\n }\n }\n return maxCurrentStepNumber;\n }\n\n private calculateNodeNumberForRegularStep(\n nodeId: string,\n currentActivityNumber: any,\n currentStepNumber: number,\n branchLetterCode: number = null\n ): number {\n // Check if we have already set the number for this node so that we don't need to unnecessarily\n // re-calculate the node number\n if (this.nodeIdToNumber[nodeId] == null) {\n this.setStepNodeNumber(nodeId, currentActivityNumber, currentStepNumber, branchLetterCode);\n } else {\n // We have calculated the node number before so we will return.\n // This will prevent infinite looping within the project.\n return currentStepNumber;\n }\n currentStepNumber++;\n const node = this.getNodeById(nodeId);\n const transitions = node.transitionLogic.transitions;\n if (transitions.length > 0) {\n currentStepNumber = this.calculateNodeNumberForRegularStepThatHasTransitions(\n nodeId,\n currentActivityNumber,\n currentStepNumber,\n branchLetterCode\n );\n } else {\n currentStepNumber = this.calculateNodeNumberForRegularStepThatDoesNotHaveTransitions(\n nodeId,\n currentActivityNumber,\n currentStepNumber,\n branchLetterCode\n );\n }\n return currentStepNumber;\n }\n\n private calculateNodeNumberForRegularStepThatHasTransitions(\n nodeId: string,\n currentActivityNumber: any,\n currentStepNumber: number,\n branchLetterCode: number = null\n ) {\n const node = this.getNodeById(nodeId);\n for (const transition of node.transitionLogic.transitions) {\n if (!this.isBranchMergePoint(transition.to)) {\n if (this.getParentGroupId(nodeId) !== this.getParentGroupId(transition.to)) {\n currentStepNumber = 1;\n }\n currentStepNumber = this.calculateNodeNumbersHelper(\n transition.to,\n currentActivityNumber,\n currentStepNumber,\n branchLetterCode\n );\n }\n }\n return currentStepNumber;\n }\n\n private calculateNodeNumberForRegularStepThatDoesNotHaveTransitions(\n nodeId: string,\n currentActivityNumber: any,\n currentStepNumber: number,\n branchLetterCode: number = null\n ): number {\n const parentGroup = this.getParentGroup(nodeId);\n if (parentGroup.transitionLogic?.transitions != null) {\n for (const transition of parentGroup.transitionLogic.transitions) {\n currentStepNumber = this.calculateNodeNumbersHelper(\n transition.to,\n currentActivityNumber,\n currentStepNumber,\n branchLetterCode\n );\n }\n }\n return currentStepNumber;\n }\n\n private setStepNodeNumber(\n nodeId: string,\n currentActivityNumber: any,\n currentStepNumber: number,\n branchLetterCode: number\n ) {\n let number = null;\n if (branchLetterCode == null) {\n number = currentActivityNumber + '.' + currentStepNumber;\n } else {\n const branchLetter = String.fromCharCode(65 + branchLetterCode);\n number = `${currentActivityNumber}.${currentStepNumber} ${branchLetter}`;\n this.nodeIdToBranchPathLetter[nodeId] = branchLetter;\n }\n this.nodeIdToNumber[nodeId] = number;\n }\n\n private calculateNodeNumberForLesson(\n nodeId: string,\n currentActivityNumber: any,\n currentStepNumber: number,\n branchLetterCode: number = null\n ): number {\n // check if the group has previously been assigned a number\n if (this.nodeIdToNumber[nodeId] == null) {\n ({ currentActivityNumber, currentStepNumber } = this.setLessonNodeNumber(\n nodeId,\n currentActivityNumber,\n currentStepNumber\n ));\n } else {\n // We have calculated the node number before so we will return.\n // This will prevent infinite looping within the project.\n return currentStepNumber;\n }\n const node = this.getNodeById(nodeId);\n if (node.startId != '') {\n // calculate the node number for the first step in this activity and any steps after it\n this.calculateNodeNumbersHelper(\n node.startId,\n currentActivityNumber,\n currentStepNumber,\n branchLetterCode\n );\n } else if (node.transitionLogic != null) {\n for (const transition of node.transitionLogic.transitions) {\n // calculate the node number for the next node and all its children steps\n this.calculateNodeNumbersHelper(\n transition.to,\n currentActivityNumber,\n currentStepNumber,\n branchLetterCode\n );\n }\n }\n return currentStepNumber;\n }\n\n private setLessonNodeNumber(\n nodeId: string,\n currentActivityNumber: any,\n currentStepNumber: number\n ): any {\n // the group has not been assigned a number so we will assign a number now/\n if (nodeId == 'group0') {\n // group 0 will always be given the activity number of 0\n this.nodeIdToNumber[nodeId] = '0';\n } else {\n // set the current step number to 1 now that we have entered a new group\n currentStepNumber = 1;\n currentActivityNumber = parseInt(currentActivityNumber) + 1;\n this.nodeIdToNumber[nodeId] = '' + currentActivityNumber;\n }\n return { currentActivityNumber, currentStepNumber };\n }\n\n getProjectScript(): any {\n return this.project.script;\n }\n\n /**\n * Get the next node after the specified node\n * @param nodeId get the node id that comes after this one\n * @return the node id that comes after\n */\n getNextNodeId(nodeId: string): string {\n const flattenedNodeIds = this.getFlattenedProjectAsNodeIds();\n if (flattenedNodeIds != null) {\n const indexOfNodeId = flattenedNodeIds.indexOf(nodeId);\n if (indexOfNodeId != -1) {\n const indexOfNextNodeId = indexOfNodeId + 1;\n return flattenedNodeIds[indexOfNextNodeId];\n }\n }\n return null;\n }\n\n /**\n * Get all the projectAchievements object in the project. The projectAchievements object\n * contains the isEnabled field and an array of items.\n * @return the achievement object\n */\n getAchievements(): any {\n if (this.project.achievements == null) {\n this.project.achievements = {\n isEnabled: false,\n items: []\n };\n }\n return this.project.achievements;\n }\n\n /**\n * Get the achievement items in the project\n * @return the achievement items\n */\n getAchievementItems(): any[] {\n const achievements = this.getAchievements();\n if (achievements.items == null) {\n achievements.items = [];\n }\n return achievements.items;\n }\n\n /**\n * Get an achievement by the 10 character alphanumeric achievement id\n * @param achievementId the 10 character alphanumeric achievement id\n * @return the achievement with the given achievement id\n */\n getAchievementByAchievementId(achievementId: string): any {\n if (achievementId != null) {\n const achievements = this.getAchievements();\n if (achievements != null) {\n const achievementItems = achievements.items;\n if (achievementItems != null) {\n for (let achievement of achievementItems) {\n if (achievement != null && achievement.id == achievementId) {\n return achievement;\n }\n }\n }\n }\n }\n return null;\n }\n\n getSpaces(): any[] {\n if (this.project.spaces != null) {\n return this.project.spaces;\n } else {\n return [];\n }\n }\n\n isSpaceExists(id: string): boolean {\n const spaces = this.getSpaces();\n for (let space of spaces) {\n if (space.id === id) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Returns true iff the specified node and component has any registered\n * additionalProcessingFunctions\n * @param nodeId the node id\n * @param componentId the component id\n * @returns true/false\n */\n hasAdditionalProcessingFunctions(nodeId: string, componentId: string): boolean {\n return this.getAdditionalProcessingFunctions(nodeId, componentId) != null;\n }\n\n /**\n * Returns an array of registered additionalProcessingFunctions for the specified node and\n * component\n * @param nodeId the node id\n * @param componentId the component id\n * @returns an array of additionalProcessingFunctions\n */\n getAdditionalProcessingFunctions(nodeId: string, componentId: string): any {\n return this.additionalProcessingFunctionsMap[`${nodeId}_${componentId}`];\n }\n\n replaceNode(nodeId: string, node: any): void {\n this.setIdToNode(nodeId, node);\n const nodes = this.getNodes();\n for (let n = 0; n < nodes.length; n++) {\n if (nodeId === nodes[n].id) {\n nodes.splice(n, 1, node);\n break;\n }\n }\n for (let a = 0; a < this.applicationNodes.length; a++) {\n if (nodeId === this.applicationNodes[a].id) {\n this.applicationNodes.splice(a, 1, node);\n }\n }\n }\n\n retrieveScript(scriptFilename: string): any {\n return Promise.resolve('');\n }\n\n getNotificationByScore(component: any, previousScore: number, currentScore: number): any {}\n\n isConnectedComponent(nodeId: string, componentId: string, connectedComponentId: string): boolean {\n return false;\n }\n\n getConnectedComponentParams(componentContent: any, componentId: string): any {}\n\n getTags(): any[] {\n let tags = [];\n const nodes = this.getNodes();\n for (const node of nodes) {\n tags = tags.concat(this.getTagsFromNode(node));\n }\n return tags;\n }\n\n getTagsFromNode(node: any): any[] {\n const tags = [];\n const transitions = this.getTransitionsFromNode(node);\n for (const transition of transitions) {\n const criteriaArray = this.getCriteriaArrayFromTransition(transition);\n for (const singleCriteria of criteriaArray) {\n const tag = this.getTagFromSingleCriteria(singleCriteria);\n if (tag != null) {\n tags.push(tag);\n }\n }\n }\n return tags;\n }\n\n getTransitionsFromNode(node: any): Transition[] {\n const transitionLogic = node.transitionLogic;\n if (transitionLogic == null) {\n return [];\n } else {\n return node.transitionLogic.transitions;\n }\n }\n\n getCriteriaArrayFromTransition(transition: Transition): any[] {\n if (transition.criteria == null) {\n return [];\n } else {\n return transition.criteria;\n }\n }\n\n getTagFromSingleCriteria(singleCriteria: any): any {\n const params = singleCriteria.params;\n if (params == null) {\n return null;\n } else {\n return this.getTagFromParams(params);\n }\n }\n\n getTagFromParams(params: any): any {\n if (params.tag == null) {\n return null;\n } else {\n return { name: params['tag'] };\n }\n }\n\n broadcastProjectParsed(): void {\n this.projectParsedSource.next();\n }\n\n getPeerGroupings(): PeerGrouping[] {\n if (this.project.peerGroupings == null) {\n this.project.peerGroupings = [];\n }\n return this.project.peerGroupings;\n }\n\n getPeerGrouping(tag: string): PeerGrouping {\n return this.getPeerGroupings().find((peerGrouping: PeerGrouping) => peerGrouping.tag === tag);\n }\n\n getProjectRootNode(): any {\n return this.rootNode;\n }\n\n /**\n * Get the reference component from a field in the component content\n * @param nodeId the node id\n * @param componentId the component id\n * @param fieldName the name of the object that contains a referenceComponent object\n * In this example the fieldName would be 'dynamicPrompt'\n * {\n * id: 'component2',\n * dynamicPrompt: {\n * referenceComponent: {\n * nodeId: 'node1',\n * componentId: 'component1'\n * }\n * }\n * }\n * @returns the referenceComponent object from a component\n */\n getReferenceComponentForField(\n nodeId: string,\n componentId: string,\n fieldName: 'dynamicPrompt' | 'questionBank'\n ): ReferenceComponent {\n const component = this.getComponent(nodeId, componentId);\n return component[fieldName]?.referenceComponent;\n }\n\n getReferenceComponent(content: QuestionBank | DynamicPrompt): Component {\n const nodeId = content.getReferenceNodeId();\n const componentId = content.getReferenceComponentId();\n return new Component(this.getComponent(nodeId, componentId), nodeId);\n }\n\n getLocale(): ProjectLocale {\n return new ProjectLocale(this.project.metadata.locale);\n }\n\n setCurrentLanguage(language: Language): void {\n this.currentLanguageSignal.set(language);\n }\n\n isDefaultLocale(): boolean {\n return this.getLocale().isDefaultLocale(this.currentLanguage().locale);\n }\n\n getSpeechToTextSettings(): any {\n return this.project.speechToText;\n }\n\n getPreviousNodeId(nodeId: string): string {\n if (this.isActive(nodeId)) {\n const parentGroup = this.getParentGroup(nodeId);\n const childIds = parentGroup.ids;\n return childIds[childIds.indexOf(nodeId) - 1];\n } else {\n const inactiveGroupNodes = this.getInactiveGroupNodes();\n for (let i = 0; i < inactiveGroupNodes.length; i++) {\n if (inactiveGroupNodes[i].id === nodeId) {\n return inactiveGroupNodes[i - 1]?.id;\n }\n }\n }\n return null;\n }\n\n isFirstStepInLesson(nodeId: string): boolean {\n for (const lesson of this.getGroupNodes()) {\n if (lesson.startId === nodeId) {\n return true;\n }\n }\n for (const inactiveLesson of this.getInactiveGroupNodes()) {\n if (inactiveLesson.startId === nodeId) {\n return true;\n }\n }\n return false;\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "branchService", + "type": "BranchService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentServiceLookupService", + "type": "ComponentServiceLookupService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "pathService", + "type": "PathService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 51, + "jsdoctags": [ + { + "name": "branchService", + "type": "BranchService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentServiceLookupService", + "type": "ComponentServiceLookupService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "pathService", + "type": "PathService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "type": "injectable" + }, + { + "name": "ProjectTagService", + "id": "injectable-ProjectTagService-92eb7fb250a3f826ce7b48d9a733a2edb4e97e51ebe977a6ea9491366ed4b4cc73ddcbbc5b8a2dc98ba1fb71f7a8ececbc3834092a767df1aec2dd4f16d5200f", + "file": "src/assets/wise5/services/projectTagService.ts", + "properties": [ + { + "name": "newTag$", + "defaultValue": "this.newTagSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "Observable", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "modifierKind": [ + 125 + ] + }, + { + "name": "newTagSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "modifierKind": [ + 123 + ] + }, + { + "name": "tagDeleted$", + "defaultValue": "this.tagDeletedSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "Observable", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "modifierKind": [ + 125 + ] + }, + { + "name": "tagDeletedSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "modifierKind": [ + 123 + ] + }, + { + "name": "tagUpdated$", + "defaultValue": "this.tagUpdatedSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "Observable", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 125 + ] + }, + { + "name": "tagUpdatedSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "modifierKind": [ + 123 + ] + } + ], + "methods": [ + { + "name": "applyTagToProjects", + "args": [ + { + "name": "tag", + "type": "Tag", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projects", + "type": "Project[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 25, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "tag", + "type": "Tag", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projects", + "type": "Project[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createTag", + "args": [ + { + "name": "tagName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "color", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 48, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "tagName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "color", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "deleteTag", + "args": [ + { + "name": "tag", + "type": "Tag", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 60, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "tag", + "type": "Tag", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "removeTagFromProjects", + "args": [ + { + "name": "tag", + "type": "Tag", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projects", + "type": "Project[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 30, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "tag", + "type": "Tag", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projects", + "type": "Project[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "retrieveUserTags", + "args": [], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 19, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "sortTags", + "args": [ + { + "name": "tags", + "type": "Tag[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Tag[]", + "typeParameters": [], + "line": 56, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "tags", + "type": "Tag[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "updateTag", + "args": [ + { + "name": "tag", + "type": "Tag", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 40, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "tag", + "type": "Tag", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { HttpClient, HttpParams } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Subject, Observable, tap, map } from 'rxjs';\nimport { Project } from '../../../app/domain/project';\nimport { Tag } from '../../../app/domain/tag';\nimport { ProjectAndTagsResponse } from '../../../app/domain/projectAndTagsResponse';\n\n@Injectable()\nexport class ProjectTagService {\n private newTagSource: Subject = new Subject();\n public newTag$: Observable = this.newTagSource.asObservable();\n private tagDeletedSource: Subject = new Subject();\n public tagDeleted$: Observable = this.tagDeletedSource.asObservable();\n private tagUpdatedSource: Subject = new Subject();\n public tagUpdated$: Observable = this.tagUpdatedSource.asObservable();\n\n constructor(protected http: HttpClient) {}\n\n retrieveUserTags(): Observable {\n return this.http\n .get(`/api/user/tags`)\n .pipe(map((tags) => tags.filter((tag) => tag.text !== 'archived')));\n }\n\n applyTagToProjects(tag: Tag, projects: Project[]): Observable {\n const projectIds = projects.map((project) => project.id);\n return this.http.put(`/api/projects/tag/${tag.id}`, projectIds);\n }\n\n removeTagFromProjects(tag: Tag, projects: Project[]): Observable {\n let params = new HttpParams();\n for (const project of projects) {\n params = params.append('projectIds', project.id);\n }\n return this.http.delete(`/api/projects/tag/${tag.id}`, {\n params: params\n });\n }\n\n updateTag(tag: Tag): Observable {\n return this.http.put(`/api/user/tag/${tag.id}`, tag).pipe(\n tap((tag) => {\n this.tagUpdatedSource.next(tag);\n })\n );\n }\n\n createTag(tagName: string, color: string): Observable {\n return this.http.post(`/api/user/tag`, { text: tagName, color: color }).pipe(\n tap((tag: Tag) => {\n this.newTagSource.next(tag);\n })\n );\n }\n\n sortTags(tags: Tag[]): Tag[] {\n return tags.sort((a, b) => a.text.toLowerCase().localeCompare(b.text.toLowerCase()));\n }\n\n deleteTag(tag: Tag): Observable {\n return this.http.delete(`/api/user/tag/${tag.id}`).pipe(\n tap((tag: Tag) => {\n this.tagDeletedSource.next(tag);\n })\n );\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 15, + "jsdoctags": [ + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "type": "injectable" + }, + { + "name": "ProjectTranslationService", + "id": "injectable-ProjectTranslationService-809477ea1683d03a2d8fad6965e1e2d52925601e76c2b2fbeb7113ac1cf9b0f842108b2c2b8bc179368e383c2c761d47e402bfa5bd14ab91c79e9aad54c70220", + "file": "src/assets/wise5/services/projectTranslationService.ts", + "properties": [], + "methods": [ + { + "name": "fetchTranslations", + "args": [ + { + "name": "locale", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 16, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "locale", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getTranslationMappingURL", + "args": [ + { + "name": "locale", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 24, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "locale", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { catchError, Observable, of } from 'rxjs';\nimport { ConfigService } from './configService';\nimport { ProjectService } from './projectService';\nimport { Translations } from '../../../app/domain/translations';\n\n@Injectable()\nexport class ProjectTranslationService {\n constructor(\n protected configService: ConfigService,\n protected http: HttpClient,\n protected projectService: ProjectService\n ) {}\n\n protected fetchTranslations(locale: string): Observable {\n return this.http\n .get(this.getTranslationMappingURL(locale), {\n headers: new HttpHeaders().set('cache-control', 'no-cache')\n })\n .pipe(catchError(() => of({})));\n }\n\n private getTranslationMappingURL(locale: string): string {\n return this.configService\n .getConfigParam('projectURL')\n .replace('project.json', `translations.${locale}.json`);\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 9, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "type": "injectable" + }, + { + "name": "QuestionBankService", + "id": "injectable-QuestionBankService-5e3644e4ef5c8a30f1bb816d7a6e0880f5fe2d50e548fd60f30a127b344d06a48783c49e58df2ebc000771a66032590e132358b83aa9a30098a806adbd95fe19", + "file": "src/assets/wise5/components/peerChat/peer-chat-question-bank/questionBank.service.ts", + "properties": [ + { + "name": "questionUsed$", + "defaultValue": "this.questionUsedSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "Observable", + "indexKey": "", + "optional": false, + "description": "", + "line": 8, + "modifierKind": [ + 125 + ] + }, + { + "name": "questionUsedSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 7, + "modifierKind": [ + 123 + ] + } + ], + "methods": [ + { + "name": "questionUsed", + "args": [ + { + "name": "question", + "type": "Question", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 10, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "question", + "type": "Question", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { Question } from './Question';\n\n@Injectable()\nexport class QuestionBankService {\n private questionUsedSource: Subject = new Subject();\n public questionUsed$: Observable = this.questionUsedSource.asObservable();\n\n questionUsed(question: Question): void {\n this.questionUsedSource.next(question);\n }\n}\n", + "extends": [], + "type": "injectable" + }, + { + "name": "RegisterProjectService", + "id": "injectable-RegisterProjectService-7d834c202ccc08880aa7672a4f5e37869b3f0bba8254747da1f71f4b088fc3a142e2a6e44b80b0899e418f6e62a052b699633de0472541ca2e6fc55597dc97af", + "file": "src/assets/wise5/services/registerProjectService.ts", + "properties": [], + "methods": [ + { + "name": "register", + "args": [ + { + "name": "name", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectJSONString", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 15, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nRegisters a new project having the projectJSON content with the server.\nReturns a new project id if the project is successfully registered.\n", + "description": "

Registers a new project having the projectJSON content with the server.\nReturns a new project id if the project is successfully registered.

\n", + "jsdoctags": [ + { + "name": { + "pos": 395, + "end": 399, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "name" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 389, + "end": 394, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

title of the new project

\n" + }, + { + "name": { + "pos": 437, + "end": 454, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "projectJSONString" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 431, + "end": 436, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

a valid JSON string of the project

\n" + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { HttpClient } from '@angular/common/http';\n\n@Injectable()\nexport class RegisterProjectService {\n constructor(private http: HttpClient) {}\n\n /**\n * Registers a new project having the projectJSON content with the server.\n * Returns a new project id if the project is successfully registered.\n * @param name title of the new project\n * @param projectJSONString a valid JSON string of the project\n */\n register(name: string, projectJSONString: string): Observable {\n return this.http.post('/api/author/project/new', {\n projectName: name,\n projectJSONString: projectJSONString\n });\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 6, + "jsdoctags": [ + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "type": "injectable" + }, + { + "name": "RemoveNodeIdFromTransitionsService", + "id": "injectable-RemoveNodeIdFromTransitionsService-34a14db66fdf7eaaa088480d2eef72eab731253265738db95a22f7b9b3819094f247cf84caca0274b27cb098102c5ff726d3ce9bd700bc517aa63fb39168627b", + "file": "src/assets/wise5/services/removeNodeIdFromTransitionsService.ts", + "properties": [], + "methods": [ + { + "name": "hasGroupStartId", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 331, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isFirstNodeInBranchPath", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 281, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if a node is the first node in a branch path\n", + "description": "

Check if a node is the first node in a branch path

\n", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": { + "pos": 10852, + "end": 10858, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 10846, + "end": 10851, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id

\n" + }, + { + "tagName": { + "pos": 10877, + "end": 10883, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether the node is the first node in a branch path

\n" + } + ] + }, + { + "name": "isTransitionExist", + "args": [ + { + "name": "transitions", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "transition", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 322, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "transitions", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "transition", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "remove", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 13, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nUpdate the transitions to handle removing a node\n", + "description": "

Update the transitions to handle removing a node

\n", + "jsdoctags": [ + { + "name": { + "pos": 359, + "end": 365, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 353, + "end": 358, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id to remove

\n" + } + ] + }, + { + "name": "removeTransitionsOutOfGroup", + "args": [ + { + "name": "groupId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 461, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nRemove transition from nodes in the specified group that go out of the group\n", + "description": "

Remove transition from nodes in the specified group that go out of the group

\n", + "jsdoctags": [ + { + "name": "groupId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "updateBranchPathTakenConstraint", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentFromNodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentToNodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "newFromNodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "newToNodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 302, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nUpdate a node's branchPathTaken constraint's fromNodeId and toNodeId\n", + "description": "

Update a node's branchPathTaken constraint's fromNodeId and toNodeId

\n", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": { + "pos": 11406, + "end": 11410, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "node" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 11400, + "end": 11405, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

update the branch path taken constraints in this node

\n" + }, + { + "name": { + "pos": 11477, + "end": 11494, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "currentFromNodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 11471, + "end": 11476, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the current from node id

\n" + }, + { + "name": { + "pos": 11532, + "end": 11547, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "currentToNodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 11526, + "end": 11531, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the current to node id

\n" + }, + { + "name": { + "pos": 11583, + "end": 11596, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "newFromNodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 11577, + "end": 11582, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the new from node id

\n" + }, + { + "name": { + "pos": 11630, + "end": 11641, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "newToNodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 11624, + "end": 11629, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the new to node id

\n" + } + ] + }, + { + "name": "updateChildrenTransitionsIntoGroupWeAreMoving", + "args": [ + { + "name": "groupThatTransitionsToGroupWeAreMoving", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "groupIdWeAreMoving", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 357, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "groupThatTransitionsToGroupWeAreMoving", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "groupIdWeAreMoving", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "updateParentGroupStartId", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 254, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nUpdate the parent group start id if the node we are removing is the start id\n", + "description": "

Update the parent group start id if the node we are removing is the start id

\n", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": { + "pos": 9829, + "end": 9835, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 9823, + "end": 9828, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The node we are removing

\n" + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Injectable } from '@angular/core';\nimport { TeacherProjectService } from './teacherProjectService';\nimport { copy } from '../common/object/object';\n\n@Injectable()\nexport class RemoveNodeIdFromTransitionsService {\n constructor(private projectService: TeacherProjectService) {}\n\n /**\n * Update the transitions to handle removing a node\n * @param nodeId the node id to remove\n */\n remove(nodeId: string): void {\n const nodeToRemove = this.projectService.getNodeById(nodeId);\n const nodesByToNodeId = this.projectService.getNodesByToNodeId(nodeId);\n\n const nodeToRemoveTransitionLogic = nodeToRemove.transitionLogic;\n let nodeToRemoveTransitions = [];\n\n if (nodeToRemoveTransitionLogic != null && nodeToRemoveTransitionLogic.transitions != null) {\n nodeToRemoveTransitions = nodeToRemoveTransitionLogic.transitions;\n }\n\n const parentIdOfNodeToRemove = this.projectService.getParentGroupId(nodeId);\n this.updateParentGroupStartId(nodeId);\n\n for (let n = 0; n < nodesByToNodeId.length; n++) {\n const node = nodesByToNodeId[n];\n const parentIdOfFromNode = this.projectService.getParentGroupId(node.id);\n const transitionLogic = node.transitionLogic;\n\n if (transitionLogic != null) {\n const transitions = transitionLogic.transitions;\n for (let t = 0; t < transitions.length; t++) {\n const transition = transitions[t];\n if (nodeId === transition.to) {\n // we have found the transition to the node we are removing\n\n // copy the transitions from the node we are removing\n let transitionsCopy = copy(nodeToRemoveTransitions);\n\n /*\n * if the parent from group is different than the parent removing group\n * remove transitions that are to a node in a different group than\n * the parent removing group\n */\n\n if (parentIdOfFromNode != parentIdOfNodeToRemove) {\n for (let tc = 0; tc < transitionsCopy.length; tc++) {\n const tempTransition = transitionsCopy[tc];\n if (tempTransition != null) {\n const tempToNodeId = tempTransition.to;\n if (tempToNodeId != null) {\n const parentIdOfToNode = this.projectService.getParentGroupId(tempToNodeId);\n if (parentIdOfNodeToRemove != parentIdOfToNode) {\n // remove the transition\n transitionsCopy.splice(tc, 1);\n tc--;\n }\n }\n }\n }\n }\n\n if (this.isFirstNodeInBranchPath(nodeId)) {\n /*\n * Get the node ids that have a branchPathTaken\n * constraint from the before node and to the node\n * we are removing. If there are any, we need to\n * update the branchPathTaken constraint with the\n * next nodeId that comes after the node we are\n * removing.\n */\n const nodeIdsInBranch = this.projectService.getNodeIdsInBranch(node.id, nodeId);\n\n if (nodeIdsInBranch != null) {\n for (let nodeIdInBranch of nodeIdsInBranch) {\n const nodeInBranch = this.projectService.getNodeById(nodeIdInBranch);\n for (let transitionCopy of transitionsCopy) {\n if (transitionCopy != null) {\n const currentFromNodeId = node.id;\n const currentToNodeId = nodeId;\n const newFromNodeId = node.id;\n const newToNodeId = transitionCopy.to;\n\n /*\n * change the branch path taken constraint by changing\n * the toNodeId\n */\n this.updateBranchPathTakenConstraint(\n nodeInBranch,\n currentFromNodeId,\n currentToNodeId,\n newFromNodeId,\n newToNodeId\n );\n }\n }\n }\n }\n } else if (this.projectService.isBranchPoint(nodeId)) {\n /*\n * get all the branches that have the node we\n * are removing as the start point\n */\n const branches = this.projectService.getBranchesByBranchStartPointNodeId(nodeId);\n\n for (let branch of branches) {\n if (branch != null) {\n /*\n * get the branch paths. these paths do not\n * contain the start point or merge point.\n */\n const branchPaths = branch.paths;\n\n if (branchPaths != null) {\n for (let branchPath of branchPaths) {\n if (branchPath != null) {\n const currentFromNodeId = nodeId;\n const currentToNodeId = branchPath[0];\n const newFromNodeId = node.id;\n const newToNodeId = branchPath[0];\n for (let branchPathNodeId of branchPath) {\n const branchPathNode = this.projectService.getNodeById(branchPathNodeId);\n this.updateBranchPathTakenConstraint(\n branchPathNode,\n currentFromNodeId,\n currentToNodeId,\n newFromNodeId,\n newToNodeId\n );\n }\n }\n }\n }\n }\n }\n }\n\n // remove the transition to the node we are removing\n const transitionRemoved = transitions.splice(t, 1)[0];\n\n if (transitionsCopy != null) {\n let insertIndex = t;\n\n /*\n * loop through all the transitions from the node we are removing\n * and insert them into the transitions of the from node\n * e.g.\n * the node that comes before the node we are removing has these transitions\n * \"transitions\": [\n * {\n * \"to\": \"node4\"\n * },\n * {\n * \"to\": \"node6\"\n * }\n * ]\n *\n * we are removing node4. node4 has a transition to node5.\n *\n * the node that comes before the node we are removing now has these transitions\n * \"transitions\": [\n * {\n * \"to\": \"node5\"\n * },\n * {\n * \"to\": \"node6\"\n * }\n * ]\n */\n for (let transitionCopy of transitionsCopy) {\n if (!this.isTransitionExist(transitions, transitionCopy)) {\n const toNodeId = transitionCopy.to;\n if (\n this.projectService.isApplicationNode(node.id) &&\n this.projectService.isGroupNode(toNodeId) &&\n this.hasGroupStartId(toNodeId)\n ) {\n this.projectService.addToTransition(\n node,\n this.projectService.getGroupStartId(toNodeId)\n );\n } else {\n if (transitionRemoved.criteria != null) {\n transitionCopy.criteria = transitionRemoved.criteria;\n }\n transitions.splice(insertIndex, 0, transitionCopy);\n insertIndex++;\n }\n }\n }\n }\n t--;\n\n // check if the node we are moving is a group\n if (this.projectService.isGroupNode(nodeId)) {\n /*\n * we are moving a group so we need to update transitions that\n * go into the group\n */\n const groupIdWeAreMoving = nodeId;\n const groupThatTransitionsToGroupWeAreMoving = node;\n this.updateChildrenTransitionsIntoGroupWeAreMoving(\n groupThatTransitionsToGroupWeAreMoving,\n groupIdWeAreMoving\n );\n }\n }\n }\n\n if (\n transitions.length === 0 &&\n parentIdOfNodeToRemove != 'group0' &&\n parentIdOfNodeToRemove != this.projectService.getParentGroupId(node.id)\n ) {\n /*\n * the from node no longer has any transitions so we will make it transition to the\n * parent of the node we are removing\n */\n this.projectService.addToTransition(node, parentIdOfNodeToRemove);\n }\n\n if (this.projectService.isBranchPoint(nodeId)) {\n /*\n * the node we are deleting is a branch point so we to\n * copy the transition logic to the node that comes\n * before it\n */\n node.transitionLogic = copy(nodeToRemoveTransitionLogic);\n\n /*\n * set the transitions for the node that comes before\n * the one we are removing\n */\n node.transitionLogic.transitions = transitions;\n }\n }\n }\n\n if (nodeToRemoveTransitionLogic != null) {\n nodeToRemoveTransitionLogic.transitions = [];\n }\n\n if (this.projectService.isGroupNode(nodeId)) {\n this.removeTransitionsOutOfGroup(nodeId);\n }\n }\n\n /**\n * Update the parent group start id if the node we are removing is the start id\n * @param nodeId The node we are removing\n */\n private updateParentGroupStartId(nodeId: string): void {\n const parentGroup = this.projectService.getParentGroup(nodeId);\n if (parentGroup != null && parentGroup.startId === nodeId) {\n const transitions = this.projectService.getTransitionsFromNode(\n this.projectService.getNodeById(nodeId)\n );\n if (transitions.length > 0) {\n for (const transition of transitions) {\n const toNodeId = transition.to;\n // Make sure the to node id is in the same group because a step can transition to a step\n // in a different group. If the to node id is in a different group, we would not want to\n // use it as the start id of this group.\n if (this.projectService.getParentGroupId(toNodeId) === parentGroup.id) {\n parentGroup.startId = toNodeId;\n }\n }\n } else {\n parentGroup.startId = '';\n }\n }\n }\n\n /**\n * Check if a node is the first node in a branch path\n * @param nodeId the node id\n * @return whether the node is the first node in a branch path\n */\n private isFirstNodeInBranchPath(nodeId: string): boolean {\n for (const node of this.projectService.getNodes()) {\n if (node.transitionLogic?.transitions?.length > 1) {\n for (const transition of node.transitionLogic.transitions) {\n if (transition.to === nodeId) {\n return true;\n }\n }\n }\n }\n return false;\n }\n\n /**\n * Update a node's branchPathTaken constraint's fromNodeId and toNodeId\n * @param node update the branch path taken constraints in this node\n * @param currentFromNodeId the current from node id\n * @param currentToNodeId the current to node id\n * @param newFromNodeId the new from node id\n * @param newToNodeId the new to node id\n */\n private updateBranchPathTakenConstraint(\n node: any,\n currentFromNodeId: string,\n currentToNodeId: string,\n newFromNodeId: string,\n newToNodeId: string\n ): void {\n for (let constraint of node.constraints) {\n for (let removalCriterion of constraint.removalCriteria) {\n if (removalCriterion.name === 'branchPathTaken') {\n const params = removalCriterion.params;\n if (params.fromNodeId === currentFromNodeId && params.toNodeId === currentToNodeId) {\n params.fromNodeId = newFromNodeId;\n params.toNodeId = newToNodeId;\n }\n }\n }\n }\n }\n\n private isTransitionExist(transitions: any[], transition: any): boolean {\n for (const tempTransition of transitions) {\n if (tempTransition.from === transition.from && tempTransition.to === transition.to) {\n return true;\n }\n }\n return false;\n }\n\n private hasGroupStartId(nodeId: string): boolean {\n const startId = this.projectService.getGroupStartId(nodeId);\n return startId != null && startId != '';\n }\n\n /*\n * Update the step transitions that point into the group we are moving\n * For example\n * group1 has children node1 and node2 (node2 transitions to node3)\n * group2 has children node3 and node4 (node4 transitions to node5)\n * group3 has children node5 and node6\n * if we move group2 after group3 we will need to change the\n * transition from node2 to node3 and make node2 transition to node5\n * the result will be\n * group1 has children node1 and node2 (node2 transitions to node5)\n * group3 has children node5 and node6\n * group2 has children node3 and node4 (node4 transitions to node5)\n * note: the (node4 transition to node5) will be removed later\n * when is called removeTransitionsOutOfGroup\n * note: when group2 is added in a later function call, we will add\n * the node6 to node3 transition\n * @param groupThatTransitionsToGroupWeAreMoving the group object\n * that transitions to the group we are moving. we may need to update\n * the transitions of this group's children.\n * @param groupIdWeAreMoving the group id of the group we are moving\n */\n private updateChildrenTransitionsIntoGroupWeAreMoving(\n groupThatTransitionsToGroupWeAreMoving: any,\n groupIdWeAreMoving: string\n ): void {\n if (groupThatTransitionsToGroupWeAreMoving != null && groupIdWeAreMoving != null) {\n const group = this.projectService.getNodeById(groupIdWeAreMoving);\n if (group != null) {\n // get the transitions of the node we are removing\n const nodeToRemoveTransitionLogic = group.transitionLogic;\n let nodeToRemoveTransitions = [];\n\n if (\n nodeToRemoveTransitionLogic != null &&\n nodeToRemoveTransitionLogic.transitions != null\n ) {\n nodeToRemoveTransitions = nodeToRemoveTransitionLogic.transitions;\n }\n\n if (nodeToRemoveTransitions.length == 0) {\n /*\n * The group we are moving is the last group in the project\n * and does not have any transitions. We will loop through\n * all the nodes that transition into this group and remove\n * those transitions.\n */\n\n // get child ids of the group that comes before the group we are moving\n const childIds = groupThatTransitionsToGroupWeAreMoving.ids;\n\n if (childIds != null) {\n for (let childId of childIds) {\n const transitionsFromChild = this.projectService.getTransitionsByFromNodeId(childId);\n if (transitionsFromChild != null) {\n for (let tfc = 0; tfc < transitionsFromChild.length; tfc++) {\n const transitionFromChild = transitionsFromChild[tfc];\n if (transitionFromChild != null) {\n const toNodeId = transitionFromChild.to;\n const toNodeIdParentGroupId = this.projectService.getParentGroupId(toNodeId);\n\n if (groupIdWeAreMoving === toNodeIdParentGroupId) {\n // the transition is to a child in the group we are moving\n transitionsFromChild.splice(tfc, 1);\n\n /*\n * move the counter back one because we have just removed an\n * element from the array\n */\n tfc--;\n }\n }\n }\n }\n }\n }\n } else if (nodeToRemoveTransitions.length > 0) {\n // get the first group that comes after the group we are removing\n const firstNodeToRemoveTransition = nodeToRemoveTransitions[0];\n const firstNodeToRemoveTransitionToNodeId = firstNodeToRemoveTransition.to;\n\n if (this.projectService.isGroupNode(firstNodeToRemoveTransitionToNodeId)) {\n // get the group that comes after the group we are moving\n const groupNode = this.projectService.getNodeById(firstNodeToRemoveTransitionToNodeId);\n\n // get child ids of the group that comes before the group we are moving\n const childIds = groupThatTransitionsToGroupWeAreMoving.ids;\n\n if (childIds != null) {\n for (let childId of childIds) {\n const transitionsFromChild =\n this.projectService.getTransitionsByFromNodeId(childId);\n if (transitionsFromChild != null) {\n for (let transitionFromChild of transitionsFromChild) {\n if (transitionFromChild != null) {\n const toNodeId = transitionFromChild.to;\n\n // get the parent group id of the toNodeId\n const toNodeIdParentGroupId = this.projectService.getParentGroupId(toNodeId);\n\n if (groupIdWeAreMoving === toNodeIdParentGroupId) {\n // the transition is to a child in the group we are moving\n\n if (groupNode.startId == null || groupNode.startId === '') {\n // change the transition to point to the after group\n transitionFromChild.to = firstNodeToRemoveTransitionToNodeId;\n } else {\n // change the transition to point to the start id of the after group\n transitionFromChild.to = groupNode.startId;\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n\n /**\n * Remove transition from nodes in the specified group that go out of the group\n * @param nodeId the group id\n */\n removeTransitionsOutOfGroup(groupId: string): void {\n const group = this.projectService.getNodeById(groupId);\n for (const childId of group.ids) {\n const transitions = this.projectService.getTransitionsByFromNodeId(childId);\n for (let t = 0; t < transitions.length; t++) {\n const transition = transitions[t];\n const parentGroupId = this.projectService.getParentGroupId(transition.to);\n if (parentGroupId != groupId) {\n // this is a transition that goes out of the specified group\n transitions.splice(t, 1);\n t--; // so it won't skip the next element\n }\n }\n }\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 6, + "jsdoctags": [ + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "type": "injectable" + }, + { + "name": "RubricEventService", + "id": "injectable-RubricEventService-1706743d84462b3ce4231243e73130490132500dcdce473bd7e363ff0a7218c592bfd589278bc7822bbcbb85489ec91865a1abf877f90f1a635b942ab50d437e", + "file": "src/assets/wise5/components/common/cRater/crater-rubric/RubricEventService.ts", + "properties": [ + { + "name": "isRubricOpen", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 5, + "modifierKind": [ + 123 + ] + } + ], + "methods": [ + { + "name": "getIsRubricOpen", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 7, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "rubricToggled", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 11, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Injectable, signal } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class RubricEventService {\n private isRubricOpen: boolean;\n\n getIsRubricOpen(): boolean {\n return this.isRubricOpen;\n }\n\n rubricToggled(): void {\n this.isRubricOpen = !this.isRubricOpen;\n }\n}\n", + "extends": [], + "type": "injectable" + }, + { + "name": "RunStatusService", + "id": "injectable-RunStatusService-02ce149cb511604370555ad19350add3ae1af8006b4809fbfa1e3b5b32f41e66feee9cfb72dbf75c9a5ae1625ab8b5574ac05099f486694a01e1e47c48466462", + "file": "src/assets/wise5/services/runStatusService.ts", + "properties": [ + { + "name": "runStatus", + "deprecated": false, + "deprecationMessage": "", + "type": "RunStatus", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "modifierKind": [ + 123 + ] + } + ], + "methods": [ + { + "name": "createRunStatus", + "args": [], + "optional": false, + "returnType": "RunStatus", + "typeParameters": [], + "line": 81, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getRunStatus", + "args": [], + "optional": false, + "returnType": "RunStatus", + "typeParameters": [], + "line": 62, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "initializePeriods", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 37, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "mergeConfigAndRunStatusPeriods", + "args": [ + { + "name": "configPeriods", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "runStatusPeriods", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 51, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "configPeriods", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "runStatusPeriods", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "retrieveRunStatus", + "args": [], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 24, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "saveRunStatus", + "args": [], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 70, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "setRunStatus", + "args": [ + { + "name": "runStatus", + "type": "RunStatus", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 66, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "runStatus", + "type": "RunStatus", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { HttpClient, HttpParams } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable, tap } from 'rxjs';\nimport { ConfigService } from './configService';\nimport { RunStatus } from '../common/RunStatus';\nimport { TeacherDataService } from './teacherDataService';\n\n@Injectable()\nexport class RunStatusService {\n private runStatus: RunStatus;\n\n constructor(\n private configService: ConfigService,\n private dataService: TeacherDataService,\n private http: HttpClient\n ) {\n this.configService.configRetrieved$.subscribe(() => {\n if (this.configService.isClassroomMonitor()) {\n this.retrieveRunStatus();\n }\n });\n }\n\n retrieveRunStatus(): Observable {\n const options = {\n params: new HttpParams().set('runId', this.configService.getConfigParam('runId')),\n headers: { 'Content-Type': 'application/x-www-form-urlencoded' }\n };\n return this.http.get(this.configService.getConfigParam('runStatusURL'), options).pipe(\n tap((runStatus: RunStatus) => {\n this.runStatus = runStatus;\n this.initializePeriods();\n })\n );\n }\n\n private initializePeriods(): void {\n const periods = [...this.configService.getPeriods()];\n if (this.dataService.getCurrentPeriod() == null) {\n this.dataService.setCurrentPeriod(periods[0]);\n }\n periods.unshift({ periodId: -1, periodName: $localize`All Periods` });\n let mergedPeriods = periods;\n if (this.runStatus.periods != null) {\n mergedPeriods = this.mergeConfigAndRunStatusPeriods(periods, this.runStatus.periods);\n }\n this.runStatus.periods = mergedPeriods;\n this.dataService.setPeriods(mergedPeriods);\n }\n\n private mergeConfigAndRunStatusPeriods(configPeriods: any[], runStatusPeriods: any[]): any[] {\n const mergedPeriods = [];\n configPeriods.forEach((configPeriod) => {\n const runStatusPeriod = runStatusPeriods.find(\n (runStatusPeriod) => runStatusPeriod.periodId === configPeriod.periodId\n );\n mergedPeriods.push(runStatusPeriod != null ? runStatusPeriod : configPeriod);\n });\n return mergedPeriods;\n }\n\n getRunStatus(): RunStatus {\n return this.runStatus;\n }\n\n setRunStatus(runStatus: RunStatus): void {\n this.runStatus = runStatus;\n }\n\n saveRunStatus(): Observable {\n const url = this.configService.getConfigParam('runStatusURL');\n const body = new HttpParams()\n .set('runId', this.configService.getConfigParam('runId'))\n .set('status', JSON.stringify(this.runStatus));\n const options = {\n headers: { 'Content-Type': 'application/x-www-form-urlencoded' }\n };\n return this.http.post(url, body, options);\n }\n\n createRunStatus(): RunStatus {\n const periods = this.configService.getPeriods();\n periods.forEach((period) => (period.paused = false));\n return {\n runId: this.configService.getConfigParam('runId'),\n periods: periods\n };\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 10, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "type": "injectable" + }, + { + "name": "SessionService", + "id": "injectable-SessionService-7298fdd9ec3583223e9de2aa04d6779039daf70fae8344b7b82856c5ce9d78128352276c885060c8c5e59ce09359dca59d6ecf8bcd3d8d0b15f195e2155bbb0b", + "file": "src/assets/wise5/services/sessionService.ts", + "properties": [ + { + "name": "checkMouseEventInterval", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "modifierKind": [ + 123 + ] + }, + { + "name": "defaultForceLogoutAfterWarningInterval", + "defaultValue": "this.convertMinutesToSeconds(5)", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "modifierKind": [ + 123 + ] + }, + { + "name": "exit$", + "defaultValue": "this.exitSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "Observable", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "modifierKind": [ + 125 + ] + }, + { + "name": "exitSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "modifierKind": [ + 123 + ] + }, + { + "name": "forceLogoutAfterWarningInterval", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "modifierKind": [ + 123 + ] + }, + { + "name": "lastActivityTimestamp", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 123 + ] + }, + { + "name": "logOut$", + "defaultValue": "this.logOutSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 21, + "modifierKind": [ + 125 + ] + }, + { + "name": "logOutSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 20, + "modifierKind": [ + 123 + ] + }, + { + "name": "sessionActive", + "defaultValue": "true", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 22, + "modifierKind": [ + 123 + ] + }, + { + "name": "showSessionWarning$", + "defaultValue": "this.showSessionWarningSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "Observable", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "modifierKind": [ + 125 + ] + }, + { + "name": "showSessionWarningSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "modifierKind": [ + 123 + ] + }, + { + "name": "showWarningInterval", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "modifierKind": [ + 123 + ] + }, + { + "name": "warningVisible", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "modifierKind": [ + 123 + ] + } + ], + "methods": [ + { + "name": "broadcastExit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 52, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "broadcastShowSessionWarning", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 168, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "calculateIntervals", + "args": [ + { + "name": "sessionTimeout", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 29, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "sessionTimeout", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "checkForLogout", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 119, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "checkIfSessionIsActive", + "args": [], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 178, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "checkMouseEvent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 111, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "closeWarningAndRenewSession", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 172, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "convertMinutesToMilliseconds", + "args": [ + { + "name": "minutes", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 96, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "minutes", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "convertMinutesToSeconds", + "args": [ + { + "name": "minutes", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 92, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "minutes", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "forceLogOut", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 159, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getInactiveTimeInMilliseconds", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 155, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "getInactiveTimeInSeconds", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 151, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "goHome", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 45, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "initializeSession", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 75, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isActiveWithinLastMinute", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 132, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isAuthenticated", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 41, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isInactiveLongEnoughToForceLogout", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 136, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isInactiveLongEnoughToWarn", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 143, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isSessionActive", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 71, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isShowingWarning", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 147, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "logOut", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 56, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "logOutWithoutHomeRedirect", + "args": [], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 64, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "mouseMoved", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 103, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nNote: This does not get called when the warning popup is being shown.\n", + "description": "

Note: This does not get called when the warning popup is being shown.

\n" + }, + { + "name": "renewSession", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 182, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "showWarning", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 163, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "startCheckMouseEvent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 86, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "updateLastActivityTimestamp", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 107, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "'use strict';\n\nimport { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { ConfigService } from './configService';\nimport { map, Observable, Subject } from 'rxjs';\n\n@Injectable()\nexport class SessionService {\n private warningVisible: boolean = false;\n private defaultForceLogoutAfterWarningInterval: number = this.convertMinutesToSeconds(5);\n private forceLogoutAfterWarningInterval: number;\n private showWarningInterval: number;\n private checkMouseEventInterval: number;\n private lastActivityTimestamp: number;\n private exitSource: Subject = new Subject();\n public exit$: Observable = this.exitSource.asObservable();\n private showSessionWarningSource: Subject = new Subject();\n public showSessionWarning$: Observable = this.showSessionWarningSource.asObservable();\n private logOutSource: Subject = new Subject();\n public logOut$ = this.logOutSource.asObservable();\n private sessionActive: boolean = true;\n\n constructor(\n protected http: HttpClient,\n protected configService: ConfigService\n ) {}\n\n calculateIntervals(sessionTimeout: number): any {\n const forceLogoutAfterWarningInterval: number = Math.min(\n sessionTimeout * 0.1,\n this.defaultForceLogoutAfterWarningInterval\n );\n const showWarningInterval: number = sessionTimeout - forceLogoutAfterWarningInterval;\n return {\n showWarningInterval: showWarningInterval,\n forceLogoutAfterWarningInterval: forceLogoutAfterWarningInterval\n };\n }\n\n isAuthenticated(): boolean {\n return this.configService.getConfigParam('userType') != 'none';\n }\n\n goHome() {\n this.broadcastExit();\n window.location.href = this.isAuthenticated()\n ? `/${this.configService.getConfigParam('userType')}`\n : '/';\n }\n\n broadcastExit() {\n this.exitSource.next();\n }\n\n logOut() {\n this.broadcastExit();\n this.http.get(this.configService.getSessionLogOutURL()).subscribe(() => {\n this.sessionActive = false;\n window.location.href = '/';\n });\n }\n\n logOutWithoutHomeRedirect(): Observable {\n this.broadcastExit();\n return this.http\n .get(this.configService.getSessionLogOutURL())\n .pipe(map(() => (this.sessionActive = false)));\n }\n\n isSessionActive(): boolean {\n return this.sessionActive;\n }\n\n initializeSession() {\n const intervals: any = this.calculateIntervals(\n this.configService.getConfigParam('sessionTimeout')\n );\n this.showWarningInterval = intervals.showWarningInterval;\n this.forceLogoutAfterWarningInterval = intervals.forceLogoutAfterWarningInterval;\n this.checkMouseEventInterval = this.convertMinutesToMilliseconds(1);\n this.updateLastActivityTimestamp();\n this.startCheckMouseEvent();\n }\n\n startCheckMouseEvent(): void {\n setInterval(() => {\n this.checkMouseEvent();\n }, this.checkMouseEventInterval);\n }\n\n private convertMinutesToSeconds(minutes: number): number {\n return minutes * 60;\n }\n\n private convertMinutesToMilliseconds(minutes: number): number {\n return minutes * 60 * 1000;\n }\n\n /**\n * Note: This does not get called when the warning popup is being shown.\n */\n mouseMoved(): void {\n this.updateLastActivityTimestamp();\n }\n\n private updateLastActivityTimestamp(): void {\n this.lastActivityTimestamp = new Date().getTime();\n }\n\n checkMouseEvent() {\n if (this.isActiveWithinLastMinute()) {\n this.renewSession();\n } else {\n this.checkForLogout();\n }\n }\n\n checkForLogout(): void {\n if (this.isInactiveLongEnoughToForceLogout()) {\n this.checkIfSessionIsActive().subscribe((isSessionActive) => {\n this.sessionActive = isSessionActive;\n if (!isSessionActive) {\n this.forceLogOut();\n }\n });\n } else if (this.isInactiveLongEnoughToWarn() && !this.isShowingWarning()) {\n this.showWarning();\n }\n }\n\n isActiveWithinLastMinute(): boolean {\n return new Date().getTime() - this.lastActivityTimestamp < this.convertMinutesToMilliseconds(1);\n }\n\n isInactiveLongEnoughToForceLogout(): boolean {\n return (\n this.getInactiveTimeInSeconds() >=\n this.showWarningInterval + this.forceLogoutAfterWarningInterval\n );\n }\n\n isInactiveLongEnoughToWarn(): boolean {\n return this.getInactiveTimeInSeconds() >= this.showWarningInterval;\n }\n\n isShowingWarning(): boolean {\n return this.warningVisible;\n }\n\n private getInactiveTimeInSeconds(): number {\n return Math.floor(this.getInactiveTimeInMilliseconds() / 1000);\n }\n\n private getInactiveTimeInMilliseconds(): number {\n return new Date().getTime() - this.lastActivityTimestamp;\n }\n\n forceLogOut(): void {\n this.logOutSource.next();\n }\n\n showWarning(): void {\n this.warningVisible = true;\n this.broadcastShowSessionWarning();\n }\n\n private broadcastShowSessionWarning(): void {\n this.showSessionWarningSource.next();\n }\n\n closeWarningAndRenewSession(): void {\n this.warningVisible = false;\n this.updateLastActivityTimestamp();\n this.renewSession();\n }\n\n checkIfSessionIsActive(): Observable {\n return this.http.get(this.configService.getConfigParam('renewSessionURL'));\n }\n\n renewSession(): void {\n this.checkIfSessionIsActive().subscribe((isSessionActive) => {\n if (!isSessionActive) {\n this.logOut();\n }\n });\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 22, + "jsdoctags": [ + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "type": "injectable" + }, + { + "name": "ShowGroupWorkService", + "id": "injectable-ShowGroupWorkService-3cd6a1e0680d6e52fa937aa8a64f013f7a99e9b0ddaa5d6bb77b67da105de2b9f836af7f20ecb2a34cb8b6a7bd55727694945aeac585f9416fb2dfb42d26e259", + "file": "src/assets/wise5/components/showGroupWork/showGroupWorkService.ts", + "properties": [ + { + "name": "notifyConnectedComponentSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "notifyConnectedComponentSource$", + "defaultValue": "this.notifyConnectedComponentSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "requestComponentStateSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "requestComponentStateSource$", + "defaultValue": "this.requestComponentStateSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "sendComponentStateSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "sendComponentStateSource$", + "defaultValue": "this.sendComponentStateSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "ComponentService" + } + } + ], + "methods": [ + { + "name": "createComponent", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 10, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getComponentTypeLabel", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 6, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "componentHasCorrectAnswer", + "args": [ + { + "name": "component", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 147, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "component", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "componentHasWork", + "args": [ + { + "name": "component", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 105, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nWhether this component generates student work\nis not provided, we will use the default value of whether the\ncomponent type usually has work.\n", + "description": "

Whether this component generates student work\nis not provided, we will use the default value of whether the\ncomponent type usually has work.

\n", + "jsdoctags": [ + { + "name": { + "pos": 3060, + "end": 3069, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "component" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3054, + "end": 3059, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

(optional) the component object. if the component object\nis not provided, we will use the default value of whether the\ncomponent type usually has work.

\n" + }, + { + "tagName": { + "pos": 3238, + "end": 3244, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether this component generates student work

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "componentStateHasStudentWork", + "args": [ + { + "name": "componentState", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentContent", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 118, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if the component state has student work. Sometimes a component\nstate may be created if the student visits a component but doesn't\nactually perform any work. This is where we will check if the student\nactually performed any work.\n", + "description": "

Check if the component state has student work. Sometimes a component\nstate may be created if the student visits a component but doesn't\nactually perform any work. This is where we will check if the student\nactually performed any work.

\n", + "jsdoctags": [ + { + "name": { + "pos": 3634, + "end": 3648, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3628, + "end": 3633, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component state object

\n" + }, + { + "name": { + "pos": 3688, + "end": 3704, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentContent" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3682, + "end": 3687, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component content

\n" + }, + { + "tagName": { + "pos": 3733, + "end": 3739, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether the component state has any work

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "componentUsesSaveButton", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 135, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nWhether this component uses a save button\n", + "description": "

Whether this component uses a save button

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 4173, + "end": 4179, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether this component uses a save button

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "componentUsesSubmitButton", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 143, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nWhether this component uses a submit button\n", + "description": "

Whether this component uses a submit button

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 4351, + "end": 4357, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether this component uses a submit button

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "displayAnnotation", + "args": [ + { + "name": "componentContent", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "annotation", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 94, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if we need to display the annotation to the student\n", + "description": "

Check if we need to display the annotation to the student

\n", + "jsdoctags": [ + { + "name": { + "pos": 2753, + "end": 2769, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentContent" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2747, + "end": 2752, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component content

\n" + }, + { + "name": { + "pos": 2804, + "end": 2814, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "annotation" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2798, + "end": 2803, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the annotation

\n" + }, + { + "tagName": { + "pos": 2836, + "end": 2843, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

whether we need to display the annotation to the student

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getDomIdEnding", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 18, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getElementId", + "args": [ + { + "name": "domIdBeginning", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "domIdEnding", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "domIdBeginning", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "domIdEnding", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getStudentDataString", + "args": [ + { + "name": "componentState", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 127, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the human readable student data string\n", + "description": "

Get the human readable student data string

\n", + "jsdoctags": [ + { + "name": { + "pos": 3953, + "end": 3967, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3947, + "end": 3952, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component state

\n" + }, + { + "tagName": { + "pos": 3994, + "end": 4000, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

a human readable student data string

\n", + "returnType": "string" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "hasNodeEnteredEvent", + "args": [ + { + "name": "nodeEvents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 155, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeEvents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "isCompleted", + "args": [ + { + "name": "component", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentStates", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeEvents", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "node", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 84, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if the component was completed\n", + "description": "

Check if the component was completed

\n", + "jsdoctags": [ + { + "name": { + "pos": 2298, + "end": 2307, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "component" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2292, + "end": 2297, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component object

\n" + }, + { + "name": { + "pos": 2341, + "end": 2356, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentStates" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2335, + "end": 2340, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component states for the specific component

\n" + }, + { + "name": { + "pos": 2417, + "end": 2427, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeEvents" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2411, + "end": 2416, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the events for the parent node of the component

\n" + }, + { + "name": { + "pos": 2488, + "end": 2492, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "node" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2482, + "end": 2487, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

parent node of the component

\n" + }, + { + "tagName": { + "pos": 2528, + "end": 2535, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

whether the component was completed

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "isSubmitRequired", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 151, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "notifyConnectedComponentSubscribers", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 42, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "requestComponentState", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 30, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "sendComponentState", + "args": [ + { + "name": "componentStateWrapper", + "type": "ComponentStateWrapper", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 38, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentStateWrapper", + "type": "ComponentStateWrapper", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Injectable } from '@angular/core';\nimport { ComponentService } from '../componentService';\n\n@Injectable()\nexport class ShowGroupWorkService extends ComponentService {\n getComponentTypeLabel() {\n return $localize`Show Group Work`;\n }\n\n createComponent() {\n const component: any = super.createComponent();\n component.type = 'ShowGroupWork';\n component.showWorkNodeId = '';\n component.showWorkComponentId = '';\n component.peerGroupingTag = '';\n component.isShowMyWork = true;\n component.layout = 'column';\n return component;\n }\n}\n", + "extends": [ + "ComponentService" + ], + "type": "injectable" + }, + { + "name": "ShowMyWorkService", + "id": "injectable-ShowMyWorkService-565981a170d2206ae224775bd71230467930eab35af2b4780129080019c3b5b461592c42e575abc2d2be08ac95853befdb568b5bcc0945f5c8f46726fa0f0137", + "file": "src/assets/wise5/components/showMyWork/showMyWorkService.ts", + "properties": [ + { + "name": "notifyConnectedComponentSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "notifyConnectedComponentSource$", + "defaultValue": "this.notifyConnectedComponentSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "requestComponentStateSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "requestComponentStateSource$", + "defaultValue": "this.requestComponentStateSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "sendComponentStateSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "sendComponentStateSource$", + "defaultValue": "this.sendComponentStateSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "ComponentService" + } + } + ], + "methods": [ + { + "name": "createComponent", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 10, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getComponentTypeLabel", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 6, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "componentHasCorrectAnswer", + "args": [ + { + "name": "component", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 147, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "component", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "componentHasWork", + "args": [ + { + "name": "component", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 105, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nWhether this component generates student work\nis not provided, we will use the default value of whether the\ncomponent type usually has work.\n", + "description": "

Whether this component generates student work\nis not provided, we will use the default value of whether the\ncomponent type usually has work.

\n", + "jsdoctags": [ + { + "name": { + "pos": 3060, + "end": 3069, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "component" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3054, + "end": 3059, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

(optional) the component object. if the component object\nis not provided, we will use the default value of whether the\ncomponent type usually has work.

\n" + }, + { + "tagName": { + "pos": 3238, + "end": 3244, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether this component generates student work

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "componentStateHasStudentWork", + "args": [ + { + "name": "componentState", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentContent", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 118, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if the component state has student work. Sometimes a component\nstate may be created if the student visits a component but doesn't\nactually perform any work. This is where we will check if the student\nactually performed any work.\n", + "description": "

Check if the component state has student work. Sometimes a component\nstate may be created if the student visits a component but doesn't\nactually perform any work. This is where we will check if the student\nactually performed any work.

\n", + "jsdoctags": [ + { + "name": { + "pos": 3634, + "end": 3648, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3628, + "end": 3633, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component state object

\n" + }, + { + "name": { + "pos": 3688, + "end": 3704, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentContent" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3682, + "end": 3687, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component content

\n" + }, + { + "tagName": { + "pos": 3733, + "end": 3739, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether the component state has any work

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "componentUsesSaveButton", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 135, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nWhether this component uses a save button\n", + "description": "

Whether this component uses a save button

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 4173, + "end": 4179, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether this component uses a save button

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "componentUsesSubmitButton", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 143, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nWhether this component uses a submit button\n", + "description": "

Whether this component uses a submit button

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 4351, + "end": 4357, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether this component uses a submit button

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "displayAnnotation", + "args": [ + { + "name": "componentContent", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "annotation", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 94, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if we need to display the annotation to the student\n", + "description": "

Check if we need to display the annotation to the student

\n", + "jsdoctags": [ + { + "name": { + "pos": 2753, + "end": 2769, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentContent" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2747, + "end": 2752, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component content

\n" + }, + { + "name": { + "pos": 2804, + "end": 2814, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "annotation" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2798, + "end": 2803, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the annotation

\n" + }, + { + "tagName": { + "pos": 2836, + "end": 2843, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

whether we need to display the annotation to the student

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getDomIdEnding", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 18, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getElementId", + "args": [ + { + "name": "domIdBeginning", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "domIdEnding", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "domIdBeginning", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "domIdEnding", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getStudentDataString", + "args": [ + { + "name": "componentState", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 127, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the human readable student data string\n", + "description": "

Get the human readable student data string

\n", + "jsdoctags": [ + { + "name": { + "pos": 3953, + "end": 3967, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3947, + "end": 3952, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component state

\n" + }, + { + "tagName": { + "pos": 3994, + "end": 4000, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

a human readable student data string

\n", + "returnType": "string" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "hasNodeEnteredEvent", + "args": [ + { + "name": "nodeEvents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 155, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeEvents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "isCompleted", + "args": [ + { + "name": "component", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentStates", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeEvents", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "node", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 84, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if the component was completed\n", + "description": "

Check if the component was completed

\n", + "jsdoctags": [ + { + "name": { + "pos": 2298, + "end": 2307, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "component" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2292, + "end": 2297, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component object

\n" + }, + { + "name": { + "pos": 2341, + "end": 2356, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentStates" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2335, + "end": 2340, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component states for the specific component

\n" + }, + { + "name": { + "pos": 2417, + "end": 2427, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeEvents" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2411, + "end": 2416, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the events for the parent node of the component

\n" + }, + { + "name": { + "pos": 2488, + "end": 2492, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "node" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2482, + "end": 2487, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

parent node of the component

\n" + }, + { + "tagName": { + "pos": 2528, + "end": 2535, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

whether the component was completed

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "isSubmitRequired", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 151, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "notifyConnectedComponentSubscribers", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 42, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "requestComponentState", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 30, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "sendComponentState", + "args": [ + { + "name": "componentStateWrapper", + "type": "ComponentStateWrapper", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 38, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentStateWrapper", + "type": "ComponentStateWrapper", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Injectable } from '@angular/core';\nimport { ComponentService } from '../componentService';\n\n@Injectable()\nexport class ShowMyWorkService extends ComponentService {\n getComponentTypeLabel() {\n return $localize`Show Student Work`;\n }\n\n createComponent() {\n const component: any = super.createComponent();\n component.type = 'ShowMyWork';\n component.showWorkNodeId = '';\n component.showWorkComponentId = '';\n return component;\n }\n}\n", + "extends": [ + "ComponentService" + ], + "type": "injectable" + }, + { + "name": "SpaceService", + "id": "injectable-SpaceService-d39f23a92ad89b4329b90a09766d7fc7af0e4e6a9af7d65e66b117b5e1678dbee5e1e5975e9eb732d04148a589e3de45108537908ab4f512b38f9f9f9dcc81c5", + "file": "src/assets/wise5/services/spaceService.ts", + "properties": [], + "methods": [ + { + "name": "addSpace", + "args": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "name", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isPublic", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "true" + }, + { + "name": "isShowInNotebook", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "true" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 24, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "name", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "isPublic", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "true", + "tagName": { + "text": "param" + } + }, + { + "name": "isShowInNotebook", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "true", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createSpace", + "args": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "name", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isPublic", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "true" + }, + { + "name": "isShowInNotebook", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "true" + } + ], + "optional": false, + "returnType": "{ id: string; name: string; isPublic: boolean; isShowInNotebook: boolean; }", + "typeParameters": [], + "line": 10, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "name", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "isPublic", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "true", + "tagName": { + "text": "param" + } + }, + { + "name": "isShowInNotebook", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "true", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "removeSpace", + "args": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 28, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "'use strict';\n\nimport { Injectable } from '@angular/core';\nimport { TeacherProjectService } from './teacherProjectService';\n\n@Injectable()\nexport class SpaceService {\n constructor(private TeacherProjectService: TeacherProjectService) {}\n\n createSpace(\n id: string,\n name: string,\n isPublic: boolean = true,\n isShowInNotebook: boolean = true\n ) {\n return {\n id: id,\n name: name,\n isPublic: isPublic,\n isShowInNotebook: isShowInNotebook\n };\n }\n\n addSpace(id: string, name: string, isPublic: boolean = true, isShowInNotebook: boolean = true) {\n this.TeacherProjectService.addSpace(this.createSpace(id, name, isPublic, isShowInNotebook));\n }\n\n removeSpace(id: string) {\n this.TeacherProjectService.removeSpace(id);\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "TeacherProjectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 7, + "jsdoctags": [ + { + "name": "TeacherProjectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "type": "injectable" + }, + { + "name": "StompService", + "id": "injectable-StompService-5f23b6b907931ad514f8ddb79c22d541d9b36ce7f7888db29bd0760f93f092c39ef607c55f0e849c6fa12ec22183863580cb182ba5dc9d7cc1716ca1674fe460", + "file": "src/assets/wise5/services/stompService.ts", + "properties": [ + { + "name": "periodMessage$", + "deprecated": false, + "deprecationMessage": "", + "type": "Observable", + "indexKey": "", + "optional": false, + "description": "", + "line": 10 + }, + { + "name": "rxStomp", + "defaultValue": "new RxStomp()", + "deprecated": false, + "deprecationMessage": "", + "type": "RxStomp", + "indexKey": "", + "optional": false, + "description": "", + "line": 9 + }, + { + "name": "workgroupMessage$", + "deprecated": false, + "deprecationMessage": "", + "type": "Observable", + "indexKey": "", + "optional": false, + "description": "", + "line": 11 + } + ], + "methods": [ + { + "name": "initialize", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 15, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "initializeStomp", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 20, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "subscribeToMessages", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 27, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Injectable } from '@angular/core';\nimport { RxStomp } from '@stomp/rx-stomp';\nimport { Message } from '@stomp/stompjs';\nimport { Observable } from 'rxjs';\nimport { ConfigService } from './configService';\n\n@Injectable()\nexport class StompService {\n rxStomp: RxStomp = new RxStomp();\n periodMessage$: Observable;\n workgroupMessage$: Observable;\n\n constructor(private configService: ConfigService) {}\n\n initialize(): void {\n this.initializeStomp();\n this.subscribeToMessages();\n }\n\n private initializeStomp(): void {\n this.rxStomp.configure({\n brokerURL: this.configService.getWebSocketURL()\n });\n this.rxStomp.activate();\n }\n\n private subscribeToMessages(): void {\n this.periodMessage$ = this.rxStomp.watch(\n `/topic/classroom/${this.configService.getRunId()}/${this.configService.getPeriodId()}`\n );\n this.workgroupMessage$ = this.rxStomp.watch(\n `/topic/workgroup/${this.configService.getWorkgroupId()}`\n );\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 11, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "type": "injectable" + }, + { + "name": "StudentAssetService", + "id": "injectable-StudentAssetService-ca7d797a8ec46e0592172157a758029394aad09de9d5234b092b99d2e10a446abf4348cbbf114ae6f92811efb94cc2bdb33c56e607b5e0c2d9899c53da4451cc", + "file": "src/assets/wise5/services/studentAssetService.ts", + "properties": [ + { + "name": "allAssets", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 13 + }, + { + "name": "attachStudentAsset$", + "defaultValue": "this.attachStudentAssetSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "Observable", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 125 + ] + }, + { + "name": "attachStudentAssetSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "modifierKind": [ + 123 + ] + } + ], + "methods": [ + { + "name": "broadcastAttachStudentAsset", + "args": [ + { + "name": "component", + "type": "Component", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "asset", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 209, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "component", + "type": "Component", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "asset", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "copyAssetForReference", + "args": [ + { + "name": "studentAsset", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 151, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentAsset", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "deleteAsset", + "args": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 186, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getAssetById", + "args": [ + { + "name": "assetId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 19, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "assetId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getAssetContent", + "args": [ + { + "name": "asset", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 64, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "asset", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getFileNameFromAsset", + "args": [ + { + "name": "asset", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 81, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "asset", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isAudio", + "args": [ + { + "name": "asset", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 77, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "asset", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isImage", + "args": [ + { + "name": "asset", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 73, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "asset", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "retrieveAssets", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 28, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "setAssetTypeAndIconURL", + "args": [ + { + "name": "asset", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 137, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "asset", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "uploadAsset", + "args": [ + { + "name": "file", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 89, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "file", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "'use strict';\n\nimport { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { ConfigService } from './configService';\nimport { Observable, Subject } from 'rxjs';\nimport { StudentAssetRequest } from '../vle/studentAsset/StudentAssetRequest';\nimport { isAudio, isImage } from '../common/file/file';\nimport { Component } from '../common/Component';\n\n@Injectable()\nexport class StudentAssetService {\n allAssets = [];\n private attachStudentAssetSource: Subject = new Subject();\n public attachStudentAsset$: Observable = this.attachStudentAssetSource.asObservable();\n\n constructor(private http: HttpClient, private ConfigService: ConfigService) {}\n\n getAssetById(assetId) {\n for (const asset of this.allAssets) {\n if (asset.id === assetId) {\n return asset;\n }\n }\n return null;\n }\n\n retrieveAssets() {\n if (this.ConfigService.isPreview()) {\n this.allAssets = [];\n return Promise.resolve(this.allAssets);\n } else {\n return this.http\n .get(`${this.ConfigService.getStudentAssetsURL()}/${this.ConfigService.getWorkgroupId()}`)\n .toPromise()\n .then((assets: any) => {\n this.allAssets = [];\n const studentUploadsBaseURL = this.ConfigService.getStudentUploadsBaseURL();\n for (const asset of assets) {\n if (\n !asset.isReferenced &&\n asset.serverDeleteTime == null &&\n asset.fileName !== '.DS_Store'\n ) {\n asset.url = studentUploadsBaseURL + asset.filePath;\n if (this.isImage(asset)) {\n asset.type = 'image';\n asset.iconURL = asset.url;\n } else if (this.isAudio(asset)) {\n asset.type = 'audio';\n asset.iconURL = 'assets/wise5/vle/notebook/audio.png';\n } else {\n asset.type = 'file';\n asset.iconURL = 'assets/wise5/vle/notebook/file.png';\n }\n this.allAssets.push(asset);\n }\n }\n return this.allAssets;\n });\n }\n }\n\n getAssetContent(asset) {\n return this.http\n .get(asset.url)\n .toPromise()\n .then((response) => {\n return response;\n });\n }\n\n isImage(asset) {\n return isImage(this.getFileNameFromAsset(asset));\n }\n\n isAudio(asset) {\n return isAudio(this.getFileNameFromAsset(asset));\n }\n\n getFileNameFromAsset(asset) {\n if (this.ConfigService.isPreview()) {\n return asset.file;\n } else {\n return asset.fileName;\n }\n }\n\n uploadAsset(file) {\n if (this.ConfigService.isPreview()) {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = ((theFile) => {\n return (e) => {\n const asset: any = {\n file: theFile.name,\n url: e.target.result\n };\n this.setAssetTypeAndIconURL(asset);\n this.allAssets.push(asset);\n resolve(asset);\n };\n })(file);\n reader.readAsDataURL(file);\n });\n } else {\n return new Promise((resolve, reject) => {\n const formData = new FormData();\n formData.append('clientSaveTime', Date.parse(new Date().toString()) + '');\n formData.append('files', file, file.name);\n formData.append('periodId', this.ConfigService.getPeriodId());\n formData.append('runId', this.ConfigService.getRunId());\n formData.append('workgroupId', this.ConfigService.getWorkgroupId());\n this.http.post(this.ConfigService.getStudentAssetsURL(), formData).subscribe(\n (asset: any) => {\n if (asset === 'error') {\n alert($localize`There was an error uploading.`);\n } else {\n const studentUploadsBaseURL = this.ConfigService.getStudentUploadsBaseURL();\n asset.url = studentUploadsBaseURL + asset.filePath;\n this.setAssetTypeAndIconURL(asset);\n this.allAssets.push(asset);\n resolve(asset);\n }\n },\n () => {\n alert(\n $localize`There was an error uploading. You might have reached your file upload limit or the file you tried to upload was too large. Please ask your teacher for help.`\n );\n reject();\n }\n );\n });\n }\n }\n\n private setAssetTypeAndIconURL(asset: any): void {\n if (this.isImage(asset)) {\n asset.type = 'image';\n asset.iconURL = asset.url;\n } else if (this.isAudio(asset)) {\n asset.type = 'audio';\n asset.iconURL = 'assets/wise5/themes/default/images/audio.png';\n } else {\n asset.type = 'file';\n asset.iconURL = 'assets/wise5/themes/default/images/file.png';\n }\n }\n\n // given asset, makes a copy of it so steps can use for reference. Returns newly-copied asset.\n copyAssetForReference(studentAsset) {\n if (this.ConfigService.isPreview()) {\n return Promise.resolve(studentAsset);\n } else {\n return this.http\n .post(`${this.ConfigService.getStudentAssetsURL()}/copy`, {\n studentAssetId: studentAsset.id,\n workgroupId: this.ConfigService.getWorkgroupId(),\n periodId: this.ConfigService.getPeriodId(),\n clientSaveTime: Date.parse(new Date().toString())\n })\n .toPromise()\n .then((copiedAsset: any) => {\n if (copiedAsset != null) {\n const studentUploadsBaseURL = this.ConfigService.getStudentUploadsBaseURL();\n if (copiedAsset.isReferenced && copiedAsset.fileName !== '.DS_Store') {\n copiedAsset.url = studentUploadsBaseURL + copiedAsset.filePath;\n if (this.isImage(copiedAsset)) {\n copiedAsset.type = 'image';\n copiedAsset.iconURL = copiedAsset.url;\n } else if (this.isAudio(copiedAsset)) {\n copiedAsset.type = 'audio';\n copiedAsset.iconURL = 'assets/wise5/vle/notebook/audio.png';\n } else {\n copiedAsset.type = 'file';\n copiedAsset.iconURL = 'assets/wise5/vle/notebook/file.png';\n }\n return copiedAsset;\n }\n }\n return null;\n });\n }\n }\n\n deleteAsset(studentAsset: any) {\n if (this.ConfigService.isPreview()) {\n return new Promise((resolve, reject) => {\n this.allAssets = this.allAssets.splice(this.allAssets.indexOf(studentAsset), 1);\n return resolve(studentAsset);\n });\n } else {\n let httpParams = new HttpParams();\n httpParams = httpParams.set('studentAssetId', studentAsset.id);\n httpParams = httpParams.set('workgroupId', this.ConfigService.getWorkgroupId());\n httpParams = httpParams.set('periodId', this.ConfigService.getPeriodId());\n httpParams = httpParams.set('clientDeleteTime', `${Date.parse(new Date().toString())}`);\n const options = { params: httpParams };\n return this.http\n .delete(`${this.ConfigService.getStudentAssetsURL()}/delete`, options)\n .toPromise()\n .then(() => {\n this.allAssets.splice(this.allAssets.indexOf(studentAsset), 1);\n return studentAsset;\n });\n }\n }\n\n broadcastAttachStudentAsset(component: Component, asset: any): void {\n this.attachStudentAssetSource.next({\n asset: asset,\n component: component\n });\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ConfigService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 15, + "jsdoctags": [ + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "ConfigService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "type": "injectable" + }, + { + "name": "StudentDataService", + "id": "injectable-StudentDataService-2883cf1d06f24e3858c5b5198e6e3394a3199fc0eef5800aa8d293cb90bc6648db822d3a77b1cec2048fa5a1f397480948900f677a152410cf95bffe112aafa3", + "file": "src/assets/wise5/services/studentDataService.ts", + "properties": [ + { + "name": "componentDirty$", + "defaultValue": "this.componentDirtySource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "Observable", + "indexKey": "", + "optional": false, + "description": "", + "line": 26, + "modifierKind": [ + 125 + ] + }, + { + "name": "componentDirtySource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 25, + "modifierKind": [ + 123 + ] + }, + { + "name": "componentSaveTriggered$", + "defaultValue": "this.componentSaveTriggeredSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "Observable", + "indexKey": "", + "optional": false, + "description": "", + "line": 28, + "modifierKind": [ + 125 + ] + }, + { + "name": "componentSaveTriggeredSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 27, + "modifierKind": [ + 123 + ] + }, + { + "name": "componentStudentData$", + "defaultValue": "this.componentStudentDataSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "Observable", + "indexKey": "", + "optional": false, + "description": "", + "line": 36, + "modifierKind": [ + 125 + ] + }, + { + "name": "componentStudentDataSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 35, + "modifierKind": [ + 123 + ] + }, + { + "name": "componentSubmitDirty$", + "defaultValue": "this.componentSubmitDirtySource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "Observable", + "indexKey": "", + "optional": false, + "description": "", + "line": 31, + "modifierKind": [ + 125 + ] + }, + { + "name": "componentSubmitDirtySource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 30, + "modifierKind": [ + 123 + ] + }, + { + "name": "componentSubmitTriggered$", + "defaultValue": "this.componentSubmitTriggeredSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "Observable", + "indexKey": "", + "optional": false, + "description": "", + "line": 33, + "modifierKind": [ + 125 + ] + }, + { + "name": "componentSubmitTriggeredSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 32, + "modifierKind": [ + 123 + ] + }, + { + "name": "dataRetrieved$", + "defaultValue": "this.dataRetrievedSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "Observable", + "indexKey": "", + "optional": false, + "description": "", + "line": 38, + "modifierKind": [ + 125 + ] + }, + { + "name": "dataRetrievedSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 37, + "modifierKind": [ + 123 + ] + }, + { + "name": "dummyStudentWorkId", + "defaultValue": "1", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 13 + }, + { + "name": "generateImageRequest$", + "defaultValue": "this.generateImageRequestSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "Observable", + "indexKey": "", + "optional": false, + "description": "", + "line": 42, + "modifierKind": [ + 125 + ] + }, + { + "name": "generateImageRequestSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 41, + "modifierKind": [ + 123 + ] + }, + { + "name": "generateImageResponse$", + "defaultValue": "this.generateImageResponseSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "Observable", + "indexKey": "", + "optional": false, + "description": "", + "line": 40, + "modifierKind": [ + 125 + ] + }, + { + "name": "generateImageResponseSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 39, + "modifierKind": [ + 123 + ] + }, + { + "name": "http", + "deprecated": false, + "deprecationMessage": "", + "type": "HttpClient", + "indexKey": "", + "optional": false, + "description": "", + "line": 56, + "modifierKind": [ + 125 + ] + }, + { + "name": "navItemIsExpanded$", + "defaultValue": "this.navItemIsExpandedSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "Observable", + "indexKey": "", + "optional": false, + "description": "", + "line": 47, + "modifierKind": [ + 125 + ] + }, + { + "name": "navItemIsExpandedSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 46, + "modifierKind": [ + 123 + ] + }, + { + "name": "nodeStatuses", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 14 + }, + { + "name": "nodeStatusesChanged$", + "defaultValue": "this.nodeStatusesChangedSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "Observable", + "indexKey": "", + "optional": false, + "description": "", + "line": 49, + "modifierKind": [ + 125 + ] + }, + { + "name": "nodeStatusesChangedSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 48, + "modifierKind": [ + 123 + ] + }, + { + "name": "previousStep", + "defaultValue": "null", + "deprecated": false, + "deprecationMessage": "", + "type": "null", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "inheritance": { + "file": "DataService" + } + }, + { + "name": "runStatus", + "defaultValue": "null", + "deprecated": false, + "deprecationMessage": "", + "type": "RunStatus", + "indexKey": "", + "optional": false, + "description": "", + "line": 16 + }, + { + "name": "saveToServerRequestCount", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 17 + }, + { + "name": "stackHistory", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 18 + }, + { + "name": "studentData", + "defaultValue": "{\n componentStates: [],\n events: [],\n annotations: []\n }", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 19 + }, + { + "name": "studentWorkSavedToServer$", + "defaultValue": "this.studentWorkSavedToServerSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "Observable", + "indexKey": "", + "optional": false, + "description": "", + "line": 44, + "modifierKind": [ + 125 + ] + }, + { + "name": "studentWorkSavedToServerSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 43, + "modifierKind": [ + 123 + ] + }, + { + "name": "updateNodeStatuses$", + "defaultValue": "this.updateNodeStatusesSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "Observable", + "indexKey": "", + "optional": false, + "description": "", + "line": 51, + "modifierKind": [ + 125 + ] + }, + { + "name": "updateNodeStatusesSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 50, + "modifierKind": [ + 123 + ] + }, + { + "name": "currentNode", + "defaultValue": "null", + "deprecated": false, + "deprecationMessage": "", + "type": "null", + "indexKey": "", + "optional": false, + "description": "", + "line": 7, + "inheritance": { + "file": "DataService" + } + }, + { + "name": "currentNodeChanged$", + "defaultValue": "this.currentNodeChangedSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "DataService" + } + }, + { + "name": "currentNodeChangedSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 9, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "DataService" + } + }, + { + "name": "studentWorkReceived$", + "defaultValue": "this.studentWorkReceivedSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "DataService" + } + }, + { + "name": "studentWorkReceivedSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "DataService" + } + } + ], + "methods": [ + { + "name": "addAnnotation", + "args": [ + { + "name": "annotation", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 240, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "annotation", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addComponentState", + "args": [ + { + "name": "componentState", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 232, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addEvent", + "args": [ + { + "name": "event", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 236, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "event", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "broadcastComponentDirty", + "args": [ + { + "name": "args", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 645, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "args", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "broadcastComponentSaveTriggered", + "args": [ + { + "name": "args", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 648, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "args", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "broadcastComponentStudentData", + "args": [ + { + "name": "componentStudentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 62, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentStudentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "broadcastComponentSubmitDirty", + "args": [ + { + "name": "args", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 651, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "args", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "broadcastComponentSubmitTriggered", + "args": [ + { + "name": "args", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 654, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "args", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "broadcastNodeStatusesChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 154, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "broadcastStudentWorkSavedToServer", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 443, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "clearRequestToken", + "args": [ + { + "name": "obj", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 468, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "obj", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "copyClientSaveTimeToServerSaveTime", + "args": [ + { + "name": "studentDataResponse", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 388, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentDataResponse", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createComponentState", + "args": [], + "optional": false, + "returnType": "{ timestamp: any; }", + "typeParameters": [], + "line": 226, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "createNewEvent", + "args": [ + { + "name": "nodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "context", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentType", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "category", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "event", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "data", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "{ nodeId: any; componentId: any; context: any; type: any; category: any; event: any; data: any; projectId: any; runId: any; periodId: any; workgroupId: any; clientSaveTime: any; }", + "typeParameters": [], + "line": 296, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "context", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentType", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "category", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "event", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "data", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "generateImageRequest", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 660, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "generateImageResponse", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 663, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getAnnotations", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 582, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getBranchPathTakenEventsByNodeId", + "args": [ + { + "name": "fromNodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "{}", + "typeParameters": [], + "line": 169, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "fromNodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "DataService" + } + }, + { + "name": "getComponentStates", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 549, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getComponentStatesByNodeId", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 553, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getComponentStatesByNodeIdAndComponentId", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 559, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getEvents", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 566, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getEventsByNodeId", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 570, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getLatestComponentState", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 508, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getLatestComponentStateByNodeId", + "args": [ + { + "name": "nodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 614, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getLatestComponentStateByNodeIdAndComponentId", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 528, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the latest component state for the given node id and component id.\nare found\n", + "description": "

Get the latest component state for the given node id and component id.\nare found

\n", + "jsdoctags": [ + { + "name": { + "pos": 17975, + "end": 17981, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 17969, + "end": 17974, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id

\n" + }, + { + "name": { + "pos": 18006, + "end": 18017, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "pos": 18000, + "end": 18005, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component id (optional)

\n" + }, + { + "tagName": { + "pos": 18052, + "end": 18058, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

the latest component state with the matching node id and component id or null if none\nare found

\n" + } + ] + }, + { + "name": "getLatestComponentStatesByNodeId", + "args": [ + { + "name": "nodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "{}", + "typeParameters": [], + "line": 586, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getLatestSubmitComponentState", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 538, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getNodeStatusByNodeId", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 91, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getRunStatus", + "args": [], + "optional": false, + "returnType": "RunStatus", + "typeParameters": [], + "line": 578, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getScoreValueFromScoreAnnotation", + "args": [ + { + "name": "scoreAnnotation", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "scoreId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 179, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "scoreAnnotation", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "scoreId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getStackHistory", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 213, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getStackHistoryAtIndex", + "args": [ + { + "name": "index", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 203, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "index", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getStudentWorkById", + "args": [ + { + "name": "id", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 623, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "id", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getTotalScore", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 574, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "handlePreviewSaveToServer", + "args": [ + { + "name": "studentWorkList", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "events", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "annotations", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 377, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentWorkList", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "events", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "annotations", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "handleSaveToServerError", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 503, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "handleSaveToServerSuccess", + "args": [ + { + "name": "savedStudentDataResponse", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 400, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "savedStudentDataResponse", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "handleStudentDataResponse", + "args": [ + { + "name": "resultData", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 114, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "resultData", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "hasWorkCreatedAfterTimestamp", + "args": [ + { + "name": "nodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "timestamp", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 164, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "timestamp", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isComponentSubmitDirty", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 516, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isMatchingRequestToken", + "args": [ + { + "name": "localObj", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "remoteObj", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 447, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "localObj", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "remoteObj", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isNodeVisitedAfterTimestamp", + "args": [ + { + "name": "event", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "timestamp", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 158, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "event", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "timestamp", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isScoreInExpectedScores", + "args": [ + { + "name": "expectedScores", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "score", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 187, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "expectedScores", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "score", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "populateHistories", + "args": [ + { + "name": "events", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 194, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "events", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "prepareAnnotationsForSave", + "args": [ + { + "name": "annotations", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 368, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "annotations", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "prepareComponentStatesForSave", + "args": [ + { + "name": "componentStates", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "{}", + "typeParameters": [], + "line": 351, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentStates", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "prepareEventsForSave", + "args": [ + { + "name": "events", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 361, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "events", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "processSavedAnnotations", + "args": [ + { + "name": "savedAnnotations", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 487, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "savedAnnotations", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "processSavedEvents", + "args": [ + { + "name": "savedEvents", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 472, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "savedEvents", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "processSavedStudentWorkList", + "args": [ + { + "name": "savedStudentWorkList", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 422, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "savedStudentWorkList", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "retrieveRunStatus", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 132, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "retrieveStudentData", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 66, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "retrieveStudentDataForPreview", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 75, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "retrieveStudentDataForSignedInStudent", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 95, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "saveAnnotations", + "args": [ + { + "name": "annotations", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 313, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "annotations", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "saveComponentEvent", + "args": [ + { + "name": "component", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "category", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "event", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "data", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 244, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "component", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "category", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "event", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "data", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "saveEvent", + "args": [ + { + "name": "context", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentType", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "category", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "event", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "data", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 273, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "context", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentType", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "category", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "event", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "data", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "saveEvents", + "args": [ + { + "name": "events", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 290, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "events", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "saveToServer", + "args": [ + { + "name": "componentStates", + "type": "[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]" + }, + { + "name": "events", + "type": "[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]" + }, + { + "name": "annotations", + "type": "[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 319, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentStates", + "type": "[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]", + "tagName": { + "text": "param" + } + }, + { + "name": "events", + "type": "[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]", + "tagName": { + "text": "param" + } + }, + { + "name": "annotations", + "type": "[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "saveVLEEvent", + "args": [ + { + "name": "nodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentType", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "category", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "event", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "data", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 264, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentType", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "category", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "event", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "data", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "DataService" + } + }, + { + "name": "setDummyIdIntoLocalId", + "args": [ + { + "name": "localObject", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 455, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "localObject", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setDummyServerSaveTimeIntoLocalServerSaveTime", + "args": [ + { + "name": "localObject", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 464, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "localObject", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setNavItemExpanded", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isExpanded", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 657, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "isExpanded", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setRemoteIdIntoLocalId", + "args": [ + { + "name": "remoteObject", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "localObject", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 451, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "remoteObject", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "localObject", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setRemoteServerSaveTimeIntoLocalServerSaveTime", + "args": [ + { + "name": "remoteObject", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "localObject", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 460, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "remoteObject", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "localObject", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "updateNodeStatuses", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 87, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "updateStackHistory", + "args": [ + { + "name": "nodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 217, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "broadcastStudentWorkReceived", + "args": [ + { + "name": "studentWork", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 53, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentWork", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "DataService" + } + }, + { + "name": "getCurrentNode", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 16, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "DataService" + } + }, + { + "name": "getCurrentNodeId", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 20, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "DataService" + } + }, + { + "name": "setCurrentNode", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 39, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "DataService" + } + }, + { + "name": "setCurrentNodeByNodeId", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 35, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "DataService" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Injectable } from '@angular/core';\nimport { ConfigService } from './configService';\nimport { AnnotationService } from './annotationService';\nimport { ProjectService } from './projectService';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { Observable, Subject } from 'rxjs';\nimport { DataService } from '../../../app/services/data.service';\nimport { generateRandomKey } from '../common/string/string';\nimport { RunStatus } from '../common/RunStatus';\n\n@Injectable()\nexport class StudentDataService extends DataService {\n dummyStudentWorkId: number = 1;\n nodeStatuses: any = {};\n previousStep = null;\n runStatus: RunStatus = null;\n saveToServerRequestCount: number = 0;\n stackHistory = []; // array of node id's\n studentData: any = {\n componentStates: [],\n events: [],\n annotations: []\n };\n\n private componentDirtySource: Subject = new Subject();\n public componentDirty$: Observable = this.componentDirtySource.asObservable();\n private componentSaveTriggeredSource: Subject = new Subject();\n public componentSaveTriggered$: Observable =\n this.componentSaveTriggeredSource.asObservable();\n private componentSubmitDirtySource: Subject = new Subject();\n public componentSubmitDirty$: Observable = this.componentSubmitDirtySource.asObservable();\n private componentSubmitTriggeredSource: Subject = new Subject();\n public componentSubmitTriggered$: Observable =\n this.componentSubmitTriggeredSource.asObservable();\n private componentStudentDataSource: Subject = new Subject();\n public componentStudentData$: Observable = this.componentStudentDataSource.asObservable();\n private dataRetrievedSource: Subject = new Subject();\n public dataRetrieved$: Observable = this.dataRetrievedSource.asObservable();\n private generateImageResponseSource: Subject = new Subject();\n public generateImageResponse$: Observable = this.generateImageResponseSource.asObservable();\n private generateImageRequestSource: Subject = new Subject();\n public generateImageRequest$: Observable = this.generateImageRequestSource.asObservable();\n private studentWorkSavedToServerSource: Subject = new Subject();\n public studentWorkSavedToServer$: Observable =\n this.studentWorkSavedToServerSource.asObservable();\n private navItemIsExpandedSource: Subject = new Subject();\n public navItemIsExpanded$: Observable = this.navItemIsExpandedSource.asObservable();\n private nodeStatusesChangedSource: Subject = new Subject();\n public nodeStatusesChanged$: Observable = this.nodeStatusesChangedSource.asObservable();\n private updateNodeStatusesSource: Subject = new Subject();\n public updateNodeStatuses$: Observable = this.updateNodeStatusesSource.asObservable();\n\n constructor(\n private annotationService: AnnotationService,\n private configService: ConfigService,\n public http: HttpClient,\n protected projectService: ProjectService\n ) {\n super(projectService);\n }\n\n broadcastComponentStudentData(componentStudentData: any) {\n this.componentStudentDataSource.next(componentStudentData);\n }\n\n retrieveStudentData() {\n this.nodeStatuses = {};\n if (this.configService.isPreview()) {\n this.retrieveStudentDataForPreview();\n } else {\n return this.retrieveStudentDataForSignedInStudent();\n }\n }\n\n retrieveStudentDataForPreview() {\n this.studentData = {\n componentStates: [],\n events: [],\n annotations: [],\n username: $localize`Preview Student`,\n userId: '0'\n };\n this.annotationService.setAnnotations(this.studentData.annotations);\n this.dataRetrievedSource.next(this.studentData);\n }\n\n updateNodeStatuses(): void {\n this.updateNodeStatusesSource.next();\n }\n\n getNodeStatusByNodeId(nodeId: string): any {\n return this.nodeStatuses[nodeId];\n }\n\n retrieveStudentDataForSignedInStudent() {\n const params = new HttpParams()\n .set('runId', this.configService.getRunId())\n .set('workgroupId', this.configService.getWorkgroupId() + '')\n .set('getStudentWork', true + '')\n .set('getEvents', true + '')\n .set('getAnnotations', true + '')\n .set('toWorkgroupId', this.configService.getWorkgroupId());\n const options = {\n params: params\n };\n return this.http\n .get(this.configService.getConfigParam('studentDataURL'), options)\n .toPromise()\n .then((resultData) => {\n return this.handleStudentDataResponse(resultData);\n });\n }\n\n handleStudentDataResponse(resultData) {\n this.studentData = {\n componentStates: []\n };\n const studentWorkList = resultData.studentWorkList;\n for (const studentWork of studentWorkList) {\n if (studentWork.componentId != null) {\n this.studentData.componentStates.push(studentWork);\n }\n }\n this.studentData.events = resultData.events;\n this.studentData.annotations = resultData.annotations;\n this.annotationService.setAnnotations(this.studentData.annotations);\n this.populateHistories(this.studentData.events);\n this.dataRetrievedSource.next(this.studentData);\n return this.studentData;\n }\n\n retrieveRunStatus() {\n if (this.configService.isPreview()) {\n this.runStatus = {\n periods: []\n };\n } else {\n const params = new HttpParams().set('runId', this.configService.getConfigParam('runId'));\n const options = {\n params: params\n };\n return this.http\n .get(this.configService.getConfigParam('runStatusURL'), options)\n .toPromise()\n .then((runStatus: RunStatus) => {\n this.runStatus = runStatus;\n if (this.runStatus != null && this.runStatus.periods == null) {\n this.runStatus.periods = [];\n }\n });\n }\n }\n\n broadcastNodeStatusesChanged() {\n this.nodeStatusesChangedSource.next();\n }\n\n isNodeVisitedAfterTimestamp(event, nodeId, timestamp) {\n return (\n event.nodeId == nodeId && event.event === 'nodeEntered' && event.clientSaveTime > timestamp\n );\n }\n\n hasWorkCreatedAfterTimestamp(nodeId, componentId, timestamp) {\n const componentState = this.getLatestComponentStateByNodeIdAndComponentId(nodeId, componentId);\n return componentState != null && componentState.clientSaveTime > timestamp;\n }\n\n getBranchPathTakenEventsByNodeId(fromNodeId) {\n const branchPathTakenEvents = [];\n for (const event of this.studentData.events) {\n if (fromNodeId === event.nodeId && 'branchPathTaken' === event.event) {\n branchPathTakenEvents.push(event);\n }\n }\n return branchPathTakenEvents;\n }\n\n getScoreValueFromScoreAnnotation(scoreAnnotation: any, scoreId: string): number {\n if (scoreId == null) {\n return this.annotationService.getScoreValueFromScoreAnnotation(scoreAnnotation);\n } else {\n return this.annotationService.getSubScoreValueFromScoreAnnotation(scoreAnnotation, scoreId);\n }\n }\n\n isScoreInExpectedScores(expectedScores, score) {\n return (\n expectedScores.indexOf(score) != -1 ||\n (score != null && expectedScores.indexOf(score.toString()) != -1)\n );\n }\n\n populateHistories(events) {\n this.stackHistory = [];\n for (const event of events) {\n if (event.event === 'nodeEntered') {\n this.updateStackHistory(event.nodeId);\n }\n }\n }\n\n getStackHistoryAtIndex(index) {\n if (index < 0) {\n index = this.stackHistory.length + index;\n }\n if (this.stackHistory.length > 0) {\n return this.stackHistory[index];\n }\n return null;\n }\n\n getStackHistory(): any[] {\n return this.stackHistory;\n }\n\n updateStackHistory(nodeId) {\n const indexOfNodeId = this.stackHistory.indexOf(nodeId);\n if (indexOfNodeId === -1) {\n this.stackHistory.push(nodeId);\n } else {\n this.stackHistory.splice(indexOfNodeId + 1, this.stackHistory.length);\n }\n }\n\n createComponentState() {\n return {\n timestamp: Date.parse(new Date().toString())\n };\n }\n\n addComponentState(componentState) {\n this.studentData.componentStates.push(componentState);\n }\n\n addEvent(event) {\n this.studentData.events.push(event);\n }\n\n addAnnotation(annotation) {\n this.studentData.annotations.push(annotation);\n }\n\n saveComponentEvent(component, category, event, data) {\n if (component == null || category == null || event == null) {\n alert(\n $localize`StudentDataService.saveComponentEvent: component, category, event args must not be null`\n );\n return;\n }\n const context = 'Component';\n const nodeId = component.nodeId;\n const componentId = component.componentId;\n const componentType = component.componentType;\n if (nodeId == null || componentId == null || componentType == null) {\n alert(\n $localize`StudentDataService.saveComponentEvent: nodeId, componentId, componentType must not be null`\n );\n return;\n }\n this.saveEvent(context, nodeId, componentId, componentType, category, event, data);\n }\n\n saveVLEEvent(nodeId, componentId, componentType, category, event, data) {\n if (category == null || event == null) {\n alert($localize`StudentDataService.saveVLEEvent: category and event args must not be null`);\n return;\n }\n const context = 'VLE';\n return this.saveEvent(context, nodeId, componentId, componentType, category, event, data);\n }\n\n saveEvent(context, nodeId, componentId, componentType, category, event, data) {\n const events = [];\n const newEvent = this.createNewEvent(\n nodeId,\n componentId,\n context,\n componentType,\n category,\n event,\n data\n );\n events.push(newEvent);\n const componentStates = undefined;\n const annotations = undefined;\n return this.saveToServer(componentStates, events, annotations);\n }\n\n saveEvents(events: any): Promise {\n const componentStates = undefined;\n const annotations = undefined;\n return this.saveToServer(componentStates, events, annotations);\n }\n\n createNewEvent(nodeId, componentId, context, componentType, category, event, data) {\n return {\n nodeId: nodeId,\n componentId: componentId,\n context: context,\n type: componentType,\n category: category,\n event: event,\n data: data,\n projectId: this.configService.getProjectId(),\n runId: this.configService.getRunId(),\n periodId: this.configService.getPeriodId(),\n workgroupId: this.configService.getWorkgroupId(),\n clientSaveTime: new Date().getTime()\n };\n }\n\n saveAnnotations(annotations) {\n const componentStates = undefined;\n const events = undefined;\n this.saveToServer(componentStates, events, annotations);\n }\n\n saveToServer(componentStates = [], events = [], annotations = []) {\n this.saveToServerRequestCount += 1;\n const studentWorkList = this.prepareComponentStatesForSave(componentStates);\n this.prepareEventsForSave(events);\n this.prepareAnnotationsForSave(annotations);\n if (this.configService.isPreview()) {\n return this.handlePreviewSaveToServer(studentWorkList, events, annotations);\n } else if (!this.configService.isRunActive()) {\n return Promise.resolve();\n } else {\n const params = {\n projectId: this.configService.getProjectId(),\n runId: this.configService.getRunId(),\n workgroupId: this.configService.getWorkgroupId(),\n studentWorkList: JSON.stringify(studentWorkList),\n events: JSON.stringify(events),\n annotations: JSON.stringify(annotations)\n };\n return this.http\n .post(this.configService.getConfigParam('studentDataURL'), params)\n .toPromise()\n .then(\n (resultData: any) => {\n return this.handleSaveToServerSuccess(resultData);\n },\n (resultData: any) => {\n return this.handleSaveToServerError();\n }\n );\n }\n }\n\n prepareComponentStatesForSave(componentStates) {\n const studentWorkList = [];\n for (const componentState of componentStates) {\n componentState.requestToken = generateRandomKey();\n this.addComponentState(componentState);\n studentWorkList.push(componentState);\n }\n return studentWorkList;\n }\n\n prepareEventsForSave(events) {\n for (const event of events) {\n event.requestToken = generateRandomKey();\n this.addEvent(event);\n }\n }\n\n prepareAnnotationsForSave(annotations) {\n for (const annotation of annotations) {\n annotation.requestToken = generateRandomKey();\n if (annotation.id == null) {\n this.addAnnotation(annotation);\n }\n }\n }\n\n handlePreviewSaveToServer(studentWorkList, events, annotations) {\n const savedStudentDataResponse = {\n studentWorkList: studentWorkList,\n events: events,\n annotations: annotations\n };\n this.copyClientSaveTimeToServerSaveTime(savedStudentDataResponse);\n this.handleSaveToServerSuccess(savedStudentDataResponse);\n return Promise.resolve(savedStudentDataResponse);\n }\n\n copyClientSaveTimeToServerSaveTime(studentDataResponse: any): void {\n for (const studentWork of studentDataResponse.studentWorkList) {\n studentWork.serverSaveTime = studentWork.clientSaveTime;\n }\n for (const event of studentDataResponse.events) {\n event.serverSaveTime = event.clientSaveTime;\n }\n for (const annotation of studentDataResponse.annotations) {\n annotation.serverSaveTime = annotation.clientSaveTime;\n }\n }\n\n handleSaveToServerSuccess(savedStudentDataResponse) {\n if (savedStudentDataResponse.studentWorkList) {\n this.processSavedStudentWorkList(savedStudentDataResponse.studentWorkList);\n }\n if (savedStudentDataResponse.events) {\n this.processSavedEvents(savedStudentDataResponse.events);\n }\n if (savedStudentDataResponse.annotations) {\n this.processSavedAnnotations(savedStudentDataResponse.annotations);\n }\n this.saveToServerRequestCount -= 1;\n if (this.saveToServerRequestCount == 0) {\n /*\n * we have received the reponse to all of the saveToServer requests\n * so we will now update the student status and save it to the\n * server\n */\n this.updateNodeStatuses();\n }\n return Promise.resolve(savedStudentDataResponse);\n }\n\n processSavedStudentWorkList(savedStudentWorkList) {\n const localStudentWorkList = this.studentData.componentStates;\n for (const savedStudentWork of savedStudentWorkList) {\n for (let l = localStudentWorkList.length - 1; l >= 0; l--) {\n const localStudentWork = localStudentWorkList[l];\n if (this.isMatchingRequestToken(localStudentWork, savedStudentWork)) {\n if (this.configService.isPreview()) {\n this.setDummyIdIntoLocalId(localStudentWork);\n this.setDummyServerSaveTimeIntoLocalServerSaveTime(localStudentWork);\n } else {\n this.setRemoteIdIntoLocalId(savedStudentWork, localStudentWork);\n this.setRemoteServerSaveTimeIntoLocalServerSaveTime(savedStudentWork, localStudentWork);\n }\n this.clearRequestToken(localStudentWork);\n this.broadcastStudentWorkSavedToServer(localStudentWork);\n break;\n }\n }\n }\n }\n\n broadcastStudentWorkSavedToServer(componentState: any) {\n this.studentWorkSavedToServerSource.next(componentState);\n }\n\n isMatchingRequestToken(localObj, remoteObj) {\n return localObj.requestToken != null && localObj.requestToken === remoteObj.requestToken;\n }\n\n setRemoteIdIntoLocalId(remoteObject, localObject) {\n localObject.id = remoteObject.id;\n }\n\n setDummyIdIntoLocalId(localObject) {\n localObject.id = this.dummyStudentWorkId;\n this.dummyStudentWorkId++;\n }\n\n setRemoteServerSaveTimeIntoLocalServerSaveTime(remoteObject, localObject) {\n localObject.serverSaveTime = remoteObject.serverSaveTime;\n }\n\n setDummyServerSaveTimeIntoLocalServerSaveTime(localObject) {\n localObject.serverSaveTime = Date.parse(new Date().toString());\n }\n\n clearRequestToken(obj) {\n obj.requestToken = null;\n }\n\n processSavedEvents(savedEvents) {\n const localEvents = this.studentData.events;\n for (const savedEvent of savedEvents) {\n for (let l = localEvents.length - 1; l >= 0; l--) {\n const localEvent = localEvents[l];\n if (this.isMatchingRequestToken(localEvent, savedEvent)) {\n this.setRemoteIdIntoLocalId(savedEvent, localEvent);\n this.setRemoteServerSaveTimeIntoLocalServerSaveTime(savedEvent, localEvent);\n this.clearRequestToken(localEvent);\n break;\n }\n }\n }\n }\n\n processSavedAnnotations(savedAnnotations) {\n const localAnnotations = this.studentData.annotations;\n for (const savedAnnotation of savedAnnotations) {\n for (let l = localAnnotations.length - 1; l >= 0; l--) {\n const localAnnotation = localAnnotations[l];\n if (this.isMatchingRequestToken(localAnnotation, savedAnnotation)) {\n this.setRemoteIdIntoLocalId(savedAnnotation, localAnnotation);\n this.setRemoteServerSaveTimeIntoLocalServerSaveTime(savedAnnotation, localAnnotation);\n this.clearRequestToken(localAnnotation);\n this.annotationService.broadcastAnnotationSavedToServer(localAnnotation);\n break;\n }\n }\n }\n }\n\n handleSaveToServerError() {\n this.saveToServerRequestCount -= 1;\n return Promise.resolve({});\n }\n\n getLatestComponentState() {\n const componentStates = this.studentData.componentStates;\n if (componentStates.length > 0) {\n return componentStates[componentStates.length - 1];\n }\n return null;\n }\n\n isComponentSubmitDirty(): boolean {\n const latestComponentState = this.getLatestComponentState();\n return latestComponentState && !latestComponentState.isSubmit;\n }\n\n /**\n * Get the latest component state for the given node id and component id.\n * @param nodeId the node id\n * @param componentId the component id (optional)\n * @return the latest component state with the matching node id and component id or null if none\n * are found\n */\n getLatestComponentStateByNodeIdAndComponentId(nodeId: string, componentId: string = null): any {\n return (\n this.studentData.componentStates.findLast(\n (componentState) =>\n componentState.nodeId === nodeId &&\n (componentId == null || componentState.componentId === componentId)\n ) ?? null\n );\n }\n\n getLatestSubmitComponentState(nodeId: string, componentId: string): any {\n return (\n this.studentData.componentStates.findLast(\n (componentState) =>\n componentState.nodeId === nodeId &&\n componentState.componentId === componentId &&\n componentState.isSubmit\n ) ?? null\n );\n }\n\n getComponentStates(): any[] {\n return this.studentData.componentStates;\n }\n\n getComponentStatesByNodeId(nodeId: string): any[] {\n return this.studentData.componentStates.filter(\n (componentState) => componentState.nodeId === nodeId\n );\n }\n\n getComponentStatesByNodeIdAndComponentId(nodeId: string, componentId: string): any[] {\n return this.studentData.componentStates.filter(\n (componentState) =>\n componentState.nodeId === nodeId && componentState.componentId === componentId\n );\n }\n\n getEvents(): any[] {\n return this.studentData.events;\n }\n\n getEventsByNodeId(nodeId: string): any[] {\n return this.studentData.events.filter((event) => event.nodeId === nodeId);\n }\n\n getTotalScore() {\n return this.annotationService.getTotalScore(this.studentData.annotations);\n }\n\n getRunStatus(): RunStatus {\n return this.runStatus;\n }\n\n getAnnotations() {\n return this.studentData.annotations;\n }\n\n getLatestComponentStatesByNodeId(nodeId) {\n const latestComponentStates = [];\n const node = this.projectService.getNodeById(nodeId);\n if (node != null) {\n const components = node.components;\n if (components != null) {\n for (const component of components) {\n const componentId = component.id;\n let componentState = this.getLatestComponentStateByNodeIdAndComponentId(\n nodeId,\n componentId\n );\n if (componentState == null) {\n /*\n * there is no component state for the component so we will create an object that just\n * contains the node id and component id\n */\n componentState = {};\n componentState.nodeId = nodeId;\n componentState.componentId = componentId;\n }\n latestComponentStates.push(componentState);\n }\n }\n }\n return latestComponentStates;\n }\n\n getLatestComponentStateByNodeId(nodeId) {\n const componentStates = this.getComponentStatesByNodeId(nodeId);\n if (componentStates.length > 0) {\n return componentStates[componentStates.length - 1];\n } else {\n return null;\n }\n }\n\n getStudentWorkById(id) {\n const params = new HttpParams()\n .set('runId', this.configService.getRunId())\n .set('id', id + '')\n .set('getStudentWork', true + '')\n .set('getEvents', false + '')\n .set('getAnnotations', false + '')\n .set('onlyGetLatest', true + '');\n const options = {\n params: params\n };\n return this.http\n .get(this.configService.getConfigParam('studentDataURL'), options)\n .toPromise()\n .then((resultData: any) => {\n if (resultData != null && resultData.studentWorkList.length > 0) {\n return resultData.studentWorkList[0];\n }\n return null;\n });\n }\n\n broadcastComponentDirty(args: any) {\n this.componentDirtySource.next(args);\n }\n broadcastComponentSaveTriggered(args: any) {\n this.componentSaveTriggeredSource.next(args);\n }\n broadcastComponentSubmitDirty(args: any) {\n this.componentSubmitDirtySource.next(args);\n }\n broadcastComponentSubmitTriggered(args: any) {\n this.componentSubmitTriggeredSource.next(args);\n }\n setNavItemExpanded(nodeId: string, isExpanded: boolean) {\n this.navItemIsExpandedSource.next({ nodeId: nodeId, isExpanded: isExpanded });\n }\n generateImageRequest(componentState: any): void {\n this.generateImageRequestSource.next(componentState);\n }\n generateImageResponse(componentState: any): void {\n this.generateImageResponseSource.next(componentState);\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 51, + "jsdoctags": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "DataService" + ], + "type": "injectable" + }, + { + "name": "StudentNodeService", + "id": "injectable-StudentNodeService-249d76a1b4fcee7ced05177ba1cd7451fb4b85978161c8b4913019f5509f525cca80f92d6d169fd0c97fbdd910f214166eb0c7516eab2abf22e0de1aac4c7870", + "file": "src/assets/wise5/services/studentNodeService.ts", + "properties": [ + { + "name": "chooseTransitionPromises", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "object", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "modifierKind": [ + 123 + ] + }, + { + "name": "transitionResults", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "object", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "modifierKind": [ + 123 + ] + }, + { + "name": "doneRenderingComponent$", + "defaultValue": "this.doneRenderingComponentSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "NodeService" + } + }, + { + "name": "doneRenderingComponentSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "NodeService" + } + }, + { + "name": "nodeSubmitClicked$", + "defaultValue": "this.nodeSubmitClickedSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "Observable", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "NodeService" + } + }, + { + "name": "nodeSubmitClickedSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "NodeService" + } + } + ], + "methods": [ + { + "name": "chooseTransition", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "transitionLogic", + "type": "TransitionLogic", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 191, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nChoose the transition the student will take\nfor how to choose a transition\n", + "description": "

Choose the transition the student will take\nfor how to choose a transition

\n", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": { + "pos": 7730, + "end": 7736, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 7724, + "end": 7729, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the current node id

\n" + }, + { + "name": { + "pos": 7769, + "end": 7784, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "transitionLogic" + }, + "type": "TransitionLogic", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 7763, + "end": 7768, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

an object containing transitions and parameters\nfor how to choose a transition

\n" + }, + { + "tagName": { + "pos": 7875, + "end": 7882, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

a promise that will return a transition

\n" + } + ] + }, + { + "name": "chooseTransitionAutomatically", + "args": [ + { + "name": "howToChooseAmongAvailablePaths", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "availableTransitions", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "transitionResult", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 272, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "howToChooseAmongAvailablePaths", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "availableTransitions", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "transitionResult", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "evaluateTransitionLogic", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 163, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nEvaluate the transition logic for the current node and create branch\npath taken event if necessary.\n", + "description": "

Evaluate the transition logic for the current node and create branch\npath taken event if necessary.

\n" + }, + { + "name": "getAvailableTransitions", + "args": [ + { + "name": "transitions", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 251, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "transitions", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getChooseTransitionPromise", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "transitionLogic", + "type": "TransitionLogic", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 206, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "transitionLogic", + "type": "TransitionLogic", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getConstraintMessage", + "args": [ + { + "name": "constraint", + "type": "Constraint", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 71, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the message that describes how to disable the constraint\n", + "description": "

Get the message that describes how to disable the constraint

\n", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": { + "pos": 2678, + "end": 2688, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "constraint" + }, + "type": "Constraint", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2672, + "end": 2677, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the constraint that is preventing the student from going to the node

\n" + }, + { + "tagName": { + "pos": 2764, + "end": 2771, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

the message to display to the student that describes how to disable the constraint

\n" + } + ] + }, + { + "name": "getConstraintsMessage", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "constraints", + "type": "Constraint[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 53, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "constraints", + "type": "Constraint[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getNextNodeId", + "args": [ + { + "name": "currentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "optional": true + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 113, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the next node in the project sequence. We return a promise because in preview mode we allow\nthe user to specify which branch path they want to go to. In all other cases we will resolve\nthe promise immediately.\n", + "description": "

Get the next node in the project sequence. We return a promise because in preview mode we allow\nthe user to specify which branch path they want to go to. In all other cases we will resolve\nthe promise immediately.

\n", + "jsdoctags": [ + { + "name": { + "pos": 4554, + "end": 4563, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "currentId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "optional": true, + "tagName": { + "pos": 4548, + "end": 4553, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

(optional) the current node id

\n" + }, + { + "tagName": { + "pos": 4601, + "end": 4608, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

a promise that returns the next node id

\n" + } + ], + "inheritance": { + "file": "NodeService" + } + }, + { + "name": "getNextNodeIdFromParent", + "args": [ + { + "name": "resolve", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentNodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 145, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "resolve", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentNodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getPrevNodeId", + "args": [ + { + "name": "currentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "optional": true + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 78, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "currentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "optional": true, + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "NodeService" + } + }, + { + "name": "hasPreviouslyBranchedAndCannotChange", + "args": [ + { + "name": "branchPathTakenEvents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "transitionLogic", + "type": "TransitionLogic", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 127, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "branchPathTakenEvents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "transitionLogic", + "type": "TransitionLogic", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "letUserChooseTransition", + "args": [ + { + "name": "transitions", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "resolve", + "type": "function", + "deprecated": false, + "deprecationMessage": "", + "function": [ + { + "name": "value", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ] + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 258, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "transitions", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "resolve", + "type": "function", + "deprecated": false, + "deprecationMessage": "", + "function": [ + { + "name": "value", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "resolveNextNodeIdFromTransition", + "args": [ + { + "name": "resolve", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentNodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 134, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "resolve", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentNodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "saveBranchPathTakenEvent", + "args": [ + { + "name": "fromNodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "toNodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 177, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "fromNodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "toNodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setCurrentNode", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 30, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "NodeService" + } + }, + { + "name": "showNodeLockedDialog", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 38, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "broadcastDoneRenderingComponent", + "args": [ + { + "name": "nodeIdAndComponentId", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 55, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeIdAndComponentId", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "NodeService" + } + }, + { + "name": "broadcastNodeSubmitClicked", + "args": [ + { + "name": "args", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 51, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "args", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "NodeService" + } + }, + { + "name": "closeNode", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 43, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "NodeService" + } + }, + { + "name": "goToNextNode", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "NodeService" + } + }, + { + "name": "goToPrevNode", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 37, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "NodeService" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Injectable } from '@angular/core';\nimport { NodeService } from './nodeService';\nimport { MatDialog } from '@angular/material/dialog';\nimport { ConfigService } from './configService';\nimport { ConstraintService } from './constraintService';\nimport { ProjectService } from './projectService';\nimport { NodeStatusService } from './nodeStatusService';\nimport { DialogWithCloseComponent } from '../directives/dialog-with-close/dialog-with-close.component';\nimport { Constraint } from '../../../app/domain/constraint';\nimport { TransitionLogic } from '../common/TransitionLogic';\nimport { StudentDataService } from './studentDataService';\nimport { ChooseBranchPathDialogComponent } from '../../../app/preview/modules/choose-branch-path-dialog/choose-branch-path-dialog.component';\n\n@Injectable()\nexport class StudentNodeService extends NodeService {\n private chooseTransitionPromises = {};\n private transitionResults = {};\n\n constructor(\n protected configService: ConfigService,\n protected constraintService: ConstraintService,\n protected dataService: StudentDataService,\n private dialog: MatDialog,\n private nodeStatusService: NodeStatusService,\n protected projectService: ProjectService\n ) {\n super(configService, constraintService, dataService, projectService);\n }\n\n setCurrentNode(nodeId: string): void {\n if (this.nodeStatusService.getNodeStatusByNodeId(nodeId).isVisitable) {\n this.dataService.setCurrentNodeByNodeId(nodeId);\n } else {\n this.showNodeLockedDialog(nodeId);\n }\n }\n\n private showNodeLockedDialog(nodeId: string): void {\n const node = this.projectService.getNodeById(nodeId);\n const constraints = this.constraintService.getConstraintsThatAffectNode(node);\n const message =\n constraints.length > 0\n ? this.getConstraintsMessage(nodeId, constraints)\n : $localize`Sorry, you cannot view this item yet.`;\n this.dialog.open(DialogWithCloseComponent, {\n data: {\n content: message,\n title: $localize`Item Locked`\n }\n });\n }\n\n private getConstraintsMessage(nodeId: string, constraints: Constraint[]): string {\n const nodeTitle = this.projectService.getNodePositionAndTitle(nodeId);\n let message = $localize`

To visit ${nodeTitle} you need to:

    `;\n this.constraintService.orderConstraints(constraints);\n for (const constraint of constraints) {\n if (!this.constraintService.evaluateConstraint(constraint)) {\n message += `
  • ${this.getConstraintMessage(constraint)}
  • `;\n }\n }\n message += `
`;\n return message;\n }\n\n /**\n * Get the message that describes how to disable the constraint\n * @param constraint the constraint that is preventing the student from going to the node\n * @returns the message to display to the student that describes how to disable the constraint\n */\n private getConstraintMessage(constraint: Constraint): string {\n return constraint.removalCriteria\n .map((criterion) => this.constraintService.getCriteriaMessage(criterion))\n .filter((message) => message != '')\n .join('
');\n }\n\n getPrevNodeId(currentId?: string): string {\n let prevNodeId = null;\n const currentNodeId = currentId ?? this.dataService.getCurrentNodeId();\n if (currentNodeId) {\n // get all the nodes that transition to the current node\n const nodeIdsByToNodeId = this.projectService\n .getNodesByToNodeId(currentNodeId)\n .map((node) => node.id);\n if (nodeIdsByToNodeId.length === 1) {\n // there is only one node that transitions to the current node\n prevNodeId = nodeIdsByToNodeId[0];\n } else if (nodeIdsByToNodeId.length > 1) {\n // there are multiple nodes that transition to the current node\n const stackHistory = this.dataService.getStackHistory();\n // loop through the stack history node ids from newest to oldest\n for (let s = stackHistory.length - 1; s >= 0; s--) {\n const stackHistoryNodeId = stackHistory[s];\n if (nodeIdsByToNodeId.indexOf(stackHistoryNodeId) != -1) {\n // we have found a node that we previously visited that transitions to the current node\n prevNodeId = stackHistoryNodeId;\n break;\n }\n }\n }\n }\n return prevNodeId;\n }\n\n /**\n * Get the next node in the project sequence. We return a promise because in preview mode we allow\n * the user to specify which branch path they want to go to. In all other cases we will resolve\n * the promise immediately.\n * @param currentId (optional) the current node id\n * @returns a promise that returns the next node id\n */\n getNextNodeId(currentId?: string): Promise {\n return new Promise((resolve, reject) => {\n const currentNodeId = currentId ?? this.dataService.getCurrentNodeId();\n const transitionLogic = this.projectService.getNode(currentNodeId).getTransitionLogic();\n const branchPathTakenEvents =\n this.dataService.getBranchPathTakenEventsByNodeId(currentNodeId);\n if (this.hasPreviouslyBranchedAndCannotChange(branchPathTakenEvents, transitionLogic)) {\n resolve(branchPathTakenEvents.at(-1).data.toNodeId);\n } else {\n this.resolveNextNodeIdFromTransition(resolve, currentNodeId);\n }\n });\n }\n\n private hasPreviouslyBranchedAndCannotChange(\n branchPathTakenEvents: any[],\n transitionLogic: TransitionLogic\n ): boolean {\n return branchPathTakenEvents.length > 0 && !transitionLogic.canChangePath;\n }\n\n private resolveNextNodeIdFromTransition(resolve: any, currentNodeId: string): void {\n const transitionLogic = this.projectService.getNode(currentNodeId).getTransitionLogic();\n if (transitionLogic.transitions.length == 0) {\n this.getNextNodeIdFromParent(resolve, currentNodeId);\n } else {\n this.chooseTransition(currentNodeId, transitionLogic).then((transition: any) => {\n resolve(transition.to);\n });\n }\n }\n\n private getNextNodeIdFromParent(resolve: any, currentNodeId: string): void {\n const parentGroupId = this.projectService.getParentGroupId(currentNodeId);\n if (parentGroupId != null) {\n const parentTransitionLogic = this.projectService.getNode(parentGroupId).getTransitionLogic();\n this.chooseTransition(parentGroupId, parentTransitionLogic).then((transition: any) => {\n const transitionToNodeId = transition.to;\n const startId = this.projectService.isGroupNode(transitionToNodeId)\n ? this.projectService.getGroupStartId(transitionToNodeId)\n : null;\n resolve(startId == null || startId === '' ? transitionToNodeId : startId);\n });\n }\n }\n\n /**\n * Evaluate the transition logic for the current node and create branch\n * path taken event if necessary.\n */\n evaluateTransitionLogic(): void {\n const currentNode = this.projectService.getNode(this.dataService.getCurrentNodeId());\n const transitionLogic = currentNode.getTransitionLogic();\n const branchEvents = this.dataService.getBranchPathTakenEventsByNodeId(currentNode.id);\n const alreadyBranched = branchEvents.length > 0;\n if ((alreadyBranched && transitionLogic.canChangePath) || !alreadyBranched) {\n this.chooseTransition(currentNode.id, transitionLogic).then((transition) => {\n if (transition != null) {\n this.saveBranchPathTakenEvent(currentNode.id, transition.to);\n }\n });\n }\n }\n\n private saveBranchPathTakenEvent(fromNodeId: string, toNodeId: string): void {\n this.dataService.saveVLEEvent(fromNodeId, null, null, 'Navigation', 'branchPathTaken', {\n fromNodeId: fromNodeId,\n toNodeId: toNodeId\n });\n }\n\n /**\n * Choose the transition the student will take\n * @param nodeId the current node id\n * @param transitionLogic an object containing transitions and parameters\n * for how to choose a transition\n * @returns a promise that will return a transition\n */\n protected chooseTransition(nodeId: string, transitionLogic: TransitionLogic): Promise {\n if (this.configService.isPreview() && this.chooseTransitionPromises[nodeId] != null) {\n return this.chooseTransitionPromises[nodeId];\n }\n const promise = this.getChooseTransitionPromise(nodeId, transitionLogic);\n if (this.configService.isPreview()) {\n const availableTransitions = this.getAvailableTransitions(transitionLogic.transitions);\n const transitionResult = this.transitionResults[nodeId];\n if (availableTransitions.length > 1 && transitionResult == null) {\n this.chooseTransitionPromises[nodeId] = promise;\n }\n }\n return promise;\n }\n\n private getChooseTransitionPromise(\n nodeId: string,\n transitionLogic: TransitionLogic\n ): Promise {\n return new Promise((resolve) => {\n let transitionResult = this.transitionResults[nodeId];\n if (transitionResult == null || transitionLogic.canChangePath) {\n /*\n * we have not previously calculated the transition or the\n * transition logic allows the student to change branch paths\n * so we will calculate the transition again\n */\n const transitions = transitionLogic.transitions;\n const availableTransitions = this.getAvailableTransitions(transitions);\n if (availableTransitions.length == 0) {\n transitionResult = null;\n } else if (availableTransitions.length == 1) {\n transitionResult = availableTransitions[0];\n } else if (availableTransitions.length > 1) {\n if (this.configService.isPreview()) {\n // we are in preview mode so we will let the user choose the branch path to go to\n if (transitionResult != null) {\n /*\n * the user has previously chosen the branch path so we will use the transition\n * they last chose and not ask them again\n */\n } else {\n this.letUserChooseTransition(availableTransitions, resolve);\n }\n } else {\n transitionResult = this.chooseTransitionAutomatically(\n transitionLogic.howToChooseAmongAvailablePaths,\n availableTransitions,\n transitionResult\n );\n }\n }\n }\n if (transitionResult != null) {\n this.transitionResults[nodeId] = transitionResult;\n resolve(transitionResult);\n }\n });\n }\n\n private getAvailableTransitions(transitions: any): any[] {\n return transitions.filter(\n (transition) =>\n transition.criteria == null || this.constraintService.evaluateCriterias(transition.criteria)\n );\n }\n\n private letUserChooseTransition(transitions: any[], resolve: (value: any) => void): void {\n this.dialog\n .open(ChooseBranchPathDialogComponent, {\n data: transitions.map((transition) => ({\n nodeId: transition.to,\n nodeTitle: this.projectService.getNodePositionAndTitle(transition.to),\n transition: transition\n })),\n disableClose: true\n })\n .afterClosed()\n .subscribe((result) => resolve(result));\n }\n\n private chooseTransitionAutomatically(\n howToChooseAmongAvailablePaths: string,\n availableTransitions: any[],\n transitionResult: any\n ): any {\n if ([null, '', 'random'].includes(howToChooseAmongAvailablePaths)) {\n const randomIndex = Math.floor(Math.random() * availableTransitions.length);\n transitionResult = availableTransitions[randomIndex];\n } else if (howToChooseAmongAvailablePaths === 'workgroupId') {\n const index = this.configService.getWorkgroupId() % availableTransitions.length;\n transitionResult = availableTransitions[index];\n } else if (howToChooseAmongAvailablePaths === 'firstAvailable') {\n transitionResult = availableTransitions[0];\n } else if (howToChooseAmongAvailablePaths === 'lastAvailable') {\n transitionResult = availableTransitions[availableTransitions.length - 1];\n }\n return transitionResult;\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "constraintService", + "type": "ConstraintService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeStatusService", + "type": "NodeStatusService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 17, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "constraintService", + "type": "ConstraintService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeStatusService", + "type": "NodeStatusService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "NodeService" + ], + "type": "injectable" + }, + { + "name": "StudentNotificationService", + "id": "injectable-StudentNotificationService-9065c70cd0a3625979d8f2727780ec2003a0f1065ad25a280e8eb82a049872071c9812d34c6e146b3e56baa670962d5d59ecb13b16c944274c6343b59c59ac52", + "file": "src/assets/wise5/services/studentNotificationService.ts", + "properties": [ + { + "name": "notificationChanged$", + "defaultValue": "this.notificationChangedSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "Observable", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "NotificationService" + } + }, + { + "name": "notificationChangedSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "NotificationService" + } + }, + { + "name": "notifications", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "Notification[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "inheritance": { + "file": "NotificationService" + } + }, + { + "name": "setGlobalMessage$", + "defaultValue": "this.setGlobalMessageSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "Observable", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "NotificationService" + } + }, + { + "name": "setGlobalMessageSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "NotificationService" + } + }, + { + "name": "setIsJSONValid$", + "defaultValue": "this.setIsJSONValidSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "Observable", + "indexKey": "", + "optional": false, + "description": "", + "line": 20, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "NotificationService" + } + }, + { + "name": "setIsJSONValidSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "NotificationService" + } + }, + { + "name": "viewCurrentAmbientNotification$", + "defaultValue": "this.viewCurrentAmbientNotificationSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "Observable", + "indexKey": "", + "optional": false, + "description": "", + "line": 22, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "NotificationService" + } + }, + { + "name": "viewCurrentAmbientNotificationSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 21, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "NotificationService" + } + } + ], + "methods": [ + { + "name": "initialize", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 27, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isDismissImmediately", + "args": [ + { + "name": "notification", + "type": "Notification", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 44, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "notification", + "type": "Notification", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "subscribeToNotificationMessages", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 31, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "addNotification", + "args": [ + { + "name": "notification", + "type": "Notification", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 412, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "notification", + "type": "Notification", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "NotificationService" + } + }, + { + "name": "broadcastNotificationChanged", + "args": [ + { + "name": "notification", + "type": "Notification", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 434, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "notification", + "type": "Notification", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "NotificationService" + } + }, + { + "name": "broadcastSetGlobalMessage", + "args": [ + { + "name": "args", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 461, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "args", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "NotificationService" + } + }, + { + "name": "broadcastSetIsJSONValid", + "args": [ + { + "name": "args", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 465, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "args", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "NotificationService" + } + }, + { + "name": "broadcastViewCurrentAmbientNotification", + "args": [ + { + "name": "args", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 469, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "args", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "NotificationService" + } + }, + { + "name": "createNewNotification", + "args": [ + { + "name": "runId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "periodId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "notificationType", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "fromWorkgroupId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "toWorkgroupId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "message", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "data", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + }, + { + "name": "groupId", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + } + ], + "optional": false, + "returnType": "Notification", + "typeParameters": [], + "line": 45, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCreates a new notification object\n", + "description": "

Creates a new notification object

\n", + "jsdoctags": [ + { + "name": "runId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "periodId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": { + "pos": 1698, + "end": 1714, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "notificationType" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 1692, + "end": 1697, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

type of notification [component, node, annotation, etc]

\n" + }, + { + "name": { + "pos": 1783, + "end": 1789, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 1777, + "end": 1782, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

id of node

\n" + }, + { + "name": { + "pos": 1813, + "end": 1824, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 1807, + "end": 1812, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

id of component

\n" + }, + { + "name": { + "pos": 1853, + "end": 1868, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "fromWorkgroupId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 1847, + "end": 1852, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

id of workgroup that created this notification

\n" + }, + { + "name": { + "pos": 1928, + "end": 1941, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "toWorkgroupId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 1922, + "end": 1927, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

id of workgroup this notification is for

\n" + }, + { + "name": { + "pos": 1995, + "end": 2002, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "message" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 1989, + "end": 1994, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

notification message

\n" + }, + { + "name": { + "pos": 2036, + "end": 2040, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "data" + }, + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "pos": 2030, + "end": 2035, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

other extra information about this notification

\n" + }, + { + "name": { + "pos": 2101, + "end": 2108, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "groupId" + }, + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "pos": 2095, + "end": 2100, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

id that groups multiple notifications together

\n" + }, + { + "tagName": { + "pos": 2162, + "end": 2169, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

newly created notification object

\n" + } + ], + "inheritance": { + "file": "NotificationService" + } + }, + { + "name": "dismissNotification", + "args": [ + { + "name": "notification", + "type": "Notification", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 262, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "notification", + "type": "Notification", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "NotificationService" + } + }, + { + "name": "dismissNotifications", + "args": [ + { + "name": "notifications", + "type": "Notification[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 284, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "notifications", + "type": "Notification[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "NotificationService" + } + }, + { + "name": "displayAmbientNotification", + "args": [ + { + "name": "notification", + "type": "Notification", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 425, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "notification", + "type": "Notification", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "NotificationService" + } + }, + { + "name": "getActiveNotifications", + "args": [ + { + "name": "notifications", + "type": "Notification[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Notification[]", + "typeParameters": [], + "line": 314, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "notifications", + "type": "Notification[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "NotificationService" + } + }, + { + "name": "getActiveNotificationsWithSameSource", + "args": [ + { + "name": "notifications", + "type": "Notification[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "notificationToCompare", + "type": "Notification", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Notification[]", + "typeParameters": [], + "line": 273, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "notifications", + "type": "Notification[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "notificationToCompare", + "type": "Notification", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "NotificationService" + } + }, + { + "name": "getAlertNotifications", + "args": [ + { + "name": "args", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "{}", + "typeParameters": [], + "line": 386, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nReturns all CRaterResult notifications for given parameters\nTODO: expand to encompass other notification types that should be shown in classroom monitor\n", + "description": "

Returns all CRaterResult notifications for given parameters\nTODO: expand to encompass other notification types that should be shown in classroom monitor

\n", + "jsdoctags": [ + { + "name": { + "pos": 14227, + "end": 14231, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "args" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 14221, + "end": 14226, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

object of optional parameters to filter on (e.g. nodeId, componentId, toWorkgroupId, fromWorkgroupId, periodId)

\n" + }, + { + "tagName": { + "pos": 14350, + "end": 14357, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

array of cRater notificaitons

\n" + } + ], + "inheritance": { + "file": "NotificationService" + } + }, + { + "name": "getDismissedNotifications", + "args": [ + { + "name": "notifications", + "type": "Notification[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Notification[]", + "typeParameters": [], + "line": 335, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "notifications", + "type": "Notification[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "NotificationService" + } + }, + { + "name": "getDismissedNotificationsForWorkgroup", + "args": [ + { + "name": "notifications", + "type": "Notification[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Notification[]", + "typeParameters": [], + "line": 324, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "notifications", + "type": "Notification[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "NotificationService" + } + }, + { + "name": "getLatestActiveNotificationsFromUniqueSource", + "args": [ + { + "name": "notifications", + "type": "Notification[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Notification[]", + "typeParameters": [], + "line": 295, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "notifications", + "type": "Notification[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "NotificationService" + } + }, + { + "name": "getLatestUniqueSourceNotifications", + "args": [ + { + "name": "notifications", + "type": "Notification[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Notification[]", + "typeParameters": [], + "line": 339, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "notifications", + "type": "Notification[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "NotificationService" + } + }, + { + "name": "getNewNotifications", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 107, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "NotificationService" + } + }, + { + "name": "getNotifications", + "args": [ + { + "name": "args", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "{}", + "typeParameters": [], + "line": 368, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nReturns all notifications for the given parameters\n(e.g. nodeId, componentId, toWorkgroupId, fromWorkgroupId, periodId, type)\n", + "description": "

Returns all notifications for the given parameters\n(e.g. nodeId, componentId, toWorkgroupId, fromWorkgroupId, periodId, type)

\n", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": { + "pos": 13544, + "end": 13548, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "args" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 13538, + "end": 13543, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

object of optional parameters to filter on\n(e.g. nodeId, componentId, toWorkgroupId, fromWorkgroupId, periodId, type)

\n" + }, + { + "tagName": { + "pos": 13678, + "end": 13685, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

array of notificaitons

\n" + } + ], + "inheritance": { + "file": "NotificationService" + } + }, + { + "name": "getNotificationsSentToWorkgroup", + "args": [ + { + "name": "notifications", + "type": "Notification[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Notification[]", + "typeParameters": [], + "line": 307, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "notifications", + "type": "Notification[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "NotificationService" + } + }, + { + "name": "getSourceKey", + "args": [ + { + "name": "notification", + "type": "Notification", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 353, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "notification", + "type": "Notification", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "NotificationService" + } + }, + { + "name": "hideJSONValidMessage", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 446, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "NotificationService" + } + }, + { + "name": "isActiveNotification", + "args": [ + { + "name": "notification", + "type": "Notification", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 320, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "notification", + "type": "Notification", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "NotificationService" + } + }, + { + "name": "pretendServerRequest", + "args": [ + { + "name": "notification", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 358, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "notification", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "NotificationService" + } + }, + { + "name": "retrieveNotifications", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 84, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "NotificationService" + } + }, + { + "name": "saveNotificationToServer", + "args": [ + { + "name": "notification", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 249, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "notification", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "NotificationService" + } + }, + { + "name": "sendNotificationForScore", + "args": [ + { + "name": "notificationForScore", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 174, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "notificationForScore", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "NotificationService" + } + }, + { + "name": "sendNotificationToUser", + "args": [ + { + "name": "notificationMessageTemplate", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "fromWorkgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "notificationForScore", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "runId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "periodId", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "notificationType", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "toWorkgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "notificationData", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "notificationGroupId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 219, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "notificationMessageTemplate", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "fromWorkgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "notificationForScore", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "runId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "periodId", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "notificationType", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "toWorkgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "notificationData", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "notificationGroupId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "NotificationService" + } + }, + { + "name": "setIsJSONValidMessage", + "args": [ + { + "name": "isJSONValid", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 457, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nShow the message in the toolbar that says \"JSON Valid\" or \"JSON Invalid\".\ntrue if we want to show \"JSON Valid\"\nfalse if we want to show \"JSON Invalid\"\nnull if we don't want to show anything\n", + "description": "

Show the message in the toolbar that says "JSON Valid" or "JSON Invalid".\ntrue if we want to show "JSON Valid"\nfalse if we want to show "JSON Invalid"\nnull if we don't want to show anything

\n", + "jsdoctags": [ + { + "name": { + "pos": 16511, + "end": 16522, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "isJSONValid" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 16505, + "end": 16510, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

true if we want to show "JSON Valid"\nfalse if we want to show "JSON Invalid"\nnull if we don't want to show anything

\n" + } + ], + "inheritance": { + "file": "NotificationService" + } + }, + { + "name": "setNotificationNodePositionAndTitle", + "args": [ + { + "name": "notification", + "type": "Notification", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 167, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "notification", + "type": "Notification", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "NotificationService" + } + }, + { + "name": "showJSONInvalidMessage", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 442, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "NotificationService" + } + }, + { + "name": "showJSONValidMessage", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 438, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "NotificationService" + } + }, + { + "name": "showSavedMessage", + "args": [ + { + "name": "message", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "timeout", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "500" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 483, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "message", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "timeout", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "500", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "NotificationService" + } + }, + { + "name": "showSavingMessage", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 473, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "NotificationService" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { Message } from '@stomp/stompjs';\nimport { AnnotationService } from './annotationService';\nimport { ConfigService } from './configService';\nimport { Notification } from '../../../app/domain/notification';\nimport { NotificationService } from './notificationService';\nimport { ProjectService } from './projectService';\nimport { StompService } from './stompService';\nimport { StudentDataService } from './studentDataService';\n\n@Injectable()\nexport class StudentNotificationService extends NotificationService {\n constructor(\n protected annotationService: AnnotationService,\n protected dialog: MatDialog,\n protected http: HttpClient,\n protected configService: ConfigService,\n protected projectService: ProjectService,\n private stompService: StompService,\n private studentDataService: StudentDataService\n ) {\n super(annotationService, dialog, http, configService, projectService);\n }\n\n initialize(): void {\n this.subscribeToNotificationMessages();\n }\n\n private subscribeToNotificationMessages(): void {\n this.stompService.workgroupMessage$.subscribe((message: Message) => {\n const body = JSON.parse(message.body);\n if (body.type === 'notification') {\n const notification = JSON.parse(body.content);\n this.addNotification(notification);\n if (this.isDismissImmediately(notification)) {\n this.dismissNotification(notification);\n }\n }\n });\n }\n\n private isDismissImmediately(notification: Notification): boolean {\n return (\n notification.nodeId === this.studentDataService.getCurrentNodeId() &&\n notification.type === 'PeerChatMessage'\n );\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "stompService", + "type": "StompService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentDataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 14, + "jsdoctags": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "stompService", + "type": "StompService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentDataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "NotificationService" + ], + "type": "injectable" + }, + { + "name": "StudentPeerGroupService", + "id": "injectable-StudentPeerGroupService-2f3613d8bdba0c7402b997d842aab77a7a38724a17c97b1c95aea9e08949165e79424b0912e8a058d10051f58c4bc4de6f97e05cbd89fd6efa8df9e58ec0bec1", + "file": "src/assets/wise5/services/studentPeerGroupService.ts", + "properties": [ + { + "name": "PREVIEW_PEER_GROUP_ID", + "defaultValue": "1", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "modifierKind": [ + 126, + 148 + ], + "inheritance": { + "file": "PeerGroupService" + } + }, + { + "name": "runId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "inheritance": { + "file": "PeerGroupService" + } + } + ], + "methods": [ + { + "name": "getPreviewPeerGroupStudentData", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "fieldName", + "type": "\"dynamicPrompt\" | \"questionBank\"", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 90, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "fieldName", + "type": "\"dynamicPrompt\" | \"questionBank\"", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "retrieveDynamicPromptStudentData", + "args": [ + { + "name": "peerGroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 61, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "peerGroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "PeerGroupService" + } + }, + { + "name": "retrievePeerGroup", + "args": [ + { + "name": "peerGroupingTag", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "workgroupId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "this.configService.getWorkgroupId()" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 24, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "peerGroupingTag", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "workgroupId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "this.configService.getWorkgroupId()", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "PeerGroupService" + } + }, + { + "name": "retrievePeerGroupAnnotations", + "args": [ + { + "name": "peerGroup", + "type": "PeerGroup", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 146, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "peerGroup", + "type": "PeerGroup", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "PeerGroupService" + } + }, + { + "name": "retrievePeerGroupWork", + "args": [ + { + "name": "peerGroup", + "type": "PeerGroup", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 34, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "peerGroup", + "type": "PeerGroup", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "PeerGroupService" + } + }, + { + "name": "retrieveQuestionBankStudentData", + "args": [ + { + "name": "peerGroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 47, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "peerGroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "PeerGroupService" + } + }, + { + "name": "retrieveStudentDataForFieldName", + "args": [ + { + "name": "peerGroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "fieldName", + "type": "\"dynamicPrompt\" | \"questionBank\"", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "urlEnding", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 75, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "peerGroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "fieldName", + "type": "\"dynamicPrompt\" | \"questionBank\"", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "urlEnding", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "retrieveStudentWork", + "args": [ + { + "name": "peerGroup", + "type": "PeerGroup", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "showWorkNodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "showWorkComponentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 123, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "peerGroup", + "type": "PeerGroup", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "showWorkNodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "showWorkComponentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "PeerGroupService" + } + }, + { + "name": "createNewGroup", + "args": [ + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "peerGroupingTag", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 87, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "peerGroupingTag", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "PeerGroupService" + } + }, + { + "name": "getPeerGroupingTags", + "args": [ + { + "name": "node", + "type": "Node", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Set", + "typeParameters": [], + "line": 21, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "node", + "type": "Node", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "PeerGroupService" + } + }, + { + "name": "getPreviewPeerGroup", + "args": [], + "optional": false, + "returnType": "PeerGroup", + "typeParameters": [], + "line": 49, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "PeerGroupService" + } + }, + { + "name": "moveWorkgroupToGroup", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "groupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 94, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "groupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "PeerGroupService" + } + }, + { + "name": "removeWorkgroupFromGroup", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "groupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 98, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "groupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "PeerGroupService" + } + }, + { + "name": "retrievePeerGroupInfo", + "args": [ + { + "name": "peerGroupingTag", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "peerGroupingTag", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "PeerGroupService" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { PeerGroupStudentData } from '../../../app/domain/peerGroupStudentData';\nimport { PeerGroup } from '../components/peerChat/PeerGroup';\nimport { AnnotationService } from './annotationService';\nimport { ConfigService } from './configService';\nimport { PeerGroupService } from './peerGroupService';\nimport { StudentDataService } from './studentDataService';\nimport { ProjectService } from './projectService';\n\n@Injectable()\nexport class StudentPeerGroupService extends PeerGroupService {\n constructor(\n private annotationService: AnnotationService,\n protected configService: ConfigService,\n protected http: HttpClient,\n private projectService: ProjectService,\n private studentDataService: StudentDataService\n ) {\n super(configService, http);\n }\n\n retrievePeerGroup(\n peerGroupingTag: string,\n workgroupId = this.configService.getWorkgroupId()\n ): Observable {\n if (this.configService.isPreview()) {\n return of(this.getPreviewPeerGroup());\n }\n return super.retrievePeerGroup(peerGroupingTag, workgroupId);\n }\n\n retrievePeerGroupWork(\n peerGroup: PeerGroup,\n nodeId: string,\n componentId: string\n ): Observable {\n if (this.configService.isPreview()) {\n return of(\n this.studentDataService.getComponentStatesByNodeIdAndComponentId(nodeId, componentId)\n );\n }\n return super.retrievePeerGroupWork(peerGroup, nodeId, componentId);\n }\n\n retrieveQuestionBankStudentData(\n peerGroupId: number,\n nodeId: string,\n componentId: string\n ): Observable {\n return this.retrieveStudentDataForFieldName(\n peerGroupId,\n nodeId,\n componentId,\n 'questionBank',\n 'question-bank'\n );\n }\n\n retrieveDynamicPromptStudentData(\n peerGroupId: number,\n nodeId: string,\n componentId: string\n ): Observable {\n return this.retrieveStudentDataForFieldName(\n peerGroupId,\n nodeId,\n componentId,\n 'dynamicPrompt',\n 'dynamic-prompt'\n );\n }\n\n private retrieveStudentDataForFieldName(\n peerGroupId: number,\n nodeId: string,\n componentId: string,\n fieldName: 'dynamicPrompt' | 'questionBank',\n urlEnding: string\n ): Observable {\n if (this.configService.isPreview()) {\n return this.getPreviewPeerGroupStudentData(nodeId, componentId, fieldName);\n }\n return this.http.get(\n `/api/peer-group/${peerGroupId}/${nodeId}/${componentId}/student-data/${urlEnding}`\n );\n }\n\n private getPreviewPeerGroupStudentData(\n nodeId: string,\n componentId: string,\n fieldName: 'dynamicPrompt' | 'questionBank'\n ): Observable {\n const referenceComponent = this.projectService.getReferenceComponentForField(\n nodeId,\n componentId,\n fieldName\n );\n const studentWork = this.studentDataService.getLatestComponentStateByNodeIdAndComponentId(\n referenceComponent.nodeId,\n referenceComponent.componentId\n );\n if (studentWork == null) {\n return of([]);\n } else {\n const peerGroupStudentData = new PeerGroupStudentData(\n {\n id: this.configService.getWorkgroupId(),\n periodId: this.configService.getPeriodId()\n },\n studentWork,\n this.annotationService.getLatestScoreAnnotation(\n referenceComponent.nodeId,\n referenceComponent.componentId,\n this.configService.getWorkgroupId()\n )\n );\n return of([peerGroupStudentData]);\n }\n }\n\n retrieveStudentWork(\n peerGroup: PeerGroup,\n nodeId: string,\n componentId: string,\n showWorkNodeId: string,\n showWorkComponentId: string\n ): Observable {\n if (this.configService.isPreview()) {\n const latestComponentState = this.studentDataService.getLatestComponentStateByNodeIdAndComponentId(\n showWorkNodeId,\n showWorkComponentId\n );\n return latestComponentState != null ? of([latestComponentState]) : of([]);\n }\n return super.retrieveStudentWork(\n peerGroup,\n nodeId,\n componentId,\n showWorkNodeId,\n showWorkComponentId\n );\n }\n\n retrievePeerGroupAnnotations(\n peerGroup: PeerGroup,\n nodeId: string,\n componentId: string\n ): Observable {\n if (this.configService.isPreview()) {\n return of([]);\n }\n return this.http.get(`/api/peer-group/${peerGroup.id}/${nodeId}/${componentId}/annotations`);\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentDataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 13, + "jsdoctags": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentDataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "PeerGroupService" + ], + "type": "injectable" + }, + { + "name": "StudentProjectTranslationService", + "id": "injectable-StudentProjectTranslationService-a6b612b2bb541099e71badcdee4453f0f10b380971c7e24bc4ffbb19c86b767a5eb309b7b2dbf9fa2fda50c5975d30846425ac0c1bc338c1e397d38b29a65793", + "file": "src/assets/wise5/services/studentProjectTranslationService.ts", + "properties": [ + { + "name": "currentTranslations", + "defaultValue": "toSignal(\n toObservable(this.projectService.currentLanguage).pipe(\n switchMap((language) =>\n this.projectService.getLocale().isDefaultLocale(language.locale)\n ? of({})\n : lastValueFrom(this.fetchTranslations(language.locale))\n )\n ),\n { initialValue: {} }\n )", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 24 + } + ], + "methods": [ + { + "name": "applyTranslations", + "args": [ + { + "name": "projectElement", + "type": "object", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "translations", + "type": "Translations", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 68, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "projectElement", + "type": "object", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "translations", + "type": "Translations", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "revertToOriginalProject", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 62, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "switchLanguage", + "args": [ + { + "name": "language", + "type": "Language", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "requester", + "type": "\"student\" | \"system\"", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 35, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ], + "jsdoctags": [ + { + "name": "language", + "type": "Language", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "requester", + "type": "\"student\" | \"system\"", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "translate", + "args": [ + { + "name": "locale", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "'en_US'" + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 48, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "locale", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "'en_US'", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "fetchTranslations", + "args": [ + { + "name": "locale", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 16, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "locale", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectTranslationService" + } + }, + { + "name": "getTranslationMappingURL", + "args": [ + { + "name": "locale", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 24, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "locale", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectTranslationService" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Injectable } from '@angular/core';\nimport { lastValueFrom, of, switchMap, tap } from 'rxjs';\nimport { copy } from '../common/object/object';\nimport { Translations } from '../../../app/domain/translations';\nimport { ProjectTranslationService } from './projectTranslationService';\nimport { toSignal, toObservable } from '@angular/core/rxjs-interop';\nimport { Language } from '../../../app/domain/language';\nimport { HttpClient } from '@angular/common/http';\nimport { ConfigService } from './configService';\nimport { ProjectService } from './projectService';\nimport { StudentDataService } from './studentDataService';\n\n@Injectable()\nexport class StudentProjectTranslationService extends ProjectTranslationService {\n constructor(\n protected configService: ConfigService,\n private dataService: StudentDataService,\n protected http: HttpClient,\n protected projectService: ProjectService\n ) {\n super(configService, http, projectService);\n }\n\n currentTranslations = toSignal(\n toObservable(this.projectService.currentLanguage).pipe(\n switchMap((language) =>\n this.projectService.getLocale().isDefaultLocale(language.locale)\n ? of({})\n : lastValueFrom(this.fetchTranslations(language.locale))\n )\n ),\n { initialValue: {} }\n );\n\n async switchLanguage(language: Language, requester: 'student' | 'system'): Promise {\n this.projectService.setCurrentLanguage(language);\n await this.translate(language.locale);\n this.dataService.saveVLEEvent(\n this.dataService.getCurrentNodeId(),\n null,\n null,\n 'Language',\n 'languageSelected',\n { language: language.locale, requester: requester }\n );\n }\n\n private translate(locale = 'en_US'): Promise {\n const project = this.revertToOriginalProject();\n return lastValueFrom(\n this.projectService.getLocale().hasTranslationsToApply(locale)\n ? this.fetchTranslations(locale).pipe(\n tap((translations: Translations) => {\n this.applyTranslations(project, translations);\n this.projectService.setProject(project);\n })\n )\n : of({})\n );\n }\n\n private revertToOriginalProject(): any {\n const project = copy(this.projectService.getOriginalProject());\n this.projectService.setProject(project);\n return project;\n }\n\n private applyTranslations(projectElement: object, translations: Translations): void {\n Object.keys(projectElement)\n .filter((key) => key.endsWith('.i18n'))\n .forEach((key) => {\n const translationKey = projectElement[key].id;\n if (translations[translationKey]) {\n const keyWithoutI18NId = key.substring(0, key.lastIndexOf('.i18n'));\n projectElement[keyWithoutI18NId] = translations[translationKey].value;\n }\n });\n Object.values(projectElement).forEach((value) => {\n if (Array.isArray(value)) {\n value.forEach((val) => this.applyTranslations(val, translations));\n } else if (typeof value === 'object' && value != null) {\n this.applyTranslations(value, translations);\n }\n });\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 14, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "ProjectTranslationService" + ], + "type": "injectable" + }, + { + "name": "StudentService", + "id": "injectable-StudentService-5ace33cfdd7ed90feb2b523783e970ddea372234e022bfd43e26b1f2cace2497f3525318344070a60b36a754864b5db187ae84edf4f8d0ead1de6f6f451aa137", + "file": "src/app/student/student.service.ts", + "properties": [ + { + "name": "addRunUrl", + "defaultValue": "'/api/student/run/register'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 123 + ] + }, + { + "name": "canBeAddedToWorkgroupUrl", + "defaultValue": "'/api/student/can-be-added-to-workgroup'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 25, + "modifierKind": [ + 123 + ] + }, + { + "name": "changePasswordUrl", + "defaultValue": "'/api/student/forgot/password/change'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 24, + "modifierKind": [ + 123 + ] + }, + { + "name": "checkSecurityAnswerUrl", + "defaultValue": "'/api/student/forgot/password/security-question'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 23, + "modifierKind": [ + 123 + ] + }, + { + "name": "getSecurityQuestionUrl", + "defaultValue": "'/api/student/forgot/password/security-question'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 22, + "modifierKind": [ + 123 + ] + }, + { + "name": "launchRunUrl", + "defaultValue": "'/api/student/run/launch'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "modifierKind": [ + 123 + ] + }, + { + "name": "newRunSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 27, + "modifierKind": [ + 123 + ] + }, + { + "name": "newRunSource$", + "defaultValue": "this.newRunSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 28 + }, + { + "name": "registerUrl", + "defaultValue": "'/api/student/register'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "modifierKind": [ + 123 + ] + }, + { + "name": "runInfoByIdUrl", + "defaultValue": "'/api/run/info-by-id'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "modifierKind": [ + 123 + ] + }, + { + "name": "runInfoUrl", + "defaultValue": "'/api/run/info'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "modifierKind": [ + 123 + ] + }, + { + "name": "runsUrl", + "defaultValue": "'/api/student/runs'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "modifierKind": [ + 123 + ] + }, + { + "name": "securityQuestionsUrl", + "defaultValue": "'/api/student/register/questions'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "modifierKind": [ + 123 + ] + }, + { + "name": "teacherListUrl", + "defaultValue": "'/api/student/teacher-list'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 20, + "modifierKind": [ + 123 + ] + }, + { + "name": "updateProfileUrl", + "defaultValue": "'/api/student/profile/update'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "modifierKind": [ + 123 + ] + }, + { + "name": "usernameSearchUrl", + "defaultValue": "'/api/student/forgot/username/search'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 21, + "modifierKind": [ + 123 + ] + } + ], + "methods": [ + { + "name": "addNewProject", + "args": [ + { + "name": "run", + "type": "StudentRun", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 73, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "run", + "type": "StudentRun", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addRun", + "args": [ + { + "name": "runCode", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "period", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 49, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "runCode", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "period", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "canBeAddedToWorkgroup", + "args": [ + { + "name": "runId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "workgroupId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "userId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 132, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "runId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "workgroupId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "userId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "changePassword", + "args": [ + { + "name": "username", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "answer", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "password", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "confirmPassword", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 123, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "username", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "answer", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "password", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "confirmPassword", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "checkSecurityAnswer", + "args": [ + { + "name": "username", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "answer", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "token", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 115, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "username", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "answer", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "token", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getRunInfo", + "args": [ + { + "name": "runCode", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 39, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "runCode", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getRunInfoById", + "args": [ + { + "name": "runId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 44, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "runId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getRuns", + "args": [], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 32, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getSecurityQuestion", + "args": [ + { + "name": "username", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 110, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "username", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getStudentUsernames", + "args": [ + { + "name": "firstName", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "lastName", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "birthMonth", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "birthDay", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 102, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "firstName", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "lastName", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "birthMonth", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "birthDay", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getTeacherList", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 98, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "launchRun", + "args": [ + { + "name": "runId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "presentUserIds", + "type": "number[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "absentUserIds", + "type": "number[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 57, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "runId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "presentUserIds", + "type": "number[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "absentUserIds", + "type": "number[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "log", + "args": [ + { + "name": "message", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 69, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "message", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "registerStudentAccount", + "args": [ + { + "name": "studentUser", + "type": "Student", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 77, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentUser", + "type": "Student", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "retrieveSecurityQuestions", + "args": [], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 87, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "updateProfile", + "args": [ + { + "name": "username", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "language", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 91, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "username", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "language", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\nimport { tap } from 'rxjs/operators';\n\nimport { RunInfo } from './run-info';\nimport { Student } from '../domain/student';\nimport { StudentRun } from './student-run';\n\n@Injectable()\nexport class StudentService {\n private runsUrl = '/api/student/runs';\n private runInfoUrl = '/api/run/info';\n private runInfoByIdUrl = '/api/run/info-by-id';\n private addRunUrl = '/api/student/run/register';\n private launchRunUrl = '/api/student/run/launch';\n private registerUrl = '/api/student/register';\n private securityQuestionsUrl = '/api/student/register/questions';\n private updateProfileUrl = '/api/student/profile/update';\n private teacherListUrl = '/api/student/teacher-list';\n private usernameSearchUrl = '/api/student/forgot/username/search';\n private getSecurityQuestionUrl = '/api/student/forgot/password/security-question';\n private checkSecurityAnswerUrl = '/api/student/forgot/password/security-question';\n private changePasswordUrl = '/api/student/forgot/password/change';\n private canBeAddedToWorkgroupUrl = '/api/student/can-be-added-to-workgroup';\n\n private newRunSource = new Subject();\n newRunSource$ = this.newRunSource.asObservable();\n\n constructor(private http: HttpClient) {}\n\n getRuns(): Observable {\n const headers = new HttpHeaders({ 'Cache-Control': 'no-cache' });\n return this.http\n .get(this.runsUrl, { headers: headers })\n .pipe(tap((runs) => this.log(`fetched runs`)));\n }\n\n getRunInfo(runCode: string): Observable {\n let params = new HttpParams().set('runCode', runCode);\n return this.http.get(this.runInfoUrl, { params: params });\n }\n\n getRunInfoById(runId: number): Observable {\n let params = new HttpParams().set('runId', String(runId));\n return this.http.get(this.runInfoByIdUrl, { params });\n }\n\n addRun(runCode: string, period: string): Observable {\n const headers = new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded');\n let body = new HttpParams();\n body = body.set('runCode', runCode);\n body = body.set('period', period);\n return this.http.post(this.addRunUrl, body, { headers: headers });\n }\n\n launchRun(runId: number, workgroupId: number, presentUserIds: number[], absentUserIds: number[]) {\n const headers = new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded');\n let body = new HttpParams();\n body = body.set('runId', String(runId));\n if (workgroupId != null) {\n body = body.set('workgroupId', String(workgroupId));\n }\n body = body.set('presentUserIds', JSON.stringify(presentUserIds));\n body = body.set('absentUserIds', JSON.stringify(absentUserIds));\n return this.http.post(this.launchRunUrl, body, { headers: headers });\n }\n\n private log(message: string) {\n console.log('StudentService: ' + message);\n }\n\n addNewProject(run: StudentRun) {\n this.newRunSource.next(run);\n }\n\n registerStudentAccount(studentUser: Student): Observable {\n const headers = {\n 'Content-Type': 'application/json'\n };\n return this.http.post(this.registerUrl, studentUser, {\n headers: headers,\n responseType: 'json'\n });\n }\n\n retrieveSecurityQuestions(): Observable {\n return this.http.get(this.securityQuestionsUrl);\n }\n\n updateProfile(username, language) {\n const headers = new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded');\n let body = new HttpParams();\n body = body.set('language', language);\n return this.http.post(this.updateProfileUrl, body, { headers: headers });\n }\n\n getTeacherList() {\n return this.http.get(this.teacherListUrl);\n }\n\n getStudentUsernames(firstName, lastName, birthMonth, birthDay) {\n let params = new HttpParams().set('firstName', firstName);\n params = params.set('lastName', lastName);\n params = params.set('birthMonth', birthMonth);\n params = params.set('birthDay', birthDay);\n return this.http.get(this.usernameSearchUrl, { params: params });\n }\n\n getSecurityQuestion(username) {\n const params = new HttpParams().set('username', username);\n return this.http.get(this.getSecurityQuestionUrl, { params: params });\n }\n\n checkSecurityAnswer(username, answer, token) {\n const headers = new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded');\n let params = new HttpParams().set('username', username);\n params = params.set('answer', answer);\n params = params.set('token', token);\n return this.http.post(this.checkSecurityAnswerUrl, params, { headers: headers });\n }\n\n changePassword(username, answer, password, confirmPassword) {\n const headers = new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded');\n let params = new HttpParams().set('username', username);\n params = params.set('answer', answer);\n params = params.set('password', password);\n params = params.set('confirmPassword', confirmPassword);\n return this.http.post(this.changePasswordUrl, params, { headers: headers });\n }\n\n canBeAddedToWorkgroup(runId, workgroupId, userId) {\n let params = new HttpParams().set('runId', runId);\n params = params.set('userId', userId);\n if (workgroupId != null) {\n params = params.set('workgroupId', workgroupId);\n }\n return this.http.get(this.canBeAddedToWorkgroupUrl, { params: params });\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 28, + "jsdoctags": [ + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "type": "injectable" + }, + { + "name": "StudentStatusService", + "id": "injectable-StudentStatusService-abe9ec61e97f4729e81fee1c125a9c9d2b16fc981b1820197cad4bea6cbaee838e5671cc453d2a704b7c328a855b6c7b4d19d05837757a6ad520d0794b0fa24d", + "file": "src/assets/wise5/services/studentStatusService.ts", + "properties": [ + { + "name": "studentStatus", + "defaultValue": "new StudentStatus()", + "deprecated": false, + "deprecationMessage": "", + "type": "StudentStatus", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "modifierKind": [ + 123 + ] + } + ], + "methods": [ + { + "name": "getComputerAvatarId", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 55, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getProjectCompletion", + "args": [], + "optional": false, + "returnType": "NodeProgress", + "typeParameters": [], + "line": 92, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "getStudentStatus", + "args": [], + "optional": false, + "returnType": "StudentStatus", + "typeParameters": [], + "line": 47, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isGlobalComputerAvatarAvailable", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 59, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "retrieveStudentStatus", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 32, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "saveStudentStatus", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 63, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "setComputerAvatarId", + "args": [ + { + "name": "computerAvatarId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 51, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "computerAvatarId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { NodeProgress } from '../common/NodeProgress';\nimport { StudentStatus } from '../common/StudentStatus';\nimport { ConfigService } from './configService';\nimport { NodeProgressService } from './nodeProgressService';\nimport { NodeStatusService } from './nodeStatusService';\nimport { StudentDataService } from './studentDataService';\nimport { ProjectService } from './projectService';\nimport { StudentProjectTranslationService } from './studentProjectTranslationService';\n\n@Injectable()\nexport class StudentStatusService {\n private studentStatus: StudentStatus = new StudentStatus();\n\n constructor(\n private http: HttpClient,\n private configService: ConfigService,\n private nodeProgressService: NodeProgressService,\n private nodeStatusService: NodeStatusService,\n private projectService: ProjectService,\n private projectTranslationService: StudentProjectTranslationService,\n private studentDataService: StudentDataService\n ) {\n studentDataService.nodeStatusesChanged$.subscribe(() => {\n if (!this.configService.isPreview() && this.configService.isRunActive()) {\n this.saveStudentStatus();\n }\n });\n }\n\n retrieveStudentStatus(): any {\n return this.http\n .get(`/api/studentStatus/${this.configService.getWorkgroupId()}`)\n .subscribe((studentStatus: any) => {\n this.studentStatus =\n studentStatus == null\n ? new StudentStatus()\n : new StudentStatus(JSON.parse(studentStatus.status));\n const language = this.studentStatus.language;\n if (language != null) {\n this.projectTranslationService.switchLanguage(language, 'system');\n }\n });\n }\n\n getStudentStatus(): StudentStatus {\n return this.studentStatus;\n }\n\n setComputerAvatarId(computerAvatarId: string): void {\n this.studentStatus.computerAvatarId = computerAvatarId;\n }\n\n getComputerAvatarId(): string {\n return this.studentStatus.computerAvatarId;\n }\n\n isGlobalComputerAvatarAvailable(): boolean {\n return this.getComputerAvatarId() != null;\n }\n\n private saveStudentStatus(): void {\n const runId = this.configService.getRunId();\n const periodId = this.configService.getPeriodId();\n const workgroupId = this.configService.getWorkgroupId();\n const studentStatusJSON: StudentStatus = {\n runId: runId,\n periodId: periodId,\n workgroupId: workgroupId,\n currentNodeId: this.studentDataService.getCurrentNodeId(),\n nodeStatuses: this.nodeStatusService.getNodeStatuses(),\n projectCompletion: this.getProjectCompletion()\n };\n const computerAvatarId = this.getComputerAvatarId();\n if (computerAvatarId != null) {\n studentStatusJSON.computerAvatarId = computerAvatarId;\n }\n if (this.projectService.getLocale().hasTranslations()) {\n studentStatusJSON.language = this.projectService.currentLanguage();\n }\n this.studentStatus = studentStatusJSON;\n const studentStatusParams = {\n runId: runId,\n periodId: periodId,\n workgroupId: workgroupId,\n status: JSON.stringify(studentStatusJSON)\n };\n this.http.post(this.configService.getStudentStatusURL(), studentStatusParams).subscribe();\n }\n\n private getProjectCompletion(): NodeProgress {\n return this.nodeProgressService.getNodeProgress(\n 'group0',\n this.nodeStatusService.getNodeStatuses()\n );\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeProgressService", + "type": "NodeProgressService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeStatusService", + "type": "NodeStatusService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectTranslationService", + "type": "StudentProjectTranslationService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentDataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 14, + "jsdoctags": [ + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeProgressService", + "type": "NodeProgressService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeStatusService", + "type": "NodeStatusService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectTranslationService", + "type": "StudentProjectTranslationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentDataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "type": "injectable" + }, + { + "name": "StudentWebSocketService", + "id": "injectable-StudentWebSocketService-5b34c6d5b97d190d1fb1421f2e0f1ed91a78d04cac976d19140b73164f93e6a1f9215a2496b1d3cf989fd274ccf7f56d767dbf8e953e262a0a190b652d72d129", + "file": "src/assets/wise5/services/studentWebSocketService.ts", + "properties": [], + "methods": [ + { + "name": "goToNextStep", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 86, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "goToStep", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 82, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "handleAnnotationReceived", + "args": [ + { + "name": "annotation", + "type": "Annotation", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 73, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "annotation", + "type": "Annotation", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "initialize", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "sendStudentWorkToClassmate", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentWork", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 99, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentWork", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "subscribeToClassroomTopic", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 31, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "subscribeToWorkgroupTopic", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 51, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "updateNode", + "args": [ + { + "name": "nodeString", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 92, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeString", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Injectable } from '@angular/core';\nimport { AnnotationService } from './annotationService';\nimport { TagService } from './tagService';\nimport { StudentDataService } from './studentDataService';\nimport { ProjectService } from './projectService';\nimport { Message } from '@stomp/stompjs';\nimport { NotebookService } from './notebookService';\nimport { StompService } from './stompService';\nimport { ConfigService } from './configService';\nimport { Annotation } from '../common/Annotation';\nimport { StudentNodeService } from './studentNodeService';\n\n@Injectable()\nexport class StudentWebSocketService {\n constructor(\n private AnnotationService: AnnotationService,\n private configService: ConfigService,\n private dataService: StudentDataService,\n private nodeService: StudentNodeService,\n private notebookService: NotebookService,\n private ProjectService: ProjectService,\n private stompService: StompService,\n private TagService: TagService\n ) {}\n\n initialize(): void {\n this.subscribeToClassroomTopic();\n this.subscribeToWorkgroupTopic();\n }\n\n subscribeToClassroomTopic(): void {\n this.stompService.periodMessage$.subscribe((message: Message) => {\n const body = JSON.parse(message.body);\n if (body.type === 'studentWork') {\n const studentWork = JSON.parse(body.content);\n this.dataService.broadcastStudentWorkReceived(studentWork);\n } else if (body.type === 'annotation') {\n this.AnnotationService.broadcastAnnotationReceived(JSON.parse(body.content));\n } else if (body.type === 'goToNode') {\n this.goToStep(body.content);\n } else if (body.type === 'node') {\n this.updateNode(body.content);\n } else if (body.type === 'newWorkgroupJoinedRun') {\n this.configService.retrieveConfig(\n `/api/config/studentRun/${this.configService.getRunId()}`\n );\n }\n });\n }\n\n subscribeToWorkgroupTopic(): void {\n this.stompService.workgroupMessage$.subscribe((message: Message) => {\n const body = JSON.parse(message.body);\n if (body.type === 'annotation') {\n const annotation = JSON.parse(body.content);\n this.AnnotationService.addOrUpdateAnnotation(annotation);\n this.handleAnnotationReceived(annotation);\n } else if (body.type === 'tagsToWorkgroup') {\n const tags = JSON.parse(body.content);\n this.TagService.setTags(tags);\n this.dataService.updateNodeStatuses();\n this.nodeService.evaluateTransitionLogic();\n } else if (body.type === 'goToNode') {\n this.goToStep(body.content);\n } else if (body.type === 'goToNextNode') {\n this.goToNextStep();\n } else if (body.type === 'classmateStudentWork') {\n this.dataService.broadcastStudentWorkReceived(JSON.parse(body.content));\n }\n });\n }\n\n private handleAnnotationReceived(annotation: Annotation): void {\n this.dataService.studentData.annotations.push(annotation);\n if (annotation.notebookItemId) {\n this.notebookService.broadcastNotebookItemAnnotationReceived(annotation);\n } else {\n this.AnnotationService.broadcastAnnotationReceived(annotation);\n }\n }\n\n goToStep(nodeId: string): void {\n this.nodeService.setCurrentNode(nodeId);\n }\n\n goToNextStep(): void {\n this.nodeService.getNextNodeId().then((nextNodeId) => {\n this.nodeService.setCurrentNode(nextNodeId);\n });\n }\n\n updateNode(nodeString: string): void {\n const node = JSON.parse(nodeString);\n this.ProjectService.replaceNode(node.id, node);\n this.ProjectService.parseProject();\n this.dataService.updateNodeStatuses();\n }\n\n sendStudentWorkToClassmate(workgroupId: number, studentWork: any): void {\n this.stompService.rxStomp.publish({\n destination: `/app/api/workgroup/${workgroupId}/student-work`,\n body: JSON.stringify(studentWork)\n });\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "AnnotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeService", + "type": "StudentNodeService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "notebookService", + "type": "NotebookService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ProjectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "stompService", + "type": "StompService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "TagService", + "type": "TagService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 14, + "jsdoctags": [ + { + "name": "AnnotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeService", + "type": "StudentNodeService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "notebookService", + "type": "NotebookService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "ProjectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "stompService", + "type": "StompService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "TagService", + "type": "TagService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "type": "injectable" + }, + { + "name": "SummaryService", + "id": "injectable-SummaryService-6ed51086d2ecafe47044f9d94e8fd72f27ca7e0ef220a83efc4c23be71a08cec2b7a9be47d676c36f39503dfd5fafb67c5e529a922640f3303346d0645869c57", + "file": "src/assets/wise5/components/summary/summaryService.ts", + "properties": [ + { + "name": "componentsWithResponsesSummary", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 11 + }, + { + "name": "componentsWithScoresSummary", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 10 + }, + { + "name": "notifyConnectedComponentSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "notifyConnectedComponentSource$", + "defaultValue": "this.notifyConnectedComponentSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "requestComponentStateSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "requestComponentStateSource$", + "defaultValue": "this.requestComponentStateSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "sendComponentStateSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "sendComponentStateSource$", + "defaultValue": "this.sendComponentStateSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "ComponentService" + } + } + ], + "methods": [ + { + "name": "cleanLabel", + "args": [ + { + "name": "label", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 107, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "label", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "componentHasWork", + "args": [ + { + "name": "component", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 57, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "component", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "convertToNumber", + "args": [ + { + "name": "value", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 116, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "value", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createComponent", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 43, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getComponentTypeLabel", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 39, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getLatestClassmateScores", + "args": [ + { + "name": "runId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "source", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 91, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "runId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "source", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getLatestClassmateStudentWork", + "args": [ + { + "name": "runId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "source", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 73, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "runId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "source", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isComponentTypeAllowed", + "args": [ + { + "name": "componentType", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 61, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentType", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isResponsesSummaryAvailableForComponentType", + "args": [ + { + "name": "componentType", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 69, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentType", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isScoresSummaryAvailableForComponentType", + "args": [ + { + "name": "componentType", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 65, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentType", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "componentHasCorrectAnswer", + "args": [ + { + "name": "component", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 147, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "component", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "componentStateHasStudentWork", + "args": [ + { + "name": "componentState", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentContent", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 118, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if the component state has student work. Sometimes a component\nstate may be created if the student visits a component but doesn't\nactually perform any work. This is where we will check if the student\nactually performed any work.\n", + "description": "

Check if the component state has student work. Sometimes a component\nstate may be created if the student visits a component but doesn't\nactually perform any work. This is where we will check if the student\nactually performed any work.

\n", + "jsdoctags": [ + { + "name": { + "pos": 3634, + "end": 3648, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3628, + "end": 3633, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component state object

\n" + }, + { + "name": { + "pos": 3688, + "end": 3704, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentContent" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3682, + "end": 3687, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component content

\n" + }, + { + "tagName": { + "pos": 3733, + "end": 3739, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether the component state has any work

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "componentUsesSaveButton", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 135, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nWhether this component uses a save button\n", + "description": "

Whether this component uses a save button

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 4173, + "end": 4179, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether this component uses a save button

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "componentUsesSubmitButton", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 143, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nWhether this component uses a submit button\n", + "description": "

Whether this component uses a submit button

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 4351, + "end": 4357, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether this component uses a submit button

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "displayAnnotation", + "args": [ + { + "name": "componentContent", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "annotation", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 94, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if we need to display the annotation to the student\n", + "description": "

Check if we need to display the annotation to the student

\n", + "jsdoctags": [ + { + "name": { + "pos": 2753, + "end": 2769, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentContent" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2747, + "end": 2752, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component content

\n" + }, + { + "name": { + "pos": 2804, + "end": 2814, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "annotation" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2798, + "end": 2803, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the annotation

\n" + }, + { + "tagName": { + "pos": 2836, + "end": 2843, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

whether we need to display the annotation to the student

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getDomIdEnding", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 18, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getElementId", + "args": [ + { + "name": "domIdBeginning", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "domIdEnding", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "domIdBeginning", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "domIdEnding", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getStudentDataString", + "args": [ + { + "name": "componentState", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 127, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the human readable student data string\n", + "description": "

Get the human readable student data string

\n", + "jsdoctags": [ + { + "name": { + "pos": 3953, + "end": 3967, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3947, + "end": 3952, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component state

\n" + }, + { + "tagName": { + "pos": 3994, + "end": 4000, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

a human readable student data string

\n", + "returnType": "string" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "hasNodeEnteredEvent", + "args": [ + { + "name": "nodeEvents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 155, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeEvents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "isCompleted", + "args": [ + { + "name": "component", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentStates", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeEvents", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "node", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 84, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if the component was completed\n", + "description": "

Check if the component was completed

\n", + "jsdoctags": [ + { + "name": { + "pos": 2298, + "end": 2307, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "component" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2292, + "end": 2297, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component object

\n" + }, + { + "name": { + "pos": 2341, + "end": 2356, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentStates" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2335, + "end": 2340, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component states for the specific component

\n" + }, + { + "name": { + "pos": 2417, + "end": 2427, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeEvents" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2411, + "end": 2416, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the events for the parent node of the component

\n" + }, + { + "name": { + "pos": 2488, + "end": 2492, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "node" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2482, + "end": 2487, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

parent node of the component

\n" + }, + { + "tagName": { + "pos": 2528, + "end": 2535, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

whether the component was completed

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "isSubmitRequired", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 151, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "notifyConnectedComponentSubscribers", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 42, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "requestComponentState", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 30, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "sendComponentState", + "args": [ + { + "name": "componentStateWrapper", + "type": "ComponentStateWrapper", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 38, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentStateWrapper", + "type": "ComponentStateWrapper", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "'use strict';\n\nimport { ComponentService } from '../componentService';\nimport { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\n@Injectable()\nexport class SummaryService extends ComponentService {\n componentsWithScoresSummary: string[];\n componentsWithResponsesSummary: string[];\n\n constructor(private http: HttpClient) {\n super();\n this.componentsWithScoresSummary = [\n 'Animation',\n 'AudioOscillator',\n 'ConceptMap',\n 'DialogGuidance',\n 'Discussion',\n 'Draw',\n 'Embedded',\n 'Graph',\n 'Label',\n 'Match',\n 'MultipleChoice',\n 'OpenResponse',\n 'Table'\n ];\n this.componentsWithResponsesSummary = [\n 'DialogGuidance',\n 'Match',\n 'MultipleChoice',\n 'OpenResponse',\n 'Table'\n ];\n }\n\n getComponentTypeLabel(): string {\n return $localize`Summary`;\n }\n\n createComponent() {\n const component: any = super.createComponent();\n component.type = 'Summary';\n component.summaryNodeId = null;\n component.summaryComponentId = null;\n component.source = 'period';\n component.studentDataType = null;\n component.chartType = 'column';\n component.requirementToSeeSummary = 'submitWork';\n component.highlightCorrectAnswer = false;\n component.customLabelColors = [];\n return component;\n }\n\n componentHasWork(component) {\n return false;\n }\n\n isComponentTypeAllowed(componentType) {\n return ['HTML', 'OutsideURL', 'Summary'].indexOf(componentType) === -1;\n }\n\n isScoresSummaryAvailableForComponentType(componentType) {\n return this.componentsWithScoresSummary.indexOf(componentType) != -1;\n }\n\n isResponsesSummaryAvailableForComponentType(componentType) {\n return this.componentsWithResponsesSummary.indexOf(componentType) != -1;\n }\n\n getLatestClassmateStudentWork(\n runId: number,\n periodId: number,\n nodeId: string,\n componentId: string,\n source: string\n ): Observable {\n if (source === 'period') {\n return this.http.get(\n `/api/classmate/summary/student-work/${runId}/${nodeId}/${componentId}/period/${periodId}`\n );\n } else {\n return this.http.get(\n `/api/classmate/summary/student-work/${runId}/${nodeId}/${componentId}/class`\n );\n }\n }\n\n getLatestClassmateScores(\n runId: number,\n periodId: number,\n nodeId: string,\n componentId: string,\n source: string\n ): Observable {\n if (source === 'period') {\n return this.http.get(\n `/api/classmate/summary/scores/${runId}/${nodeId}/${componentId}/period/${periodId}`\n );\n } else {\n return this.http.get(`/api/classmate/summary/scores/${runId}/${nodeId}/${componentId}/class`);\n }\n }\n\n cleanLabel(label: string): string {\n return (label + '')\n .trim()\n .toLowerCase()\n .split(' ')\n .map((word) => (word.length > 0 ? word[0].toUpperCase() + word.substr(1) : ''))\n .join(' ');\n }\n\n convertToNumber(value: any): number {\n return isNaN(Number(value)) ? 0 : Number(value);\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 11, + "jsdoctags": [ + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "ComponentService" + ], + "type": "injectable" + }, + { + "name": "TableService", + "id": "injectable-TableService-3428f700e0c585a88846f0eaf5523d61e27a4a0242271e81ba940d5a8c14f07a03c760da3cc8e1ec5fc104299d032d0caf8ce055868153249a4ff25c98fb1ef8", + "file": "src/assets/wise5/components/table/tableService.ts", + "properties": [ + { + "name": "notifyConnectedComponentSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "notifyConnectedComponentSource$", + "defaultValue": "this.notifyConnectedComponentSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "requestComponentStateSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "requestComponentStateSource$", + "defaultValue": "this.requestComponentStateSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "sendComponentStateSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "sendComponentStateSource$", + "defaultValue": "this.sendComponentStateSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "ComponentService" + } + } + ], + "methods": [ + { + "name": "componentHasEditableCells", + "args": [ + { + "name": "component", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 123, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if a table component has any editable cells.\n", + "description": "

Check if a table component has any editable cells.

\n", + "jsdoctags": [ + { + "name": { + "pos": 2958, + "end": 2967, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "component" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2952, + "end": 2957, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The component content.

\n" + }, + { + "tagName": { + "pos": 2997, + "end": 3003, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

Whether the component has any editable cells.

\n" + } + ] + }, + { + "name": "componentStateHasStudentWork", + "args": [ + { + "name": "componentState", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentContent", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 143, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentContent", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "createComponent", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 19, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "generateImageFromRenderedComponentState", + "args": [ + { + "name": "componentState", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 215, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nThe component state has been rendered in a element\nand now we want to take a snapshot of the work.\n", + "description": "

The component state has been rendered in a element\nand now we want to take a snapshot of the work.

\n", + "jsdoctags": [ + { + "name": { + "pos": 5768, + "end": 5782, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 5762, + "end": 5767, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The component state that has been rendered.

\n" + }, + { + "tagName": { + "pos": 5833, + "end": 5839, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

A promise that will return an image object.

\n" + } + ] + }, + { + "name": "getComponentTypeLabel", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 15, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getTableDataCellValue", + "args": [ + { + "name": "x", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "y", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "table", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 196, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the value of a cell in the table\nwhen we want to look up the value in the default authored table\n", + "description": "

Get the value of a cell in the table\nwhen we want to look up the value in the default authored table

\n", + "jsdoctags": [ + { + "name": { + "pos": 5120, + "end": 5121, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "x" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 5114, + "end": 5119, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the x coordinate

\n" + }, + { + "name": { + "pos": 5151, + "end": 5152, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "y" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 5145, + "end": 5150, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the y coordinate

\n" + }, + { + "name": { + "pos": 5182, + "end": 5187, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "table" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 5176, + "end": 5181, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

(optional) table data to get the value from. this is used\nwhen we want to look up the value in the default authored table

\n" + }, + { + "tagName": { + "pos": 5321, + "end": 5328, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

the cell value (text or a number)

\n" + } + ] + }, + { + "name": "getTableId", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 81, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "hasRequiredNumberOfFilledRows", + "args": [ + { + "name": "componentState", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "requiredNumberOfFilledRows", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "tableHasHeaderRow", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "requireAllCellsInARowToBeFilled", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 233, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "requiredNumberOfFilledRows", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "tableHasHeaderRow", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "requireAllCellsInARowToBeFilled", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isAllCellsFilledInRow", + "args": [ + { + "name": "row", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 262, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "row", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isAtLeastOneCellFilledInRow", + "args": [ + { + "name": "row", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 271, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "row", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isCompleted", + "args": [ + { + "name": "component", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentStates", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeEvents", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "node", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 85, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "component", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentStates", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeEvents", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "node", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "isRowFilled", + "args": [ + { + "name": "row", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "requireAllCellsInARowToBeFilled", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 254, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "row", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "requireAllCellsInARowToBeFilled", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "studentDataHasSelectedRows", + "args": [ + { + "name": "studentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 155, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "studentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "studentDataHasTableData", + "args": [ + { + "name": "studentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 159, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "studentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "componentHasCorrectAnswer", + "args": [ + { + "name": "component", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 147, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "component", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "componentHasWork", + "args": [ + { + "name": "component", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 105, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nWhether this component generates student work\nis not provided, we will use the default value of whether the\ncomponent type usually has work.\n", + "description": "

Whether this component generates student work\nis not provided, we will use the default value of whether the\ncomponent type usually has work.

\n", + "jsdoctags": [ + { + "name": { + "pos": 3060, + "end": 3069, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "component" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3054, + "end": 3059, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

(optional) the component object. if the component object\nis not provided, we will use the default value of whether the\ncomponent type usually has work.

\n" + }, + { + "tagName": { + "pos": 3238, + "end": 3244, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether this component generates student work

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "componentUsesSaveButton", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 135, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nWhether this component uses a save button\n", + "description": "

Whether this component uses a save button

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 4173, + "end": 4179, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether this component uses a save button

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "componentUsesSubmitButton", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 143, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nWhether this component uses a submit button\n", + "description": "

Whether this component uses a submit button

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 4351, + "end": 4357, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether this component uses a submit button

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "displayAnnotation", + "args": [ + { + "name": "componentContent", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "annotation", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 94, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if we need to display the annotation to the student\n", + "description": "

Check if we need to display the annotation to the student

\n", + "jsdoctags": [ + { + "name": { + "pos": 2753, + "end": 2769, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentContent" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2747, + "end": 2752, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component content

\n" + }, + { + "name": { + "pos": 2804, + "end": 2814, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "annotation" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2798, + "end": 2803, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the annotation

\n" + }, + { + "tagName": { + "pos": 2836, + "end": 2843, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

whether we need to display the annotation to the student

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getDomIdEnding", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 18, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getElementId", + "args": [ + { + "name": "domIdBeginning", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "domIdEnding", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "domIdBeginning", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "domIdEnding", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getStudentDataString", + "args": [ + { + "name": "componentState", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 127, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the human readable student data string\n", + "description": "

Get the human readable student data string

\n", + "jsdoctags": [ + { + "name": { + "pos": 3953, + "end": 3967, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3947, + "end": 3952, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component state

\n" + }, + { + "tagName": { + "pos": 3994, + "end": 4000, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

a human readable student data string

\n", + "returnType": "string" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "hasNodeEnteredEvent", + "args": [ + { + "name": "nodeEvents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 155, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeEvents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "isSubmitRequired", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 151, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "notifyConnectedComponentSubscribers", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 42, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "requestComponentState", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 30, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "sendComponentState", + "args": [ + { + "name": "componentStateWrapper", + "type": "ComponentStateWrapper", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 38, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentStateWrapper", + "type": "ComponentStateWrapper", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "'use strict';\n\nimport html2canvas from 'html2canvas';\nimport { ComponentService } from '../componentService';\nimport { StudentAssetService } from '../../services/studentAssetService';\nimport { Injectable } from '@angular/core';\nimport { convertToPNGFile } from '../../common/canvas/canvas';\n\n@Injectable()\nexport class TableService extends ComponentService {\n constructor(private StudentAssetService: StudentAssetService) {\n super();\n }\n\n getComponentTypeLabel(): string {\n return $localize`Table`;\n }\n\n createComponent() {\n const component: any = super.createComponent();\n component.type = 'Table';\n component.globalCellSize = 10;\n component.numRows = 3;\n component.numColumns = 3;\n component.tableData = [\n [\n {\n text: '',\n editable: true,\n size: null\n },\n {\n text: '',\n editable: true,\n size: null\n },\n {\n text: '',\n editable: true,\n size: null\n }\n ],\n [\n {\n text: '',\n editable: true,\n size: null\n },\n {\n text: '',\n editable: true,\n size: null\n },\n {\n text: '',\n editable: true,\n size: null\n }\n ],\n [\n {\n text: '',\n editable: true,\n size: null\n },\n {\n text: '',\n editable: true,\n size: null\n },\n {\n text: '',\n editable: true,\n size: null\n }\n ]\n ];\n return component;\n }\n\n getTableId(nodeId: string, componentId: string): string {\n return `table-${nodeId}-${componentId}`;\n }\n\n isCompleted(component, componentStates, nodeEvents, node) {\n if (!this.componentHasEditableCells(component)) {\n /*\n * The component does not have any editable cells so we will say\n * it is completed.\n */\n return true;\n }\n if (componentStates != null && componentStates.length > 0) {\n const submitRequired = this.isSubmitRequired(node, component);\n for (let c = 0, l = componentStates.length; c < l; c++) {\n const componentState = componentStates[c];\n const studentData = componentState.studentData;\n if (studentData != null) {\n const tableData = studentData.tableData;\n if (tableData != null) {\n // there is a table data so the component has saved work\n // TODO: check for actual student data from the table (compare to starting state)\n if (submitRequired) {\n // completion requires a submission, so check for isSubmit\n if (componentState.isSubmit) {\n return true;\n }\n } else {\n return true;\n }\n }\n }\n }\n }\n return false;\n }\n\n /**\n * Check if a table component has any editable cells.\n * @param component The component content.\n * @return Whether the component has any editable cells.\n */\n componentHasEditableCells(component) {\n const tableData = component.tableData;\n if (tableData != null) {\n for (let r = 0; r < tableData.length; r++) {\n const row = tableData[r];\n if (row != null) {\n for (let c = 0; c < row.length; c++) {\n const cell = row[c];\n if (cell != null) {\n if (cell.editable === true) {\n return true;\n }\n }\n }\n }\n }\n }\n return false;\n }\n\n componentStateHasStudentWork(componentState, componentContent) {\n if (componentState != null) {\n const studentData = componentState.studentData;\n if (studentData != null) {\n return (\n this.studentDataHasSelectedRows(studentData) ||\n this.studentDataHasTableData(studentData, componentContent)\n );\n }\n }\n }\n\n private studentDataHasSelectedRows(studentData: any): boolean {\n return studentData.selectedRowIndices != null;\n }\n\n private studentDataHasTableData(studentData: any, componentContent: any): boolean {\n const studentTableData = studentData.tableData;\n if (studentTableData != null) {\n const componentContentTableData = componentContent.tableData;\n const studentRows = studentTableData;\n for (let r = 0; r < studentRows.length; r++) {\n const studentRow = studentRows[r];\n if (studentRow != null) {\n for (let c = 0; c < studentRow.length; c++) {\n const studentCell = this.getTableDataCellValue(r, c, studentTableData);\n const componentContentCell = this.getTableDataCellValue(\n r,\n c,\n componentContentTableData\n );\n if (studentCell !== componentContentCell) {\n /*\n * the cell values are not the same which means\n * the student has changed the table\n */\n return true;\n }\n }\n }\n }\n }\n return false;\n }\n\n /**\n * Get the value of a cell in the table\n * @param x the x coordinate\n * @param y the y coordinate\n * @param table (optional) table data to get the value from. this is used\n * when we want to look up the value in the default authored table\n * @returns the cell value (text or a number)\n */\n getTableDataCellValue(x, y, table) {\n if (table != null) {\n const row = table[y];\n if (row != null) {\n const cell = row[x];\n if (cell != null) {\n return cell.text;\n }\n }\n }\n return null;\n }\n\n /**\n * The component state has been rendered in a element\n * and now we want to take a snapshot of the work.\n * @param componentState The component state that has been rendered.\n * @return A promise that will return an image object.\n */\n generateImageFromRenderedComponentState(componentState) {\n const promise = new Promise((resolve, reject) => {\n let tableElement = document.querySelector(\n `#table-${componentState.nodeId}-${componentState.componentId}`\n );\n if (tableElement != null) {\n // convert the table element to a canvas element\n html2canvas(tableElement as HTMLElement).then((canvas) => {\n const pngFile = convertToPNGFile(canvas);\n this.StudentAssetService.uploadAsset(pngFile).then((asset) => {\n resolve(asset);\n });\n });\n }\n });\n return promise;\n }\n\n hasRequiredNumberOfFilledRows(\n componentState,\n requiredNumberOfFilledRows,\n tableHasHeaderRow,\n requireAllCellsInARowToBeFilled\n ) {\n const rows = componentState.studentData.tableData;\n let firstStudentRow = 0;\n if (tableHasHeaderRow) {\n firstStudentRow = 1;\n }\n let filledRows = 0;\n for (let r = firstStudentRow; r < rows.length; r++) {\n const row = rows[r];\n if (this.isRowFilled(row, requireAllCellsInARowToBeFilled)) {\n filledRows++;\n }\n }\n return filledRows >= requiredNumberOfFilledRows;\n }\n\n isRowFilled(row, requireAllCellsInARowToBeFilled) {\n if (requireAllCellsInARowToBeFilled) {\n return this.isAllCellsFilledInRow(row);\n } else {\n return this.isAtLeastOneCellFilledInRow(row);\n }\n }\n\n isAllCellsFilledInRow(row) {\n for (const c of row) {\n if (c.text == null || c.text == '') {\n return false;\n }\n }\n return true;\n }\n\n isAtLeastOneCellFilledInRow(row) {\n for (const c of row) {\n if (c.text != null && c.text != '') {\n return true;\n }\n }\n return false;\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "StudentAssetService", + "type": "StudentAssetService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 10, + "jsdoctags": [ + { + "name": "StudentAssetService", + "type": "StudentAssetService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "ComponentService" + ], + "type": "injectable" + }, + { + "name": "TabulatorDataService", + "id": "injectable-TabulatorDataService-d91a231fc7b6ef5595c622df240ac970a5ce4c493b52c373e6b3108f0257ea6fc1cf85750e23d8a48e0af7483b14b8ee4bd465486a4918fc408fdd08524d863c", + "file": "src/assets/wise5/components/table/tabulatorDataService.ts", + "properties": [], + "methods": [ + { + "name": "convertTableDataToTabulator", + "args": [ + { + "name": "tableData", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "globalCellSize", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "TabulatorData", + "typeParameters": [], + "line": 10, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "tableData", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "globalCellSize", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getTabulatorColumn", + "args": [ + { + "name": "columnDef", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "globalCellSize", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "TabulatorColumn", + "typeParameters": [], + "line": 36, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "columnDef", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "globalCellSize", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getTabulatorColumnsFromTable", + "args": [ + { + "name": "tableData", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "globalCellSize", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 25, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "tableData", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "globalCellSize", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getTabulatorColumnWidth", + "args": [ + { + "name": "columnDef", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "globalCellSize", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 50, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "columnDef", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "globalCellSize", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getTabulatorRowDataFromTableRow", + "args": [ + { + "name": "tableRow", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columns", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 61, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "tableRow", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columns", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "'use strict';\n\nimport { Injectable } from '@angular/core';\nimport { TabulatorColumn, TabulatorData } from './TabulatorData';\n\n@Injectable()\nexport class TabulatorDataService {\n constructor() {}\n\n convertTableDataToTabulator(tableData: any[], globalCellSize: number): TabulatorData {\n const content = new TabulatorData();\n content.columns = this.getTabulatorColumnsFromTable(tableData, globalCellSize);\n for (const [index, row] of tableData.entries()) {\n if (index > 0) {\n const rowIndex = index - 1;\n const rowData = this.getTabulatorRowDataFromTableRow(row, content.columns);\n rowData.values.id = rowIndex;\n content.data.push(rowData.values);\n content.editableCells[index] = rowData.editableCells;\n }\n }\n return content;\n }\n\n private getTabulatorColumnsFromTable(tableData: any[], globalCellSize: number): any[] {\n const columns: TabulatorColumn[] = [];\n const columnDefs = tableData[0];\n if (columnDefs) {\n columnDefs.forEach((columnDef, index) => {\n columns.push(this.getTabulatorColumn(columnDef, index, globalCellSize));\n });\n }\n return columns;\n }\n\n private getTabulatorColumn(columnDef: any, index: number, globalCellSize: number): TabulatorColumn {\n const column = new TabulatorColumn({\n title: columnDef.text,\n field: `${index}`,\n frozen: columnDef.frozen\n });\n const width: number = this.getTabulatorColumnWidth(columnDef, globalCellSize);\n if (width) {\n column.width = width;\n column.maxWidth = false;\n }\n return column;\n }\n\n private getTabulatorColumnWidth(columnDef: any, globalCellSize: number): number {\n let width: number = null;\n const legacyWidth: number = columnDef.size ? columnDef.size : globalCellSize;\n if (columnDef.width) {\n width = columnDef.width;\n } else if (legacyWidth && legacyWidth !== 10) {\n width = legacyWidth * 16; // approximate conversion of legacy column size (em) to number of px\n }\n return width;\n }\n\n private getTabulatorRowDataFromTableRow(tableRow: any[], columns: any[]): any {\n const rowData = {\n values: {},\n editableCells: []\n };\n tableRow.forEach((cell, index) => {\n const field = columns[index].field;\n rowData.values[field] = cell.text;\n if (cell.editable) {\n rowData.editableCells.push(field);\n }\n });\n return rowData;\n }\n}", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [], + "line": 7 + }, + "extends": [], + "type": "injectable" + }, + { + "name": "TagService", + "id": "injectable-TagService-f59fce45b89a769ba7e7dc3a7a98f0c1816c86b713e2e765d83bc636ef434e8ff586d02a4eb3492e95c1291f52c67f2f3b942a6e1345f320ad9acfd512ea9020", + "file": "src/assets/wise5/services/tagService.ts", + "properties": [ + { + "name": "tags", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "modifierKind": [ + 123 + ] + } + ], + "methods": [ + { + "name": "addTag", + "args": [ + { + "name": "id", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "name", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 27, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "id", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "name", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getExistingTagNames", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 70, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getNextAvailableTag", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 55, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getTags", + "args": [], + "optional": false, + "returnType": "{}", + "typeParameters": [], + "line": 23, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getTagsFromProject", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 76, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "hasTagName", + "args": [ + { + "name": "tagName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 80, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "tagName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "retrieveRunTags", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 37, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "retrieveStudentTags", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 46, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "setTags", + "args": [ + { + "name": "tags", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 19, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "tags", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "'use strict';\n\nimport { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { ConfigService } from './configService';\nimport { map } from 'rxjs/operators';\nimport { ProjectService } from './projectService';\n\n@Injectable()\nexport class TagService {\n private tags: any[] = [];\n\n constructor(\n protected http: HttpClient,\n protected ConfigService: ConfigService,\n protected ProjectService: ProjectService\n ) {}\n\n setTags(tags: any[]) {\n this.tags = tags;\n }\n\n getTags() {\n return this.tags;\n }\n\n addTag(id: number, name: string) {\n const tagObject: any = {\n name: name\n };\n if (id != null) {\n tagObject.id = id;\n }\n this.tags.push(tagObject);\n }\n\n retrieveRunTags() {\n return this.http.get(`/api/tag/run/${this.ConfigService.getRunId()}`).pipe(\n map((data: any) => {\n this.tags = data;\n return data;\n })\n );\n }\n\n retrieveStudentTags() {\n return this.http.get(`/api/tag/workgroup/${this.ConfigService.getWorkgroupId()}`).pipe(\n map((data: any) => {\n this.tags = data;\n return data;\n })\n );\n }\n\n getNextAvailableTag() {\n this.getTagsFromProject();\n let counter = 1;\n const tagPrefix = 'Group ';\n const existingTagNames = this.getExistingTagNames();\n while (true) {\n const newTagName = tagPrefix + counter;\n if (!existingTagNames.includes(newTagName)) {\n this.addTag(null, newTagName);\n return newTagName;\n }\n counter++;\n }\n }\n\n getExistingTagNames() {\n return this.tags.map((tag) => {\n return tag.name;\n });\n }\n\n getTagsFromProject() {\n this.tags = this.ProjectService.getTags();\n }\n\n hasTagName(tagName: string): boolean {\n return this.getExistingTagNames().includes(tagName);\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ConfigService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ProjectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 11, + "jsdoctags": [ + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "ConfigService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "ProjectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "type": "injectable" + }, + { + "name": "TeacherDataService", + "id": "injectable-TeacherDataService-81146058102c1265709621c217a89ceb44d3fc0106006224f0f2f43c624956fa99e3e5f654cda7eab0c9d4b1ec140301bdc69c422138878f1d0d97195aee1bf0", + "file": "src/assets/wise5/services/teacherDataService.ts", + "properties": [ + { + "name": "currentPeriod", + "defaultValue": "null", + "deprecated": false, + "deprecationMessage": "", + "type": "null", + "indexKey": "", + "optional": false, + "description": "", + "line": 18 + }, + { + "name": "currentPeriodChanged$", + "defaultValue": "this.currentPeriodChangedSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "Observable", + "indexKey": "", + "optional": false, + "description": "", + "line": 26, + "modifierKind": [ + 125 + ] + }, + { + "name": "currentPeriodChangedSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 25, + "modifierKind": [ + 123 + ] + }, + { + "name": "currentWorkgroup", + "defaultValue": "null", + "deprecated": false, + "deprecationMessage": "", + "type": "null", + "indexKey": "", + "optional": false, + "description": "", + "line": 19 + }, + { + "name": "currentWorkgroupChanged$", + "defaultValue": "this.currentWorkgroupChangedSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "Observable", + "indexKey": "", + "optional": false, + "description": "", + "line": 28, + "modifierKind": [ + 125 + ] + }, + { + "name": "currentWorkgroupChangedSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 27, + "modifierKind": [ + 123 + ] + }, + { + "name": "nodeGradingSort", + "defaultValue": "'team'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 22 + }, + { + "name": "periods", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 21 + }, + { + "name": "previousStep", + "defaultValue": "null", + "deprecated": false, + "deprecationMessage": "", + "type": "null", + "indexKey": "", + "optional": false, + "description": "", + "line": 20, + "inheritance": { + "file": "DataService" + } + }, + { + "name": "studentData", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 17 + }, + { + "name": "studentGradingSort", + "defaultValue": "'step'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 23 + }, + { + "name": "studentProgressSort", + "defaultValue": "'team'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 24 + }, + { + "name": "currentNode", + "defaultValue": "null", + "deprecated": false, + "deprecationMessage": "", + "type": "null", + "indexKey": "", + "optional": false, + "description": "", + "line": 7, + "inheritance": { + "file": "DataService" + } + }, + { + "name": "currentNodeChanged$", + "defaultValue": "this.currentNodeChangedSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "DataService" + } + }, + { + "name": "currentNodeChangedSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 9, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "DataService" + } + }, + { + "name": "studentWorkReceived$", + "defaultValue": "this.studentWorkReceivedSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "DataService" + } + }, + { + "name": "studentWorkReceivedSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "DataService" + } + } + ], + "methods": [ + { + "name": "addAnnotationToAnnotationsByNodeId", + "args": [ + { + "name": "annotation", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 246, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "annotation", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addAnnotationToAnnotationsToWorkgroupId", + "args": [ + { + "name": "annotation", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 238, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "annotation", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addCommonParams", + "args": [ + { + "name": "params", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 108, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "params", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addComponentStateByComponentId", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 298, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addComponentStateByNodeId", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 279, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addComponentStateByWorkgroupId", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 260, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addEventToEventsByNodeId", + "args": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 219, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addEventToEventsByWorkgroupId", + "args": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 211, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addOrUpdateComponentState", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 254, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addProjectIdToHttpParams", + "args": [ + { + "name": "params", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 115, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "params", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addRunIdToHttpParams", + "args": [ + { + "name": "params", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 120, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "params", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addWorkgroupIdToHttpParams", + "args": [ + { + "name": "params", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 125, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "params", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "clearCurrentPeriod", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 395, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "clearCurrentWorkgroupIfNecessary", + "args": [ + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 386, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getAnnotationsByNodeId", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 370, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getAnnotationsToWorkgroupId", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 366, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getComponentStatesByComponentId", + "args": [ + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 325, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getComponentStatesByNodeId", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 321, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getComponentStatesByWorkgroupId", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 317, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getComponentStatesByWorkgroupIdAndComponentId", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 352, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getComponentStatesByWorkgroupIdAndNodeId", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 346, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getCurrentPeriod", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 399, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getCurrentPeriodId", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 403, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getCurrentWorkgroup", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 420, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getEventsByNodeId", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 362, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getEventsByWorkgroupId", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 358, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getLatestComponentStateByWorkgroupIdNodeId", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 338, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getLatestComponentStateByWorkgroupIdNodeIdAndComponentId", + "args": [ + { + "name": "workgroupId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 329, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "workgroupId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getPeriods", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 407, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getPreviewUrl", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 446, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getTotalScoreByWorkgroupId", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 424, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "handleAnnotationReceived", + "args": [ + { + "name": "annotation", + "type": "Annotation", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 64, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "annotation", + "type": "Annotation", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "handleStudentDataResponse", + "args": [ + { + "name": "resultData", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 175, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "resultData", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "initializeComponentStatesByComponentIdIfNecessary", + "args": [ + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 311, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "initializeComponentStatesByNodeIdIfNecessary", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 292, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "initializeComponentStatesByWorkgroupIdIfNecessary", + "args": [ + { + "name": "workgroupId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 273, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "workgroupId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "initializeComponentStatesDataStructures", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 194, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "isCurrentWorkgroup", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 442, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isWorkgroupInCurrentPeriod", + "args": [ + { + "name": "workgroup", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 438, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "workgroup", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isWorkgroupShown", + "args": [ + { + "name": "workgroup", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 430, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "workgroup", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "processAnnotations", + "args": [ + { + "name": "annotations", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 227, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "annotations", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "processComponentStates", + "args": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 189, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "processEvents", + "args": [ + { + "name": "events", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 200, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "events", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "retrieveAnnotations", + "args": [], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 154, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "retrieveStudentData", + "args": [ + { + "name": "params", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 163, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "params", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "retrieveStudentDataByWorkgroupId", + "args": [ + { + "name": "workgroupId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 143, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "workgroupId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "retrieveStudentDataForNode", + "args": [ + { + "name": "node", + "type": "Node", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 130, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "node", + "type": "Node", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "saveEvent", + "args": [ + { + "name": "context", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentType", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "category", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "event", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "data", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 80, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "context", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentType", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "category", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "event", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "data", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setCurrentPeriod", + "args": [ + { + "name": "period", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 374, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "period", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setCurrentWorkgroup", + "args": [ + { + "name": "workgroup", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 415, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "workgroup", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setPeriods", + "args": [ + { + "name": "periods", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 411, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "periods", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "subscribeToEvents", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 49, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "broadcastStudentWorkReceived", + "args": [ + { + "name": "studentWork", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 53, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentWork", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "DataService" + } + }, + { + "name": "getBranchPathTakenEventsByNodeId", + "args": [ + { + "name": "currentNodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 27, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "currentNodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "DataService" + } + }, + { + "name": "getCurrentNode", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 16, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "DataService" + } + }, + { + "name": "getCurrentNodeId", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 20, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "DataService" + } + }, + { + "name": "saveVLEEvent", + "args": [ + { + "name": "nodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentType", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "category", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "event", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "eventData", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 32, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentType", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "category", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "event", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "eventData", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "DataService" + } + }, + { + "name": "setCurrentNode", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 39, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "DataService" + } + }, + { + "name": "setCurrentNodeByNodeId", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 35, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "DataService" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { HttpClient, HttpParams } from '@angular/common/http';\nimport { AnnotationService } from './annotationService';\nimport { ConfigService } from './configService';\nimport { TeacherProjectService } from './teacherProjectService';\nimport { TeacherWebSocketService } from './teacherWebSocketService';\nimport { Injectable } from '@angular/core';\nimport { Observable, Subject, tap } from 'rxjs';\nimport { DataService } from '../../../app/services/data.service';\nimport { Node } from '../common/Node';\nimport { compressToEncodedURIComponent } from 'lz-string';\nimport { getIntersectOfArrays } from '../common/array/array';\nimport { serverSaveTimeComparator } from '../common/object/object';\nimport { Annotation } from '../common/Annotation';\n\n@Injectable()\nexport class TeacherDataService extends DataService {\n studentData: any;\n currentPeriod = null;\n currentWorkgroup = null;\n previousStep = null;\n periods = [];\n nodeGradingSort = 'team';\n studentGradingSort = 'step';\n studentProgressSort = 'team';\n private currentPeriodChangedSource: Subject = new Subject();\n public currentPeriodChanged$: Observable = this.currentPeriodChangedSource.asObservable();\n private currentWorkgroupChangedSource: Subject = new Subject();\n public currentWorkgroupChanged$: Observable =\n this.currentWorkgroupChangedSource.asObservable();\n\n constructor(\n private annotationService: AnnotationService,\n private configService: ConfigService,\n private http: HttpClient,\n protected projectService: TeacherProjectService,\n private webSocketService: TeacherWebSocketService\n ) {\n super(projectService);\n this.studentData = {\n annotationsByNodeId: {},\n annotationsToWorkgroupId: {},\n componentStatesByWorkgroupId: {},\n componentStatesByNodeId: {},\n componentStatesByComponentId: {}\n };\n this.subscribeToEvents();\n }\n\n private subscribeToEvents(): void {\n this.annotationService.annotationSavedToServer$.subscribe((annotation: Annotation) => {\n this.handleAnnotationReceived(annotation);\n });\n\n this.webSocketService.newAnnotationReceived$.subscribe((annotation: Annotation) => {\n this.handleAnnotationReceived(annotation);\n });\n\n this.webSocketService.newStudentWorkReceived$.subscribe(({ studentWork }) => {\n this.addOrUpdateComponentState(studentWork);\n this.broadcastStudentWorkReceived({ studentWork: studentWork });\n });\n }\n\n private handleAnnotationReceived(annotation: Annotation): void {\n this.studentData.annotations.push(annotation);\n const toWorkgroupId = annotation.toWorkgroupId;\n if (this.studentData.annotationsToWorkgroupId[toWorkgroupId] == null) {\n this.studentData.annotationsToWorkgroupId[toWorkgroupId] = new Array();\n }\n this.studentData.annotationsToWorkgroupId[toWorkgroupId].push(annotation);\n const nodeId = annotation.nodeId;\n if (this.studentData.annotationsByNodeId[nodeId] == null) {\n this.studentData.annotationsByNodeId[nodeId] = new Array();\n }\n this.studentData.annotationsByNodeId[nodeId].push(annotation);\n this.annotationService.setAnnotations(this.studentData.annotations);\n this.annotationService.broadcastAnnotationReceived(annotation);\n }\n\n saveEvent(context, nodeId, componentId, componentType, category, event, data) {\n const newEvent = {\n projectId: this.configService.getProjectId(),\n runId: this.configService.getRunId(),\n workgroupId: this.configService.getWorkgroupId(),\n clientSaveTime: new Date().getTime(),\n context: context,\n nodeId: nodeId,\n componentId: componentId,\n type: componentType,\n category: category,\n event: event,\n data: data\n };\n let body = new HttpParams().set('events', JSON.stringify([newEvent]));\n body = this.addCommonParams(body);\n const options = {\n headers: { 'Content-Type': 'application/x-www-form-urlencoded' }\n };\n const url = this.configService.getConfigParam('teacherDataURL');\n return this.http\n .post(url, body, options)\n .toPromise()\n .then((data: any) => {\n return data.events;\n });\n }\n\n private addCommonParams(params: any): any {\n params = this.addProjectIdToHttpParams(params);\n params = this.addRunIdToHttpParams(params);\n params = this.addWorkgroupIdToHttpParams(params);\n return params;\n }\n\n private addProjectIdToHttpParams(params: any): any {\n const projectId = this.configService.getProjectId();\n return projectId != null ? params.set('projectId', projectId) : params;\n }\n\n private addRunIdToHttpParams(params: any): any {\n const runId = this.configService.getRunId();\n return runId != null ? params.set('runId', runId) : params;\n }\n\n private addWorkgroupIdToHttpParams(params: any): any {\n const workgroupId = this.configService.getWorkgroupId();\n return workgroupId != null ? params.set('workgroupId', workgroupId) : params;\n }\n\n retrieveStudentDataForNode(node: Node): Observable {\n let params = new HttpParams()\n .set('runId', this.configService.getRunId())\n .set('getStudentWork', 'true')\n .set('getAnnotations', 'false')\n .set('getEvents', 'true');\n const components = node.getAllRelatedComponents();\n if (components.length > 0) {\n params = params.set('components', compressToEncodedURIComponent(JSON.stringify(components)));\n }\n return this.retrieveStudentData(params);\n }\n\n retrieveStudentDataByWorkgroupId(workgroupId: string): Observable {\n const params = new HttpParams()\n .set('runId', this.configService.getRunId())\n .set('workgroupId', workgroupId)\n .set('toWorkgroupId', workgroupId)\n .set('getStudentWork', 'true')\n .set('getEvents', 'false')\n .set('getAnnotations', 'false');\n return this.retrieveStudentData(params);\n }\n\n retrieveAnnotations(): Observable {\n const params = new HttpParams()\n .set('runId', this.configService.getRunId())\n .set('getStudentWork', 'false')\n .set('getEvents', 'false')\n .set('getAnnotations', 'true');\n return this.retrieveStudentData(params);\n }\n\n retrieveStudentData(params): Observable {\n const url = this.configService.getConfigParam('teacherDataURL');\n const options = {\n params: params\n };\n return this.http.get(url, options).pipe(\n tap((data: any) => {\n this.handleStudentDataResponse(data);\n })\n );\n }\n\n private handleStudentDataResponse(resultData: any): any {\n const { studentWorkList: componentStates, events, annotations } = resultData;\n if (componentStates != null) {\n this.processComponentStates(componentStates);\n }\n if (events != null) {\n this.processEvents(events);\n }\n if (annotations != null) {\n this.processAnnotations(annotations);\n }\n return resultData;\n }\n\n processComponentStates(componentStates: any[]): void {\n this.initializeComponentStatesDataStructures();\n componentStates.forEach((componentState) => this.addOrUpdateComponentState(componentState));\n }\n\n private initializeComponentStatesDataStructures(): void {\n this.studentData.componentStatesByWorkgroupId = {};\n this.studentData.componentStatesByNodeId = {};\n this.studentData.componentStatesByComponentId = {};\n }\n\n private processEvents(events: any[]): void {\n events.sort(serverSaveTimeComparator);\n this.studentData.allEvents = events;\n this.studentData.eventsByWorkgroupId = {};\n this.studentData.eventsByNodeId = {};\n events.forEach((event) => {\n this.addEventToEventsByWorkgroupId(event);\n this.addEventToEventsByNodeId(event);\n });\n }\n\n private addEventToEventsByWorkgroupId(event: any): void {\n const eventWorkgroupId = event.workgroupId;\n if (this.studentData.eventsByWorkgroupId[eventWorkgroupId] == null) {\n this.studentData.eventsByWorkgroupId[eventWorkgroupId] = new Array();\n }\n this.studentData.eventsByWorkgroupId[eventWorkgroupId].push(event);\n }\n\n private addEventToEventsByNodeId(event: any): void {\n const eventNodeId = event.nodeId;\n if (this.studentData.eventsByNodeId[eventNodeId] == null) {\n this.studentData.eventsByNodeId[eventNodeId] = new Array();\n }\n this.studentData.eventsByNodeId[eventNodeId].push(event);\n }\n\n private processAnnotations(annotations: any[]): void {\n this.studentData.annotationsByNodeId = {};\n this.studentData.annotationsToWorkgroupId = {};\n this.studentData.annotations = annotations;\n annotations.forEach((annotation) => {\n this.addAnnotationToAnnotationsToWorkgroupId(annotation);\n this.addAnnotationToAnnotationsByNodeId(annotation);\n });\n this.annotationService.setAnnotations(this.studentData.annotations);\n }\n\n private addAnnotationToAnnotationsToWorkgroupId(annotation: any): void {\n const annotationWorkgroupId = annotation.toWorkgroupId;\n if (!this.studentData.annotationsToWorkgroupId[annotationWorkgroupId]) {\n this.studentData.annotationsToWorkgroupId[annotationWorkgroupId] = new Array();\n }\n this.studentData.annotationsToWorkgroupId[annotationWorkgroupId].push(annotation);\n }\n\n private addAnnotationToAnnotationsByNodeId(annotation: any): void {\n const annotationNodeId = annotation.nodeId;\n if (!this.studentData.annotationsByNodeId[annotationNodeId]) {\n this.studentData.annotationsByNodeId[annotationNodeId] = new Array();\n }\n this.studentData.annotationsByNodeId[annotationNodeId].push(annotation);\n }\n\n private addOrUpdateComponentState(componentState: any): void {\n this.addComponentStateByWorkgroupId(componentState);\n this.addComponentStateByNodeId(componentState);\n this.addComponentStateByComponentId(componentState);\n }\n\n private addComponentStateByWorkgroupId(componentState: any): void {\n const workgroupId = componentState.workgroupId;\n this.initializeComponentStatesByWorkgroupIdIfNecessary(workgroupId);\n const index = this.studentData.componentStatesByWorkgroupId[\n componentState.workgroupId\n ].findIndex((state) => state.id === componentState.id);\n if (index != -1) {\n this.studentData.componentStatesByWorkgroupId[workgroupId][index] = componentState;\n } else {\n this.studentData.componentStatesByWorkgroupId[workgroupId].push(componentState);\n }\n }\n\n private initializeComponentStatesByWorkgroupIdIfNecessary(workgroupId: string): void {\n if (this.studentData.componentStatesByWorkgroupId[workgroupId] == null) {\n this.studentData.componentStatesByWorkgroupId[workgroupId] = [];\n }\n }\n\n private addComponentStateByNodeId(componentState: any): void {\n const nodeId = componentState.nodeId;\n this.initializeComponentStatesByNodeIdIfNecessary(nodeId);\n const index = this.studentData.componentStatesByNodeId[componentState.nodeId].findIndex(\n (state) => state.id === componentState.id\n );\n if (index != -1) {\n this.studentData.componentStatesByNodeId[nodeId][index] = componentState;\n } else {\n this.studentData.componentStatesByNodeId[nodeId].push(componentState);\n }\n }\n\n private initializeComponentStatesByNodeIdIfNecessary(nodeId: string): void {\n if (this.studentData.componentStatesByNodeId[nodeId] == null) {\n this.studentData.componentStatesByNodeId[nodeId] = [];\n }\n }\n\n private addComponentStateByComponentId(componentState: any): void {\n const componentId = componentState.componentId;\n this.initializeComponentStatesByComponentIdIfNecessary(componentId);\n const index = this.studentData.componentStatesByComponentId[\n componentState.componentId\n ].findIndex((state) => state.id === componentState.id);\n if (index != -1) {\n this.studentData.componentStatesByComponentId[componentId][index] = componentState;\n } else {\n this.studentData.componentStatesByComponentId[componentId].push(componentState);\n }\n }\n\n private initializeComponentStatesByComponentIdIfNecessary(componentId: string): void {\n if (this.studentData.componentStatesByComponentId[componentId] == null) {\n this.studentData.componentStatesByComponentId[componentId] = [];\n }\n }\n\n getComponentStatesByWorkgroupId(workgroupId: number): any[] {\n return this.studentData.componentStatesByWorkgroupId[workgroupId] || [];\n }\n\n getComponentStatesByNodeId(nodeId: string): any[] {\n return this.studentData.componentStatesByNodeId[nodeId] || [];\n }\n\n getComponentStatesByComponentId(componentId: string): any[] {\n return this.studentData.componentStatesByComponentId[componentId] || [];\n }\n\n getLatestComponentStateByWorkgroupIdNodeIdAndComponentId(workgroupId, nodeId, componentId) {\n return (\n this.getComponentStatesByWorkgroupIdAndNodeId(workgroupId, nodeId).findLast(\n (componentState) =>\n componentState.nodeId === nodeId && componentState.componentId === componentId\n ) ?? null\n );\n }\n\n getLatestComponentStateByWorkgroupIdNodeId(workgroupId: number, nodeId: string): any {\n return (\n this.getComponentStatesByWorkgroupIdAndNodeId(workgroupId, nodeId).findLast(\n (componentState) => componentState.nodeId === nodeId\n ) ?? null\n );\n }\n\n private getComponentStatesByWorkgroupIdAndNodeId(workgroupId: number, nodeId: string): any[] {\n const componentStatesByWorkgroupId = this.getComponentStatesByWorkgroupId(workgroupId);\n const componentStatesByNodeId = this.getComponentStatesByNodeId(nodeId);\n return getIntersectOfArrays(componentStatesByWorkgroupId, componentStatesByNodeId);\n }\n\n getComponentStatesByWorkgroupIdAndComponentId(workgroupId: number, componentId: string): any[] {\n const componentStatesByWorkgroupId = this.getComponentStatesByWorkgroupId(workgroupId);\n const componentStatesByComponentId = this.getComponentStatesByComponentId(componentId);\n return getIntersectOfArrays(componentStatesByWorkgroupId, componentStatesByComponentId);\n }\n\n getEventsByWorkgroupId(workgroupId: number): any[] {\n return this.studentData.eventsByWorkgroupId[workgroupId] || [];\n }\n\n getEventsByNodeId(nodeId: string): any[] {\n return this.studentData.eventsByNodeId[nodeId] || [];\n }\n\n getAnnotationsToWorkgroupId(workgroupId: number): any[] {\n return this.studentData.annotationsToWorkgroupId[workgroupId] || [];\n }\n\n getAnnotationsByNodeId(nodeId: string): any[] {\n return this.studentData.annotationsByNodeId[nodeId] || [];\n }\n\n setCurrentPeriod(period: any): void {\n const previousPeriod = this.currentPeriod;\n this.currentPeriod = period;\n this.clearCurrentWorkgroupIfNecessary(this.currentPeriod.periodId);\n if (previousPeriod == null || previousPeriod.periodId != this.currentPeriod.periodId) {\n this.currentPeriodChangedSource.next({\n previousPeriod: previousPeriod,\n currentPeriod: this.currentPeriod\n });\n }\n }\n\n private clearCurrentWorkgroupIfNecessary(periodId: number): void {\n const currentWorkgroup = this.getCurrentWorkgroup();\n if (currentWorkgroup) {\n if (periodId !== -1 && currentWorkgroup.periodId !== periodId) {\n this.setCurrentWorkgroup(null);\n }\n }\n }\n\n clearCurrentPeriod(): void {\n this.currentPeriod = null;\n }\n\n getCurrentPeriod(): any {\n return this.currentPeriod;\n }\n\n getCurrentPeriodId(): number {\n return this.currentPeriod.periodId;\n }\n\n getPeriods(): any[] {\n return this.periods;\n }\n\n setPeriods(periods: any[]): void {\n this.periods = periods;\n }\n\n setCurrentWorkgroup(workgroup: any): void {\n this.currentWorkgroup = workgroup;\n this.currentWorkgroupChangedSource.next({ currentWorkgroup: this.currentWorkgroup });\n }\n\n getCurrentWorkgroup(): any {\n return this.currentWorkgroup;\n }\n\n getTotalScoreByWorkgroupId(workgroupId: number) {\n return this.annotationService.getTotalScore(\n this.studentData.annotationsToWorkgroupId[workgroupId]\n );\n }\n\n isWorkgroupShown(workgroup): boolean {\n return (\n this.isWorkgroupInCurrentPeriod(workgroup) &&\n workgroup.workgroupId != null &&\n (this.currentWorkgroup == null || this.isCurrentWorkgroup(workgroup.workgroupId))\n );\n }\n\n private isWorkgroupInCurrentPeriod(workgroup: any): boolean {\n return this.currentPeriod.periodId === -1 || workgroup.periodId === this.currentPeriod.periodId;\n }\n\n private isCurrentWorkgroup(workgroupId: number): boolean {\n return this.currentWorkgroup.workgroupId === workgroupId;\n }\n\n getPreviewUrl(): string {\n let previewUrl = this.configService.getConfigParam('previewProjectURL');\n const currentNodeId = this.getCurrentNodeId();\n if (!this.projectService.isGroupNode(currentNodeId)) {\n previewUrl += `/${currentNodeId}`;\n }\n return previewUrl;\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "webSocketService", + "type": "TeacherWebSocketService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 29, + "jsdoctags": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "webSocketService", + "type": "TeacherWebSocketService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "DataService" + ], + "type": "injectable" + }, + { + "name": "TeacherDiscussionService", + "id": "injectable-TeacherDiscussionService-c360e77c4753d9e6a8f0dfac48a991b433205165e2a7c7b2bb637e4744cdb1566b3343191faca61182521e5b39174d1990a338ac4b3d76f275609ed0d0d62bdf", + "file": "src/assets/wise5/components/discussion/teacherDiscussionService.ts", + "properties": [ + { + "name": "notifyConnectedComponentSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "notifyConnectedComponentSource$", + "defaultValue": "this.notifyConnectedComponentSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "requestComponentStateSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "requestComponentStateSource$", + "defaultValue": "this.requestComponentStateSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "sendComponentStateSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "sendComponentStateSource$", + "defaultValue": "this.sendComponentStateSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "ComponentService" + } + } + ], + "methods": [ + { + "name": "getComponentStates", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentIds", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 49, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentIds", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getPostAndAllRepliesByComponentIds", + "args": [ + { + "name": "componentIds", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentStateId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "{}", + "typeParameters": [], + "line": 57, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentIds", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentStateId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getPostsAssociatedWithComponentIdsAndWorkgroupId", + "args": [ + { + "name": "componentIds", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "{}", + "typeParameters": [], + "line": 18, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentIds", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "combineClassmatesResponses", + "args": [ + { + "name": "responses", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 94, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "responses", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "DiscussionService" + } + }, + { + "name": "componentStateHasStudentWork", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 145, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "componentUsesSaveButton", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 137, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "componentUsesSubmitButton", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 141, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "createComponent", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getClassmateResponses", + "args": [ + { + "name": "runId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 107, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "runId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "DiscussionService" + } + }, + { + "name": "getClassmateResponsesFromComponents", + "args": [ + { + "name": "runId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "components", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 79, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "runId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "components", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "DiscussionService" + } + }, + { + "name": "getClassResponses", + "args": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "annotations", + "type": "[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]" + }, + { + "name": "isStudentMode", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 211, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "annotations", + "type": "[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]", + "tagName": { + "text": "param" + } + }, + { + "name": "isStudentMode", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "DiscussionService" + } + }, + { + "name": "getComponentTypeLabel", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 18, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getLatestInappropriateFlagAnnotationByStudentWorkId", + "args": [ + { + "name": "annotations", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]" + }, + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 199, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "annotations", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]", + "tagName": { + "text": "param" + } + }, + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "DiscussionService" + } + }, + { + "name": "getLevel1Responses", + "args": [ + { + "name": "classResponses", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isGradingMode", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 285, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the level 1 responses which are posts that are not a reply to another response.\n", + "description": "

Get the level 1 responses which are posts that are not a reply to another response.

\n", + "jsdoctags": [ + { + "name": "classResponses", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "isGradingMode", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + }, + { + "tagName": { + "pos": 9173, + "end": 9179, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

an object containing responses that are not a reply to another response

\n" + } + ], + "inheritance": { + "file": "DiscussionService" + } + }, + { + "name": "getResponsesMap", + "args": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 262, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "DiscussionService" + } + }, + { + "name": "hasAnyComponentStateWithResponse", + "args": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 47, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "DiscussionService" + } + }, + { + "name": "hasComponentStateForConnectedComponent", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 68, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "DiscussionService" + } + }, + { + "name": "hasShowWorkConnectedComponentThatHasWork", + "args": [ + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 51, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "DiscussionService" + } + }, + { + "name": "isCompleted", + "args": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeEvents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 31, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeEvents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "isCompletedV2", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 35, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "DiscussionService" + } + }, + { + "name": "isComponentHasStarterSentence", + "args": [ + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 159, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "DiscussionService" + } + }, + { + "name": "isInappropriateFlagDeleteAnnotation", + "args": [ + { + "name": "annotation", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 242, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "annotation", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "DiscussionService" + } + }, + { + "name": "isStudentResponseDifferentFromStarterSentence", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 164, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "DiscussionService" + } + }, + { + "name": "isStudentWorkHasAttachment", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 175, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "DiscussionService" + } + }, + { + "name": "isStudentWorkHasText", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 170, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "DiscussionService" + } + }, + { + "name": "isTopLevelComponentStateIdFound", + "args": [ + { + "name": "topLevelComponentStateIdsFound", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentStateId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 130, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "topLevelComponentStateIdsFound", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentStateId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "DiscussionService" + } + }, + { + "name": "isTopLevelPost", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 126, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "DiscussionService" + } + }, + { + "name": "setUsernames", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 246, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "DiscussionService" + } + }, + { + "name": "threadHasPostFromComponentAndWorkgroupId", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 180, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "DiscussionService" + } + }, + { + "name": "componentHasCorrectAnswer", + "args": [ + { + "name": "component", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 147, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "component", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "componentHasWork", + "args": [ + { + "name": "component", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 105, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nWhether this component generates student work\nis not provided, we will use the default value of whether the\ncomponent type usually has work.\n", + "description": "

Whether this component generates student work\nis not provided, we will use the default value of whether the\ncomponent type usually has work.

\n", + "jsdoctags": [ + { + "name": { + "pos": 3060, + "end": 3069, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "component" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3054, + "end": 3059, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

(optional) the component object. if the component object\nis not provided, we will use the default value of whether the\ncomponent type usually has work.

\n" + }, + { + "tagName": { + "pos": 3238, + "end": 3244, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether this component generates student work

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "displayAnnotation", + "args": [ + { + "name": "componentContent", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "annotation", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 94, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if we need to display the annotation to the student\n", + "description": "

Check if we need to display the annotation to the student

\n", + "jsdoctags": [ + { + "name": { + "pos": 2753, + "end": 2769, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentContent" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2747, + "end": 2752, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component content

\n" + }, + { + "name": { + "pos": 2804, + "end": 2814, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "annotation" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2798, + "end": 2803, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the annotation

\n" + }, + { + "tagName": { + "pos": 2836, + "end": 2843, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

whether we need to display the annotation to the student

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getDomIdEnding", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 18, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getElementId", + "args": [ + { + "name": "domIdBeginning", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "domIdEnding", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "domIdBeginning", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "domIdEnding", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "getStudentDataString", + "args": [ + { + "name": "componentState", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 127, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the human readable student data string\n", + "description": "

Get the human readable student data string

\n", + "jsdoctags": [ + { + "name": { + "pos": 3953, + "end": 3967, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3947, + "end": 3952, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component state

\n" + }, + { + "tagName": { + "pos": 3994, + "end": 4000, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

a human readable student data string

\n", + "returnType": "string" + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "hasNodeEnteredEvent", + "args": [ + { + "name": "nodeEvents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 155, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeEvents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "isSubmitRequired", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 151, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "notifyConnectedComponentSubscribers", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 42, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "requestComponentState", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 30, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + }, + { + "name": "sendComponentState", + "args": [ + { + "name": "componentStateWrapper", + "type": "ComponentStateWrapper", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 38, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentStateWrapper", + "type": "ComponentStateWrapper", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentService" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { ConfigService } from '../../services/configService';\nimport { TeacherDataService } from '../../services/teacherDataService';\nimport { DiscussionService } from './discussionService';\nimport { getIntersectOfArrays } from '../../common/array/array';\n\n@Injectable()\nexport class TeacherDiscussionService extends DiscussionService {\n constructor(\n protected http: HttpClient,\n protected configService: ConfigService,\n protected dataService: TeacherDataService\n ) {\n super(configService, http);\n }\n\n getPostsAssociatedWithComponentIdsAndWorkgroupId(componentIds: string[], workgroupId: number) {\n let allPosts = [];\n const topLevelComponentStateIdsFound = [];\n for (const componentState of this.getComponentStates(workgroupId, componentIds)) {\n const componentStateIdReplyingTo = componentState.studentData.componentStateIdReplyingTo;\n if (this.isTopLevelPost(componentState)) {\n if (\n !this.isTopLevelComponentStateIdFound(topLevelComponentStateIdsFound, componentState.id)\n ) {\n allPosts = allPosts.concat(\n this.getPostAndAllRepliesByComponentIds(componentIds, componentState.id)\n );\n topLevelComponentStateIdsFound.push(componentState.id);\n }\n } else {\n if (\n !this.isTopLevelComponentStateIdFound(\n topLevelComponentStateIdsFound,\n componentStateIdReplyingTo\n )\n ) {\n allPosts = allPosts.concat(\n this.getPostAndAllRepliesByComponentIds(componentIds, componentStateIdReplyingTo)\n );\n topLevelComponentStateIdsFound.push(componentStateIdReplyingTo);\n }\n }\n }\n return allPosts;\n }\n\n private getComponentStates(workgroupId: number, componentIds: string[]): any[] {\n const workgroupComponentStates = this.dataService.getComponentStatesByWorkgroupId(workgroupId);\n const componentStates = componentIds.flatMap((componentId) =>\n this.dataService.getComponentStatesByComponentId(componentId)\n );\n return getIntersectOfArrays(workgroupComponentStates, componentStates);\n }\n\n getPostAndAllRepliesByComponentIds(componentIds: string[], componentStateId: number) {\n const postAndAllReplies = [];\n const componentStates = componentIds.flatMap((componentId) =>\n this.dataService.getComponentStatesByComponentId(componentId)\n );\n for (const componentState of componentStates) {\n if (componentState.id === componentStateId) {\n postAndAllReplies.push(componentState);\n } else {\n const componentStateIdReplyingTo = componentState.studentData.componentStateIdReplyingTo;\n if (componentStateIdReplyingTo === componentStateId) {\n postAndAllReplies.push(componentState);\n }\n }\n }\n return postAndAllReplies;\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 9, + "jsdoctags": [ + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "DiscussionService" + ], + "type": "injectable" + }, + { + "name": "TeacherNodeService", + "id": "injectable-TeacherNodeService-14b6021fcde1d4dc1de29245cbc725251793241ab542a67726e88c76dd27cf408e2c1fec4a9950367eeb7e194c316d48780da3d0dd131342f09c3c9f86bb308f", + "file": "src/assets/wise5/services/teacherNodeService.ts", + "properties": [ + { + "name": "componentShowSubmitButtonValueChanged$", + "defaultValue": "this.componentShowSubmitButtonValueChangedSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "Observable", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "modifierKind": [ + 125 + ] + }, + { + "name": "componentShowSubmitButtonValueChangedSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "modifierKind": [ + 123 + ] + }, + { + "name": "deleteStarterState$", + "defaultValue": "this.deleteStarterStateSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "Observable", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 125 + ] + }, + { + "name": "deleteStarterStateSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "modifierKind": [ + 123 + ] + }, + { + "name": "starterStateResponse$", + "defaultValue": "this.starterStateResponseSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "Observable", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "modifierKind": [ + 125 + ] + }, + { + "name": "starterStateResponseSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "modifierKind": [ + 123 + ] + }, + { + "name": "doneRenderingComponent$", + "defaultValue": "this.doneRenderingComponentSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "NodeService" + } + }, + { + "name": "doneRenderingComponentSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "NodeService" + } + }, + { + "name": "nodeSubmitClicked$", + "defaultValue": "this.nodeSubmitClickedSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "Observable", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "NodeService" + } + }, + { + "name": "nodeSubmitClickedSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "NodeService" + } + } + ], + "methods": [ + { + "name": "broadcastComponentShowSubmitButtonValueChanged", + "args": [ + { + "name": "args", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 28, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "args", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "deleteStarterState", + "args": [ + { + "name": "args", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 32, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "args", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getNextNodeId", + "args": [ + { + "name": "currentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "optional": true + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 57, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "currentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "optional": true, + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "NodeService" + } + }, + { + "name": "getPrevNodeId", + "args": [ + { + "name": "currentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "optional": true + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 40, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "currentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "optional": true, + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "NodeService" + } + }, + { + "name": "respondStarterState", + "args": [ + { + "name": "args", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 36, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "args", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "broadcastDoneRenderingComponent", + "args": [ + { + "name": "nodeIdAndComponentId", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 55, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeIdAndComponentId", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "NodeService" + } + }, + { + "name": "broadcastNodeSubmitClicked", + "args": [ + { + "name": "args", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 51, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "args", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "NodeService" + } + }, + { + "name": "closeNode", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 43, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "NodeService" + } + }, + { + "name": "goToNextNode", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "NodeService" + } + }, + { + "name": "goToPrevNode", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 37, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "NodeService" + } + }, + { + "name": "setCurrentNode", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "NodeService" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Injectable } from '@angular/core';\nimport { NodeService } from './nodeService';\nimport { Subject, Observable } from 'rxjs';\nimport { TeacherDataService } from './teacherDataService';\nimport { TeacherProjectService } from './teacherProjectService';\nimport { ConfigService } from './configService';\nimport { ConstraintService } from './constraintService';\n\n@Injectable()\nexport class TeacherNodeService extends NodeService {\n private componentShowSubmitButtonValueChangedSource: Subject = new Subject();\n public componentShowSubmitButtonValueChanged$: Observable =\n this.componentShowSubmitButtonValueChangedSource.asObservable();\n private deleteStarterStateSource: Subject = new Subject();\n public deleteStarterState$: Observable = this.deleteStarterStateSource.asObservable();\n private starterStateResponseSource: Subject = new Subject();\n public starterStateResponse$: Observable = this.starterStateResponseSource.asObservable();\n\n constructor(\n protected configService: ConfigService,\n protected constraintService: ConstraintService,\n protected dataService: TeacherDataService,\n protected projectService: TeacherProjectService\n ) {\n super(configService, constraintService, dataService, projectService);\n }\n\n broadcastComponentShowSubmitButtonValueChanged(args: any): void {\n this.componentShowSubmitButtonValueChangedSource.next(args);\n }\n\n deleteStarterState(args: any): void {\n this.deleteStarterStateSource.next(args);\n }\n\n respondStarterState(args: any): void {\n this.starterStateResponseSource.next(args);\n }\n\n getPrevNodeId(currentId?: string): string {\n let prevNodeId = null;\n const currentNodeId = currentId ?? this.dataService.getCurrentNodeId();\n if (currentNodeId) {\n const currentNodeOrder = this.projectService.getNodeOrderById(currentNodeId);\n if (currentNodeOrder) {\n const prevId = this.projectService.getNodeIdByOrder(currentNodeOrder - 1);\n if (prevId) {\n prevNodeId = this.projectService.isApplicationNode(prevId)\n ? prevId\n : this.getPrevNodeId(prevId);\n }\n }\n }\n return prevNodeId;\n }\n\n getNextNodeId(currentId?: string): Promise {\n return new Promise((resolve, reject) => {\n let nextNodeId = null;\n const currentNodeId = currentId ?? this.dataService.getCurrentNodeId();\n const currentNodeOrder = this.projectService.getNodeOrderById(currentNodeId);\n if (currentNodeOrder) {\n const nextId = this.projectService.getNodeIdByOrder(currentNodeOrder + 1);\n if (nextId) {\n nextNodeId = this.projectService.isApplicationNode(nextId)\n ? nextId\n : this.getNextNodeId(nextId);\n }\n }\n resolve(nextNodeId);\n });\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "constraintService", + "type": "ConstraintService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 17, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "constraintService", + "type": "ConstraintService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "NodeService" + ], + "type": "injectable" + }, + { + "name": "TeacherPauseScreenService", + "id": "injectable-TeacherPauseScreenService-529fd7cc4e42e11fce38dc35562e5b43cb28c8fa2274ebaefb4cbb4378b32c1e67c2cbf79fc338d0edd38e4a1705ffbea09be43ced2048781c7b546cf3cf424b", + "file": "src/assets/wise5/services/teacherPauseScreenService.ts", + "properties": [], + "methods": [ + { + "name": "pauseScreensChanged", + "args": [ + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isPaused", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 19, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nThe pause screen status was changed for the given periodId. Update period accordingly.\n", + "description": "

The pause screen status was changed for the given periodId. Update period accordingly.

\n", + "jsdoctags": [ + { + "name": { + "pos": 563, + "end": 571, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "periodId" + }, + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 557, + "end": 562, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the id of the period to toggle

\n" + }, + { + "name": { + "pos": 615, + "end": 623, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "isPaused" + }, + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 609, + "end": 614, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

Boolean whether the period should be paused or not

\n" + } + ] + }, + { + "name": "saveRunStatusThenHandlePauseScreen", + "args": [ + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isPaused", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 32, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "isPaused", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "updateAllPeriodsPausedValue", + "args": [ + { + "name": "isPaused", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 58, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "isPaused", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "updatePausedRunStatusValue", + "args": [ + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isPaused", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 47, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nUpdate the paused value for a period in our run status\n", + "description": "

Update the paused value for a period in our run status

\n", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": { + "pos": 1615, + "end": 1623, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "periodId" + }, + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 1609, + "end": 1614, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the period id or -1 for all periods

\n" + }, + { + "name": { + "pos": 1672, + "end": 1680, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "isPaused" + }, + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 1666, + "end": 1671, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

whether the period is paused or not

\n" + } + ] + }, + { + "name": "updatePeriodPausedValue", + "args": [ + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isPaused", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 64, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "isPaused", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Injectable } from '@angular/core';\nimport { TeacherDataService } from './teacherDataService';\nimport { TeacherWebSocketService } from './teacherWebSocketService';\nimport { RunStatusService } from './runStatusService';\n\n@Injectable()\nexport class TeacherPauseScreenService {\n constructor(\n private dataService: TeacherDataService,\n private runStatusService: RunStatusService,\n private webSocketService: TeacherWebSocketService\n ) {}\n\n /**\n * The pause screen status was changed for the given periodId. Update period accordingly.\n * @param periodId the id of the period to toggle\n * @param isPaused Boolean whether the period should be paused or not\n */\n pauseScreensChanged(periodId: number, isPaused: boolean): void {\n this.updatePausedRunStatusValue(periodId, isPaused);\n this.saveRunStatusThenHandlePauseScreen(periodId, isPaused);\n const context = 'ClassroomMonitor',\n nodeId = null,\n componentId = null,\n componentType = null,\n category = 'TeacherAction',\n data = { periodId: periodId },\n event = isPaused ? 'pauseScreen' : 'unPauseScreen';\n this.dataService.saveEvent(context, nodeId, componentId, componentType, category, event, data);\n }\n\n private saveRunStatusThenHandlePauseScreen(periodId: number, isPaused: boolean): void {\n this.runStatusService.saveRunStatus().subscribe(() => {\n if (isPaused) {\n this.webSocketService.pauseScreens(periodId);\n } else {\n this.webSocketService.unPauseScreens(periodId);\n }\n });\n }\n\n /**\n * Update the paused value for a period in our run status\n * @param periodId the period id or -1 for all periods\n * @param isPaused whether the period is paused or not\n */\n private updatePausedRunStatusValue(periodId: number, isPaused: boolean): void {\n if (this.runStatusService.getRunStatus() == null) {\n this.runStatusService.setRunStatus(this.runStatusService.createRunStatus());\n }\n if (periodId === -1) {\n this.updateAllPeriodsPausedValue(isPaused);\n } else {\n this.updatePeriodPausedValue(periodId, isPaused);\n }\n }\n\n private updateAllPeriodsPausedValue(isPaused: boolean): void {\n for (const period of this.runStatusService.getRunStatus().periods) {\n period.paused = isPaused;\n }\n }\n\n private updatePeriodPausedValue(periodId: number, isPaused: boolean): void {\n for (const period of this.runStatusService.getRunStatus().periods) {\n if (period.periodId === periodId) {\n period.paused = isPaused;\n }\n }\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "runStatusService", + "type": "RunStatusService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "webSocketService", + "type": "TeacherWebSocketService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 7, + "jsdoctags": [ + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "runStatusService", + "type": "RunStatusService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "webSocketService", + "type": "TeacherWebSocketService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "type": "injectable" + }, + { + "name": "TeacherPeerGroupService", + "id": "injectable-TeacherPeerGroupService-04dac478e5003273c2a1c48b165d0216baef40f877a3163f394be3a20236f238283a6a983ab5bc42b361ada48b9d15a6d67848b201bab6d19857a719ef0de1cb", + "file": "src/assets/wise5/services/teacherPeerGroupService.ts", + "properties": [ + { + "name": "PREVIEW_PEER_GROUP_ID", + "defaultValue": "1", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "modifierKind": [ + 126, + 148 + ], + "inheritance": { + "file": "PeerGroupService" + } + }, + { + "name": "runId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "inheritance": { + "file": "PeerGroupService" + } + } + ], + "methods": [ + { + "name": "retrievePeerGroup", + "args": [ + { + "name": "peerGroupingTag", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 27, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "peerGroupingTag", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "PeerGroupService" + } + }, + { + "name": "retrievePeerGroupWork", + "args": [], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 37, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "PeerGroupService" + } + }, + { + "name": "retrieveStudentWork", + "args": [ + { + "name": "peerGroup", + "type": "PeerGroup", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "showWorkNodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "showWorkComponentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 41, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "peerGroup", + "type": "PeerGroup", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "showWorkNodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "showWorkComponentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "PeerGroupService" + } + }, + { + "name": "showPeerGroupDetails", + "args": [ + { + "name": "peerGroupingTag", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 20, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "peerGroupingTag", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createNewGroup", + "args": [ + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "peerGroupingTag", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 87, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "peerGroupingTag", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "PeerGroupService" + } + }, + { + "name": "getPeerGroupingTags", + "args": [ + { + "name": "node", + "type": "Node", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Set", + "typeParameters": [], + "line": 21, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "node", + "type": "Node", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "PeerGroupService" + } + }, + { + "name": "getPreviewPeerGroup", + "args": [], + "optional": false, + "returnType": "PeerGroup", + "typeParameters": [], + "line": 49, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "PeerGroupService" + } + }, + { + "name": "moveWorkgroupToGroup", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "groupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 94, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "groupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "PeerGroupService" + } + }, + { + "name": "removeWorkgroupFromGroup", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "groupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 98, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "groupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "PeerGroupService" + } + }, + { + "name": "retrieveDynamicPromptStudentData", + "args": [ + { + "name": "peerGroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 110, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "peerGroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "PeerGroupService" + } + }, + { + "name": "retrievePeerGroupAnnotations", + "args": [ + { + "name": "peerGroup", + "type": "PeerGroup", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 75, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "peerGroup", + "type": "PeerGroup", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "PeerGroupService" + } + }, + { + "name": "retrievePeerGroupInfo", + "args": [ + { + "name": "peerGroupingTag", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "peerGroupingTag", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "PeerGroupService" + } + }, + { + "name": "retrieveQuestionBankStudentData", + "args": [ + { + "name": "peerGroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 102, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "peerGroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "PeerGroupService" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { Observable, of } from 'rxjs';\nimport { PeerGroupDialogComponent } from '../classroomMonitor/classroomMonitorComponents/peer-group/peer-group-dialog/peer-group-dialog.component';\nimport { PeerGroup } from '../components/peerChat/PeerGroup';\nimport { ConfigService } from './configService';\nimport { PeerGroupService } from './peerGroupService';\n\n@Injectable()\nexport class TeacherPeerGroupService extends PeerGroupService {\n constructor(\n protected configService: ConfigService,\n private dialog: MatDialog,\n protected http: HttpClient\n ) {\n super(configService, http);\n }\n\n showPeerGroupDetails(peerGroupingTag: string): void {\n this.dialog.open(PeerGroupDialogComponent, {\n data: peerGroupingTag,\n panelClass: 'dialog-lg'\n });\n }\n\n retrievePeerGroup(peerGroupingTag: string, workgroupId: number): Observable {\n // When the teacher previews anything that retrieves Peer Group like Classroom Monitor Step Info\n // or Authoring preview popup, the workgroupId will be null\n if (this.configService.isClassroomMonitor() && workgroupId != null) {\n return super.retrievePeerGroup(peerGroupingTag, workgroupId);\n } else {\n return of(this.getPreviewPeerGroup());\n }\n }\n\n retrievePeerGroupWork(): Observable {\n return of([]);\n }\n\n retrieveStudentWork(\n peerGroup: PeerGroup,\n nodeId: string,\n componentId: string,\n showWorkNodeId: string,\n showWorkComponentId: string\n ): Observable {\n if (\n this.configService.isClassroomMonitor() &&\n peerGroup.id !== PeerGroupService.PREVIEW_PEER_GROUP_ID\n ) {\n return super.retrieveStudentWork(\n peerGroup,\n nodeId,\n componentId,\n showWorkNodeId,\n showWorkComponentId\n );\n } else {\n return of([]);\n }\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 11, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "PeerGroupService" + ], + "type": "injectable" + }, + { + "name": "TeacherProjectService", + "id": "injectable-TeacherProjectService-bd5b334138ff96da745c6ce86335f5735cc83d3b19bec6c60544604b727c5dc8a9f7a296041b60dfa172d86052723b834b55df735a4a518341886d02a1814bf9", + "file": "src/assets/wise5/services/teacherProjectService.ts", + "properties": [ + { + "name": "componentChanged$", + "defaultValue": "this.componentChangedSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "Observable", + "indexKey": "", + "optional": false, + "description": "", + "line": 20, + "modifierKind": [ + 125 + ] + }, + { + "name": "componentChangedSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "modifierKind": [ + 123 + ] + }, + { + "name": "errorSavingProject$", + "defaultValue": "this.errorSavingProjectSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "Observable", + "indexKey": "", + "optional": false, + "description": "", + "line": 26, + "modifierKind": [ + 125 + ] + }, + { + "name": "errorSavingProjectSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 25, + "modifierKind": [ + 123 + ] + }, + { + "name": "nodeChanged$", + "defaultValue": "this.nodeChangedSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "Observable", + "indexKey": "", + "optional": false, + "description": "", + "line": 22, + "modifierKind": [ + 125 + ] + }, + { + "name": "nodeChangedSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 21, + "modifierKind": [ + 123 + ] + }, + { + "name": "nodeTypeSelected", + "defaultValue": "signal(null)", + "deprecated": false, + "deprecationMessage": "", + "type": "WritableSignal", + "indexKey": "", + "optional": false, + "description": "", + "line": 27, + "modifierKind": [ + 123 + ] + }, + { + "name": "notAllowedToEditThisProject$", + "defaultValue": "this.notAllowedToEditThisProjectSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "Observable", + "indexKey": "", + "optional": false, + "description": "", + "line": 29, + "modifierKind": [ + 125 + ] + }, + { + "name": "notAllowedToEditThisProjectSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 28, + "modifierKind": [ + 123 + ] + }, + { + "name": "projectSaved$", + "defaultValue": "this.projectSavedSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "Observable", + "indexKey": "", + "optional": false, + "description": "", + "line": 32, + "modifierKind": [ + 125 + ] + }, + { + "name": "projectSavedSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 31, + "modifierKind": [ + 123 + ] + }, + { + "name": "refreshProject$", + "defaultValue": "this.refreshProjectSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 24, + "modifierKind": [ + 125 + ] + }, + { + "name": "refreshProjectSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 23, + "modifierKind": [ + 123 + ] + }, + { + "name": "savingProject$", + "defaultValue": "this.savingProjectSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "Observable", + "indexKey": "", + "optional": false, + "description": "", + "line": 34, + "modifierKind": [ + 125 + ] + }, + { + "name": "savingProjectSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 33, + "modifierKind": [ + 123 + ] + }, + { + "name": "uiChanged$", + "defaultValue": "this.uiChangedSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "Observable", + "indexKey": "", + "optional": false, + "description": "", + "line": 36, + "modifierKind": [ + 125 + ] + }, + { + "name": "uiChangedSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 35, + "modifierKind": [ + 123 + ] + }, + { + "name": "achievements", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 26, + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "additionalProcessingFunctionsMap", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 27, + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "allPaths", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "string[][]", + "indexKey": "", + "optional": false, + "description": "", + "line": 28, + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "applicationNodes", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 29, + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "currentLanguage", + "defaultValue": "this.currentLanguageSignal.asReadonly()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 31, + "modifierKind": [ + 148 + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "currentLanguageSignal", + "defaultValue": "signal(null)", + "deprecated": false, + "deprecationMessage": "", + "type": "WritableSignal", + "indexKey": "", + "optional": false, + "description": "", + "line": 30, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "flattenedProjectAsNodeIds", + "defaultValue": "null", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 33, + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "groupNodes", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 34, + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "idToNode", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 35, + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "idToOrder", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 36, + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "inactiveGroupNodes", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 37, + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "inactiveStepNodes", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 38, + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "metadata", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 39, + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "nodeCount", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 41, + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "nodeIdsInAnyBranch", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 44, + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "nodeIdToBranchPathLetter", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 45, + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "nodeIdToIsInBranchPath", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 43, + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "nodeIdToNumber", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 42, + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "nodes", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 40, + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "originalProject", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 46, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "project", + "defaultValue": "null", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 47, + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "projectParsed$", + "defaultValue": "this.projectParsedSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "Observable", + "indexKey": "", + "optional": false, + "description": "", + "line": 51, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "projectParsedSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 50, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "rootNode", + "defaultValue": "null", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 48, + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "transitions", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "Transition[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 49, + "inheritance": { + "file": "ProjectService" + } + } + ], + "methods": [ + { + "name": "addBranchPathTakenConstraints", + "args": [ + { + "name": "targetNodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "fromNodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "toNodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 244, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nAdd branch path taken constraints to the node\n", + "description": "

Add branch path taken constraints to the node

\n", + "jsdoctags": [ + { + "name": { + "pos": 8334, + "end": 8346, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "targetNodeId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 8328, + "end": 8333, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node to add the constraints to

\n" + }, + { + "name": { + "pos": 8394, + "end": 8404, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "fromNodeId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 8388, + "end": 8393, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the from node id of the branch path taken constraint

\n" + }, + { + "name": { + "pos": 8470, + "end": 8478, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "toNodeId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 8464, + "end": 8469, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the to node id of the branch path taken constraint

\n" + } + ] + }, + { + "name": "addConstraintToNode", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "constraint", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 727, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "constraint", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addCurrentUserToAuthors", + "args": [ + { + "name": "authors", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 521, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "authors", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addGroupChildNodesToInactive", + "args": [ + { + "name": "node", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1518, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nAdd a group's cthild nodes to the inactive nodes.\n", + "description": "

Add a group's cthild nodes to the inactive nodes.

\n", + "jsdoctags": [ + { + "name": { + "pos": 50318, + "end": 50322, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "node" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 50312, + "end": 50317, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The group node.

\n" + } + ] + }, + { + "name": "addInactiveNodeInsertAfter", + "args": [ + { + "name": "node", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeIdToInsertAfter", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 384, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nAdd the node to the inactive nodes array.\n", + "description": "

Add the node to the inactive nodes array.

\n", + "jsdoctags": [ + { + "name": { + "pos": 12343, + "end": 12347, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "node" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 12337, + "end": 12342, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node to move

\n" + }, + { + "name": { + "pos": 12377, + "end": 12396, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeIdToInsertAfter" + }, + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "pos": 12371, + "end": 12376, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

place the node after this

\n" + } + ] + }, + { + "name": "addInactiveNodeInsertInside", + "args": [ + { + "name": "node", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeIdToInsertInside", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 429, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "node", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeIdToInsertInside", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addSpace", + "args": [ + { + "name": "space", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1779, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "space", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addToTransition", + "args": [ + { + "name": "node", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "toNodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "criteria", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 848, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nAdd a transition to a node\nwhat needs to be satisfied in order to use this transition\n", + "description": "

Add a transition to a node\nwhat needs to be satisfied in order to use this transition

\n", + "jsdoctags": [ + { + "name": { + "pos": 28150, + "end": 28154, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "node" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 28144, + "end": 28149, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node we are adding a transition to

\n" + }, + { + "name": { + "pos": 28206, + "end": 28214, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "toNodeId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 28200, + "end": 28205, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id we going to transition to

\n" + }, + { + "name": { + "pos": 28265, + "end": 28273, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "criteria" + }, + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "pos": 28259, + "end": 28264, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

(optional) a criteria object specifying\nwhat needs to be satisfied in order to use this transition

\n" + } + ] + }, + { + "name": "broadcastErrorSavingProject", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1854, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "broadcastNotAllowedToEditThisProject", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1858, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "broadcastProjectSaved", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1862, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "broadcastSavingProject", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1850, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "checkPotentialStartNodeIdChange", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 340, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "checkPotentialStartNodeIdChangeThenSaveProject", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 335, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "cleanupBeforeSave", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 553, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nPerform any necessary cleanup before we save the project.\nFor example we need to remove the checked field in the inactive node\nobjects.\n", + "description": "

Perform any necessary cleanup before we save the project.\nFor example we need to remove the checked field in the inactive node\nobjects.

\n" + }, + { + "name": "cleanupComponent", + "args": [ + { + "name": "component", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 595, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nRemove any fields that are used temporarily for display purposes like when\nthe project is loaded in the authoring tool and grading tool\n", + "description": "

Remove any fields that are used temporarily for display purposes like when\nthe project is loaded in the authoring tool and grading tool

\n", + "jsdoctags": [ + { + "name": { + "pos": 19062, + "end": 19071, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "component" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 19056, + "end": 19061, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The component object.

\n" + } + ] + }, + { + "name": "cleanupNode", + "args": [ + { + "name": "node", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 567, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nRemove any fields that are used temporarily for display purposes like when\nthe project is loaded in the authoring tool and grading tool\n", + "description": "

Remove any fields that are used temporarily for display purposes like when\nthe project is loaded in the authoring tool and grading tool

\n", + "jsdoctags": [ + { + "name": { + "pos": 18294, + "end": 18298, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "node" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 18288, + "end": 18293, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The node object.

\n" + } + ] + }, + { + "name": "clearTransitionsFromNode", + "args": [ + { + "name": "node", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 399, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "node", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "componentChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 483, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "copyParentTransitions", + "args": [ + { + "name": "nodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "node", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 681, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "node", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "copyTransitions", + "args": [ + { + "name": "previousNode", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "node", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 701, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "previousNode", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "node", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createGroup", + "args": [ + { + "name": "title", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 65, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCreate a new group\n", + "description": "

Create a new group

\n", + "jsdoctags": [ + { + "name": { + "pos": 3144, + "end": 3149, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "title" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3138, + "end": 3143, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the title of the group

\n" + }, + { + "tagName": { + "pos": 3179, + "end": 3186, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

the group object

\n" + } + ] + }, + { + "name": "createNode", + "args": [ + { + "name": "title", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "{ id: string; title: any; type: string; constraints: {}; transitionLogic: { transitions: {}; }; showSaveButton: boolean; showSubmitButton: boolean; components: {}; }", + "typeParameters": [], + "line": 84, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCreate a new node\n", + "description": "

Create a new node

\n", + "jsdoctags": [ + { + "name": { + "pos": 3509, + "end": 3514, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "title" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3503, + "end": 3508, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the title of the node

\n" + }, + { + "tagName": { + "pos": 3543, + "end": 3550, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

the node object

\n" + } + ] + }, + { + "name": "createNodeAfter", + "args": [ + { + "name": "newNode", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 164, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCreate a node after the given node id\n", + "description": "

Create a node after the given node id

\n", + "jsdoctags": [ + { + "name": "newNode", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": { + "pos": 6021, + "end": 6027, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 6015, + "end": 6020, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node to add after

\n" + } + ] + }, + { + "name": "createNodeInside", + "args": [ + { + "name": "node", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 143, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCreate a node inside the group\n", + "description": "

Create a node inside the group

\n", + "jsdoctags": [ + { + "name": { + "pos": 5320, + "end": 5324, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "node" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 5314, + "end": 5319, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the new node

\n" + }, + { + "name": { + "pos": 5350, + "end": 5356, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 5344, + "end": 5349, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id of the group to create the node in

\n" + } + ] + }, + { + "name": "createTransitionFromNodeToInsertToOldStartNode", + "args": [ + { + "name": "startId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeToInsert", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 812, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "startId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeToInsert", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "doesAnyComponentInNodeShowSubmitButton", + "args": [ + { + "name": "nodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 1071, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if any of the components in the node are showing their submit button.\n", + "description": "

Check if any of the components in the node are showing their submit button.

\n", + "jsdoctags": [ + { + "name": { + "pos": 34990, + "end": 34996, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 34984, + "end": 34989, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The node id to check.

\n", + "typeExpression": { + "pos": 34997, + "end": 35005, + "kind": 310, + "id": 0, + "flags": 16842752, + "modifierFlagsCache": 0, + "transformFlags": 0, + "type": { + "pos": 34998, + "end": 35004, + "kind": 154, + "id": 0, + "flags": 16777216, + "transformFlags": 1 + } + } + }, + { + "tagName": { + "pos": 35034, + "end": 35040, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

Whether any of the components in the node show their submit button.

\n", + "returnType": "boolean" + } + ] + }, + { + "name": "getApplicationNodes", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 1643, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getAuthors", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 517, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "getAutomatedAssessmentProjectId", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 460, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getBackgroundColor", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 299, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getBranchLetter", + "args": [ + { + "name": "nodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 473, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the branch letter in the node position string if the node is in a branch path\n", + "description": "

Get the branch letter in the node position string if the node is in a branch path

\n", + "jsdoctags": [ + { + "name": { + "pos": 15404, + "end": 15410, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 15398, + "end": 15403, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id we want the branch letter for

\n" + }, + { + "tagName": { + "pos": 15459, + "end": 15465, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

the branch letter in the node position if the node is in a branch path

\n" + } + ] + }, + { + "name": "getBranchPathTakenConstraintsByNodeId", + "args": [ + { + "name": "nodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "{}", + "typeParameters": [], + "line": 1747, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\n", + "description": "", + "jsdoctags": [ + { + "name": { + "pos": 57874, + "end": 57880, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 57868, + "end": 57873, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

Get the branch path taken constraints from this node.

\n" + }, + { + "tagName": { + "pos": 57941, + "end": 57947, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

An array of branch path taken constraints from the node.

\n", + "returnType": "unknown" + } + ] + }, + { + "name": "getComponentsFromLesson", + "args": [ + { + "name": "lessonId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "ComponentContent[]", + "typeParameters": [], + "line": 1888, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "lessonId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getComponentsFromStep", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "ComponentContent[]", + "typeParameters": [], + "line": 1884, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getFeaturedProjectIcons", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 1800, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getFirstLeafNodeId", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 356, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the first leaf node by traversing all the start ids\nuntil a leaf node id is found\n", + "description": "

Get the first leaf node by traversing all the start ids\nuntil a leaf node id is found

\n", + "modifierKind": [ + 123 + ] + }, + { + "name": "getGroupIds", + "args": [], + "optional": false, + "returnType": "{}", + "typeParameters": [], + "line": 925, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet all the group ids\n", + "description": "

Get all the group ids

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 30575, + "end": 30582, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

an array with all the group ids

\n" + } + ] + }, + { + "name": "getGroupNodesByToNodeId", + "args": [ + { + "name": "toNodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 1459, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the group nodes that point to a given node id\n", + "description": "

Get the group nodes that point to a given node id

\n", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": { + "pos": 48581, + "end": 48589, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "toNodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 48575, + "end": 48580, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "" + } + ] + }, + { + "name": "getIdToNode", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 331, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getInactiveNodeIds", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 980, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet all the node ids from inactive steps\n", + "description": "

Get all the node ids from inactive steps

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 32323, + "end": 32330, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

an array with all the inactive node ids

\n" + } + ] + }, + { + "name": "getNextAvailableConstraintIdForNodeId", + "args": [ + { + "name": "nodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 1600, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the next available constraint id for a node\ne.g. node8Constraint2\n", + "description": "

Get the next available constraint id for a node\ne.g. node8Constraint2

\n", + "jsdoctags": [ + { + "name": { + "pos": 53094, + "end": 53100, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 53088, + "end": 53093, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

get the next available constraint id for this node\ne.g. node8Constraint2

\n" + }, + { + "tagName": { + "pos": 53185, + "end": 53191, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

the next available constraint id for the node

\n" + } + ] + }, + { + "name": "getNextAvailableGroupId", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 897, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the next available group id\n", + "description": "

Get the next available group id

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 29685, + "end": 29692, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

the next available group id

\n" + } + ] + }, + { + "name": "getNextAvailableNodeId", + "args": [ + { + "name": "nodeIdsToSkip", + "type": "[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 963, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the next available node id\nuse. This parameter is used in cases where we are creating multiple new\nnodes at once.\nExample\nWe ask for two new node ids by calling getNextAvailableNodeId() twice.\nThe first time it returns \"node10\".\nIf we ask the second time without actually creating and adding node10,\nit will return \"node10\" again. If we provide \"node10\" in the\nnodeIdsToSkip, then getNextAvailableNodeId() will properly return to us\n\"node11\".\n", + "description": "

Get the next available node id\nuse. This parameter is used in cases where we are creating multiple new\nnodes at once.\nExample\nWe ask for two new node ids by calling getNextAvailableNodeId() twice.\nThe first time it returns "node10".\nIf we ask the second time without actually creating and adding node10,\nit will return "node10" again. If we provide "node10" in the\nnodeIdsToSkip, then getNextAvailableNodeId() will properly return to us\n"node11".

\n", + "jsdoctags": [ + { + "name": { + "pos": 31274, + "end": 31287, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeIdsToSkip" + }, + "type": "[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]", + "tagName": { + "pos": 31268, + "end": 31273, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

(optional) An array of additional node ids to not\nuse. This parameter is used in cases where we are creating multiple new\nnodes at once.\nExample\nWe ask for two new node ids by calling getNextAvailableNodeId() twice.\nThe first time it returns "node10".\nIf we ask the second time without actually creating and adding node10,\nit will return "node10" again. If we provide "node10" in the\nnodeIdsToSkip, then getNextAvailableNodeId() will properly return to us\n"node11".

\n" + }, + { + "tagName": { + "pos": 31805, + "end": 31812, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

the next available node id

\n" + } + ] + }, + { + "name": "getNodeIdAfter", + "args": [ + { + "name": "nodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 229, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the node id that comes after a given node id\nif this is the last node in the sequence\n", + "description": "

Get the node id that comes after a given node id\nif this is the last node in the sequence

\n", + "jsdoctags": [ + { + "name": { + "pos": 7881, + "end": 7887, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 7875, + "end": 7880, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

get the node id that comes after this node id

\n" + }, + { + "tagName": { + "pos": 7940, + "end": 7946, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

the node id that comes after the one that is passed in as a parameter, or null\nif this is the last node in the sequence

\n" + } + ] + }, + { + "name": "getNodeIds", + "args": [], + "optional": false, + "returnType": "string[]", + "typeParameters": [], + "line": 1637, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet all the node ids from steps (not groups)\n", + "description": "

Get all the node ids from steps (not groups)

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 54323, + "end": 54330, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

an array with all the node ids

\n" + } + ] + }, + { + "name": "getNodeIdsInBranch", + "args": [ + { + "name": "fromNodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "toNodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 1654, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the node ids in the branch by looking for nodes that have branch\npath taken constraints with the given fromNodeId and toNodeId\n", + "description": "

Get the node ids in the branch by looking for nodes that have branch\npath taken constraints with the given fromNodeId and toNodeId

\n", + "jsdoctags": [ + { + "name": { + "pos": 54710, + "end": 54720, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "fromNodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 54704, + "end": 54709, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the from node id

\n" + }, + { + "name": { + "pos": 54750, + "end": 54758, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "toNodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 54744, + "end": 54749, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the to node id

\n" + }, + { + "tagName": { + "pos": 54780, + "end": 54786, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

an array of nodes that are in the branch path

\n" + } + ] + }, + { + "name": "getNodesInOrder", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 1866, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getNodesWithNewIds", + "args": [ + { + "name": "nodes", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 99, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodes", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getNodeTypeSelected", + "args": [], + "optional": false, + "returnType": "Signal", + "typeParameters": [], + "line": 1880, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getOldToNewIds", + "args": [ + { + "name": "nodes", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Map", + "typeParameters": [], + "line": 106, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodes", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getProjectRubric", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 280, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getProjectScriptFilename", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 292, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getSimulationProjectId", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 464, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getStepNodesDetailsInOrder", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 1832, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getUnusedComponentId", + "args": [ + { + "name": "componentIdsToSkip", + "type": "[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 1542, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet an unused component id\nto skip. This is used when we are creating multiple new components. There\nis avery small chance that we create duplicate component ids that aren't\nalready in the project. We avoid this problem by using this parameter.\nExample\nWe want to create two new components. We first generate a new component\nid for the first new component for example \"1234567890\". Then we generate\na new component id for the second new component and pass in\n[\"1234567890\"] as componentIdsToSkip because the new \"1234567890\"\ncomponent hasn't actually been added to the project yet.\n", + "description": "

Get an unused component id\nto skip. This is used when we are creating multiple new components. There\nis avery small chance that we create duplicate component ids that aren't\nalready in the project. We avoid this problem by using this parameter.\nExample\nWe want to create two new components. We first generate a new component\nid for the first new component for example "1234567890". Then we generate\na new component id for the second new component and pass in\n["1234567890"] as componentIdsToSkip because the new "1234567890"\ncomponent hasn't actually been added to the project yet.

\n", + "jsdoctags": [ + { + "name": { + "pos": 50683, + "end": 50701, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentIdsToSkip" + }, + "type": "[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]", + "tagName": { + "pos": 50677, + "end": 50682, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

(optional) An array of additional component ids\nto skip. This is used when we are creating multiple new components. There\nis avery small chance that we create duplicate component ids that aren't\nalready in the project. We avoid this problem by using this parameter.\nExample\nWe want to create two new components. We first generate a new component\nid for the first new component for example "1234567890". Then we generate\na new component id for the second new component and pass in\n["1234567890"] as componentIdsToSkip because the new "1234567890"\ncomponent hasn't actually been added to the project yet.

\n" + }, + { + "tagName": { + "pos": 51356, + "end": 51362, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

a component id that isn't already being used in the project

\n" + } + ] + }, + { + "name": "handleSaveProjectResponse", + "args": [ + { + "name": "response", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 535, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "response", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "hasBranchPathTakenConstraint", + "args": [ + { + "name": "node", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "fromNodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "toNodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 1705, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if a node has a branch path taken constraint\ngiven from node id and to node id\n", + "description": "

Check if a node has a branch path taken constraint\ngiven from node id and to node id

\n", + "jsdoctags": [ + { + "name": { + "pos": 56321, + "end": 56325, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "node" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 56315, + "end": 56320, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node to check

\n" + }, + { + "name": { + "pos": 56356, + "end": 56366, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "fromNodeId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 56350, + "end": 56355, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the from node id of the branch path taken

\n" + }, + { + "name": { + "pos": 56421, + "end": 56429, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "toNodeId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 56415, + "end": 56420, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the to node id of the branch path taken

\n" + }, + { + "tagName": { + "pos": 56476, + "end": 56482, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether the node has a branch path taken constraint with the\ngiven from node id and to node id

\n" + } + ] + }, + { + "name": "inheritParentTransitions", + "args": [ + { + "name": "nodeIdToInsertInside", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeToInsert", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 788, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCopy the transitions from the parent to the node we are inserting.\n", + "description": "

Copy the transitions from the parent to the node we are inserting.

\n", + "jsdoctags": [ + { + "name": { + "pos": 26175, + "end": 26195, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeIdToInsertInside" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 26169, + "end": 26174, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "" + }, + { + "name": { + "pos": 26208, + "end": 26220, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeToInsert" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 26202, + "end": 26207, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "" + } + ] + }, + { + "name": "insertNodeAfterInactiveNode", + "args": [ + { + "name": "node", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeIdToInsertAfter", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 409, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "node", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeIdToInsertAfter", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "insertNodeAfterInGroup", + "args": [ + { + "name": "group", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeIdToInsert", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeIdToInsertAfter", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 627, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nInsert a node id in a group after another specific node id.\n", + "description": "

Insert a node id in a group after another specific node id.

\n", + "jsdoctags": [ + { + "name": { + "pos": 20052, + "end": 20057, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "group" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 20046, + "end": 20051, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

A group object.

\n" + }, + { + "name": { + "pos": 20086, + "end": 20100, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeIdToInsert" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 20080, + "end": 20085, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The node id to insert.

\n" + }, + { + "name": { + "pos": 20136, + "end": 20155, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeIdToInsertAfter" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 20130, + "end": 20135, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The node id to insert after.

\n" + }, + { + "tagName": { + "pos": 20191, + "end": 20198, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

Whether we inserted the node id.

\n", + "returnType": "boolean" + } + ] + }, + { + "name": "insertNodeAfterInGroups", + "args": [ + { + "name": "nodeIdToInsert", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeIdToInsertAfter", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 605, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nInsert the node after the given node id in the group's array of children ids\n", + "description": "

Insert the node after the given node id in the group's array of children ids

\n", + "jsdoctags": [ + { + "name": { + "pos": 19312, + "end": 19326, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeIdToInsert" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 19306, + "end": 19311, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id we want to insert

\n" + }, + { + "name": { + "pos": 19369, + "end": 19388, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeIdToInsertAfter" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 19363, + "end": 19368, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id we want to insert after

\n" + } + ] + }, + { + "name": "insertNodeAfterInTransitions", + "args": [ + { + "name": "nodeToInsert", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeIdToInsertAfter", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 647, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nUpdate the transitions to handle inserting a node after another node.\nThe two nodes must either both be steps or both be activities.\n", + "description": "

Update the transitions to handle inserting a node after another node.\nThe two nodes must either both be steps or both be activities.

\n", + "jsdoctags": [ + { + "name": { + "pos": 20762, + "end": 20774, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeToInsert" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 20756, + "end": 20761, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node to insert

\n" + }, + { + "name": { + "pos": 20806, + "end": 20825, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeIdToInsertAfter" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 20800, + "end": 20805, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id to insert after

\n" + } + ] + }, + { + "name": "insertNodeAtBeginningOfInactiveNodes", + "args": [ + { + "name": "node", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 405, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "node", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "insertNodeInsideInactiveNode", + "args": [ + { + "name": "node", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeIdToInsertInside", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 444, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "node", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeIdToInsertInside", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "insertNodeInsideInGroups", + "args": [ + { + "name": "nodeIdToInsert", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeIdToInsertInside", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 739, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nInsert a node into a group\n", + "description": "

Insert a node into a group

\n", + "jsdoctags": [ + { + "name": { + "pos": 24194, + "end": 24208, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeIdToInsert" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 24188, + "end": 24193, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id to insert

\n" + }, + { + "name": { + "pos": 24243, + "end": 24263, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeIdToInsertInside" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 24237, + "end": 24242, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id of the group we will insert into

\n" + } + ] + }, + { + "name": "insertNodeInsideOnlyUpdateTransitions", + "args": [ + { + "name": "nodeIdToInsert", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeIdToInsertInside", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 755, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nUpdate the transitions to handle inserting a node as the first step in a group.\n", + "description": "

Update the transitions to handle inserting a node as the first step in a group.

\n", + "jsdoctags": [ + { + "name": { + "pos": 24723, + "end": 24737, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeIdToInsert" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 24717, + "end": 24722, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

node id that we will insert

\n" + }, + { + "name": { + "pos": 24778, + "end": 24798, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeIdToInsertInside" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 24772, + "end": 24777, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id of the group we are inserting into

\n" + } + ] + }, + { + "name": "isBranchPoint", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 992, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if a node is a branch point. A branch point is a node with more\nthan one transition.\n", + "description": "

Check if a node is a branch point. A branch point is a node with more\nthan one transition.

\n", + "jsdoctags": [ + { + "name": { + "pos": 32610, + "end": 32616, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 32604, + "end": 32609, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id

\n" + }, + { + "tagName": { + "pos": 32635, + "end": 32641, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether the node is a branch point

\n" + } + ] + }, + { + "name": "isComponentIdUsed", + "args": [ + { + "name": "componentId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 1581, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if the component id is already being used in the project\nthe project\n", + "description": "

Check if the component id is already being used in the project\nthe project

\n", + "jsdoctags": [ + { + "name": { + "pos": 52528, + "end": 52539, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 52522, + "end": 52527, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

check if this component id is already being used in\nthe project

\n" + }, + { + "tagName": { + "pos": 52615, + "end": 52621, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether the component id is already being used in the project

\n" + } + ] + }, + { + "name": "isFirstNodeInBranchPath", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 1769, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if a node is the first node in a branch path\n", + "description": "

Check if a node is the first node in a branch path

\n", + "jsdoctags": [ + { + "name": { + "pos": 58629, + "end": 58635, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 58623, + "end": 58628, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id

\n" + }, + { + "tagName": { + "pos": 58654, + "end": 58660, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether the node is the first node in a branch path

\n" + } + ] + }, + { + "name": "isInactive", + "args": [ + { + "name": "nodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 176, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isNodeIdToInsertTargetNotSpecified", + "args": [ + { + "name": "nodeIdToInsertTarget", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 423, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeIdToInsertTarget", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isNodeInAnyBranchPath", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 1002, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if the node is in any branch path\n", + "description": "

Check if the node is in any branch path

\n", + "jsdoctags": [ + { + "name": { + "pos": 32917, + "end": 32923, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 32911, + "end": 32916, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id of the node

\n" + }, + { + "tagName": { + "pos": 32954, + "end": 32960, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether the node is in any branch path

\n" + } + ] + }, + { + "name": "isNodeInGroup", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "groupId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 1197, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nDetermine if a node id is a direct child of a group\n", + "description": "

Determine if a node id is a direct child of a group

\n", + "jsdoctags": [ + { + "name": { + "pos": 39607, + "end": 39613, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 39601, + "end": 39606, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id

\n" + }, + { + "name": { + "pos": 39638, + "end": 39645, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "groupId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 39632, + "end": 39637, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the group id

\n" + } + ] + }, + { + "name": "nodeChanged", + "args": [ + { + "name": "doParseProject", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 487, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "doParseProject", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "nodeIdsComparatorGenerator", + "args": [ + { + "name": "orderedNodeIds", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "(nodeIdA: any, nodeIdB: any) => 1 | 0 | -1", + "typeParameters": [], + "line": 1684, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCreate the node ids comparator function that is used for sorting an\narray of node ids.\nshow up in the project.\nup in the project.\n", + "description": "

Create the node ids comparator function that is used for sorting an\narray of node ids.\nshow up in the project.\nup in the project.

\n", + "jsdoctags": [ + { + "name": { + "pos": 55680, + "end": 55694, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "orderedNodeIds" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 55674, + "end": 55679, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

An array of node ids in the order in which they\nshow up in the project.

\n" + }, + { + "tagName": { + "pos": 55778, + "end": 55784, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

A comparator that orders node ids in the order in which they show\nup in the project.

\n" + } + ] + }, + { + "name": "orderNodeIds", + "args": [ + { + "name": "nodeIds", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string[]", + "typeParameters": [], + "line": 1671, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nOrder the node ids so that they show up in the same order as in the\nproject.\n", + "description": "

Order the node ids so that they show up in the same order as in the\nproject.

\n", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeIds", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "tagName": { + "pos": 55327, + "end": 55333, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

An array of ordered node ids.

\n" + } + ] + }, + { + "name": "refreshProject", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 491, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "removeBranchPathTakenNodeConstraintsIfAny", + "args": [ + { + "name": "nodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1726, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nRemove all branch path taken constraints from a node.\n", + "description": "

Remove all branch path taken constraints from a node.

\n", + "jsdoctags": [ + { + "name": { + "pos": 57205, + "end": 57211, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 57199, + "end": 57204, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

Remove the constraints from this node.

\n" + } + ] + }, + { + "name": "removeChildFromParent", + "args": [ + { + "name": "nodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1476, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nRemove the child node from the parent group.\n", + "description": "

Remove the child node from the parent group.

\n", + "jsdoctags": [ + { + "name": { + "pos": 49039, + "end": 49045, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 49033, + "end": 49038, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The child node to remove from the parent.

\n" + } + ] + }, + { + "name": "removeNodeIdFromGroup", + "args": [ + { + "name": "group", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1043, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nRemove a node from a group.\nIf the node is a start node of the group, update the group's start node to\nthe next node in the group after removing.\n", + "description": "

Remove a node from a group.\nIf the node is a start node of the group, update the group's start node to\nthe next node in the group after removing.

\n", + "jsdoctags": [ + { + "name": { + "pos": 34160, + "end": 34165, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "group" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 34154, + "end": 34159, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The group to remove from.

\n" + }, + { + "name": { + "pos": 34204, + "end": 34210, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 34198, + "end": 34203, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The node id to remove.

\n" + } + ] + }, + { + "name": "removeNodeIdFromGroups", + "args": [ + { + "name": "nodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1027, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nRemove the node id from all groups\n", + "description": "

Remove the node id from all groups

\n", + "jsdoctags": [ + { + "name": { + "pos": 33676, + "end": 33682, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 33670, + "end": 33675, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id to remove

\n" + } + ] + }, + { + "name": "removeSpace", + "args": [ + { + "name": "id", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1789, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "id", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "replaceIds", + "args": [ + { + "name": "nodeString", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "oldId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "newId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 132, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeString", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "oldId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "newId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "replaceOldIds", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "oldToNewIds", + "type": "Map", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 123, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "oldToNewIds", + "type": "Map", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "retrieveProjectById", + "args": [ + { + "name": "projectId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 53, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nRetrieve the project JSON\n", + "description": "

Retrieve the project JSON

\n", + "modifierKind": [ + 134 + ], + "jsdoctags": [ + { + "name": { + "pos": 2658, + "end": 2667, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "projectId" + }, + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2652, + "end": 2657, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

retrieve the project JSON with this id

\n" + }, + { + "tagName": { + "pos": 2713, + "end": 2719, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

a promise to return the project JSON

\n" + } + ] + }, + { + "name": "saveProject", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 499, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nSaves the project to Config.saveProjectURL and returns commit history promise.\nif Config.saveProjectURL or Config.projectId are undefined, does not save and returns null\n", + "description": "

Saves the project to Config.saveProjectURL and returns commit history promise.\nif Config.saveProjectURL or Config.projectId are undefined, does not save and returns null

\n" + }, + { + "name": "setCustomProjectIcon", + "args": [ + { + "name": "projectIcon", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 1814, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "projectIcon", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setFeaturedProjectIcon", + "args": [ + { + "name": "projectIcon", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 1809, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "projectIcon", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setNode", + "args": [ + { + "name": "nodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "node", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 315, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nSet the node into the project by replacing the existing node with the\ngiven node id\n", + "description": "

Set the node into the project by replacing the existing node with the\ngiven node id

\n", + "jsdoctags": [ + { + "name": { + "pos": 10454, + "end": 10460, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 10448, + "end": 10453, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id of the node

\n" + }, + { + "name": { + "pos": 10497, + "end": 10501, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "node" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 10491, + "end": 10496, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node object

\n" + } + ] + }, + { + "name": "setNodeTypeSelected", + "args": [ + { + "name": "nodeTypeSelected", + "type": "NodeTypeSelected", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1876, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeTypeSelected", + "type": "NodeTypeSelected", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setProjectIcon", + "args": [ + { + "name": "projectIcon", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isCustom", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 1819, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "projectIcon", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "isCustom", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setProjectRubric", + "args": [ + { + "name": "html", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 284, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "html", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setProjectScriptFilename", + "args": [ + { + "name": "scriptFilename", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 288, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "scriptFilename", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setTransition", + "args": [ + { + "name": "fromNodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "toNodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 201, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nSet the transition to value of a node\n", + "description": "

Set the transition to value of a node

\n", + "jsdoctags": [ + { + "name": { + "pos": 6990, + "end": 7000, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "fromNodeId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 6984, + "end": 6989, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the from node

\n" + }, + { + "name": { + "pos": 7027, + "end": 7035, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "toNodeId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 7021, + "end": 7026, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the to node

\n" + } + ] + }, + { + "name": "setTransitionLogicField", + "args": [ + { + "name": "nodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "field", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "value", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 188, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nSet a field in the transition logic of a node\n", + "description": "

Set a field in the transition logic of a node

\n", + "jsdoctags": [ + { + "name": "nodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "field", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "value", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "shiftGroupStartNodeByOne", + "args": [ + { + "name": "group", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1057, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "group", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "sortByOrder", + "args": [ + { + "name": "a", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "b", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 1846, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "a", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "b", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "uiChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1894, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "updateBranchPathTakenConstraints", + "args": [ + { + "name": "node", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 713, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nIf the previous node was in a branch path, we will also put the\ninserted node into the branch path.\n", + "description": "

If the previous node was in a branch path, we will also put the\ninserted node into the branch path.

\n", + "jsdoctags": [ + { + "name": { + "pos": 23260, + "end": 23264, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "node" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 23254, + "end": 23259, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The node that is in the branch path.

\n" + }, + { + "name": { + "pos": 23314, + "end": 23320, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 23308, + "end": 23313, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The node we are adding to the branch path.

\n" + } + ] + }, + { + "name": "updateChildrenTransitionsInAndOutOfGroup", + "args": [ + { + "name": "node", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1318, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nUpdate the child transitions because we are moving a group. We will\nupdate the transitions into and out of the group in the location\nwe are extracting the group from and also in the location we are\ninserting the group into.\n", + "description": "

Update the child transitions because we are moving a group. We will\nupdate the transitions into and out of the group in the location\nwe are extracting the group from and also in the location we are\ninserting the group into.

\n", + "jsdoctags": [ + { + "name": { + "pos": 43821, + "end": 43825, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "node" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 43815, + "end": 43820, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the group we are moving

\n" + }, + { + "name": { + "pos": 43862, + "end": 43868, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "pos": 43856, + "end": 43861, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

we will put the group after this node id

\n" + } + ] + }, + { + "name": "updateStepTransitionsToGroup", + "args": [ + { + "name": "groupId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeIdToInsert", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 827, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "groupId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeIdToInsert", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "updateToTransition", + "args": [ + { + "name": "node", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "oldToNodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "newToNodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 871, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nUpdate the to value of aa transition\n", + "description": "

Update the to value of aa transition

\n", + "jsdoctags": [ + { + "name": { + "pos": 28936, + "end": 28940, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "node" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 28930, + "end": 28935, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node to update

\n" + }, + { + "name": { + "pos": 28972, + "end": 28983, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "oldToNodeId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 28966, + "end": 28971, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the previous to node id

\n" + }, + { + "name": { + "pos": 29020, + "end": 29031, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "newToNodeId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 29014, + "end": 29019, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the new to node id

\n" + } + ] + }, + { + "name": "updateTransitionsForExtractingGroup", + "args": [ + { + "name": "fromGroupId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "oldToGroupId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "newToGroupId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1091, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nUpdate the transitions so that the fromGroup points to the newToGroup\n\nBefore\nfromGroup -> oldToGroup -> newToGroup\n\nAfter\nfromGroup -> newToGroup\noldToGroup becomes dangling and has no transitions to or from it\n", + "description": "

Update the transitions so that the fromGroup points to the newToGroup

\n

Before\nfromGroup -> oldToGroup -> newToGroup

\n

After\nfromGroup -> newToGroup\noldToGroup becomes dangling and has no transitions to or from it

\n", + "jsdoctags": [ + { + "name": "fromGroupId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "oldToGroupId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "newToGroupId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "updateTransitionsForInsertingGroup", + "args": [ + { + "name": "fromGroupId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "oldToGroupIds", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "newToGroupId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1212, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nUpdate the transitions so that the fromGroup points to the newToGroup\n\nBefore\nfromGroup -> oldToGroup\nnewToGroup is dangling and has no transitions to or from it\n\nAfter\nfromGroup -> newToGroup -> oldToGroup\n", + "description": "

Update the transitions so that the fromGroup points to the newToGroup

\n

Before\nfromGroup -> oldToGroup\nnewToGroup is dangling and has no transitions to or from it

\n

After\nfromGroup -> newToGroup -> oldToGroup

\n", + "jsdoctags": [ + { + "name": "fromGroupId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "oldToGroupIds", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "newToGroupId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "updateTransitionsToStartId", + "args": [ + { + "name": "startId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeIdToInsert", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 835, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "startId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeIdToInsert", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addApplicationNode", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 143, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "addGroupNode", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 150, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "addNode", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 126, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "addNodeToGroupNode", + "args": [ + { + "name": "groupId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 157, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "groupId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "broadcastProjectParsed", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1812, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "calculateBranchPathNodeNumbers", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentActivityNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentStepNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "branchPath", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "branchPathNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "maxCurrentStepNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 1429, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentActivityNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentStepNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "branchPath", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "branchPathNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "maxCurrentStepNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "calculateComponentIdToHasWork", + "args": [ + { + "name": "components", + "type": "ComponentContent[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "literal type", + "typeParameters": [], + "line": 1257, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "components", + "type": "ComponentContent[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "calculateNodeNumberForBranchStartPoint", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentActivityNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentStepNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 1403, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentActivityNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentStepNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "calculateNodeNumberForLesson", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentActivityNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentStepNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "branchLetterCode", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 1557, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentActivityNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentStepNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "branchLetterCode", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "calculateNodeNumberForRegularStep", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentActivityNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentStepNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "branchLetterCode", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 1461, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentActivityNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentStepNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "branchLetterCode", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "calculateNodeNumberForRegularStepThatDoesNotHaveTransitions", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentActivityNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentStepNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "branchLetterCode", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 1520, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentActivityNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentStepNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "branchLetterCode", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "calculateNodeNumberForRegularStepThatHasTransitions", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentActivityNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentStepNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "branchLetterCode", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 1497, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentActivityNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentStepNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "branchLetterCode", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "calculateNodeNumberForStep", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentActivityNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentStepNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "branchLetterCode", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 1346, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentActivityNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentStepNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "branchLetterCode", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "calculateNodeNumbers", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1306, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCalculate the node numbers and set them into the nodeIdToNumber map\nIf the step is called \"1.5 View the Potential Energy\", then the node number is 1.5\n\nIf this is a branching step that is called \"1.5 B View the Potential Energy\", then the\nnode number is 1.5 B\n", + "description": "

Calculate the node numbers and set them into the nodeIdToNumber map\nIf the step is called "1.5 View the Potential Energy", then the node number is 1.5

\n

If this is a branching step that is called "1.5 B View the Potential Energy", then the\nnode number is 1.5 B

\n", + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "calculateNodeNumbersHelper", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentActivityNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentStepNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "branchLetterCode", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 1322, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nRecursively calculate the node numbers by traversing the project tree using transitions\n", + "description": "

Recursively calculate the node numbers by traversing the project tree using transitions

\n", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": { + "pos": 41535, + "end": 41541, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 41529, + "end": 41534, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the current node id we are on

\n" + }, + { + "name": { + "pos": 41584, + "end": 41605, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "currentActivityNumber" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 41578, + "end": 41583, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the current activity number

\n" + }, + { + "name": { + "pos": 41646, + "end": 41663, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "currentStepNumber" + }, + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 41640, + "end": 41645, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the current step number

\n" + }, + { + "name": { + "pos": 41700, + "end": 41716, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "branchLetterCode" + }, + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "pos": 41694, + "end": 41699, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

(optional) the character code for the branch letter e.g. 0=A, 1=B, etc.

\n" + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "calculateNodeOrder", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 265, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "calculateNodeOrderOfProject", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 261, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "clearProjectFields", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 70, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "componentHasWork", + "args": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 1252, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if a component generates work\n", + "description": "

Check if a component generates work

\n", + "jsdoctags": [ + { + "name": { + "pos": 39045, + "end": 39054, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "component" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 39039, + "end": 39044, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

check if this component generates work

\n" + }, + { + "tagName": { + "pos": 39100, + "end": 39106, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether the component generates work

\n" + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getAchievementByAchievementId", + "args": [ + { + "name": "achievementId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 1669, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet an achievement by the 10 character alphanumeric achievement id\n", + "description": "

Get an achievement by the 10 character alphanumeric achievement id

\n", + "jsdoctags": [ + { + "name": { + "pos": 52947, + "end": 52960, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "achievementId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 52941, + "end": 52946, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the 10 character alphanumeric achievement id

\n" + }, + { + "tagName": { + "pos": 53012, + "end": 53018, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

the achievement with the given achievement id

\n" + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getAchievementItems", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 1656, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the achievement items in the project\n", + "description": "

Get the achievement items in the project

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 52629, + "end": 52635, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

the achievement items

\n" + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getAchievements", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 1642, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet all the projectAchievements object in the project. The projectAchievements object\ncontains the isEnabled field and an array of items.\n", + "description": "

Get all the projectAchievements object in the project. The projectAchievements object\ncontains the isEnabled field and an array of items.

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 52325, + "end": 52331, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

the achievement object

\n" + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getActiveGroupNodes", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 247, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getAdditionalProcessingFunctions", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 1722, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nReturns an array of registered additionalProcessingFunctions for the specified node and\ncomponent\n", + "description": "

Returns an array of registered additionalProcessingFunctions for the specified node and\ncomponent

\n", + "jsdoctags": [ + { + "name": { + "pos": 54421, + "end": 54427, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 54415, + "end": 54420, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id

\n" + }, + { + "name": { + "pos": 54452, + "end": 54463, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 54446, + "end": 54451, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component id

\n" + }, + { + "tagName": { + "pos": 54487, + "end": 54494, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

an array of additionalProcessingFunctions

\n" + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getAllPaths", + "args": [ + { + "name": "pathSoFar", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "''" + }, + { + "name": "includeGroups", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "[][]", + "typeParameters": [], + "line": 854, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet all the possible paths through the project. This function\nrecursively calls itself to traverse the project depth first.\nin this array are referenced to make sure we don't loop back\non the path.\n", + "description": "

Get all the possible paths through the project. This function\nrecursively calls itself to traverse the project depth first.\nin this array are referenced to make sure we don't loop back\non the path.

\n", + "jsdoctags": [ + { + "name": { + "pos": 25709, + "end": 25718, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "pathSoFar" + }, + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 25703, + "end": 25708, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node ids in the path so far. the node ids\nin this array are referenced to make sure we don't loop back\non the path.

\n" + }, + { + "name": { + "pos": 25861, + "end": 25867, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "''", + "tagName": { + "pos": 25855, + "end": 25860, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id we want to get the paths from

\n" + }, + { + "name": { + "pos": 25922, + "end": 25935, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "includeGroups" + }, + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "pos": 25916, + "end": 25921, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

whether to include the group node ids in the paths

\n" + }, + { + "tagName": { + "pos": 25993, + "end": 25999, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

an array of paths. each path is an array of node ids.

\n" + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getBranches", + "args": [], + "optional": false, + "returnType": "Branch[]", + "typeParameters": [], + "line": 275, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getBranchesByBranchStartPointNodeId", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Branch[]", + "typeParameters": [], + "line": 1295, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet all the branches whose branch start point is the given node id\n", + "description": "

Get all the branches whose branch start point is the given node id

\n", + "jsdoctags": [ + { + "name": { + "pos": 40551, + "end": 40557, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 40545, + "end": 40550, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the branch start point

\n" + }, + { + "tagName": { + "pos": 40587, + "end": 40593, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

an array of branches that have the given branch start point

\n" + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getChildNodeIdsById", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string[]", + "typeParameters": [], + "line": 108, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getChoices", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 1156, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the choices of a Multiple Choice component.\n", + "description": "

Get the choices of a Multiple Choice component.

\n", + "jsdoctags": [ + { + "name": { + "pos": 36161, + "end": 36167, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 36155, + "end": 36160, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The node id.

\n" + }, + { + "name": { + "pos": 36193, + "end": 36204, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 36187, + "end": 36192, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The component id.

\n" + }, + { + "tagName": { + "pos": 36229, + "end": 36235, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

The choices from the component.

\n" + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getChoiceText", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "choiceIds", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string[]", + "typeParameters": [], + "line": 1168, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the choice text for the given choice ids of a multiple choice component.\n", + "description": "

Get the choice text for the given choice ids of a multiple choice component.

\n", + "jsdoctags": [ + { + "name": { + "pos": 36555, + "end": 36561, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 36549, + "end": 36554, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The node id of the component.

\n" + }, + { + "name": { + "pos": 36604, + "end": 36615, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 36598, + "end": 36603, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The component id of the component.

\n" + }, + { + "name": { + "pos": 36663, + "end": 36672, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "choiceIds" + }, + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 36657, + "end": 36662, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

An array of choice ids.

\n" + }, + { + "tagName": { + "pos": 36703, + "end": 36709, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

An array of choice text strings.

\n" + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getComponent", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "ComponentContent", + "typeParameters": [], + "line": 1089, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the component by node id and component id\n", + "description": "

Get the component by node id and component id

\n", + "jsdoctags": [ + { + "name": { + "pos": 34078, + "end": 34084, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 34072, + "end": 34077, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id

\n" + }, + { + "name": { + "pos": 34109, + "end": 34120, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 34103, + "end": 34108, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component id

\n" + }, + { + "tagName": { + "pos": 34144, + "end": 34151, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

the component or null if the nodeId or componentId are null or does not exist

\n" + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getComponents", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "ComponentContent[]", + "typeParameters": [], + "line": 1106, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the components in a node\ndoesn't exist in the project.\nif the node exists but doesn't have any components, returns an empty array.\n", + "description": "

Get the components in a node\ndoesn't exist in the project.\nif the node exists but doesn't have any components, returns an empty array.

\n", + "jsdoctags": [ + { + "name": { + "pos": 34557, + "end": 34563, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 34551, + "end": 34556, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id

\n" + }, + { + "tagName": { + "pos": 34582, + "end": 34589, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

an array of components or empty array if nodeId is null or\ndoesn't exist in the project.\nif the node exists but doesn't have any components, returns an empty array.

\n" + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getComponentType", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 1267, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getConnectedComponentParams", + "args": [ + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 1752, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getCriteriaArrayFromTransition", + "args": [ + { + "name": "transition", + "type": "Transition", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 1787, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "transition", + "type": "Transition", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getCurrentActivityNumber", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentActivityNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentStepNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "branchLetterCode", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 1375, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentActivityNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentStepNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "branchLetterCode", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getDefaultThemePath", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 798, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getDescendentIdsOfGroup", + "args": [ + { + "name": "group", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string[]", + "typeParameters": [], + "line": 631, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "group", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getFlattenedProjectAsNodeIds", + "args": [ + { + "name": "recalculate", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "true" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 824, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nFlatten the project to obtain a list of node ids\n", + "description": "

Flatten the project to obtain a list of node ids

\n", + "jsdoctags": [ + { + "name": { + "pos": 24721, + "end": 24732, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "recalculate" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "true", + "tagName": { + "pos": 24715, + "end": 24720, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

Whether to force recalculating the flattened node ids.

\n" + }, + { + "tagName": { + "pos": 24794, + "end": 24800, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

An array of the flattened node ids in the project.

\n" + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getGroupNodes", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 116, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getGroupNodesIdToOrder", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 368, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getGroups", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 181, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getGroupStartId", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 1183, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the start id of a group\n", + "description": "

Get the start id of a group

\n", + "jsdoctags": [ + { + "name": { + "pos": 37109, + "end": 37115, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 37103, + "end": 37108, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

get the start id of this group

\n" + }, + { + "tagName": { + "pos": 37153, + "end": 37160, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

the start id of the group

\n" + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getInactiveGroupNodes", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 185, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getInactiveNodes", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 742, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getInactiveStepNodes", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 194, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the inactive step nodes. This will include the inactive steps that\nare in an inactive group.\n", + "description": "

Get the inactive step nodes. This will include the inactive steps that\nare in an inactive group.

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 5688, + "end": 5694, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

An array of inactive step nodes.

\n" + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getLessonPaths", + "args": [ + { + "name": "pathSoFar", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "groupId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "includeGroups", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "allPaths", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1029, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "pathSoFar", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "groupId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "includeGroups", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "allPaths", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getLocale", + "args": [], + "optional": false, + "returnType": "ProjectLocale", + "typeParameters": [], + "line": 1863, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getMaxScoreForComponent", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 1142, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getMaxScoreForNode", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 1122, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the max score for the node\nif null, author/teacher has not set a max score for the node\n", + "description": "

Get the max score for the node\nif null, author/teacher has not set a max score for the node

\n", + "jsdoctags": [ + { + "name": { + "pos": 35049, + "end": 35055, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 35043, + "end": 35048, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id which can be a step or an activity

\n" + }, + { + "tagName": { + "pos": 35109, + "end": 35116, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

the max score for the node which can be null or a number\nif null, author/teacher has not set a max score for the node

\n" + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getNextNodeId", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 1625, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the next node after the specified node\n", + "description": "

Get the next node after the specified node

\n", + "jsdoctags": [ + { + "name": { + "pos": 51688, + "end": 51694, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 51682, + "end": 51687, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

get the node id that comes after this one

\n" + }, + { + "tagName": { + "pos": 51743, + "end": 51749, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

the node id that comes after

\n" + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getNode", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Node", + "typeParameters": [], + "line": 527, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getNodeById", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "project", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 506, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nReturns the node specified by the nodeId\nthe case when we want the node from another project such as when we are\nimporting a step from another project\nReturn null if nodeId param is null or the specified node does not exist in the project.\n", + "description": "

Returns the node specified by the nodeId\nthe case when we want the node from another project such as when we are\nimporting a step from another project\nReturn null if nodeId param is null or the specified node does not exist in the project.

\n", + "jsdoctags": [ + { + "name": { + "pos": 15436, + "end": 15442, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 15430, + "end": 15435, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

get the node with this node id

\n" + }, + { + "name": "project", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getNodeDepth", + "args": [ + { + "name": "nodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "val", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 592, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "val", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getNodeIdByOrder", + "args": [ + { + "name": "order", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 386, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "order", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getNodeOrderById", + "args": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 395, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getNodeOrderOfProject", + "args": [ + { + "name": "project", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 286, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the node order mappings of the project\nof nodes\n", + "description": "

Get the node order mappings of the project\nof nodes

\n", + "jsdoctags": [ + { + "name": { + "pos": 8360, + "end": 8367, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "project" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 8354, + "end": 8359, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the project JSOn

\n" + }, + { + "tagName": { + "pos": 8391, + "end": 8397, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

an object containing the idToOrder mapping and also the array\nof nodes

\n" + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getNodeOrderOfProjectHelper", + "args": [ + { + "name": "project", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "idToOrder", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "stepNumber", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodes", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 315, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nRecursively traverse the project to calculate the node order and step numbers\n", + "description": "

Recursively traverse the project to calculate the node order and step numbers

\n", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": { + "pos": 9079, + "end": 9086, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "project" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 9073, + "end": 9078, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the project JSON

\n" + }, + { + "name": { + "pos": 9116, + "end": 9120, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "node" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 9110, + "end": 9115, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the current node we are on

\n" + }, + { + "name": { + "pos": 9160, + "end": 9169, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "idToOrder" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 9154, + "end": 9159, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the mapping of node id to item

\n" + }, + { + "name": { + "pos": 9213, + "end": 9223, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "stepNumber" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 9207, + "end": 9212, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the current step number

\n" + }, + { + "name": { + "pos": 9260, + "end": 9265, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodes" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 9254, + "end": 9259, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the array of nodes

\n" + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getNodePositionAndTitle", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 554, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the node position and title\n", + "description": "

Get the node position and title

\n", + "jsdoctags": [ + { + "name": { + "pos": 16908, + "end": 16914, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 16902, + "end": 16907, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id

\n" + }, + { + "tagName": { + "pos": 16933, + "end": 16940, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

the node position and title, e.g. "1.1 Introduction"

\n" + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getNodePositionById", + "args": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 379, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getNodes", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 104, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getNodesByToNodeId", + "args": [ + { + "name": "toNodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 736, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet nodes that have a transition to the given node id\n", + "description": "

Get nodes that have a transition to the given node id

\n", + "jsdoctags": [ + { + "name": { + "pos": 22028, + "end": 22036, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "toNodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 22022, + "end": 22027, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id

\n" + }, + { + "tagName": { + "pos": 22055, + "end": 22062, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

an array of node objects that transition to the given node id

\n" + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getNodeTitle", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 541, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nReturns the title of the node with the nodeId\nReturn null if nodeId param is null or the specified node does not exist in the project.\n", + "description": "

Returns the title of the node with the nodeId\nReturn null if nodeId param is null or the specified node does not exist in the project.

\n", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getNotificationByScore", + "args": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "previousScore", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentScore", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 1746, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "previousScore", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentScore", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getOrCalculateAllPaths", + "args": [], + "optional": false, + "returnType": "[][]", + "typeParameters": [], + "line": 696, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getOrderById", + "args": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 361, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nReturns the order of the given node id in the project. Returns null if no node with id exists.\n", + "description": "

Returns the order of the given node id in the project. Returns null if no node with id exists.

\n", + "jsdoctags": [ + { + "name": { + "pos": 10508, + "end": 10510, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "id" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 10502, + "end": 10507, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

String node id

\n" + }, + { + "tagName": { + "pos": 10532, + "end": 10538, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

Number order of the given node id in the project

\n" + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getOrderedGroupNodes", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 120, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getOriginalProject", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 790, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getParentGroup", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "''" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 567, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "''", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getParentGroupId", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "''" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 584, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "''", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getPeerGrouping", + "args": [ + { + "name": "tag", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "PeerGrouping", + "typeParameters": [], + "line": 1823, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "tag", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getPeerGroupings", + "args": [], + "optional": false, + "returnType": "PeerGrouping[]", + "typeParameters": [], + "line": 1816, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getPreviousNodeId", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 1879, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getProject", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 61, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getProjectMetadata", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 100, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getProjectRootNode", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 1827, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getProjectScript", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 1616, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getProjectTitle", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 95, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getReferenceComponent", + "args": [ + { + "name": "content", + "type": "QuestionBank | DynamicPrompt", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Component", + "typeParameters": [], + "line": 1857, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "content", + "type": "QuestionBank | DynamicPrompt", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getReferenceComponentForField", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "fieldName", + "type": "\"dynamicPrompt\" | \"questionBank\"", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "ReferenceComponent", + "typeParameters": [], + "line": 1848, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the reference component from a field in the component content\nIn this example the fieldName would be 'dynamicPrompt'\n{\n id: 'component2',\n dynamicPrompt: {\n referenceComponent: {\n nodeId: 'node1',\n componentId: 'component1'\n }\n }\n}\n", + "description": "

Get the reference component from a field in the component content\nIn this example the fieldName would be 'dynamicPrompt'\n{\n id: 'component2',\n dynamicPrompt: {\n referenceComponent: {\n nodeId: 'node1',\n componentId: 'component1'\n }\n }\n}

\n", + "jsdoctags": [ + { + "name": { + "pos": 57501, + "end": 57507, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 57495, + "end": 57500, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id

\n" + }, + { + "name": { + "pos": 57532, + "end": 57543, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 57526, + "end": 57531, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component id

\n" + }, + { + "name": { + "pos": 57573, + "end": 57582, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "fieldName" + }, + "type": "\"dynamicPrompt\" | \"questionBank\"", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 57567, + "end": 57572, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the name of the object that contains a referenceComponent object\nIn this example the fieldName would be 'dynamicPrompt'\n{\nid: 'component2',\ndynamicPrompt: {\nreferenceComponent: {\nnodeId: 'node1',\ncomponentId: 'component1'\n}\n}\n}

\n" + }, + { + "tagName": { + "pos": 57893, + "end": 57900, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

the referenceComponent object from a component

\n" + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getRootNode", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 604, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getSpaces", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 1686, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getSpeechToTextSettings", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 1875, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getStartGroupId", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 657, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getStartNodeId", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 649, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getStepNodeIds", + "args": [], + "optional": false, + "returnType": "string[]", + "typeParameters": [], + "line": 1077, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getStepPaths", + "args": [ + { + "name": "pathSoFar", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "includeGroups", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "allPaths", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 864, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "pathSoFar", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "includeGroups", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "allPaths", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getStyle", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 91, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getTagFromParams", + "args": [ + { + "name": "params", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 1804, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "params", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getTagFromSingleCriteria", + "args": [ + { + "name": "singleCriteria", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 1795, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "singleCriteria", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getTags", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 1754, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getTagsFromNode", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 1763, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getThemePath", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 794, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getThemeSettings", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 805, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nReturns the theme settings for the current project\n", + "description": "

Returns the theme settings for the current project

\n", + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getTransitionsByFromNodeId", + "args": [ + { + "name": "fromNodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Transition[]", + "typeParameters": [], + "line": 727, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the transitions for a node\n", + "description": "

Get the transitions for a node

\n", + "jsdoctags": [ + { + "name": { + "pos": 21709, + "end": 21719, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "fromNodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 21703, + "end": 21708, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node to get transitions from

\n" + }, + { + "tagName": { + "pos": 21759, + "end": 21766, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

an array of transitions

\n", + "returnType": "unknown" + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getTransitionsFromNode", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Transition[]", + "typeParameters": [], + "line": 1778, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "hasAdditionalProcessingFunctions", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 1711, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nReturns true iff the specified node and component has any registered\nadditionalProcessingFunctions\n", + "description": "

Returns true iff the specified node and component has any registered\nadditionalProcessingFunctions

\n", + "jsdoctags": [ + { + "name": { + "pos": 54037, + "end": 54043, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 54031, + "end": 54036, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id

\n" + }, + { + "name": { + "pos": 54068, + "end": 54079, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 54062, + "end": 54067, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component id

\n" + }, + { + "tagName": { + "pos": 54103, + "end": 54110, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

true/false

\n" + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "injectAssetPaths", + "args": [ + { + "name": "content", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 413, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nReplace relative asset paths with absolute paths\ne.g.\nassets/myimage.jpg\nwill be replaced with\nhttp://wise.berkeley.edu/curriculum/123456/assets/myimage.jpg\nbut with relative asset paths replaced with absolute paths\n", + "description": "

Replace relative asset paths with absolute paths\ne.g.\nassets/myimage.jpg\nwill be replaced with\nhttp://wise.berkeley.edu/curriculum/123456/assets/myimage.jpg\nbut with relative asset paths replaced with absolute paths

\n", + "jsdoctags": [ + { + "name": { + "pos": 11750, + "end": 11757, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "content" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 11744, + "end": 11749, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

a string or JSON object

\n" + }, + { + "tagName": { + "pos": 11788, + "end": 11794, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

the same type of object that was passed in as the content\nbut with relative asset paths replaced with absolute paths

\n" + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "instantiateDefaults", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 252, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "isActive", + "args": [ + { + "name": "target", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 1212, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if the target is active\n", + "description": "

Check if the target is active

\n", + "jsdoctags": [ + { + "name": { + "pos": 37925, + "end": 37931, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "target" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 37919, + "end": 37924, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id or inactiveNodes/inactiveGroups to check

\n" + }, + { + "tagName": { + "pos": 37991, + "end": 37998, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

whether the target is active

\n" + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "isApplicationNode", + "args": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 176, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "isBranchMergePoint", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 1286, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if a node is a branch end point\n", + "description": "

Check if a node is a branch end point

\n", + "jsdoctags": [ + { + "name": { + "pos": 40227, + "end": 40233, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 40221, + "end": 40226, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

look for a branch with this end node id

\n" + }, + { + "tagName": { + "pos": 40280, + "end": 40286, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether the node is a branch end point

\n" + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "isBranchStartPoint", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 1277, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if a node is a branch start point\n", + "description": "

Check if a node is a branch start point

\n", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": { + "pos": 39918, + "end": 39924, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 39912, + "end": 39917, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

look for a branch with this start node id

\n" + }, + { + "tagName": { + "pos": 39973, + "end": 39979, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether the node is a branch start point

\n" + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "isConnectedComponent", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "connectedComponentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 1748, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "connectedComponentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "isDefaultLocale", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 1871, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "isFirstStepInLesson", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 1895, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "isGroupNode", + "args": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 171, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "isNodeActive", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 1220, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if a node is active.\n", + "description": "

Check if a node is active.

\n", + "jsdoctags": [ + { + "name": { + "pos": 38226, + "end": 38232, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 38220, + "end": 38225, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the id of the node

\n" + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "isNodeAfterGroup", + "args": [ + { + "name": "groupId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 708, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\n", + "description": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": { + "pos": 21097, + "end": 21104, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "groupId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 21091, + "end": 21096, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "" + }, + { + "name": { + "pos": 21117, + "end": 21123, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 21111, + "end": 21116, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The node id of a step or group.

\n" + }, + { + "tagName": { + "pos": 21162, + "end": 21169, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

True iff nodeId comes after groupId.

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "isNodeDescendentOfGroup", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "group", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 620, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "group", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "isNodeDirectChildOfGroup", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "group", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 609, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "group", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "isNodeIdAfter", + "args": [ + { + "name": "nodeId1", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId2", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 671, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if a node id comes after another node id in the project.\n", + "description": "

Check if a node id comes after another node id in the project.

\n", + "jsdoctags": [ + { + "name": { + "pos": 20006, + "end": 20013, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId1" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 20000, + "end": 20005, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The node id of a step or group.

\n" + }, + { + "name": { + "pos": 20058, + "end": 20065, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId2" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 20052, + "end": 20057, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The node id of a step or group.

\n" + }, + { + "tagName": { + "pos": 20104, + "end": 20111, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

True iff nodeId2 comes after nodeId1.

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "isSpaceExists", + "args": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 1694, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "isStartNodeId", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 661, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "loadInactiveNodes", + "args": [ + { + "name": "nodes", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1191, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nLoad the inactive nodes\n", + "description": "

Load the inactive nodes

\n", + "jsdoctags": [ + { + "name": { + "pos": 37334, + "end": 37339, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodes" + }, + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 37328, + "end": 37333, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the inactive nodes

\n" + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "loadNodeIdsInAnyBranch", + "args": [ + { + "name": "branches", + "type": "Branch[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 219, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "branches", + "type": "Branch[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "loadNodes", + "args": [ + { + "name": "nodes", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 198, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodes", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "makeProjectRequest", + "args": [], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 784, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "nodeHasTransitionToNodeId", + "args": [ + { + "name": "node", + "type": "Node", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "toNodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 752, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if a node has a transition to the given nodeId.\n", + "description": "

Check if a node has a transition to the given nodeId.

\n", + "jsdoctags": [ + { + "name": { + "pos": 22475, + "end": 22479, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "node" + }, + "type": "Node", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 22469, + "end": 22474, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The node to check.

\n" + }, + { + "name": { + "pos": 22511, + "end": 22519, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "toNodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 22505, + "end": 22510, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

We are looking for a transition to this node id.

\n" + }, + { + "tagName": { + "pos": 22575, + "end": 22582, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

Whether the node has a transition to the given nodeId.

\n" + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "nodeHasWork", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 1234, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if a node generates work by looking at all of its components\n", + "description": "

Check if a node generates work by looking at all of its components

\n", + "jsdoctags": [ + { + "name": { + "pos": 38536, + "end": 38542, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 38530, + "end": 38535, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id

\n" + }, + { + "tagName": { + "pos": 38561, + "end": 38567, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether the node generates work

\n" + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "parseProject", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 227, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "pathIncludesNodesAndOneComesBeforeTwo", + "args": [ + { + "name": "path", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId1", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId2", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 688, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "path", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId1", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId2", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "replaceAssetPaths", + "args": [ + { + "name": "contentString", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 436, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nReplace the relative asset paths with absolute paths\nwith absolute asset paths\n", + "description": "

Replace the relative asset paths with absolute paths\nwith absolute asset paths

\n", + "jsdoctags": [ + { + "name": { + "pos": 12595, + "end": 12608, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "contentString" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 12589, + "end": 12594, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the content string

\n" + }, + { + "tagName": { + "pos": 12634, + "end": 12640, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

the content string with relative asset paths replaced\nwith absolute asset paths

\n" + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "replaceNode", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1726, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "retrieveProject", + "args": [], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 762, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nRetrieves the project JSON from Config.projectURL and returns it.\nIf Config.projectURL is undefined, returns null.\n", + "description": "

Retrieves the project JSON from Config.projectURL and returns it.\nIf Config.projectURL is undefined, returns null.

\n", + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "retrieveProjectWithoutParsing", + "args": [], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 773, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "retrieveScript", + "args": [ + { + "name": "scriptFilename", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 1742, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "scriptFilename", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "setCurrentLanguage", + "args": [ + { + "name": "language", + "type": "Language", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1867, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "language", + "type": "Language", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "setIdToNode", + "args": [ + { + "name": "id", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "element", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 399, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "id", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "element", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "setLessonNodeNumber", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentActivityNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentStepNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 1598, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentActivityNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentStepNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "setProject", + "args": [ + { + "name": "project", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 65, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "project", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "setStartNodeId", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 653, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "setStepNodeNumber", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentActivityNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentStepNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "branchLetterCode", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1540, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentActivityNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentStepNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "branchLetterCode", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "shouldIncludeInTotalScore", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 1202, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "'use strict';\nimport { ProjectService } from './projectService';\nimport { Injectable, Signal, WritableSignal, signal } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { BranchService } from './branchService';\nimport { ComponentServiceLookupService } from './componentServiceLookupService';\nimport { HttpClient } from '@angular/common/http';\nimport { ConfigService } from './configService';\nimport { PathService } from './pathService';\nimport { copy } from '../common/object/object';\nimport { generateRandomKey } from '../common/string/string';\nimport { branchPathBackgroundColors } from '../common/color/color';\nimport { reduceByUniqueId } from '../common/array/array';\nimport { NodeTypeSelected } from '../authoringTool/domain/node-type-selected';\nimport { ComponentContent } from '../common/ComponentContent';\n\n@Injectable()\nexport class TeacherProjectService extends ProjectService {\n private componentChangedSource: Subject = new Subject();\n public componentChanged$: Observable = this.componentChangedSource.asObservable();\n private nodeChangedSource: Subject = new Subject();\n public nodeChanged$: Observable = this.nodeChangedSource.asObservable();\n private refreshProjectSource: Subject = new Subject();\n public refreshProject$ = this.refreshProjectSource.asObservable();\n private errorSavingProjectSource: Subject = new Subject();\n public errorSavingProject$: Observable = this.errorSavingProjectSource.asObservable();\n private nodeTypeSelected: WritableSignal = signal(null);\n private notAllowedToEditThisProjectSource: Subject = new Subject();\n public notAllowedToEditThisProject$: Observable =\n this.notAllowedToEditThisProjectSource.asObservable();\n private projectSavedSource: Subject = new Subject();\n public projectSaved$: Observable = this.projectSavedSource.asObservable();\n private savingProjectSource: Subject = new Subject();\n public savingProject$: Observable = this.savingProjectSource.asObservable();\n private uiChangedSource: Subject = new Subject();\n public uiChanged$: Observable = this.uiChangedSource.asObservable();\n\n constructor(\n protected branchService: BranchService,\n protected componentServiceLookupService: ComponentServiceLookupService,\n protected http: HttpClient,\n protected configService: ConfigService,\n protected pathService: PathService\n ) {\n super(branchService, componentServiceLookupService, http, configService, pathService);\n }\n\n /**\n * Retrieve the project JSON\n * @param projectId retrieve the project JSON with this id\n * @return a promise to return the project JSON\n */\n async retrieveProjectById(projectId: number): Promise {\n const configJSON: any = await this.http.get(`/api/author/config/${projectId}`).toPromise();\n const projectJSON: any = await this.http.get(configJSON.projectURL).toPromise();\n projectJSON.previewProjectURL = configJSON.previewProjectURL;\n return projectJSON;\n }\n\n /**\n * Create a new group\n * @param title the title of the group\n * @returns the group object\n */\n createGroup(title: string): any {\n return {\n id: this.getNextAvailableGroupId(),\n type: 'group',\n title: title,\n startId: '',\n constraints: [],\n transitionLogic: {\n transitions: []\n },\n ids: []\n };\n }\n\n /**\n * Create a new node\n * @param title the title of the node\n * @returns the node object\n */\n createNode(title) {\n return {\n id: this.getNextAvailableNodeId(),\n title: title,\n type: 'node',\n constraints: [],\n transitionLogic: {\n transitions: []\n },\n showSaveButton: false,\n showSubmitButton: false,\n components: []\n };\n }\n\n getNodesWithNewIds(nodes: any[]): any[] {\n const oldToNewIds = this.getOldToNewIds(nodes);\n return nodes.map((node: any) => {\n return this.replaceOldIds(node, oldToNewIds);\n });\n }\n\n getOldToNewIds(nodes: any[]): Map {\n const newNodeIds = [];\n const newComponentIds = [];\n const oldToNewIds = new Map();\n for (const node of nodes) {\n const newNodeId = this.getNextAvailableNodeId(newNodeIds);\n oldToNewIds.set(node.id, newNodeId);\n newNodeIds.push(newNodeId);\n for (const component of node.components) {\n const newComponentId = this.getUnusedComponentId(newComponentIds);\n oldToNewIds.set(component.id, newComponentId);\n newComponentIds.push(newComponentId);\n }\n }\n return oldToNewIds;\n }\n\n replaceOldIds(node: any, oldToNewIds: Map): any {\n let nodeString = JSON.stringify(node);\n for (const oldId of Array.from(oldToNewIds.keys()).reverse()) {\n const newId = oldToNewIds.get(oldId);\n nodeString = this.replaceIds(nodeString, oldId, newId);\n }\n return JSON.parse(nodeString);\n }\n\n replaceIds(nodeString: string, oldId: string, newId: string): string {\n nodeString = nodeString.replace(new RegExp(`\\\"${oldId}\\\"`, 'g'), `\"${newId}\"`);\n nodeString = nodeString.replace(new RegExp(`${oldId}Constraint`, 'g'), `${newId}Constraint`);\n return nodeString;\n }\n\n /**\n * Create a node inside the group\n * @param node the new node\n * @param nodeId the node id of the group to create the node in\n */\n createNodeInside(node, nodeId) {\n if (nodeId === 'inactiveNodes' || nodeId === 'inactiveGroups') {\n this.addInactiveNodeInsertAfter(node);\n this.setIdToNode(node.id, node);\n } else {\n this.setIdToNode(node.id, node);\n if (this.isInactive(nodeId)) {\n this.addInactiveNodeInsertInside(node, nodeId);\n } else {\n this.addNode(node);\n this.insertNodeInsideOnlyUpdateTransitions(node.id, nodeId);\n this.insertNodeInsideInGroups(node.id, nodeId);\n }\n }\n }\n\n /**\n * Create a node after the given node id\n * @param node the new node\n * @param nodeId the node to add after\n */\n createNodeAfter(newNode: any, nodeId: string): void {\n if (this.isInactive(nodeId)) {\n this.setIdToNode(newNode.id, newNode);\n this.addInactiveNodeInsertAfter(newNode, nodeId);\n } else {\n this.addNode(newNode);\n this.setIdToNode(newNode.id, newNode);\n this.insertNodeAfterInGroups(newNode.id, nodeId);\n this.insertNodeAfterInTransitions(newNode, nodeId);\n }\n }\n\n isInactive(nodeId) {\n for (const inactiveNode of this.getInactiveNodes()) {\n if (inactiveNode.id === nodeId) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Set a field in the transition logic of a node\n */\n setTransitionLogicField(nodeId, field, value) {\n const node = this.getNodeById(nodeId);\n const transitionLogic = node.transitionLogic;\n if (transitionLogic != null) {\n transitionLogic[field] = value;\n }\n }\n\n /**\n * Set the transition to value of a node\n * @param fromNodeId the from node\n * @param toNodeId the to node\n */\n setTransition(fromNodeId, toNodeId) {\n const node = this.getNodeById(fromNodeId);\n const transitionLogic = node.transitionLogic;\n if (transitionLogic != null) {\n let transitions = transitionLogic.transitions;\n if (transitions == null || transitions.length == 0) {\n transitionLogic.transitions = [];\n const transition = {};\n transitionLogic.transitions.push(transition);\n transitions = transitionLogic.transitions;\n }\n\n if (transitions != null && transitions.length > 0) {\n // get the first transition. we will assume there is only one transition.\n const transition = transitions[0];\n if (transition != null) {\n transition.to = toNodeId;\n }\n }\n }\n }\n\n /**\n * Get the node id that comes after a given node id\n * @param nodeId get the node id that comes after this node id\n * @return the node id that comes after the one that is passed in as a parameter, or null\n * if this is the last node in the sequence\n */\n getNodeIdAfter(nodeId) {\n const order = this.getOrderById(nodeId);\n if (order != null) {\n return this.getNodeIdByOrder(order + 1);\n } else {\n return null;\n }\n }\n\n /**\n * Add branch path taken constraints to the node\n * @param targetNodeId the node to add the constraints to\n * @param fromNodeId the from node id of the branch path taken constraint\n * @param toNodeId the to node id of the branch path taken constraint\n */\n addBranchPathTakenConstraints(targetNodeId, fromNodeId, toNodeId) {\n const node = this.getNodeById(targetNodeId);\n const makeThisNodeNotVisibleConstraint = {\n id: this.getNextAvailableConstraintIdForNodeId(targetNodeId),\n action: 'makeThisNodeNotVisible',\n targetId: targetNodeId,\n removalConditional: 'all',\n removalCriteria: [\n {\n name: 'branchPathTaken',\n params: {\n fromNodeId: fromNodeId,\n toNodeId: toNodeId\n }\n }\n ]\n };\n node.constraints.push(makeThisNodeNotVisibleConstraint);\n const makeThisNodeNotVisitableConstraint = {\n id: this.getNextAvailableConstraintIdForNodeId(targetNodeId),\n action: 'makeThisNodeNotVisitable',\n targetId: targetNodeId,\n removalConditional: 'all',\n removalCriteria: [\n {\n name: 'branchPathTaken',\n params: {\n fromNodeId: fromNodeId,\n toNodeId: toNodeId\n }\n }\n ]\n };\n node.constraints.push(makeThisNodeNotVisitableConstraint);\n }\n\n getProjectRubric(): any {\n return this.project.rubric;\n }\n\n setProjectRubric(html) {\n this.project.rubric = html;\n }\n\n setProjectScriptFilename(scriptFilename) {\n this.project.script = scriptFilename;\n }\n\n getProjectScriptFilename() {\n if (this.project != null && this.project.script != null) {\n return this.project.script;\n }\n return null;\n }\n\n getBackgroundColor(nodeId: string): string {\n const branchPathLetter = this.nodeIdToBranchPathLetter[nodeId];\n if (branchPathLetter != null) {\n const letterASCIICode = branchPathLetter.charCodeAt(0);\n const branchPathNumber = letterASCIICode - 65;\n return branchPathBackgroundColors[branchPathNumber];\n }\n return null;\n }\n\n /**\n * Set the node into the project by replacing the existing node with the\n * given node id\n * @param nodeId the node id of the node\n * @param node the node object\n */\n setNode(nodeId, node) {\n for (let n = 0; n < this.project.nodes.length; n++) {\n const tempNode = this.project.nodes[n];\n if (tempNode.id == nodeId) {\n this.project.nodes[n] = node;\n }\n }\n for (let i = 0; i < this.project.inactiveNodes.length; i++) {\n const tempNode = this.project.inactiveNodes[i];\n if (tempNode.id == nodeId) {\n this.project.inactiveNodes[i] = node;\n }\n }\n this.idToNode[nodeId] = node;\n }\n\n getIdToNode() {\n return this.idToNode;\n }\n\n checkPotentialStartNodeIdChangeThenSaveProject() {\n this.checkPotentialStartNodeIdChange();\n return this.saveProject();\n }\n\n checkPotentialStartNodeIdChange() {\n const firstLeafNodeId = this.getFirstLeafNodeId();\n if (firstLeafNodeId == null) {\n this.setStartNodeId('');\n } else {\n const currentStartNodeId = this.getStartNodeId();\n if (currentStartNodeId != firstLeafNodeId) {\n this.setStartNodeId(firstLeafNodeId);\n }\n }\n }\n\n /**\n * Get the first leaf node by traversing all the start ids\n * until a leaf node id is found\n */\n private getFirstLeafNodeId(): any {\n let firstLeafNodeId = null;\n const startGroupId = this.project.startGroupId;\n let node = this.getNodeById(startGroupId);\n let done = false;\n\n // loop until we have found a leaf node id or something went wrong\n while (!done) {\n if (node == null) {\n done = true;\n } else if (this.isGroupNode(node.id)) {\n firstLeafNodeId = node.id;\n node = this.getNodeById(node.startId);\n } else if (this.isApplicationNode(node.id)) {\n firstLeafNodeId = node.id;\n done = true;\n } else {\n done = true;\n }\n }\n return firstLeafNodeId;\n }\n\n /**\n * Add the node to the inactive nodes array.\n * @param node the node to move\n * @param nodeIdToInsertAfter place the node after this\n */\n addInactiveNodeInsertAfter(node, nodeIdToInsertAfter = null) {\n this.clearTransitionsFromNode(node);\n if (this.isNodeIdToInsertTargetNotSpecified(nodeIdToInsertAfter)) {\n this.insertNodeAtBeginningOfInactiveNodes(node);\n } else {\n this.insertNodeAfterInactiveNode(node, nodeIdToInsertAfter);\n }\n if (node.type === 'group') {\n this.inactiveGroupNodes.push(node);\n this.addGroupChildNodesToInactive(node);\n } else {\n this.inactiveStepNodes.push(node);\n }\n }\n\n clearTransitionsFromNode(node) {\n if (node.transitionLogic != null) {\n node.transitionLogic.transitions = [];\n }\n }\n\n insertNodeAtBeginningOfInactiveNodes(node) {\n this.project.inactiveNodes.splice(0, 0, node);\n }\n\n insertNodeAfterInactiveNode(node, nodeIdToInsertAfter) {\n const inactiveNodes = this.getInactiveNodes();\n for (let i = 0; i < inactiveNodes.length; i++) {\n if (inactiveNodes[i].id === nodeIdToInsertAfter) {\n const parentGroup = this.getParentGroup(nodeIdToInsertAfter);\n if (parentGroup != null) {\n this.insertNodeAfterInGroups(node.id, nodeIdToInsertAfter);\n this.insertNodeAfterInTransitions(node, nodeIdToInsertAfter);\n }\n inactiveNodes.splice(i + 1, 0, node);\n }\n }\n }\n\n isNodeIdToInsertTargetNotSpecified(nodeIdToInsertTarget) {\n return [null, 'inactiveNodes', 'inactiveSteps', 'inactiveGroups'].includes(\n nodeIdToInsertTarget\n );\n }\n\n addInactiveNodeInsertInside(node, nodeIdToInsertInside = null) {\n this.clearTransitionsFromNode(node);\n if (this.isNodeIdToInsertTargetNotSpecified(nodeIdToInsertInside)) {\n this.insertNodeAtBeginningOfInactiveNodes(node);\n } else {\n this.insertNodeInsideInactiveNode(node, nodeIdToInsertInside);\n }\n if (node.type === 'group') {\n this.inactiveGroupNodes.push(node);\n this.addGroupChildNodesToInactive(node);\n } else {\n this.inactiveStepNodes.push(node);\n }\n }\n\n insertNodeInsideInactiveNode(node, nodeIdToInsertInside) {\n const inactiveNodes = this.getInactiveNodes();\n const inactiveGroupNodes = this.getInactiveGroupNodes();\n for (const inactiveGroup of inactiveGroupNodes) {\n if (nodeIdToInsertInside === inactiveGroup.id) {\n this.insertNodeInsideOnlyUpdateTransitions(node.id, nodeIdToInsertInside);\n this.insertNodeInsideInGroups(node.id, nodeIdToInsertInside);\n for (let i = 0; i < inactiveNodes.length; i++) {\n if (inactiveNodes[i].id === nodeIdToInsertInside) {\n inactiveNodes.splice(i + 1, 0, node);\n }\n }\n }\n }\n }\n\n getAutomatedAssessmentProjectId(): number {\n return this.configService.getConfigParam('automatedAssessmentProjectId') || -1;\n }\n\n getSimulationProjectId(): number {\n return this.configService.getConfigParam('simulationProjectId') || -1;\n }\n\n /**\n * Get the branch letter in the node position string if the node is in a branch path\n * @param nodeId the node id we want the branch letter for\n * @return the branch letter in the node position if the node is in a branch path\n */\n getBranchLetter(nodeId) {\n const nodePosition = this.getNodePositionById(nodeId);\n const branchLetterRegex = /.*([A-Z])/;\n const match = branchLetterRegex.exec(nodePosition);\n if (match != null) {\n return match[1];\n }\n return null;\n }\n\n componentChanged(): void {\n this.componentChangedSource.next();\n }\n\n nodeChanged(doParseProject: boolean = false): void {\n this.nodeChangedSource.next(doParseProject);\n }\n\n refreshProject() {\n this.refreshProjectSource.next();\n }\n\n /**\n * Saves the project to Config.saveProjectURL and returns commit history promise.\n * if Config.saveProjectURL or Config.projectId are undefined, does not save and returns null\n */\n saveProject(): Promise {\n if (!this.configService.getConfigParam('canEditProject')) {\n this.broadcastNotAllowedToEditThisProject();\n return null;\n }\n this.broadcastSavingProject();\n this.cleanupBeforeSave();\n this.project.metadata.authors = reduceByUniqueId(\n this.addCurrentUserToAuthors(this.getAuthors())\n );\n return this.http\n .post(this.configService.getConfigParam('saveProjectURL'), JSON.stringify(this.project))\n .toPromise()\n .then((response: any) => {\n this.handleSaveProjectResponse(response);\n });\n }\n\n private getAuthors(): any[] {\n return this.project.metadata.authors ? this.project.metadata.authors : [];\n }\n\n addCurrentUserToAuthors(authors: any[]): any[] {\n let userInfo = this.configService.getMyUserInfo();\n if (this.configService.isClassroomMonitor()) {\n userInfo = {\n id: userInfo.userIds[0],\n firstName: userInfo.firstName,\n lastName: userInfo.lastName,\n username: userInfo.username\n };\n }\n authors.push(userInfo);\n return authors;\n }\n\n handleSaveProjectResponse(response: any): any {\n if (response.status === 'error') {\n if (response.messageCode === 'notAllowedToEditThisProject') {\n this.broadcastNotAllowedToEditThisProject();\n } else if (response.messageCode === 'errorSavingProject') {\n this.broadcastErrorSavingProject();\n }\n } else {\n this.broadcastProjectSaved();\n }\n return response;\n }\n\n /**\n * Perform any necessary cleanup before we save the project.\n * For example we need to remove the checked field in the inactive node\n * objects.\n */\n cleanupBeforeSave() {\n this.project.nodes.forEach((activeNode) => {\n this.cleanupNode(activeNode);\n });\n this.getInactiveNodes().forEach((inactiveNode) => {\n this.cleanupNode(inactiveNode);\n });\n }\n\n /**\n * Remove any fields that are used temporarily for display purposes like when\n * the project is loaded in the authoring tool and grading tool\n * @param node The node object.\n */\n cleanupNode(node) {\n delete node.checked;\n delete node.hasWork;\n delete node.hasAlert;\n delete node.hasNewAlert;\n delete node.isVisible;\n delete node.completionStatus;\n delete node.score;\n delete node.hasScore;\n delete node.maxScore;\n delete node.hasMaxScore;\n delete node.scorePct;\n delete node.order;\n delete node.show;\n\n if (node.components != null) {\n // activity node does not have components but step node does\n node.components.forEach((component) => {\n this.cleanupComponent(component);\n });\n }\n }\n\n /**\n * Remove any fields that are used temporarily for display purposes like when\n * the project is loaded in the authoring tool and grading tool\n * @param component The component object.\n */\n cleanupComponent(component) {\n delete component.checked;\n delete component.isStudentWorkGenerated;\n }\n\n /**\n * Insert the node after the given node id in the group's array of children ids\n * @param nodeIdToInsert the node id we want to insert\n * @param nodeIdToInsertAfter the node id we want to insert after\n */\n insertNodeAfterInGroups(nodeIdToInsert, nodeIdToInsertAfter) {\n const groupNodes = this.getGroupNodes();\n if (groupNodes != null) {\n for (const group of groupNodes) {\n this.insertNodeAfterInGroup(group, nodeIdToInsert, nodeIdToInsertAfter);\n }\n }\n const inactiveGroupNodes = this.getInactiveGroupNodes();\n if (inactiveGroupNodes != null) {\n for (const inactiveGroup of inactiveGroupNodes) {\n this.insertNodeAfterInGroup(inactiveGroup, nodeIdToInsert, nodeIdToInsertAfter);\n }\n }\n }\n\n /**\n * Insert a node id in a group after another specific node id.\n * @param group A group object.\n * @param nodeIdToInsert The node id to insert.\n * @param nodeIdToInsertAfter The node id to insert after.\n * @returns {boolean} Whether we inserted the node id.\n */\n insertNodeAfterInGroup(group, nodeIdToInsert, nodeIdToInsertAfter) {\n const ids = group.ids;\n if (ids != null) {\n for (let i = 0; i < ids.length; i++) {\n const id = ids[i];\n if (nodeIdToInsertAfter === id) {\n ids.splice(i + 1, 0, nodeIdToInsert);\n return true;\n }\n }\n }\n return false;\n }\n\n /**\n * Update the transitions to handle inserting a node after another node.\n * The two nodes must either both be steps or both be activities.\n * @param nodeToInsert the node to insert\n * @param nodeIdToInsertAfter the node id to insert after\n */\n insertNodeAfterInTransitions(nodeToInsert, nodeIdToInsertAfter) {\n const nodeToInsertAfter = this.getNodeById(nodeIdToInsertAfter);\n if (nodeToInsert.type != nodeToInsertAfter.type) {\n throw 'Error: insertNodeAfterInTransitions() nodes are not the same type';\n }\n if (nodeToInsertAfter.transitionLogic == null) {\n nodeToInsertAfter.transitionLogic = {\n transitions: []\n };\n }\n if (nodeToInsert.transitionLogic == null) {\n nodeToInsert.transitionLogic = {\n transitions: []\n };\n }\n if (this.isGroupNode(nodeToInsert.id)) {\n this.updateChildrenTransitionsInAndOutOfGroup(nodeToInsert, nodeIdToInsertAfter);\n }\n this.copyTransitions(nodeToInsertAfter, nodeToInsert);\n if (nodeToInsert.transitionLogic.transitions.length == 0) {\n this.copyParentTransitions(nodeIdToInsertAfter, nodeToInsert);\n }\n const transitionObject = {\n to: nodeToInsert.id\n };\n nodeToInsertAfter.transitionLogic.transitions = [transitionObject];\n this.updateBranchPathTakenConstraints(nodeToInsert, nodeIdToInsertAfter);\n }\n\n /*\n * Copy the transitions from nodeId's parent and add to node's transitions.\n * @param nodeId Copy the transition of this nodeId's parent.\n * @param node The node to add transitions to.\n */\n copyParentTransitions(nodeId, node) {\n const parentGroupId = this.getParentGroupId(nodeId);\n if (parentGroupId != 'group0') {\n const parentTransitions = this.getTransitionsByFromNodeId(parentGroupId);\n for (let parentTransition of parentTransitions) {\n const newTransition = {};\n const toNodeId = parentTransition.to;\n if (this.isGroupNode(toNodeId)) {\n const startId = this.getGroupStartId(toNodeId);\n if (startId == null || startId == '') {\n (newTransition).to = toNodeId;\n } else {\n (newTransition).to = startId;\n }\n }\n node.transitionLogic.transitions.push(newTransition);\n }\n }\n }\n\n copyTransitions(previousNode, node) {\n const transitionsJSONString = JSON.stringify(previousNode.transitionLogic.transitions);\n const transitionsCopy = JSON.parse(transitionsJSONString);\n node.transitionLogic.transitions = transitionsCopy;\n }\n\n /**\n * If the previous node was in a branch path, we will also put the\n * inserted node into the branch path.\n * @param node The node that is in the branch path.\n * @param nodeId The node we are adding to the branch path.\n */\n updateBranchPathTakenConstraints(node, nodeId) {\n this.removeBranchPathTakenNodeConstraintsIfAny(node.id);\n const branchPathTakenConstraints = this.getBranchPathTakenConstraintsByNodeId(nodeId);\n for (let branchPathTakenConstraint of branchPathTakenConstraints) {\n const newConstraint = {\n id: this.getNextAvailableConstraintIdForNodeId(node.id),\n action: branchPathTakenConstraint.action,\n targetId: node.id,\n removalCriteria: copy(branchPathTakenConstraint.removalCriteria)\n };\n this.addConstraintToNode(node, newConstraint);\n }\n }\n\n private addConstraintToNode(node: any, constraint: any): void {\n if (node.constraints == null) {\n node.constraints = [];\n }\n node.constraints.push(constraint);\n }\n\n /**\n * Insert a node into a group\n * @param nodeIdToInsert the node id to insert\n * @param nodeIdToInsertInside the node id of the group we will insert into\n */\n insertNodeInsideInGroups(nodeIdToInsert, nodeIdToInsertInside) {\n const group = this.getNodeById(nodeIdToInsertInside);\n if (group != null) {\n const ids = group.ids;\n if (ids != null) {\n ids.splice(0, 0, nodeIdToInsert);\n group.startId = nodeIdToInsert;\n }\n }\n }\n\n /**\n * Update the transitions to handle inserting a node as the first step in a group.\n * @param nodeIdToInsert node id that we will insert\n * @param nodeIdToInsertInside the node id of the group we are inserting into\n */\n insertNodeInsideOnlyUpdateTransitions(nodeIdToInsert, nodeIdToInsertInside) {\n if (!this.isGroupNode(nodeIdToInsertInside)) {\n throw 'Error: insertNodeInsideOnlyUpdateTransitions() second parameter must be a group';\n }\n\n const nodeToInsert = this.getNodeById(nodeIdToInsert);\n nodeToInsert.transitionLogic.transitions = [];\n this.removeBranchPathTakenNodeConstraintsIfAny(nodeIdToInsert);\n\n if (this.isGroupNode(nodeIdToInsert)) {\n this.updateChildrenTransitionsInAndOutOfGroup(nodeToInsert);\n }\n\n /*\n * the node will become the first node in the group. this means we need to update any nodes\n * that point to the old start id and make them point to the node we are inserting.\n */\n const group = this.getNodeById(nodeIdToInsertInside);\n const startId = group.startId;\n this.updateTransitionsToStartId(startId, nodeIdToInsert);\n this.updateStepTransitionsToGroup(nodeIdToInsertInside, nodeIdToInsert);\n this.createTransitionFromNodeToInsertToOldStartNode(startId, nodeToInsert);\n const transitions = this.getTransitionsByFromNodeId(nodeIdToInsert);\n if (transitions.length == 0) {\n this.inheritParentTransitions(nodeIdToInsertInside, nodeToInsert);\n }\n }\n\n /**\n * Copy the transitions from the parent to the node we are inserting.\n * @param nodeIdToInsertInside\n * @param nodeToInsert\n */\n inheritParentTransitions(nodeIdToInsertInside, nodeToInsert) {\n const parentTransitions = this.getTransitionsByFromNodeId(nodeIdToInsertInside);\n for (let parentTransition of parentTransitions) {\n const toNodeId = parentTransition.to;\n if (this.isGroupNode(toNodeId)) {\n const nextGroup = this.getNodeById(toNodeId);\n const startId = nextGroup.startId;\n if (startId == null || startId == '') {\n this.addToTransition(nodeToInsert, toNodeId);\n } else {\n this.addToTransition(nodeToInsert, startId);\n }\n } else {\n this.addToTransition(nodeToInsert, toNodeId);\n }\n }\n }\n\n /*\n * Create a transition from the node we are inserting to the node that\n * was the start node.\n * @param startId\n * @param nodeToInsert\n */\n createTransitionFromNodeToInsertToOldStartNode(startId, nodeToInsert) {\n const startNode = this.getNodeById(startId);\n if (startNode != null) {\n const transitions = this.getTransitionsByFromNodeId(nodeToInsert.id);\n const transitionObject = {\n to: startId\n };\n transitions.push(transitionObject);\n }\n }\n\n /*\n * Update all the transitions that point to the group and change\n * them to point to the new start id\n */\n private updateStepTransitionsToGroup(groupId: string, nodeIdToInsert: string): void {\n for (const nodeThatTransitionsToGroup of this.getNodesByToNodeId(groupId)) {\n if (!this.isGroupNode(nodeThatTransitionsToGroup.id)) {\n this.updateToTransition(nodeThatTransitionsToGroup, groupId, nodeIdToInsert);\n }\n }\n }\n\n private updateTransitionsToStartId(startId: string, nodeIdToInsert: string): void {\n for (const nodeThatTransitionToStartId of this.getNodesByToNodeId(startId)) {\n this.updateToTransition(nodeThatTransitionToStartId, startId, nodeIdToInsert);\n }\n }\n\n /**\n * Add a transition to a node\n * @param node the node we are adding a transition to\n * @param toNodeId the node id we going to transition to\n * @param criteria (optional) a criteria object specifying\n * what needs to be satisfied in order to use this transition\n */\n addToTransition(node, toNodeId, criteria = null) {\n if (node != null) {\n if (node.transitionLogic == null) {\n node.transitionLogic = {};\n }\n if (node.transitionLogic.transitions == null) {\n node.transitionLogic.transitions = [];\n }\n const transition = {};\n (transition).to = toNodeId;\n if (criteria != null) {\n (transition).criteria = criteria;\n }\n node.transitionLogic.transitions.push(transition);\n }\n }\n\n /**\n * Update the to value of aa transition\n * @param node the node to update\n * @param oldToNodeId the previous to node id\n * @param newToNodeId the new to node id\n */\n updateToTransition(node, oldToNodeId, newToNodeId) {\n if (node != null) {\n if (node.transitionLogic == null) {\n node.transitionLogic = {};\n }\n\n if (node.transitionLogic.transitions == null) {\n node.transitionLogic.transitions = [];\n }\n\n const transitions = node.transitionLogic.transitions;\n for (let transition of transitions) {\n if (transition != null) {\n const toNodeId = transition.to;\n if (oldToNodeId === toNodeId) {\n transition.to = newToNodeId;\n }\n }\n }\n }\n }\n\n /**\n * Get the next available group id\n * @returns the next available group id\n */\n getNextAvailableGroupId() {\n const groupIds = this.getGroupIds();\n let largestGroupIdNumber = null;\n for (let groupId of groupIds) {\n // get the number from the group id e.g. the number of 'group2' would be 2\n let groupIdNumber = groupId.replace('group', '');\n\n // make sure the number is an actual number\n if (!isNaN(groupIdNumber)) {\n groupIdNumber = parseInt(groupIdNumber);\n\n // update the largest group id number if necessary\n if (largestGroupIdNumber == null) {\n largestGroupIdNumber = groupIdNumber;\n } else if (groupIdNumber > largestGroupIdNumber) {\n largestGroupIdNumber = groupIdNumber;\n }\n }\n }\n\n const nextAvailableGroupId = 'group' + (largestGroupIdNumber + 1);\n return nextAvailableGroupId;\n }\n\n /**\n * Get all the group ids\n * @returns an array with all the group ids\n */\n getGroupIds() {\n const groupIds = [];\n const groupNodes = this.groupNodes;\n for (let group of groupNodes) {\n if (group != null) {\n const groupId = group.id;\n if (groupId != null) {\n groupIds.push(groupId);\n }\n }\n }\n\n const inactiveGroupNodes = this.getInactiveGroupNodes();\n for (let inactiveGroup of inactiveGroupNodes) {\n if (inactiveGroup != null) {\n const inactiveGroupId = inactiveGroup.id;\n if (inactiveGroupId != null) {\n groupIds.push(inactiveGroupId);\n }\n }\n }\n return groupIds;\n }\n\n /**\n * Get the next available node id\n * @param nodeIdsToSkip (optional) An array of additional node ids to not\n * use. This parameter is used in cases where we are creating multiple new\n * nodes at once.\n * Example\n * We ask for two new node ids by calling getNextAvailableNodeId() twice.\n * The first time it returns \"node10\".\n * If we ask the second time without actually creating and adding node10,\n * it will return \"node10\" again. If we provide \"node10\" in the\n * nodeIdsToSkip, then getNextAvailableNodeId() will properly return to us\n * \"node11\".\n * @returns the next available node id\n */\n getNextAvailableNodeId(nodeIdsToSkip = []) {\n let largestNodeIdNumber = 0;\n for (const nodeId of this.getNodeIds()\n .concat(this.getInactiveNodeIds())\n .concat(nodeIdsToSkip)) {\n const nodeIdNumber = parseInt(nodeId.replace('node', ''));\n if (nodeIdNumber > largestNodeIdNumber) {\n largestNodeIdNumber = nodeIdNumber;\n }\n }\n return 'node' + (largestNodeIdNumber + 1);\n }\n\n /**\n * Get all the node ids from inactive steps\n * @returns an array with all the inactive node ids\n */\n getInactiveNodeIds() {\n return this.project.inactiveNodes.map((node) => {\n return node.id;\n });\n }\n\n /**\n * Check if a node is a branch point. A branch point is a node with more\n * than one transition.\n * @param nodeId the node id\n * @return whether the node is a branch point\n */\n isBranchPoint(nodeId: string): boolean {\n const transitions = this.getTransitionsByFromNodeId(nodeId);\n return transitions != null && transitions.length > 1;\n }\n\n /**\n * Check if the node is in any branch path\n * @param nodeId the node id of the node\n * @return whether the node is in any branch path\n */\n isNodeInAnyBranchPath(nodeId: string): boolean {\n let result = false;\n if (this.nodeIdToIsInBranchPath[nodeId] == null) {\n /*\n * we have not calculated whether the node id is in a branch path\n * before so we will now\n */\n result = this.nodeIdsInAnyBranch.indexOf(nodeId) !== -1;\n\n // remember the result for this node id\n this.nodeIdToIsInBranchPath[nodeId] = result;\n } else {\n /*\n * we have calculated whether the node id is in a branch path\n * before\n */\n result = this.nodeIdToIsInBranchPath[nodeId];\n }\n return result;\n }\n\n /**\n * Remove the node id from all groups\n * @param nodeId the node id to remove\n */\n removeNodeIdFromGroups(nodeId) {\n for (const group of this.getGroupNodes()) {\n this.removeNodeIdFromGroup(group, nodeId);\n }\n for (const inactiveGroup of this.getInactiveGroupNodes()) {\n this.removeNodeIdFromGroup(inactiveGroup, nodeId);\n }\n }\n\n /**\n * Remove a node from a group.\n * If the node is a start node of the group, update the group's start node to\n * the next node in the group after removing.\n * @param group The group to remove from.\n * @param nodeId The node id to remove.\n */\n removeNodeIdFromGroup(group, nodeId) {\n const ids = group.ids;\n for (let i = 0; i < ids.length; i++) {\n const id = ids[i];\n if (id === nodeId) {\n ids.splice(i, 1);\n if (id === group.startId) {\n this.shiftGroupStartNodeByOne(group);\n }\n }\n }\n }\n\n // TODO handle the case when the start node of the group is a branch point\n shiftGroupStartNodeByOne(group) {\n const transitionsFromStartNode = this.getTransitionsByFromNodeId(group.startId);\n if (transitionsFromStartNode.length > 0) {\n group.startId = transitionsFromStartNode[0].to;\n } else {\n group.startId = '';\n }\n }\n\n /**\n * Check if any of the components in the node are showing their submit button.\n * @param nodeId {string} The node id to check.\n * @return {boolean} Whether any of the components in the node show their submit button.\n */\n doesAnyComponentInNodeShowSubmitButton(nodeId) {\n const node = this.getNodeById(nodeId);\n for (const component of node.components) {\n if (component.showSubmitButton == true) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Update the transitions so that the fromGroup points to the newToGroup\n *\n * Before\n * fromGroup -> oldToGroup -> newToGroup\n *\n * After\n * fromGroup -> newToGroup\n * oldToGroup becomes dangling and has no transitions to or from it\n */\n updateTransitionsForExtractingGroup(fromGroupId, oldToGroupId, newToGroupId) {\n /*\n * make the transitions\n * fromGroup -> newToGroup\n */\n if (fromGroupId != null && oldToGroupId != null) {\n const fromGroup = this.getNodeById(fromGroupId);\n const oldToGroup = this.getNodeById(oldToGroupId);\n let newToGroup = null;\n let newToGroupStartId = null;\n\n if (newToGroupId != null) {\n newToGroup = this.getNodeById(newToGroupId);\n }\n\n if (newToGroup != null) {\n newToGroupStartId = newToGroup.startId;\n }\n\n if (fromGroup != null && oldToGroup != null) {\n const childIds = fromGroup.ids;\n\n // update the children of the from group to point to the new to group\n if (childIds != null) {\n for (let childId of childIds) {\n const child = this.getNodeById(childId);\n const transitions = this.getTransitionsByFromNodeId(childId);\n\n if (transitions != null) {\n for (let t = 0; t < transitions.length; t++) {\n const transition = transitions[t];\n if (transition != null) {\n const toNodeId = transition.to;\n if (toNodeId === oldToGroupId) {\n // the transition is to the group\n if (newToGroupId == null && newToGroupStartId == null) {\n // there is no new to group so we will remove the transition\n transitions.splice(t, 1);\n t--;\n } else {\n // make the transition point to the new to group\n transition.to = newToGroupId;\n }\n } else if (this.isNodeInGroup(toNodeId, oldToGroupId)) {\n // the transition is to a node in the group\n if (newToGroupId == null && newToGroupStartId == null) {\n // there is no new to group so we will remove the transition\n transitions.splice(t, 1);\n t--;\n } else if (newToGroupStartId == null || newToGroupStartId == '') {\n // make the transition point to the new to group\n transition.to = newToGroupId;\n } else {\n // make the transition point to the new group start id\n transition.to = newToGroupStartId;\n }\n }\n }\n }\n }\n }\n }\n }\n }\n\n /*\n * remove the transitions from the oldToGroup\n */\n if (oldToGroupId != null && newToGroupId != null) {\n const oldToGroup = this.getNodeById(oldToGroupId);\n if (oldToGroup != null) {\n const childIds = oldToGroup.ids;\n\n // remove the transitions from the old to group that point to the new to group\n if (childIds != null) {\n for (let childId of childIds) {\n const child = this.getNodeById(childId);\n const transitions = this.getTransitionsByFromNodeId(childId);\n if (transitions != null) {\n for (let t = 0; t < transitions.length; t++) {\n const transition = transitions[t];\n if (transition != null) {\n const toNodeId = transition.to;\n if (toNodeId === newToGroupId) {\n // the transition is to the group so we will remove it\n transitions.splice(t, 1);\n t--;\n } else if (this.isNodeInGroup(toNodeId, newToGroupId)) {\n // the transition is to a node in the group so we will remove it\n transitions.splice(t, 1);\n t--;\n }\n }\n }\n }\n }\n }\n }\n }\n }\n\n /**\n * Determine if a node id is a direct child of a group\n * @param nodeId the node id\n * @param groupId the group id\n */\n isNodeInGroup(nodeId: string, groupId: string): boolean {\n const group = this.getNodeById(groupId);\n return group.ids.indexOf(nodeId) != -1;\n }\n\n /**\n * Update the transitions so that the fromGroup points to the newToGroup\n *\n * Before\n * fromGroup -> oldToGroup\n * newToGroup is dangling and has no transitions to or from it\n *\n * After\n * fromGroup -> newToGroup -> oldToGroup\n */\n updateTransitionsForInsertingGroup(fromGroupId, oldToGroupIds, newToGroupId) {\n let fromGroup = null;\n let newToGroup = null;\n if (fromGroupId != null) {\n fromGroup = this.getNodeById(fromGroupId);\n }\n\n if (newToGroupId != null) {\n newToGroup = this.getNodeById(newToGroupId);\n }\n\n /*\n * make the transitions that point to the old group now point\n * to the new group\n * fromGroup -> newToGroup\n */\n if (fromGroup != null && newToGroup != null) {\n const childIds = fromGroup.ids;\n const newToGroupStartId = newToGroup.startId;\n if (childIds != null) {\n for (let childId of childIds) {\n const child = this.getNodeById(childId);\n\n // get the transitions from the child\n const transitions = this.getTransitionsByFromNodeId(childId);\n\n if (transitions == null || transitions.length == 0) {\n /*\n * the child does not have any transitions so we will make it\n * point to the new group\n */\n if (newToGroupStartId == null || newToGroupStartId == '') {\n this.addToTransition(child, newToGroupId);\n } else {\n this.addToTransition(child, newToGroupStartId);\n }\n } else if (transitions != null) {\n for (let transition of transitions) {\n if (transition != null) {\n const toNodeId = transition.to;\n if (oldToGroupIds != null) {\n for (let oldToGroupId of oldToGroupIds) {\n if (toNodeId === oldToGroupId) {\n /*\n * the transition is to the group so we will update the transition\n * to the new group\n */\n transition.to = newToGroupId;\n } else if (this.isNodeInGroup(toNodeId, oldToGroupId)) {\n /*\n * the transition is to a node in the old group so we will update\n * the transition to point to the new group\n */\n if (newToGroupStartId == null || newToGroupStartId == '') {\n transition.to = newToGroupId;\n } else {\n transition.to = newToGroupStartId;\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n\n /*\n * make the steps that do not have a transition now point to the old\n * group\n * newToGroup -> oldToGroup\n */\n if (newToGroup != null) {\n const childIds = newToGroup.ids;\n if (childIds != null) {\n for (let childId of childIds) {\n const child = this.getNodeById(childId);\n const transitions = this.getTransitionsByFromNodeId(childId);\n\n if (transitions == null || transitions.length == 0) {\n if (oldToGroupIds != null) {\n for (let oldToGroupId of oldToGroupIds) {\n const oldToGroup = this.getNodeById(oldToGroupId);\n if (oldToGroup != null) {\n const oldToGroupStartId = oldToGroup.startId;\n if (oldToGroupStartId != null && oldToGroupStartId !== '') {\n this.addToTransition(child, oldToGroupStartId);\n }\n }\n }\n }\n }\n }\n }\n }\n }\n\n /**\n * Update the child transitions because we are moving a group. We will\n * update the transitions into and out of the group in the location\n * we are extracting the group from and also in the location we are\n * inserting the group into.\n * @param node the group we are moving\n * @param nodeId we will put the group after this node id\n */\n updateChildrenTransitionsInAndOutOfGroup(node, nodeId = null) {\n let transitionsBefore = null;\n\n // get the group nodes that point to the group we are moving\n const previousGroupNodes = this.getGroupNodesByToNodeId(node.id);\n\n // get all the transitions from the group we are moving\n const transitionsAfter = this.getTransitionsByFromNodeId(node.id);\n\n let extracted = false;\n\n /*\n * extract the group we are moving by updating the transitions of the\n * from group and the new to group. also remove the transitions from the\n * group we are moving.\n */\n\n for (let previousGroupNode of previousGroupNodes) {\n if (transitionsAfter == null || transitionsAfter.length == 0) {\n // the group we are moving does not have any transitions\n\n /*\n * remove the transitions to the group we are moving and make\n * new transitions from the from group to the new to group\n */\n this.updateTransitionsForExtractingGroup(previousGroupNode.id, node.id, null);\n extracted = true;\n } else {\n // the group we are moving has transitions\n\n // make the previous group point to the new to group\n for (let transitionAfter of transitionsAfter) {\n if (transitionAfter != null) {\n const toNodeId = transitionAfter.to;\n\n /*\n * remove the transitions to the group we are moving and make\n * new transitions from the from group to the new to group\n */\n this.updateTransitionsForExtractingGroup(previousGroupNode.id, node.id, toNodeId);\n extracted = true;\n }\n }\n }\n }\n\n if (!extracted) {\n /*\n * we have not removed the transitions yet because the group\n * we are moving does not have any groups before it\n */\n\n if (transitionsAfter != null) {\n // remove the transitions from the group we are moving\n for (let transitionAfter of transitionsAfter) {\n if (transitionAfter != null) {\n const toNodeId = transitionAfter.to;\n\n // remove the transitions to the group we are moving\n this.updateTransitionsForExtractingGroup(null, node.id, toNodeId);\n extracted = true;\n }\n }\n }\n }\n\n let inserted = false;\n\n /*\n * create the transitions from the from group to the group we are moving\n * and the transitions from the group we are moving to the old to group\n */\n if (nodeId != null) {\n // get the transitions from the previous group to the next group\n const transitionsAfter = this.getTransitionsByFromNodeId(nodeId);\n\n for (let transitionAfter of transitionsAfter) {\n if (transitionAfter != null) {\n const toNodeId = transitionAfter.to;\n\n /*\n * create the transitions that traverse from the from group\n * to the group we are moving. also create the transitions\n * that traverse from the group we are moving to the old\n * to group.\n */\n this.updateTransitionsForInsertingGroup(nodeId, [toNodeId], node.id);\n inserted = true;\n }\n }\n }\n\n if (!inserted) {\n /*\n * we have not inserted the transitions yet because there were no\n * previous group transitions\n */\n\n if (nodeId == null) {\n /*\n * the previous node id is null which means there was no previous\n * group. this means the group we are inserting will become the\n * first group. this happens when the group we are moving\n * is moved inside the root (group0).\n */\n\n const startGroupId = this.getStartGroupId();\n\n if (startGroupId != null) {\n // get the start group for the whole project (group0)\n const startGroup = this.getNodeById(startGroupId);\n\n if (startGroup != null) {\n const firstGroupId = startGroup.startId;\n\n /*\n * create the transitions that traverse from the group\n * we are moving to the previous first activity.\n */\n this.updateTransitionsForInsertingGroup(nodeId, [firstGroupId], node.id);\n }\n }\n } else {\n /*\n * we have not inserted the group yet because the from group doesn't\n * have a group after it\n */\n\n /*\n * create the transitions that traverse from the from group\n * to the group we are moving.\n */\n this.updateTransitionsForInsertingGroup(nodeId, null, node.id);\n }\n }\n }\n\n /**\n * Get the group nodes that point to a given node id\n * @param toNodeId\n */\n private getGroupNodesByToNodeId(toNodeId: string): any {\n const groupsThatPointToNodeId = [];\n if (toNodeId != null) {\n const groups = this.getGroups();\n for (let group of groups) {\n if (this.nodeHasTransitionToNodeId(group, toNodeId)) {\n groupsThatPointToNodeId.push(group);\n }\n }\n }\n return groupsThatPointToNodeId;\n }\n\n /**\n * Remove the child node from the parent group.\n * @param nodeId The child node to remove from the parent.\n */\n removeChildFromParent(nodeId) {\n let parentGroup = this.getParentGroup(nodeId);\n if (parentGroup != null) {\n // Remove the child from the parent\n for (let i = 0; i < parentGroup.ids.length; i++) {\n let childId = parentGroup.ids[i];\n if (nodeId == childId) {\n parentGroup.ids.splice(i, 1);\n break;\n }\n }\n if (nodeId == parentGroup.startId) {\n /*\n * The child we removed was the start id of the group so we\n * will update the start id.\n */\n let startIdUpdated = false;\n let transitions = this.getTransitionsByFromNodeId(nodeId);\n if (\n transitions != null &&\n transitions.length > 0 &&\n transitions[0] != null &&\n transitions[0].to != null\n ) {\n parentGroup.startId = transitions[0].to;\n startIdUpdated = true;\n }\n if (!startIdUpdated && parentGroup.ids.length > 0) {\n parentGroup.startId = parentGroup.ids[0];\n startIdUpdated = true;\n }\n if (!startIdUpdated) {\n parentGroup.startId = '';\n }\n }\n }\n }\n\n /**\n * Add a group's cthild nodes to the inactive nodes.\n * @param node The group node.\n */\n addGroupChildNodesToInactive(node) {\n for (const childId of node.ids) {\n if (!this.isInactive(childId)) {\n const childNode = this.getNodeById(childId);\n this.project.inactiveNodes.push(childNode);\n this.inactiveStepNodes.push(childNode);\n }\n }\n }\n\n /**\n * Get an unused component id\n * @param componentIdsToSkip (optional) An array of additional component ids\n * to skip. This is used when we are creating multiple new components. There\n * is avery small chance that we create duplicate component ids that aren't\n * already in the project. We avoid this problem by using this parameter.\n * Example\n * We want to create two new components. We first generate a new component\n * id for the first new component for example \"1234567890\". Then we generate\n * a new component id for the second new component and pass in\n * [\"1234567890\"] as componentIdsToSkip because the new \"1234567890\"\n * component hasn't actually been added to the project yet.\n * @return a component id that isn't already being used in the project\n */\n getUnusedComponentId(componentIdsToSkip = []) {\n let newComponentId = generateRandomKey();\n\n // check if the component id is already used in the project\n if (this.isComponentIdUsed(newComponentId)) {\n /*\n * the component id is already used in the project so we need to\n * try generating another one\n */\n let alreadyUsed = true;\n\n /*\n * keep trying to generate a new component id until we have found\n * one that isn't already being used\n */\n while (!alreadyUsed) {\n newComponentId = generateRandomKey();\n\n // check if the id is already being used in the project\n alreadyUsed = this.isComponentIdUsed(newComponentId);\n\n if (componentIdsToSkip != null && componentIdsToSkip.indexOf(newComponentId) != -1) {\n /*\n * the new component is in the componentIdsToSkip so it has\n * already been used\n */\n alreadyUsed = true;\n }\n }\n }\n return newComponentId;\n }\n\n /**\n * Check if the component id is already being used in the project\n * @param componentId check if this component id is already being used in\n * the project\n * @return whether the component id is already being used in the project\n */\n isComponentIdUsed(componentId) {\n for (const node of this.project.nodes.concat(this.project.inactiveNodes)) {\n if (node.components != null) {\n for (const component of node.components) {\n if (componentId === component.id) {\n return true;\n }\n }\n }\n }\n return false;\n }\n\n /**\n * Get the next available constraint id for a node\n * @param nodeId get the next available constraint id for this node\n * e.g. node8Constraint2\n * @return the next available constraint id for the node\n */\n getNextAvailableConstraintIdForNodeId(nodeId) {\n let nextAvailableConstraintId = null;\n if (nodeId != null) {\n const usedConstraintIds = [];\n const node = this.getNodeById(nodeId);\n if (node != null) {\n const constraints = node.constraints;\n if (constraints != null) {\n for (let constraint of constraints) {\n if (constraint != null) {\n const constraintId = constraint.id;\n usedConstraintIds.push(constraintId);\n }\n }\n }\n }\n\n let foundNextAvailableConstraintId = false;\n let counter = 1;\n\n while (!foundNextAvailableConstraintId) {\n const potentialConstraintId = nodeId + 'Constraint' + counter;\n if (usedConstraintIds.indexOf(potentialConstraintId) == -1) {\n nextAvailableConstraintId = potentialConstraintId;\n foundNextAvailableConstraintId = true;\n } else {\n counter++;\n }\n }\n }\n return nextAvailableConstraintId;\n }\n\n /**\n * Get all the node ids from steps (not groups)\n * @returns an array with all the node ids\n */\n getNodeIds(): string[] {\n return this.applicationNodes.map((node) => {\n return node.id;\n });\n }\n\n getApplicationNodes(): any[] {\n return this.applicationNodes;\n }\n\n /**\n * Get the node ids in the branch by looking for nodes that have branch\n * path taken constraints with the given fromNodeId and toNodeId\n * @param fromNodeId the from node id\n * @param toNodeId the to node id\n * @return an array of nodes that are in the branch path\n */\n getNodeIdsInBranch(fromNodeId: string, toNodeId: string): any[] {\n const nodeIdsInBranch = [];\n for (const node of this.getNodes()) {\n if (this.hasBranchPathTakenConstraint(node, fromNodeId, toNodeId)) {\n nodeIdsInBranch.push(node.id);\n }\n }\n this.orderNodeIds(nodeIdsInBranch);\n return nodeIdsInBranch;\n }\n\n /**\n * Order the node ids so that they show up in the same order as in the\n * project.\n * @param constraints An array of node ids.\n * @return An array of ordered node ids.\n */\n private orderNodeIds(nodeIds: string[]): string[] {\n let orderedNodeIds = this.getFlattenedProjectAsNodeIds();\n return nodeIds.sort(this.nodeIdsComparatorGenerator(orderedNodeIds));\n }\n\n /**\n * Create the node ids comparator function that is used for sorting an\n * array of node ids.\n * @param orderedNodeIds An array of node ids in the order in which they\n * show up in the project.\n * @return A comparator that orders node ids in the order in which they show\n * up in the project.\n */\n nodeIdsComparatorGenerator(orderedNodeIds) {\n return function (nodeIdA, nodeIdB) {\n let nodeIdAIndex = orderedNodeIds.indexOf(nodeIdA);\n let nodeIdBIndex = orderedNodeIds.indexOf(nodeIdB);\n if (nodeIdAIndex < nodeIdBIndex) {\n return -1;\n } else if (nodeIdAIndex > nodeIdBIndex) {\n return 1;\n }\n return 0;\n };\n }\n\n /**\n * Check if a node has a branch path taken constraint\n * @param node the node to check\n * @param fromNodeId the from node id of the branch path taken\n * @param toNodeId the to node id of the branch path taken\n * @return whether the node has a branch path taken constraint with the\n * given from node id and to node id\n */\n hasBranchPathTakenConstraint(node, fromNodeId, toNodeId) {\n const constraints = node.constraints;\n if (constraints != null) {\n for (let constraint of constraints) {\n for (let removalCriterion of constraint.removalCriteria) {\n if (removalCriterion.name == 'branchPathTaken') {\n const params = removalCriterion.params;\n if (params.fromNodeId == fromNodeId && params.toNodeId == toNodeId) {\n return true;\n }\n }\n }\n }\n }\n return false;\n }\n\n /**\n * Remove all branch path taken constraints from a node.\n * @param nodeId Remove the constraints from this node.\n */\n removeBranchPathTakenNodeConstraintsIfAny(nodeId) {\n const node = this.getNodeById(nodeId);\n const constraints = node.constraints;\n if (constraints != null) {\n for (let c = 0; c < constraints.length; c++) {\n const constraint = constraints[c];\n const removalCriteria = constraint.removalCriteria;\n for (let removalCriterion of removalCriteria) {\n if (removalCriterion.name == 'branchPathTaken') {\n constraints.splice(c, 1);\n c--; // update the counter so we don't skip over the next element\n }\n }\n }\n }\n }\n\n /**\n * @param nodeId Get the branch path taken constraints from this node.\n * @return {Array} An array of branch path taken constraints from the node.\n */\n getBranchPathTakenConstraintsByNodeId(nodeId) {\n const branchPathTakenConstraints = [];\n const node = this.getNodeById(nodeId);\n const constraints = node.constraints;\n if (constraints != null) {\n for (let constraint of constraints) {\n for (let removalCriterion of constraint.removalCriteria) {\n if (removalCriterion.name == 'branchPathTaken') {\n branchPathTakenConstraints.push(constraint);\n break;\n }\n }\n }\n }\n return branchPathTakenConstraints;\n }\n\n /**\n * Check if a node is the first node in a branch path\n * @param nodeId the node id\n * @return whether the node is the first node in a branch path\n */\n isFirstNodeInBranchPath(nodeId: string): boolean {\n return this.getNodes()\n .concat(this.getInactiveNodes())\n .some(\n (node) =>\n node.transitionLogic?.transitions?.length > 1 &&\n node.transitionLogic.transitions.some((transition) => transition.to === nodeId)\n );\n }\n\n addSpace(space) {\n if (this.project.spaces == null) {\n this.project.spaces = [];\n }\n if (!this.isSpaceExists(space.id)) {\n this.project.spaces.push(space);\n this.saveProject();\n }\n }\n\n removeSpace(id) {\n let spaces = this.getSpaces();\n for (let s = 0; s < spaces.length; s++) {\n if (spaces[s].id == id) {\n spaces.splice(s, 1);\n this.saveProject();\n return;\n }\n }\n }\n\n getFeaturedProjectIcons() {\n return this.http\n .get(this.configService.getConfigParam('featuredProjectIconsURL'))\n .toPromise()\n .then((data) => {\n return data;\n });\n }\n\n setFeaturedProjectIcon(projectIcon) {\n const isCustom = false;\n return this.setProjectIcon(projectIcon, isCustom);\n }\n\n setCustomProjectIcon(projectIcon) {\n const isCustom = true;\n return this.setProjectIcon(projectIcon, isCustom);\n }\n\n setProjectIcon(projectIcon, isCustom) {\n return this.http\n .post(this.configService.getConfigParam('projectIconURL'), {\n projectId: this.configService.getProjectId(),\n projectIcon: projectIcon,\n isCustom: isCustom\n })\n .toPromise()\n .then((result) => {\n return result;\n });\n }\n\n getStepNodesDetailsInOrder(): any[] {\n const stepNodeDetails: any[] = [];\n Object.entries(this.idToOrder).forEach(([nodeId, objectWithOrder]: [string, any]) => {\n if (this.isApplicationNode(nodeId)) {\n stepNodeDetails.push({\n nodeId: nodeId,\n order: objectWithOrder.order,\n nodePositionAndTitle: this.getNodePositionAndTitle(nodeId)\n });\n }\n });\n return stepNodeDetails.sort(this.sortByOrder);\n }\n\n sortByOrder(a: any, b: any): number {\n return a.order - b.order;\n }\n\n broadcastSavingProject(): void {\n this.savingProjectSource.next();\n }\n\n broadcastErrorSavingProject() {\n this.errorSavingProjectSource.next();\n }\n\n broadcastNotAllowedToEditThisProject() {\n this.notAllowedToEditThisProjectSource.next();\n }\n\n broadcastProjectSaved() {\n this.projectSavedSource.next();\n }\n\n getNodesInOrder(): any[] {\n return Object.entries(this.idToOrder)\n .map((entry: any) => {\n return { key: entry[0], id: entry[0], order: entry[1].order };\n })\n .sort((a: any, b: any) => {\n return a.order - b.order;\n });\n }\n\n setNodeTypeSelected(nodeTypeSelected: NodeTypeSelected): void {\n this.nodeTypeSelected.set(nodeTypeSelected);\n }\n\n getNodeTypeSelected(): Signal {\n return this.nodeTypeSelected.asReadonly();\n }\n\n getComponentsFromStep(nodeId: string): ComponentContent[] {\n return this.getNodeById(nodeId).components;\n }\n\n getComponentsFromLesson(lessonId: string): ComponentContent[] {\n return this.getNodeById(lessonId).ids.flatMap((nodeId: string) =>\n this.getComponentsFromStep(nodeId)\n );\n }\n\n uiChanged(): void {\n this.uiChangedSource.next();\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "branchService", + "type": "BranchService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentServiceLookupService", + "type": "ComponentServiceLookupService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "pathService", + "type": "PathService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 36, + "jsdoctags": [ + { + "name": "branchService", + "type": "BranchService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentServiceLookupService", + "type": "ComponentServiceLookupService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "pathService", + "type": "PathService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "ProjectService" + ], + "type": "injectable" + }, + { + "name": "TeacherProjectTranslationService", + "id": "injectable-TeacherProjectTranslationService-d1c195d0b1ad832c1c223464d92ffb3903193d86e55ee9c3713ec510b03a83a604831a694b84caad93ed9267a81d6988166e69e7d803c06174c9b423e02a9035", + "file": "src/assets/wise5/services/teacherProjectTranslationService.ts", + "properties": [ + { + "name": "currentTranslations", + "defaultValue": "this.currentTranslationsSignal.asReadonly()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "modifierKind": [ + 148 + ] + }, + { + "name": "currentTranslationsSignal", + "defaultValue": "signal({})", + "deprecated": false, + "deprecationMessage": "", + "type": "WritableSignal", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "modifierKind": [ + 123 + ] + } + ], + "methods": [ + { + "name": "saveCurrentTranslations", + "args": [ + { + "name": "translations", + "type": "Translations", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 29, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "translations", + "type": "Translations", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "fetchTranslations", + "args": [ + { + "name": "locale", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 16, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "locale", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectTranslationService" + } + }, + { + "name": "getTranslationMappingURL", + "args": [ + { + "name": "locale", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 24, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "locale", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectTranslationService" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Injectable, WritableSignal, signal } from '@angular/core';\nimport { Observable, catchError, lastValueFrom, map, throwError } from 'rxjs';\nimport { TeacherProjectService } from './teacherProjectService';\nimport { Translations } from '../../../app/domain/translations';\nimport { ProjectTranslationService } from './projectTranslationService';\nimport { HttpClient } from '@angular/common/http';\nimport { ConfigService } from './configService';\nimport { toObservable } from '@angular/core/rxjs-interop';\n\n@Injectable()\nexport class TeacherProjectTranslationService extends ProjectTranslationService {\n private currentTranslationsSignal: WritableSignal = signal({});\n readonly currentTranslations = this.currentTranslationsSignal.asReadonly();\n constructor(\n protected configService: ConfigService,\n protected http: HttpClient,\n protected projectService: TeacherProjectService\n ) {\n super(configService, http, projectService);\n toObservable(this.projectService.currentLanguage).subscribe(async (language) => {\n this.currentTranslationsSignal.set(\n this.projectService.isDefaultLocale()\n ? {}\n : await lastValueFrom(this.fetchTranslations(language.locale))\n );\n });\n }\n\n saveCurrentTranslations(translations: Translations): Observable {\n this.projectService.broadcastSavingProject();\n return this.http\n .post(\n `/api/author/project/translate/${this.configService.getProjectId()}/${\n this.projectService.currentLanguage().locale\n }`,\n translations\n )\n .pipe(\n map(() => {\n this.currentTranslationsSignal.set(translations);\n this.projectService.broadcastProjectSaved();\n }),\n catchError(() => {\n this.projectService.broadcastErrorSavingProject();\n return throwError(\n () => new Error($localize`Error saving translation. Please try again later.`)\n );\n })\n );\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 13, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "ProjectTranslationService" + ], + "type": "injectable" + }, + { + "name": "TeacherService", + "id": "injectable-TeacherService-8ec3fd9b178c1c7235143dbe9acd853bae5ce13eae9eb082d123d739608c0d96bd2facd83af06c1a31c746d24420db4269732b7952713b8ebf6a0442e09d4ef8", + "file": "src/app/teacher/teacher.service.ts", + "properties": [ + { + "name": "addAssignmentUrl", + "defaultValue": "'/api/google-classroom/create-assignment'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 33, + "modifierKind": [ + 123 + ] + }, + { + "name": "addPeriodToRunUrl", + "defaultValue": "'/api/teacher/run/add/period'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 20, + "modifierKind": [ + 123 + ] + }, + { + "name": "changePasswordUrl", + "defaultValue": "'/api/teacher/forgot/password/change'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 30, + "modifierKind": [ + 123 + ] + }, + { + "name": "checkVerificationCodeUrl", + "defaultValue": "'/api/teacher/forgot/password/verification-code'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 29, + "modifierKind": [ + 123 + ] + }, + { + "name": "classroomAuthorizationUrl", + "defaultValue": "'/api/google-classroom/get-authorization-url'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 31, + "modifierKind": [ + 123 + ] + }, + { + "name": "createRunUrl", + "defaultValue": "'/api/teacher/run/create'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "modifierKind": [ + 123 + ] + }, + { + "name": "deletePeriodFromRunUrl", + "defaultValue": "'/api/teacher/run/delete/period'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 21, + "modifierKind": [ + 123 + ] + }, + { + "name": "forgotPasswordUrl", + "defaultValue": "'/api/teacher/forgot/password'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 27, + "modifierKind": [ + 123 + ] + }, + { + "name": "forgotUsernameUrl", + "defaultValue": "'/api/teacher/forgot/username'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 26, + "modifierKind": [ + 123 + ] + }, + { + "name": "getVerificationCodeUrl", + "defaultValue": "'/api/teacher/forgot/password/verification-code'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 28, + "modifierKind": [ + 123 + ] + }, + { + "name": "lastRunUrl", + "defaultValue": "'/api/teacher/projectlastrun'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "modifierKind": [ + 123 + ] + }, + { + "name": "listCoursesUrl", + "defaultValue": "'/api/google-classroom/list-courses'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 32, + "modifierKind": [ + 123 + ] + }, + { + "name": "newProjectSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 34, + "modifierKind": [ + 123 + ] + }, + { + "name": "newProjectSource$", + "defaultValue": "this.newProjectSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 35, + "modifierKind": [ + 125 + ] + }, + { + "name": "projectPermissionUrl", + "defaultValue": "'/api/teacher/project/permission'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "modifierKind": [ + 123 + ] + }, + { + "name": "registerUrl", + "defaultValue": "'/api/teacher/register'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "modifierKind": [ + 123 + ] + }, + { + "name": "runPermissionUrl", + "defaultValue": "'/api/teacher/run/permission'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "modifierKind": [ + 123 + ] + }, + { + "name": "runs", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 36, + "modifierKind": [ + 123 + ] + }, + { + "name": "runs$", + "defaultValue": "this.runs.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 37, + "modifierKind": [ + 125 + ] + }, + { + "name": "runUrl", + "defaultValue": "'/api/teacher/run'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "modifierKind": [ + 123 + ] + }, + { + "name": "transferRunOwnershipUrl", + "defaultValue": "'/api/teacher/run/permission/transfer'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 123 + ] + }, + { + "name": "updateProfileUrl", + "defaultValue": "'/api/teacher/profile/update'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 38, + "modifierKind": [ + 123 + ] + }, + { + "name": "updateRunEndTimeUrl", + "defaultValue": "'/api/teacher/run/update/endtime'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 24, + "modifierKind": [ + 123 + ] + }, + { + "name": "updateRunIsLockedAfterEndDateUrl", + "defaultValue": "'/api/teacher/run/update/islockedafterenddate'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 25, + "modifierKind": [ + 123 + ] + }, + { + "name": "updateRunStartTimeUrl", + "defaultValue": "'/api/teacher/run/update/starttime'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 23, + "modifierKind": [ + 123 + ] + }, + { + "name": "updateRunStudentsPerTeamUrl", + "defaultValue": "'/api/teacher/run/update/studentsperteam'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 22, + "modifierKind": [ + 123 + ] + }, + { + "name": "usernamesUrl", + "defaultValue": "'/api/teacher/usernames'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "modifierKind": [ + 123 + ] + } + ], + "methods": [ + { + "name": "addPeriodToRun", + "args": [ + { + "name": "runId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "periodName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 183, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "runId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "periodName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addSharedOwner", + "args": [ + { + "name": "runId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "teacherUsername", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 101, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "runId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "teacherUsername", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addSharedOwnerProjectPermission", + "args": [ + { + "name": "projectId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "userId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "permissionId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 131, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "projectId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "userId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "permissionId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addSharedOwnerRunPermission", + "args": [ + { + "name": "runId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "userId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "permissionId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 119, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "runId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "userId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "permissionId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addSharedProjectOwner", + "args": [ + { + "name": "projectId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "username", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 143, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "projectId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "username", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addToClassroom", + "args": [ + { + "name": "accessCode", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "unitTitle", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "courseIds", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "username", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "endTime", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "description", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 290, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "accessCode", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "unitTitle", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "courseIds", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "username", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "endTime", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "description", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "broadcastRunChanges", + "args": [ + { + "name": "run", + "type": "TeacherRun", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 155, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "run", + "type": "TeacherRun", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "changePassword", + "args": [ + { + "name": "username", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "verificationCode", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "password", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "confirmPassword", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 266, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "username", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "verificationCode", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "password", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "confirmPassword", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "changeStudentPassword", + "args": [ + { + "name": "runId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "newStudentPassword", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "teacherPassword", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 309, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "runId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "newStudentPassword", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "teacherPassword", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "checkVerificationCode", + "args": [ + { + "name": "username", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "verificationCode", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 258, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "username", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "verificationCode", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createRun", + "args": [ + { + "name": "projectId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "periods", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isSurvey", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "maxStudentsPerTeam", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "startDate", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "endDate", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isLockedAfterEndDate", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 73, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "projectId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "periods", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "isSurvey", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "maxStudentsPerTeam", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "startDate", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "endDate", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "isLockedAfterEndDate", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "deletePeriodFromRun", + "args": [ + { + "name": "runId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "periodName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 192, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "runId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "periodName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getClassroomAuthorizationUrl", + "args": [ + { + "name": "username", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 276, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "username", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getClassroomCourses", + "args": [ + { + "name": "username", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 283, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "username", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getPersonalAndSharedProjects", + "args": [], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 59, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getProjectLastRun", + "args": [ + { + "name": "projectId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 55, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "projectId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getRun", + "args": [ + { + "name": "runId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 51, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "runId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getRuns", + "args": [ + { + "name": "max", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "0" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 42, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "max", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "0", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getVerificationCodeEmail", + "args": [ + { + "name": "username", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "token", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 251, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "username", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "token", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "registerTeacherAccount", + "args": [ + { + "name": "teacherUser", + "type": "Teacher", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 63, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "teacherUser", + "type": "Teacher", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "removeSharedOwner", + "args": [ + { + "name": "runId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "username", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 113, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "runId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "username", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "removeSharedOwnerProjectPermission", + "args": [ + { + "name": "projectId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "userId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "permissionId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 137, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "projectId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "userId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "permissionId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "removeSharedOwnerRunPermission", + "args": [ + { + "name": "runId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "userId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "permissionId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 125, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "runId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "userId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "permissionId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "removeSharedProjectOwner", + "args": [ + { + "name": "projectId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "username", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 149, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "projectId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "username", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "retrieveAllTeacherUsernames", + "args": [], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 96, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "sendForgotPasswordEmail", + "args": [ + { + "name": "username", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 245, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "username", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "sendForgotUsernameEmail", + "args": [ + { + "name": "email", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 239, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "email", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "transferRunOwnership", + "args": [ + { + "name": "runId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "teacherUsername", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 107, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "runId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "teacherUsername", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "updateIsLockedAfterEndDate", + "args": [ + { + "name": "runId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isLockedAfterEndDate", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 230, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "runId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "isLockedAfterEndDate", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "updateProfile", + "args": [ + { + "name": "username", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "displayName", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "email", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "city", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "state", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "country", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "schoolName", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "schoolLevel", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "language", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 159, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "username", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "displayName", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "email", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "city", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "state", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "country", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "schoolName", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "schoolLevel", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "language", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "updateRunEndTime", + "args": [ + { + "name": "runId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "endTime", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 219, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "runId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "endTime", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "updateRunStartTime", + "args": [ + { + "name": "runId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "startTime", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 210, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "runId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "startTime", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "updateRunStudentsPerTeam", + "args": [ + { + "name": "runId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "maxStudentsPerTeam", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 201, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "runId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "maxStudentsPerTeam", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Course } from '../domain/course';\nimport { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { Project } from '../domain/project';\nimport { Run } from '../domain/run';\nimport { Teacher } from '../domain/teacher';\nimport { TeacherRun } from './teacher-run';\n\n@Injectable()\nexport class TeacherService {\n private registerUrl = '/api/teacher/register';\n private runPermissionUrl = '/api/teacher/run/permission';\n private projectPermissionUrl = '/api/teacher/project/permission';\n private transferRunOwnershipUrl = '/api/teacher/run/permission/transfer';\n private usernamesUrl = '/api/teacher/usernames';\n private createRunUrl = '/api/teacher/run/create';\n private runUrl = '/api/teacher/run';\n private lastRunUrl = '/api/teacher/projectlastrun';\n private addPeriodToRunUrl = '/api/teacher/run/add/period';\n private deletePeriodFromRunUrl = '/api/teacher/run/delete/period';\n private updateRunStudentsPerTeamUrl = '/api/teacher/run/update/studentsperteam';\n private updateRunStartTimeUrl = '/api/teacher/run/update/starttime';\n private updateRunEndTimeUrl = '/api/teacher/run/update/endtime';\n private updateRunIsLockedAfterEndDateUrl = '/api/teacher/run/update/islockedafterenddate';\n private forgotUsernameUrl = '/api/teacher/forgot/username';\n private forgotPasswordUrl = '/api/teacher/forgot/password';\n private getVerificationCodeUrl = '/api/teacher/forgot/password/verification-code';\n private checkVerificationCodeUrl = '/api/teacher/forgot/password/verification-code';\n private changePasswordUrl = '/api/teacher/forgot/password/change';\n private classroomAuthorizationUrl = '/api/google-classroom/get-authorization-url';\n private listCoursesUrl = '/api/google-classroom/list-courses';\n private addAssignmentUrl = '/api/google-classroom/create-assignment';\n private newProjectSource = new Subject();\n public newProjectSource$ = this.newProjectSource.asObservable();\n private runs = new Subject();\n public runs$ = this.runs.asObservable();\n private updateProfileUrl = '/api/teacher/profile/update';\n\n constructor(private http: HttpClient) {}\n\n getRuns(max: number = 0): Observable {\n const headers = new HttpHeaders({ 'Cache-Control': 'no-cache' });\n let params = new HttpParams();\n if (max > 0) {\n params = params.append('max', max);\n }\n return this.http.get('/api/teacher/runs', { headers, params });\n }\n\n getRun(runId: number): Observable {\n return this.http.get(`${this.runUrl}/${runId}`);\n }\n\n getProjectLastRun(projectId: number): Observable {\n return this.http.get(`${this.lastRunUrl}/${projectId}`);\n }\n\n getPersonalAndSharedProjects(): Observable {\n return this.http.get('/api/project/personal-and-shared');\n }\n\n registerTeacherAccount(teacherUser: Teacher): Observable {\n const headers = {\n 'Content-Type': 'application/json'\n };\n return this.http.post(this.registerUrl, teacherUser, {\n headers: headers,\n responseType: 'json'\n });\n }\n\n createRun(\n projectId: number,\n periods: string,\n isSurvey: boolean,\n maxStudentsPerTeam: number,\n startDate: number,\n endDate: number,\n isLockedAfterEndDate: boolean\n ): Observable {\n const headers = new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded');\n let body = new HttpParams();\n body = body.set('projectId', projectId + '');\n body = body.set('periods', periods);\n body = body.set('isSurvey', isSurvey);\n body = body.set('maxStudentsPerTeam', maxStudentsPerTeam + '');\n body = body.set('startDate', startDate + '');\n if (endDate) {\n body = body.set('endDate', endDate + '');\n body = body.set('isLockedAfterEndDate', isLockedAfterEndDate + '');\n }\n return this.http.post(this.createRunUrl, body, { headers: headers });\n }\n\n retrieveAllTeacherUsernames(): Observable {\n const headers = new HttpHeaders({ 'Cache-Control': 'no-cache' });\n return this.http.get(this.usernamesUrl, { headers: headers });\n }\n\n addSharedOwner(runId: number, teacherUsername: string) {\n const url = `${this.runPermissionUrl}/${runId}/${teacherUsername}`;\n const headers = new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded');\n return this.http.put(url, null, { headers: headers });\n }\n\n transferRunOwnership(runId: number, teacherUsername: string) {\n const url = `${this.transferRunOwnershipUrl}/${runId}/${teacherUsername}`;\n const headers = new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded');\n return this.http.put(url, null, { headers: headers });\n }\n\n removeSharedOwner(runId: number, username: string) {\n const url = `${this.runPermissionUrl}/${runId}/${username}`;\n const headers = new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded');\n return this.http.delete(url, { headers: headers });\n }\n\n addSharedOwnerRunPermission(runId: number, userId: string, permissionId: number) {\n const url = `${this.runPermissionUrl}/${runId}/${userId}/${permissionId}`;\n const headers = new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded');\n return this.http.put(url, null, { headers: headers });\n }\n\n removeSharedOwnerRunPermission(runId: number, userId: string, permissionId: number) {\n const url = `${this.runPermissionUrl}/${runId}/${userId}/${permissionId}`;\n const headers = new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded');\n return this.http.delete(url, { headers: headers });\n }\n\n addSharedOwnerProjectPermission(projectId: number, userId: string, permissionId: number) {\n const url = `${this.projectPermissionUrl}/${projectId}/${userId}/${permissionId}`;\n const headers = new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded');\n return this.http.put(url, { headers: headers });\n }\n\n removeSharedOwnerProjectPermission(projectId: number, userId: string, permissionId: number) {\n const url = `${this.projectPermissionUrl}/${projectId}/${userId}/${permissionId}`;\n const headers = new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded');\n return this.http.delete(url, { headers: headers });\n }\n\n addSharedProjectOwner(projectId: number, username: string) {\n const url = `${this.projectPermissionUrl}/${projectId}/${username}`;\n const headers = new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded');\n return this.http.put(url, null, { headers: headers });\n }\n\n removeSharedProjectOwner(projectId: number, username: string) {\n const url = `${this.projectPermissionUrl}/${projectId}/${username}`;\n const headers = new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded');\n return this.http.delete(url, { headers: headers });\n }\n\n broadcastRunChanges(run: TeacherRun): void {\n this.runs.next(run);\n }\n\n updateProfile(\n username,\n displayName,\n email,\n city,\n state,\n country,\n schoolName,\n schoolLevel,\n language\n ) {\n const headers = new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded');\n let body = new HttpParams();\n body = body.set('displayName', displayName);\n body = body.set('email', email);\n body = body.set('city', city);\n body = body.set('state', state);\n body = body.set('country', country);\n body = body.set('schoolName', schoolName);\n body = body.set('schoolLevel', schoolLevel);\n body = body.set('language', language);\n return this.http.post(this.updateProfileUrl, body, { headers: headers });\n }\n\n addPeriodToRun(runId: number, periodName: string) {\n const url = `${this.addPeriodToRunUrl}`;\n const headers = new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded');\n let body = new HttpParams();\n body = body.set('runId', runId + '');\n body = body.set('periodName', periodName);\n return this.http.post(url, body, { headers: headers });\n }\n\n deletePeriodFromRun(runId: number, periodName: string) {\n const url = `${this.deletePeriodFromRunUrl}`;\n const headers = new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded');\n let body = new HttpParams();\n body = body.set('runId', runId + '');\n body = body.set('periodName', periodName);\n return this.http.post(url, body, { headers: headers });\n }\n\n updateRunStudentsPerTeam(runId: number, maxStudentsPerTeam: number) {\n const url = `${this.updateRunStudentsPerTeamUrl}`;\n const headers = new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded');\n let body = new HttpParams();\n body = body.set('runId', runId + '');\n body = body.set('maxStudentsPerTeam', maxStudentsPerTeam + '');\n return this.http.post(url, body, { headers: headers });\n }\n\n updateRunStartTime(runId: number, startTime: number) {\n const url = `${this.updateRunStartTimeUrl}`;\n const headers = new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded');\n let body = new HttpParams();\n body = body.set('runId', runId + '');\n body = body.set('startTime', startTime + '');\n return this.http.post(url, body, { headers: headers });\n }\n\n updateRunEndTime(runId: number, endTime: number) {\n const url = `${this.updateRunEndTimeUrl}`;\n const headers = new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded');\n let body = new HttpParams();\n body = body.set('runId', runId + '');\n if (endTime != null) {\n body = body.set('endTime', endTime + '');\n }\n return this.http.post(url, body, { headers: headers });\n }\n\n updateIsLockedAfterEndDate(runId: number, isLockedAfterEndDate: boolean) {\n const url = `${this.updateRunIsLockedAfterEndDateUrl}`;\n const headers = new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded');\n const body = new HttpParams()\n .set('runId', runId + '')\n .set('isLockedAfterEndDate', isLockedAfterEndDate + '');\n return this.http.post(url, body, { headers: headers });\n }\n\n sendForgotUsernameEmail(email) {\n const headers = new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded');\n const params = new HttpParams().set('email', email);\n return this.http.post(this.forgotUsernameUrl, params, { headers: headers });\n }\n\n sendForgotPasswordEmail(username) {\n const headers = new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded');\n const params = new HttpParams().set('username', username);\n return this.http.post(this.forgotPasswordUrl, params, { headers: headers });\n }\n\n getVerificationCodeEmail(username, token) {\n const headers = new HttpHeaders({ 'Cache-Control': 'no-cache' });\n let params = new HttpParams().set('username', username);\n params = params.set('token', token);\n return this.http.get(this.getVerificationCodeUrl, { headers: headers, params: params });\n }\n\n checkVerificationCode(username, verificationCode) {\n const headers = new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded');\n let params = new HttpParams();\n params = params.set('username', username);\n params = params.set('verificationCode', verificationCode);\n return this.http.post(this.checkVerificationCodeUrl, params, { headers: headers });\n }\n\n changePassword(username, verificationCode, password, confirmPassword) {\n const headers = new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded');\n let params = new HttpParams();\n params = params.set('username', username);\n params = params.set('verificationCode', verificationCode);\n params = params.set('password', password);\n params = params.set('confirmPassword', confirmPassword);\n return this.http.post(this.changePasswordUrl, params, { headers: headers });\n }\n\n getClassroomAuthorizationUrl(username: string): Observable {\n const headers = new HttpHeaders({ 'Cache-Control': 'no-cache' });\n let params = new HttpParams();\n params = params.set('username', username);\n return this.http.get(this.classroomAuthorizationUrl, { headers, params });\n }\n\n getClassroomCourses(username: string): Observable {\n const headers = new HttpHeaders({ 'Cache-Control': 'no-cache' });\n let params = new HttpParams();\n params = params.set('username', username);\n return this.http.get(this.listCoursesUrl, { headers, params });\n }\n\n addToClassroom(\n accessCode: string,\n unitTitle: string,\n courseIds: string[],\n username: string,\n endTime: string,\n description: string\n ): Observable {\n const headers = new HttpHeaders({ 'Content-Type': 'application/x-www-form-urlencoded' });\n let params = new HttpParams()\n .set('accessCode', accessCode)\n .set('unitTitle', unitTitle)\n .set('username', username)\n .set('endTime', endTime)\n .set('description', description)\n .set('courseIds', JSON.stringify(courseIds));\n return this.http.post(this.addAssignmentUrl, params, { headers });\n }\n\n changeStudentPassword(\n runId: number,\n studentId: number,\n newStudentPassword: string,\n teacherPassword: string\n ): Observable {\n let params = new HttpParams();\n params = params.set('newStudentPassword', newStudentPassword);\n params = params.set('teacherPassword', teacherPassword);\n return this.http.post(`/api/teacher/run/${runId}/student/${studentId}/change-password`, params);\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 38, + "jsdoctags": [ + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "type": "injectable" + }, + { + "name": "TeacherWebSocketService", + "id": "injectable-TeacherWebSocketService-0ceb4e07d2b5ad55a91612f5239c9b7cbc0a26c9ef34c1d28003db9f52069816eb4e24204953b13c6a2833e7df7076eb0dde6d086e1f9df1af344eca50a22a54", + "file": "src/assets/wise5/services/teacherWebSocketService.ts", + "properties": [ + { + "name": "newAnnotationReceived$", + "defaultValue": "this.newAnnotationReceivedSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "Observable", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "modifierKind": [ + 125 + ] + }, + { + "name": "newAnnotationReceivedSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "modifierKind": [ + 123 + ] + }, + { + "name": "newStudentWorkReceived$", + "defaultValue": "this.newStudentWorkReceivedSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "Observable", + "indexKey": "", + "optional": false, + "description": "", + "line": 20, + "modifierKind": [ + 125 + ] + }, + { + "name": "newStudentWorkReceivedSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "modifierKind": [ + 123 + ] + }, + { + "name": "runId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 15 + }, + { + "name": "rxStomp", + "deprecated": false, + "deprecationMessage": "", + "type": "RxStomp", + "indexKey": "", + "optional": false, + "description": "", + "line": 16 + } + ], + "methods": [ + { + "name": "broadcastNewAnnotationReceived", + "args": [ + { + "name": "annotation", + "type": "Annotation", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 68, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "annotation", + "type": "Annotation", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "broadcastNewStudentWorkReceived", + "args": [ + { + "name": "args", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 64, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "args", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "initialize", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 29, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "initializeStomp", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 37, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "pauseScreens", + "args": [ + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "sendNodeToClass", + "args": [ + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 91, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "subscribeToClassroomTopics", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 98, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "subscribeToTeacherTopic", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 45, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "subscribeToTeacherWorkgroupTopic", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 72, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "unPauseScreens", + "args": [ + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 87, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "'use strict';\n\nimport { Injectable } from '@angular/core';\nimport { ConfigService } from './configService';\nimport { ClassroomStatusService } from './classroomStatusService';\nimport { NotificationService } from './notificationService';\nimport { Observable, Subject } from 'rxjs';\nimport { AchievementService } from './achievementService';\nimport { RxStomp } from '@stomp/rx-stomp';\nimport { Message } from '@stomp/stompjs';\nimport { Annotation } from '../common/Annotation';\n\n@Injectable()\nexport class TeacherWebSocketService {\n runId: number;\n rxStomp: RxStomp;\n private newAnnotationReceivedSource: Subject = new Subject();\n public newAnnotationReceived$: Observable = this.newAnnotationReceivedSource.asObservable();\n private newStudentWorkReceivedSource: Subject = new Subject();\n public newStudentWorkReceived$: Observable = this.newStudentWorkReceivedSource.asObservable();\n\n constructor(\n private AchievementService: AchievementService,\n private classroomStatusService: ClassroomStatusService,\n private configService: ConfigService,\n private NotificationService: NotificationService\n ) {}\n\n initialize() {\n this.runId = this.configService.getRunId();\n this.initializeStomp();\n this.subscribeToTeacherTopic();\n this.subscribeToTeacherWorkgroupTopic();\n this.subscribeToClassroomTopics();\n }\n\n initializeStomp() {\n this.rxStomp = new RxStomp();\n this.rxStomp.configure({\n brokerURL: this.configService.getWebSocketURL()\n });\n this.rxStomp.activate();\n }\n\n subscribeToTeacherTopic() {\n this.rxStomp.watch(`/topic/teacher/${this.runId}`).subscribe((message: Message) => {\n const body = JSON.parse(message.body);\n if (body.type === 'studentWork') {\n const studentWork = JSON.parse(body.content);\n this.broadcastNewStudentWorkReceived({ studentWork: studentWork });\n } else if (body.type === 'studentStatus') {\n const status = JSON.parse(body.content);\n this.classroomStatusService.setStudentStatus(status);\n this.classroomStatusService.broadcastStudentStatusReceived({ studentStatus: status });\n } else if (body.type === 'newStudentAchievement') {\n const achievement = JSON.parse(body.content);\n this.AchievementService.broadcastNewStudentAchievement(achievement);\n } else if (body.type === 'annotation') {\n this.broadcastNewAnnotationReceived(JSON.parse(body.content));\n }\n });\n }\n\n broadcastNewStudentWorkReceived(args: any) {\n this.newStudentWorkReceivedSource.next(args);\n }\n\n broadcastNewAnnotationReceived(annotation: Annotation): void {\n this.newAnnotationReceivedSource.next(annotation);\n }\n\n subscribeToTeacherWorkgroupTopic() {\n this.rxStomp\n .watch(`/topic/workgroup/${this.configService.getWorkgroupId()}`)\n .subscribe((message: Message) => {\n const body = JSON.parse(message.body);\n if (body.type === 'notification') {\n this.NotificationService.addNotification(JSON.parse(body.content));\n }\n });\n }\n\n pauseScreens(periodId: number): void {\n this.rxStomp.publish({ destination: `/app/pause/${this.runId}/${periodId}` });\n }\n\n unPauseScreens(periodId: number): void {\n this.rxStomp.publish({ destination: `/app/unpause/${this.runId}/${periodId}` });\n }\n\n sendNodeToClass(periodId: number, node: any) {\n this.rxStomp.publish({\n destination: `/app/api/teacher/run/${this.runId}/node-to-period/${periodId}`,\n body: JSON.stringify(node)\n });\n }\n\n private subscribeToClassroomTopics(): void {\n for (const period of this.configService.getPeriods()) {\n this.rxStomp\n .watch(`/topic/classroom/${this.configService.getRunId()}/${period.periodId}`)\n .subscribe((message: Message) => {\n const body = JSON.parse(message.body);\n if (body.type === 'newWorkgroupJoinedRun') {\n this.configService.retrieveConfig(\n `/api/config/classroomMonitor/${this.configService.getRunId()}`\n );\n }\n });\n }\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "AchievementService", + "type": "AchievementService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "classroomStatusService", + "type": "ClassroomStatusService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "NotificationService", + "type": "NotificationService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 20, + "jsdoctags": [ + { + "name": "AchievementService", + "type": "AchievementService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "classroomStatusService", + "type": "ClassroomStatusService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "NotificationService", + "type": "NotificationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "type": "injectable" + }, + { + "name": "TeacherWorkService", + "id": "injectable-TeacherWorkService-63565cda91d8a9983fc892d6b8968fcf6ec99771230547e2bf004ea9570ae74a0f877d6905f170279e082f4ce596df4b1edd85559c584ae1d8320784441fcb99", + "file": "src/assets/wise5/services/teacherWorkService.ts", + "properties": [], + "methods": [ + { + "name": "saveWork", + "args": [ + { + "name": "work", + "type": "ComponentState", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 11, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "work", + "type": "ComponentState", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { ComponentState } from '../../../app/domain/componentState';\nimport { ConfigService } from './configService';\n\n@Injectable()\nexport class TeacherWorkService {\n constructor(private configService: ConfigService, private http: HttpClient) {}\n\n saveWork(work: ComponentState): Observable {\n return this.http.post(\n `/api/teacher/run/${this.configService.getRunId()}/work`,\n work\n );\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 8, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "type": "injectable" + }, + { + "name": "TranscribeService", + "id": "injectable-TranscribeService-814e60ce430b6efe363d49d12f4277e218a539fb98617ba23272d9a036fa2e35e1fc3ff5d31c6dc2e2d0e0516149adf7b8160b24fb1f2dfa2cf601bf5d69f17a", + "file": "src/assets/wise5/services/transcribeService.ts", + "properties": [ + { + "name": "allLanguages", + "defaultValue": "[\n { code: 'zh-CN', name: $localize`Chinese (Simplified)` },\n { code: 'en-US', name: $localize`English` },\n { code: 'fr-FR', name: $localize`French` },\n { code: 'de-DE', name: $localize`German` },\n { code: 'it-IT', name: $localize`Italian` },\n { code: 'ja-JP', name: $localize`Japanese` },\n { code: 'ko-KR', name: $localize`Korean` },\n { code: 'pt-BR', name: $localize`Portuguese (Brazilian)` },\n { code: 'es-US', name: $localize`Spanish` }\n ]", + "deprecated": false, + "deprecationMessage": "", + "type": "Language[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 29, + "modifierKind": [ + 123 + ] + }, + { + "name": "languages", + "deprecated": false, + "deprecationMessage": "", + "type": "Language[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 40, + "modifierKind": [ + 148 + ] + }, + { + "name": "microphoneStream", + "defaultValue": "undefined", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 41, + "modifierKind": [ + 123 + ] + }, + { + "name": "recording", + "defaultValue": "this.recordingSignal.asReadonly()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 43, + "modifierKind": [ + 148 + ] + }, + { + "name": "recordingSignal", + "defaultValue": "signal(false)", + "deprecated": false, + "deprecationMessage": "", + "type": "WritableSignal", + "indexKey": "", + "optional": false, + "description": "", + "line": 42, + "modifierKind": [ + 123 + ] + }, + { + "name": "SAMPLE_RATE", + "defaultValue": "44100", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 27, + "modifierKind": [ + 123 + ] + }, + { + "name": "selectedLanguage", + "defaultValue": "this.selectedLanguageSignal.asReadonly()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 48, + "modifierKind": [ + 148 + ] + }, + { + "name": "selectedLanguageSignal", + "defaultValue": "signal({\n code: null,\n name: null\n })", + "deprecated": false, + "deprecationMessage": "", + "type": "WritableSignal", + "indexKey": "", + "optional": false, + "description": "", + "line": 44, + "modifierKind": [ + 123 + ] + }, + { + "name": "transcribeClient", + "defaultValue": "undefined", + "deprecated": false, + "deprecationMessage": "", + "type": "TranscribeStreamingClient", + "indexKey": "", + "optional": false, + "description": "", + "line": 49, + "modifierKind": [ + 123 + ] + } + ], + "methods": [ + { + "name": "createMicrophoneStream", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 98, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123, + 134 + ] + }, + { + "name": "createTranscribeClient", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 87, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "encodePCMChunk", + "args": [ + { + "name": "chunk", + "type": "Buffer", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Buffer", + "typeParameters": [], + "line": 137, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "chunk", + "type": "Buffer", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getAudioStream", + "args": [], + "optional": false, + "returnType": "AsyncIterable", + "typeParameters": [], + "line": 125, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123, + 134 + ] + }, + { + "name": "processTranscriptResult", + "args": [ + { + "name": "result", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "callback", + "type": "function", + "deprecated": false, + "deprecationMessage": "", + "function": [ + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ] + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 157, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "result", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "callback", + "type": "function", + "deprecated": false, + "deprecationMessage": "", + "function": [ + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "processTranscriptResultStreamEvent", + "args": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "callback", + "type": "function", + "deprecated": false, + "deprecationMessage": "", + "function": [ + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ] + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 149, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "callback", + "type": "function", + "deprecated": false, + "deprecationMessage": "", + "function": [ + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setSelectedLanguage", + "args": [ + { + "name": "language", + "type": "Language", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 168, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "language", + "type": "Language", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "startRecording", + "args": [ + { + "name": "languageCode", + "type": "LanguageCode", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "callback", + "type": "function", + "deprecated": false, + "deprecationMessage": "", + "function": [ + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ] + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 62, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ], + "jsdoctags": [ + { + "name": "languageCode", + "type": "LanguageCode", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "callback", + "type": "function", + "deprecated": false, + "deprecationMessage": "", + "function": [ + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "startStreaming", + "args": [ + { + "name": "languageCode", + "type": "LanguageCode", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "callback", + "type": "function", + "deprecated": false, + "deprecationMessage": "", + "function": [ + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ] + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 108, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123, + 134 + ], + "jsdoctags": [ + { + "name": "languageCode", + "type": "LanguageCode", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "callback", + "type": "function", + "deprecated": false, + "deprecationMessage": "", + "function": [ + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "stopRecording", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 74, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Injectable, WritableSignal, signal } from '@angular/core';\nimport { CognitoIdentityClient } from '@aws-sdk/client-cognito-identity';\nimport { fromCognitoIdentityPool } from '@aws-sdk/credential-provider-cognito-identity';\nimport {\n AudioStream,\n LanguageCode,\n TranscribeStreamingClient\n} from '@aws-sdk/client-transcribe-streaming';\nimport MicrophoneStream from 'microphone-stream';\nimport { StartStreamTranscriptionCommand } from '@aws-sdk/client-transcribe-streaming';\nimport { Buffer } from 'buffer';\nimport * as process from 'process';\nimport { ConfigService } from './configService';\nimport { ProjectService } from './projectService';\n\nwindow.process = process;\n// @ts-ignore\nwindow.Buffer = Buffer;\n\nexport interface Language {\n code: LanguageCode;\n name: string;\n}\n\n@Injectable()\nexport class TranscribeService {\n private SAMPLE_RATE = 44100;\n\n private allLanguages: Language[] = [\n { code: 'zh-CN', name: $localize`Chinese (Simplified)` },\n { code: 'en-US', name: $localize`English` },\n { code: 'fr-FR', name: $localize`French` },\n { code: 'de-DE', name: $localize`German` },\n { code: 'it-IT', name: $localize`Italian` },\n { code: 'ja-JP', name: $localize`Japanese` },\n { code: 'ko-KR', name: $localize`Korean` },\n { code: 'pt-BR', name: $localize`Portuguese (Brazilian)` },\n { code: 'es-US', name: $localize`Spanish` }\n ];\n readonly languages: Language[];\n private microphoneStream = undefined;\n private recordingSignal: WritableSignal = signal(false);\n readonly recording = this.recordingSignal.asReadonly();\n private selectedLanguageSignal: WritableSignal = signal({\n code: null,\n name: null\n });\n readonly selectedLanguage = this.selectedLanguageSignal.asReadonly();\n private transcribeClient: TranscribeStreamingClient = undefined;\n\n constructor(private configService: ConfigService, private projectService: ProjectService) {\n const { defaultLanguage, supportedLanguages } = this.projectService.project.speechToText;\n this.selectedLanguageSignal.set({\n code: defaultLanguage,\n name: this.allLanguages.find((language) => language.code === defaultLanguage).name\n });\n this.languages = this.allLanguages.filter((language) =>\n supportedLanguages.includes(language.code)\n );\n }\n\n async startRecording(\n languageCode: LanguageCode,\n callback: (text: string) => void\n ): Promise {\n if (this.microphoneStream || this.transcribeClient) {\n this.stopRecording();\n }\n this.createTranscribeClient();\n this.createMicrophoneStream();\n return await this.startStreaming(languageCode, callback);\n }\n\n stopRecording(): void {\n if (this.microphoneStream) {\n this.microphoneStream.stop();\n this.microphoneStream.destroy();\n this.microphoneStream = undefined;\n }\n if (this.transcribeClient) {\n this.transcribeClient.destroy();\n this.transcribeClient = undefined;\n }\n this.recordingSignal.set(false);\n }\n\n private createTranscribeClient(): void {\n const awsRegion = this.configService.getConfigParam('speechToTextAWSRegion');\n this.transcribeClient = new TranscribeStreamingClient({\n region: awsRegion,\n credentials: fromCognitoIdentityPool({\n client: new CognitoIdentityClient({ region: awsRegion }),\n identityPoolId: this.configService.getConfigParam('speechToTextAWSIdentityPoolId')\n })\n });\n }\n\n private async createMicrophoneStream(): Promise {\n this.microphoneStream = new MicrophoneStream();\n this.microphoneStream.setStream(\n await window.navigator.mediaDevices.getUserMedia({\n video: false,\n audio: true\n })\n );\n }\n\n private async startStreaming(\n languageCode: LanguageCode,\n callback: (text: string) => void\n ): Promise {\n const command = new StartStreamTranscriptionCommand({\n LanguageCode: languageCode,\n MediaEncoding: 'pcm',\n MediaSampleRateHertz: this.SAMPLE_RATE,\n AudioStream: this.getAudioStream()\n });\n this.recordingSignal.set(true);\n const data = await this.transcribeClient.send(command);\n for await (const event of data.TranscriptResultStream) {\n this.processTranscriptResultStreamEvent(event, callback);\n }\n }\n\n private async *getAudioStream(): AsyncIterable {\n for await (const chunk of this.microphoneStream) {\n if (chunk.length <= this.SAMPLE_RATE) {\n yield {\n AudioEvent: {\n AudioChunk: this.encodePCMChunk(chunk)\n }\n };\n }\n }\n }\n\n private encodePCMChunk(chunk: Buffer): Buffer {\n const input = MicrophoneStream.toRaw(chunk);\n let offset = 0;\n const buffer = new ArrayBuffer(input.length * 2);\n const view = new DataView(buffer);\n for (let i = 0; i < input.length; i++, offset += 2) {\n const s = Math.max(-1, Math.min(1, input[i]));\n view.setInt16(offset, s < 0 ? s * 0x8000 : s * 0x7fff, true);\n }\n return Buffer.from(buffer);\n }\n\n private processTranscriptResultStreamEvent(event: any, callback: (text: string) => void): void {\n for (const result of event.TranscriptEvent.Transcript.Results || []) {\n if (result.IsPartial === false) {\n this.processTranscriptResult(result, callback);\n }\n }\n }\n\n private processTranscriptResult(result: any, callback: (text: string) => void): void {\n const noOfResults = result.Alternatives[0].Items.length;\n for (let i = 0; i < noOfResults; i++) {\n let text = result.Alternatives[0].Items[i].Content;\n if (![',', '.', '?', '!', ':', ';'].includes(text)) {\n text = ' ' + text;\n }\n callback(text);\n }\n }\n\n setSelectedLanguage(language: Language): void {\n this.selectedLanguageSignal.set(language);\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 49, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "type": "injectable" + }, + { + "name": "UpdateWorkgroupService", + "id": "injectable-UpdateWorkgroupService-58150b086d9aa3ef03f2af66420be0f66c64caab7e7ce7e7dd70dc3ea50a5fc9f4b4680d85c854de050614984d4bfc49bb4ea5423b6e753fa9474c7be77e7608", + "file": "src/app/services/updateWorkgroupService.ts", + "properties": [], + "methods": [ + { + "name": "moveMember", + "args": [ + { + "name": "userId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "workgroupIdTo", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 16, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nMove student to a workgroup\n", + "description": "

Move student to a workgroup

\n", + "jsdoctags": [ + { + "name": { + "pos": 391, + "end": 397, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "userId" + }, + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 385, + "end": 390, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

Student User ID

\n" + }, + { + "name": { + "pos": 426, + "end": 439, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "workgroupIdTo" + }, + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 420, + "end": 425, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

Workgroup ID to move student to

\n" + }, + { + "tagName": { + "pos": 478, + "end": 484, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

Observable of move student response

\n" + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { ConfigService } from '../../assets/wise5/services/configService';\nimport { Observable } from 'rxjs';\n\n@Injectable()\nexport class UpdateWorkgroupService {\n constructor(private configService: ConfigService, private http: HttpClient) {}\n\n /**\n * Move student to a workgroup\n * @param userId Student User ID\n * @param workgroupIdTo Workgroup ID to move student to\n * @return Observable of move student response\n */\n moveMember(userId: number, workgroupIdTo: number): Observable {\n return this.http.post(\n `/api/teacher/run/${this.configService.getRunId()}/workgroup/move-user/${userId}`,\n {\n workgroupIdTo: workgroupIdTo\n }\n );\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 7, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "type": "injectable" + }, + { + "name": "UserService", + "id": "injectable-UserService-606356383acd2dcad28133c095959b2a09da344dabbac6fc663f0e88e2545835368bde9d35f434982043b2f99993a21be78997aa5efdc2be727756159c3efa40", + "file": "src/app/services/user.service.ts", + "properties": [ + { + "name": "changePasswordUrl", + "defaultValue": "'/api/user/password'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "modifierKind": [ + 123 + ] + }, + { + "name": "checkAuthenticationUrl", + "defaultValue": "'/api/user/check-authentication'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "modifierKind": [ + 123 + ] + }, + { + "name": "checkGoogleUserExistsUrl", + "defaultValue": "'/api/google-user/check-user-exists'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 123 + ] + }, + { + "name": "checkGoogleUserMatchesUrl", + "defaultValue": "'/api/google-user/check-user-matches'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "modifierKind": [ + 123 + ] + }, + { + "name": "contactUrl", + "defaultValue": "'/api/contact'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 21, + "modifierKind": [ + 123 + ] + }, + { + "name": "googleUserUrl", + "defaultValue": "'/api/google-user/get-user'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "modifierKind": [ + 123 + ] + }, + { + "name": "isAuthenticated", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 23 + }, + { + "name": "languagesUrl", + "defaultValue": "'/api/user/languages'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 20, + "modifierKind": [ + 123 + ] + }, + { + "name": "redirectUrl", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 24 + }, + { + "name": "unlinkGoogleAccountUrl", + "defaultValue": "'/api/google-user/unlink-account'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 22, + "modifierKind": [ + 123 + ] + }, + { + "name": "user$", + "defaultValue": "new BehaviorSubject(null)", + "deprecated": false, + "deprecationMessage": "", + "type": "BehaviorSubject", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "modifierKind": [ + 123 + ] + }, + { + "name": "userUrl", + "defaultValue": "'/api/user/info'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "modifierKind": [ + 123 + ] + } + ], + "methods": [ + { + "name": "authenticate", + "args": [ + { + "name": "credentials", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "callback", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 103, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "credentials", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "callback", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "changePassword", + "args": [ + { + "name": "oldPassword", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "newPassword", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 167, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "oldPassword", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "newPassword", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "checkAuthentication", + "args": [ + { + "name": "username", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "password", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 95, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "username", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "password", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "generateContactMessageParams", + "args": [ + { + "name": "name", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "email", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "teacherUsername", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "issueType", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "summary", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "description", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "runId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "userAgent", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "recaptchaResponse", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 225, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "name", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "email", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "teacherUsername", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "issueType", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "summary", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "description", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "runId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "userAgent", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "recaptchaResponse", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getLanguages", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 175, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getRedirectUrl", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 126, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getRoles", + "args": [], + "optional": false, + "returnType": "string[]", + "typeParameters": [], + "line": 71, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getUser", + "args": [], + "optional": false, + "returnType": "BehaviorSubject", + "typeParameters": [], + "line": 31, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getUserByGoogleId", + "args": [ + { + "name": "googleUserId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 161, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "googleUserId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getUserId", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 35, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isAdmin", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 59, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isGoogleIdCorrect", + "args": [ + { + "name": "googleUserId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "userId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 143, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "googleUserId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "userId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isGoogleIdExists", + "args": [ + { + "name": "googleUserId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 138, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "googleUserId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isGoogleUser", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 75, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isResearcher", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 55, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isRole", + "args": [ + { + "name": "role", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 67, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "role", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isSignedIn", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 39, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isStudent", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 43, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isSurveyStudent", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 63, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isTeacher", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 47, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isTrustedAuthor", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 51, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "retrieveUser", + "args": [ + { + "name": "username", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "optional": true + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "username", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "optional": true, + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "retrieveUserPromise", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 79, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "sendContactMessage", + "args": [ + { + "name": "name", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "email", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "teacherUsername", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "issueType", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "summary", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "description", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "runId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "userAgent", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "recaptchaResponse", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 197, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "name", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "email", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "teacherUsername", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "issueType", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "summary", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "description", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "runId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "userAgent", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "recaptchaResponse", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "unlinkGoogleUser", + "args": [ + { + "name": "newPassword", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 150, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "newPassword", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "updateStudentUser", + "args": [ + { + "name": "language", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 192, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "language", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "updateTeacherUser", + "args": [ + { + "name": "displayName", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "email", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "city", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "state", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "country", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "schoolName", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "schoolLevel", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "language", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 180, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "displayName", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "email", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "city", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "state", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "country", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "schoolName", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "schoolLevel", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "language", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { BehaviorSubject, Observable } from 'rxjs';\nimport { ConfigService } from './config.service';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { HttpParams } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Student } from '../domain/student';\nimport { tap } from 'rxjs/operators';\nimport { Teacher } from '../domain/teacher';\nimport { User } from '../domain/user';\n\n@Injectable()\nexport class UserService {\n private userUrl = '/api/user/info';\n private user$: BehaviorSubject = new BehaviorSubject(null);\n private checkGoogleUserExistsUrl = '/api/google-user/check-user-exists';\n private checkGoogleUserMatchesUrl = '/api/google-user/check-user-matches';\n private googleUserUrl = '/api/google-user/get-user';\n private checkAuthenticationUrl = '/api/user/check-authentication';\n private changePasswordUrl = '/api/user/password';\n private languagesUrl = '/api/user/languages';\n private contactUrl = '/api/contact';\n private unlinkGoogleAccountUrl = '/api/google-user/unlink-account';\n isAuthenticated = false;\n redirectUrl: string; // redirect here after logging in\n\n constructor(\n private configService: ConfigService,\n private http: HttpClient\n ) {}\n\n getUser(): BehaviorSubject {\n return this.user$;\n }\n\n getUserId(): number {\n return this.getUser().getValue().id;\n }\n\n isSignedIn(): boolean {\n return this.isAuthenticated;\n }\n\n isStudent(): boolean {\n return this.isRole('student');\n }\n\n isTeacher(): boolean {\n return this.isRole('teacher');\n }\n\n isTrustedAuthor(): boolean {\n return this.isRole('trustedAuthor');\n }\n\n isResearcher(): boolean {\n return this.isRole('researcher');\n }\n\n isAdmin(): boolean {\n return this.isRole('admin');\n }\n\n isSurveyStudent(): boolean {\n return this.isRole('surveyStudent');\n }\n\n private isRole(role: string): boolean {\n return this.isAuthenticated && this.getRoles().includes(role);\n }\n\n getRoles(): string[] {\n return this.getUser().getValue().roles;\n }\n\n isGoogleUser(): boolean {\n return this.getUser().getValue().isGoogleUser;\n }\n\n retrieveUserPromise(): Promise {\n return this.retrieveUser().toPromise();\n }\n\n retrieveUser(username?: string): Observable {\n const params = new HttpParams().set('username', username);\n return this.http.get(this.userUrl, { params: params }).pipe(\n tap((user) => {\n if (user != null && user.id != null) {\n this.isAuthenticated = true;\n }\n this.user$.next(user);\n })\n );\n }\n\n checkAuthentication(username, password) {\n const headers = new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded');\n let body = new HttpParams();\n body = body.set('username', username);\n body = body.set('password', password);\n return this.http.post(this.checkAuthenticationUrl, body, { headers: headers });\n }\n\n authenticate(credentials, callback) {\n const headers = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n };\n let httpParams = new HttpParams()\n .set('username', credentials.username)\n .set('password', credentials.password);\n if (credentials.recaptchaResponse != null) {\n httpParams = httpParams.set('recaptchaResponse', credentials.recaptchaResponse);\n }\n const logInURL = `${this.configService.getContextPath()}/api/j_acegi_security_check`;\n this.http\n .post(logInURL, httpParams, { headers: headers, responseType: 'text' })\n .subscribe((response) => {\n try {\n response = JSON.parse(response);\n } catch (e) {}\n this.retrieveUser(credentials.username).subscribe((user) => {\n return callback && callback(response);\n });\n });\n }\n\n getRedirectUrl(): string {\n if (this.redirectUrl) {\n return this.redirectUrl;\n } else if (this.isStudent()) {\n return '/student';\n } else if (this.isTeacher()) {\n return '/teacher';\n } else {\n return '/';\n }\n }\n\n isGoogleIdExists(googleUserId: string) {\n let params = new HttpParams().set('googleUserId', googleUserId);\n return this.http.get(this.checkGoogleUserExistsUrl, { params: params });\n }\n\n isGoogleIdCorrect(googleUserId: string, userId: string) {\n let params = new HttpParams();\n params = params.set('googleUserId', googleUserId);\n params = params.set('userId', userId);\n return this.http.get(this.checkGoogleUserMatchesUrl, { params: params });\n }\n\n unlinkGoogleUser(newPassword: string) {\n const headers = new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded');\n let body = new HttpParams();\n body = body.set('newPassword', newPassword);\n return this.http.post(this.unlinkGoogleAccountUrl, body, { headers: headers }).pipe(\n tap((user) => {\n this.user$.next(user);\n })\n );\n }\n\n getUserByGoogleId(googleUserId: string) {\n let params = new HttpParams();\n params = params.set('googleUserId', googleUserId);\n return this.http.get(this.googleUserUrl, { params: params });\n }\n\n changePassword(oldPassword, newPassword) {\n const headers = new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded');\n let body = new HttpParams();\n body = body.set('oldPassword', oldPassword);\n body = body.set('newPassword', newPassword);\n return this.http.post(this.changePasswordUrl, body, { headers: headers });\n }\n\n getLanguages() {\n const headers = new HttpHeaders({ 'Cache-Control': 'no-cache' });\n return this.http.get(this.languagesUrl, { headers: headers });\n }\n\n updateTeacherUser(displayName, email, city, state, country, schoolName, schoolLevel, language) {\n const user: Teacher = this.getUser().getValue();\n user.displayName = displayName;\n user.email = email;\n user.city = city;\n user.state = state;\n user.country = country;\n user.schoolName = schoolName;\n user.schoolLevel = schoolLevel;\n user.language = language;\n }\n\n updateStudentUser(language) {\n const user = this.getUser().getValue();\n user.language = language;\n }\n\n sendContactMessage(\n name,\n email,\n teacherUsername,\n issueType,\n summary,\n description,\n runId,\n projectId,\n userAgent,\n recaptchaResponse\n ) {\n const headers = new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded');\n const body = this.generateContactMessageParams(\n name,\n email,\n teacherUsername,\n issueType,\n summary,\n description,\n runId,\n projectId,\n userAgent,\n recaptchaResponse\n );\n return this.http.post(this.contactUrl, body, { headers: headers });\n }\n\n generateContactMessageParams(\n name,\n email,\n teacherUsername,\n issueType,\n summary,\n description,\n runId,\n projectId,\n userAgent,\n recaptchaResponse\n ) {\n let body = new HttpParams();\n body = body.set('name', name);\n if (email != null) {\n body = body.set('email', email);\n }\n if (teacherUsername != null) {\n body = body.set('teacherUsername', teacherUsername);\n }\n body = body.set('issueType', issueType);\n body = body.set('summary', summary);\n body = body.set('description', description);\n if (runId != null) {\n body = body.set('runId', runId);\n }\n if (projectId != null) {\n body = body.set('projectId', projectId);\n }\n body = body.set('userAgent', userAgent);\n if (recaptchaResponse != null) {\n body = body.set('recaptchaResponse', recaptchaResponse);\n }\n return body;\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 24, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "type": "injectable" + }, + { + "name": "UtilService", + "id": "injectable-UtilService-1056bb6281e314620741f50338d12c97db8ba9c326aae3c04d4f29ecc659ab4c9973672dceb4a7ff32694ddc138cd90d1fa3a92fde6582ed3b4db577ce5ad2a6", + "file": "src/app/services/util.service.ts", + "properties": [ + { + "name": "mobileMenuState$", + "defaultValue": "new BehaviorSubject(false)", + "deprecated": false, + "deprecationMessage": "", + "type": "BehaviorSubject", + "indexKey": "", + "optional": false, + "description": "", + "line": 8, + "modifierKind": [ + 123 + ] + } + ], + "methods": [ + { + "name": "getDaysInMonth", + "args": [ + { + "name": "month", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string[]", + "typeParameters": [], + "line": 28, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "month", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getFirstName", + "args": [ + { + "name": "fullName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 12, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "fullName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getLastName", + "args": [ + { + "name": "fullName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 16, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "fullName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getMobileMenuState", + "args": [], + "optional": false, + "returnType": "BehaviorSubject", + "typeParameters": [], + "line": 24, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "removeObjectArrayDuplicatesByProperty", + "args": [ + { + "name": "array", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "prop", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 54, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "array", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "prop", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "showMobileMenu", + "args": [ + { + "name": "state", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "true" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 20, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "state", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "true", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "sortByUsername", + "args": [ + { + "name": "obj1", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "obj2", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "1 | 0 | -1", + "typeParameters": [], + "line": 74, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "obj1", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "obj2", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "sortObjectArrayByProperty", + "args": [ + { + "name": "array", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "prop", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 60, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "array", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "prop", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class UtilService {\n private mobileMenuState$: BehaviorSubject = new BehaviorSubject(false);\n\n constructor() {}\n\n getFirstName(fullName: string): string {\n return fullName.substring(0, fullName.indexOf(' '));\n }\n\n getLastName(fullName: string): string {\n return fullName.substring(fullName.indexOf(' ') + 1);\n }\n\n showMobileMenu(state: boolean = true): void {\n this.mobileMenuState$.next(state);\n }\n\n getMobileMenuState(): BehaviorSubject {\n return this.mobileMenuState$;\n }\n\n getDaysInMonth(month): string[] {\n let numberOfDays = 0;\n switch (month) {\n case 2:\n numberOfDays = 29;\n break;\n case 4:\n case 6:\n case 9:\n case 11:\n numberOfDays = 30;\n break;\n default:\n numberOfDays = 31;\n }\n const days = [];\n for (let i = 0; i < numberOfDays; i++) {\n let day = (i + 1).toString();\n if (i < 9) {\n day = '0' + day;\n }\n days.push(day);\n }\n return days;\n }\n\n removeObjectArrayDuplicatesByProperty(array: any[], prop: string): any[] {\n return array.filter((obj, pos, arr) => {\n return arr.map((mapObj) => mapObj[prop]).indexOf(obj[prop]) === pos;\n });\n }\n\n sortObjectArrayByProperty(array: any[], prop: string): void {\n array.sort((a: any, b: any) => {\n const valA = a[prop].toLocaleLowerCase();\n const valB = b[prop].toLocaleLowerCase();\n if (valA < valB) {\n return -1;\n }\n if (valA > valB) {\n return 1;\n }\n return 0;\n });\n }\n\n sortByUsername(obj1: any, obj2: any) {\n const username1 = obj1.username.toLowerCase();\n const username2 = obj2.username.toLowerCase();\n if (username1 < username2) {\n return -1;\n } else if (username1 > username2) {\n return 1;\n } else {\n return 0;\n }\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [], + "line": 8 + }, + "extends": [], + "type": "injectable" + }, + { + "name": "VLEProjectService", + "id": "injectable-VLEProjectService-b1cb06acd1e71017dfbbb6af41804c6c525cef469e94b6eba39b51f81977297480302076c63f76cbbb890eb82d948444998a28beb8f5433c16bd5f390af225d3", + "file": "src/assets/wise5/vle/vleProjectService.ts", + "properties": [ + { + "name": "achievements", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 26, + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "additionalProcessingFunctionsMap", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 27, + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "allPaths", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "string[][]", + "indexKey": "", + "optional": false, + "description": "", + "line": 28, + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "applicationNodes", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 29, + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "currentLanguage", + "defaultValue": "this.currentLanguageSignal.asReadonly()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 31, + "modifierKind": [ + 148 + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "currentLanguageSignal", + "defaultValue": "signal(null)", + "deprecated": false, + "deprecationMessage": "", + "type": "WritableSignal", + "indexKey": "", + "optional": false, + "description": "", + "line": 30, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "flattenedProjectAsNodeIds", + "defaultValue": "null", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 33, + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "groupNodes", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 34, + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "idToNode", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 35, + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "idToOrder", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 36, + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "inactiveGroupNodes", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 37, + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "inactiveStepNodes", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 38, + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "metadata", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 39, + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "nodeCount", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 41, + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "nodeIdsInAnyBranch", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 44, + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "nodeIdToBranchPathLetter", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 45, + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "nodeIdToIsInBranchPath", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 43, + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "nodeIdToNumber", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 42, + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "nodes", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 40, + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "originalProject", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 46, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "project", + "defaultValue": "null", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 47, + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "projectParsed$", + "defaultValue": "this.projectParsedSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "Observable", + "indexKey": "", + "optional": false, + "description": "", + "line": 51, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "projectParsedSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 50, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "rootNode", + "defaultValue": "null", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 48, + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "transitions", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "Transition[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 49, + "inheritance": { + "file": "ProjectService" + } + } + ], + "methods": [ + { + "name": "addAdditionalProcessingFunction", + "args": [ + { + "name": "nodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "additionalProcessingFunction", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 121, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\n", + "description": "", + "jsdoctags": [ + { + "name": { + "pos": 3987, + "end": 3993, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3981, + "end": 3986, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id

\n" + }, + { + "name": { + "pos": 4018, + "end": 4029, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4012, + "end": 4017, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component id

\n" + }, + { + "name": { + "pos": 4059, + "end": 4087, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "additionalProcessingFunction" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4053, + "end": 4058, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the function to register for the node and component.

\n" + } + ] + }, + { + "name": "displayAnnotation", + "args": [ + { + "name": "annotation", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 56, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if we need to display the annotation to the student\n", + "description": "

Check if we need to display the annotation to the student

\n", + "jsdoctags": [ + { + "name": { + "pos": 1825, + "end": 1835, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "annotation" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 1819, + "end": 1824, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the annotation

\n" + }, + { + "tagName": { + "pos": 1857, + "end": 1864, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

whether we need to display the annotation to the student

\n", + "returnType": "boolean" + } + ] + }, + { + "name": "getConnectedComponentParams", + "args": [ + { + "name": "componentContent", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 42, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\n", + "description": "", + "jsdoctags": [ + { + "name": "componentContent", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": { + "pos": 1355, + "end": 1366, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 1349, + "end": 1354, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the connected component id

\n" + }, + { + "tagName": { + "pos": 1400, + "end": 1407, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

the params for the connected component

\n" + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getConnectedComponentsByNodeIdAndComponentId", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getExpectedCurrentScore", + "args": [ + { + "name": "scoreSequence", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 82, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "scoreSequence", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getExpectedPreviousScore", + "args": [ + { + "name": "scoreSequence", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 78, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "scoreSequence", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getNotificationByScore", + "args": [ + { + "name": "component", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "previousScore", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentScore", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 97, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\njust want to look at the currentScore\n", + "description": "

just want to look at the currentScore

\n", + "jsdoctags": [ + { + "name": { + "pos": 3072, + "end": 3081, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "component" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3066, + "end": 3071, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component content

\n" + }, + { + "name": { + "pos": 3116, + "end": 3129, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "previousScore" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3110, + "end": 3115, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the previousScore we want notification for, can be null, which means we\njust want to look at the currentScore

\n" + }, + { + "name": { + "pos": 3257, + "end": 3269, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "currentScore" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3251, + "end": 3256, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the currentScore we want notification for

\n" + }, + { + "tagName": { + "pos": 3318, + "end": 3325, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

the notification for the given score

\n" + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "isConnectedComponent", + "args": [ + { + "name": "nodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "connectedComponentId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 13, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\n", + "description": "", + "jsdoctags": [ + { + "name": { + "pos": 208, + "end": 214, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 202, + "end": 207, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id of the component

\n" + }, + { + "name": { + "pos": 256, + "end": 267, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 250, + "end": 255, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component that is listening for connected changes

\n" + }, + { + "name": { + "pos": 334, + "end": 354, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "connectedComponentId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 328, + "end": 333, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component that is broadcasting connected changes

\n" + }, + { + "tagName": { + "pos": 414, + "end": 421, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

whether the componentId is connected to the connectedComponentId

\n" + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "isMatchingConnectedComponent", + "args": [ + { + "name": "connectedComponent", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "id", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 34, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "id", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isScoreMatch", + "args": [ + { + "name": "score", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "expectedScore", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 86, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "score", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "expectedScore", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isScoreSequenceMatch", + "args": [ + { + "name": "scoreSequence", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "previousScore", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentScore", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 62, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "scoreSequence", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "previousScore", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentScore", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "retrieveScript", + "args": [ + { + "name": "scriptFilename", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 107, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "scriptFilename", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "addApplicationNode", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 143, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "addGroupNode", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 150, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "addNode", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 126, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "addNodeToGroupNode", + "args": [ + { + "name": "groupId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 157, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "groupId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "broadcastProjectParsed", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1812, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "calculateBranchPathNodeNumbers", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentActivityNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentStepNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "branchPath", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "branchPathNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "maxCurrentStepNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 1429, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentActivityNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentStepNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "branchPath", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "branchPathNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "maxCurrentStepNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "calculateComponentIdToHasWork", + "args": [ + { + "name": "components", + "type": "ComponentContent[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "literal type", + "typeParameters": [], + "line": 1257, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "components", + "type": "ComponentContent[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "calculateNodeNumberForBranchStartPoint", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentActivityNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentStepNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 1403, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentActivityNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentStepNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "calculateNodeNumberForLesson", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentActivityNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentStepNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "branchLetterCode", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 1557, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentActivityNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentStepNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "branchLetterCode", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "calculateNodeNumberForRegularStep", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentActivityNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentStepNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "branchLetterCode", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 1461, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentActivityNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentStepNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "branchLetterCode", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "calculateNodeNumberForRegularStepThatDoesNotHaveTransitions", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentActivityNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentStepNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "branchLetterCode", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 1520, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentActivityNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentStepNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "branchLetterCode", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "calculateNodeNumberForRegularStepThatHasTransitions", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentActivityNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentStepNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "branchLetterCode", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 1497, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentActivityNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentStepNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "branchLetterCode", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "calculateNodeNumberForStep", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentActivityNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentStepNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "branchLetterCode", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 1346, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentActivityNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentStepNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "branchLetterCode", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "calculateNodeNumbers", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1306, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCalculate the node numbers and set them into the nodeIdToNumber map\nIf the step is called \"1.5 View the Potential Energy\", then the node number is 1.5\n\nIf this is a branching step that is called \"1.5 B View the Potential Energy\", then the\nnode number is 1.5 B\n", + "description": "

Calculate the node numbers and set them into the nodeIdToNumber map\nIf the step is called "1.5 View the Potential Energy", then the node number is 1.5

\n

If this is a branching step that is called "1.5 B View the Potential Energy", then the\nnode number is 1.5 B

\n", + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "calculateNodeNumbersHelper", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentActivityNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentStepNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "branchLetterCode", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 1322, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nRecursively calculate the node numbers by traversing the project tree using transitions\n", + "description": "

Recursively calculate the node numbers by traversing the project tree using transitions

\n", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": { + "pos": 41535, + "end": 41541, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 41529, + "end": 41534, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the current node id we are on

\n" + }, + { + "name": { + "pos": 41584, + "end": 41605, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "currentActivityNumber" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 41578, + "end": 41583, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the current activity number

\n" + }, + { + "name": { + "pos": 41646, + "end": 41663, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "currentStepNumber" + }, + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 41640, + "end": 41645, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the current step number

\n" + }, + { + "name": { + "pos": 41700, + "end": 41716, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "branchLetterCode" + }, + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "pos": 41694, + "end": 41699, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

(optional) the character code for the branch letter e.g. 0=A, 1=B, etc.

\n" + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "calculateNodeOrder", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 265, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "calculateNodeOrderOfProject", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 261, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "clearProjectFields", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 70, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "componentHasWork", + "args": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 1252, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if a component generates work\n", + "description": "

Check if a component generates work

\n", + "jsdoctags": [ + { + "name": { + "pos": 39045, + "end": 39054, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "component" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 39039, + "end": 39044, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

check if this component generates work

\n" + }, + { + "tagName": { + "pos": 39100, + "end": 39106, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether the component generates work

\n" + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getAchievementByAchievementId", + "args": [ + { + "name": "achievementId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 1669, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet an achievement by the 10 character alphanumeric achievement id\n", + "description": "

Get an achievement by the 10 character alphanumeric achievement id

\n", + "jsdoctags": [ + { + "name": { + "pos": 52947, + "end": 52960, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "achievementId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 52941, + "end": 52946, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the 10 character alphanumeric achievement id

\n" + }, + { + "tagName": { + "pos": 53012, + "end": 53018, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

the achievement with the given achievement id

\n" + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getAchievementItems", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 1656, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the achievement items in the project\n", + "description": "

Get the achievement items in the project

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 52629, + "end": 52635, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

the achievement items

\n" + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getAchievements", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 1642, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet all the projectAchievements object in the project. The projectAchievements object\ncontains the isEnabled field and an array of items.\n", + "description": "

Get all the projectAchievements object in the project. The projectAchievements object\ncontains the isEnabled field and an array of items.

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 52325, + "end": 52331, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

the achievement object

\n" + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getActiveGroupNodes", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 247, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getAdditionalProcessingFunctions", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 1722, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nReturns an array of registered additionalProcessingFunctions for the specified node and\ncomponent\n", + "description": "

Returns an array of registered additionalProcessingFunctions for the specified node and\ncomponent

\n", + "jsdoctags": [ + { + "name": { + "pos": 54421, + "end": 54427, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 54415, + "end": 54420, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id

\n" + }, + { + "name": { + "pos": 54452, + "end": 54463, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 54446, + "end": 54451, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component id

\n" + }, + { + "tagName": { + "pos": 54487, + "end": 54494, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

an array of additionalProcessingFunctions

\n" + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getAllPaths", + "args": [ + { + "name": "pathSoFar", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "''" + }, + { + "name": "includeGroups", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "[][]", + "typeParameters": [], + "line": 854, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet all the possible paths through the project. This function\nrecursively calls itself to traverse the project depth first.\nin this array are referenced to make sure we don't loop back\non the path.\n", + "description": "

Get all the possible paths through the project. This function\nrecursively calls itself to traverse the project depth first.\nin this array are referenced to make sure we don't loop back\non the path.

\n", + "jsdoctags": [ + { + "name": { + "pos": 25709, + "end": 25718, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "pathSoFar" + }, + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 25703, + "end": 25708, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node ids in the path so far. the node ids\nin this array are referenced to make sure we don't loop back\non the path.

\n" + }, + { + "name": { + "pos": 25861, + "end": 25867, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "''", + "tagName": { + "pos": 25855, + "end": 25860, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id we want to get the paths from

\n" + }, + { + "name": { + "pos": 25922, + "end": 25935, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "includeGroups" + }, + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "pos": 25916, + "end": 25921, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

whether to include the group node ids in the paths

\n" + }, + { + "tagName": { + "pos": 25993, + "end": 25999, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

an array of paths. each path is an array of node ids.

\n" + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getBranches", + "args": [], + "optional": false, + "returnType": "Branch[]", + "typeParameters": [], + "line": 275, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getBranchesByBranchStartPointNodeId", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Branch[]", + "typeParameters": [], + "line": 1295, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet all the branches whose branch start point is the given node id\n", + "description": "

Get all the branches whose branch start point is the given node id

\n", + "jsdoctags": [ + { + "name": { + "pos": 40551, + "end": 40557, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 40545, + "end": 40550, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the branch start point

\n" + }, + { + "tagName": { + "pos": 40587, + "end": 40593, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

an array of branches that have the given branch start point

\n" + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getChildNodeIdsById", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string[]", + "typeParameters": [], + "line": 108, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getChoices", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 1156, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the choices of a Multiple Choice component.\n", + "description": "

Get the choices of a Multiple Choice component.

\n", + "jsdoctags": [ + { + "name": { + "pos": 36161, + "end": 36167, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 36155, + "end": 36160, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The node id.

\n" + }, + { + "name": { + "pos": 36193, + "end": 36204, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 36187, + "end": 36192, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The component id.

\n" + }, + { + "tagName": { + "pos": 36229, + "end": 36235, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

The choices from the component.

\n" + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getChoiceText", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "choiceIds", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string[]", + "typeParameters": [], + "line": 1168, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the choice text for the given choice ids of a multiple choice component.\n", + "description": "

Get the choice text for the given choice ids of a multiple choice component.

\n", + "jsdoctags": [ + { + "name": { + "pos": 36555, + "end": 36561, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 36549, + "end": 36554, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The node id of the component.

\n" + }, + { + "name": { + "pos": 36604, + "end": 36615, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 36598, + "end": 36603, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The component id of the component.

\n" + }, + { + "name": { + "pos": 36663, + "end": 36672, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "choiceIds" + }, + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 36657, + "end": 36662, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

An array of choice ids.

\n" + }, + { + "tagName": { + "pos": 36703, + "end": 36709, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

An array of choice text strings.

\n" + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getComponent", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "ComponentContent", + "typeParameters": [], + "line": 1089, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the component by node id and component id\n", + "description": "

Get the component by node id and component id

\n", + "jsdoctags": [ + { + "name": { + "pos": 34078, + "end": 34084, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 34072, + "end": 34077, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id

\n" + }, + { + "name": { + "pos": 34109, + "end": 34120, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 34103, + "end": 34108, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component id

\n" + }, + { + "tagName": { + "pos": 34144, + "end": 34151, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

the component or null if the nodeId or componentId are null or does not exist

\n" + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getComponents", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "ComponentContent[]", + "typeParameters": [], + "line": 1106, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the components in a node\ndoesn't exist in the project.\nif the node exists but doesn't have any components, returns an empty array.\n", + "description": "

Get the components in a node\ndoesn't exist in the project.\nif the node exists but doesn't have any components, returns an empty array.

\n", + "jsdoctags": [ + { + "name": { + "pos": 34557, + "end": 34563, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 34551, + "end": 34556, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id

\n" + }, + { + "tagName": { + "pos": 34582, + "end": 34589, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

an array of components or empty array if nodeId is null or\ndoesn't exist in the project.\nif the node exists but doesn't have any components, returns an empty array.

\n" + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getComponentType", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 1267, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getCriteriaArrayFromTransition", + "args": [ + { + "name": "transition", + "type": "Transition", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 1787, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "transition", + "type": "Transition", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getCurrentActivityNumber", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentActivityNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentStepNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "branchLetterCode", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 1375, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentActivityNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentStepNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "branchLetterCode", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getDefaultThemePath", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 798, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getDescendentIdsOfGroup", + "args": [ + { + "name": "group", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string[]", + "typeParameters": [], + "line": 631, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "group", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getFlattenedProjectAsNodeIds", + "args": [ + { + "name": "recalculate", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "true" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 824, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nFlatten the project to obtain a list of node ids\n", + "description": "

Flatten the project to obtain a list of node ids

\n", + "jsdoctags": [ + { + "name": { + "pos": 24721, + "end": 24732, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "recalculate" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "true", + "tagName": { + "pos": 24715, + "end": 24720, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

Whether to force recalculating the flattened node ids.

\n" + }, + { + "tagName": { + "pos": 24794, + "end": 24800, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

An array of the flattened node ids in the project.

\n" + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getGroupNodes", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 116, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getGroupNodesIdToOrder", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 368, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getGroups", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 181, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getGroupStartId", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 1183, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the start id of a group\n", + "description": "

Get the start id of a group

\n", + "jsdoctags": [ + { + "name": { + "pos": 37109, + "end": 37115, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 37103, + "end": 37108, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

get the start id of this group

\n" + }, + { + "tagName": { + "pos": 37153, + "end": 37160, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

the start id of the group

\n" + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getInactiveGroupNodes", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 185, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getInactiveNodes", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 742, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getInactiveStepNodes", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 194, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the inactive step nodes. This will include the inactive steps that\nare in an inactive group.\n", + "description": "

Get the inactive step nodes. This will include the inactive steps that\nare in an inactive group.

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 5688, + "end": 5694, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

An array of inactive step nodes.

\n" + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getLessonPaths", + "args": [ + { + "name": "pathSoFar", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "groupId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "includeGroups", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "allPaths", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1029, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "pathSoFar", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "groupId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "includeGroups", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "allPaths", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getLocale", + "args": [], + "optional": false, + "returnType": "ProjectLocale", + "typeParameters": [], + "line": 1863, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getMaxScoreForComponent", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 1142, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getMaxScoreForNode", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 1122, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the max score for the node\nif null, author/teacher has not set a max score for the node\n", + "description": "

Get the max score for the node\nif null, author/teacher has not set a max score for the node

\n", + "jsdoctags": [ + { + "name": { + "pos": 35049, + "end": 35055, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 35043, + "end": 35048, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id which can be a step or an activity

\n" + }, + { + "tagName": { + "pos": 35109, + "end": 35116, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

the max score for the node which can be null or a number\nif null, author/teacher has not set a max score for the node

\n" + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getNextNodeId", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 1625, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the next node after the specified node\n", + "description": "

Get the next node after the specified node

\n", + "jsdoctags": [ + { + "name": { + "pos": 51688, + "end": 51694, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 51682, + "end": 51687, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

get the node id that comes after this one

\n" + }, + { + "tagName": { + "pos": 51743, + "end": 51749, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

the node id that comes after

\n" + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getNode", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Node", + "typeParameters": [], + "line": 527, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getNodeById", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "project", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 506, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nReturns the node specified by the nodeId\nthe case when we want the node from another project such as when we are\nimporting a step from another project\nReturn null if nodeId param is null or the specified node does not exist in the project.\n", + "description": "

Returns the node specified by the nodeId\nthe case when we want the node from another project such as when we are\nimporting a step from another project\nReturn null if nodeId param is null or the specified node does not exist in the project.

\n", + "jsdoctags": [ + { + "name": { + "pos": 15436, + "end": 15442, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 15430, + "end": 15435, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

get the node with this node id

\n" + }, + { + "name": "project", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getNodeDepth", + "args": [ + { + "name": "nodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "val", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 592, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "val", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getNodeIdByOrder", + "args": [ + { + "name": "order", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 386, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "order", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getNodeOrderById", + "args": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 395, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getNodeOrderOfProject", + "args": [ + { + "name": "project", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 286, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the node order mappings of the project\nof nodes\n", + "description": "

Get the node order mappings of the project\nof nodes

\n", + "jsdoctags": [ + { + "name": { + "pos": 8360, + "end": 8367, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "project" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 8354, + "end": 8359, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the project JSOn

\n" + }, + { + "tagName": { + "pos": 8391, + "end": 8397, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

an object containing the idToOrder mapping and also the array\nof nodes

\n" + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getNodeOrderOfProjectHelper", + "args": [ + { + "name": "project", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "idToOrder", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "stepNumber", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodes", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 315, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nRecursively traverse the project to calculate the node order and step numbers\n", + "description": "

Recursively traverse the project to calculate the node order and step numbers

\n", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": { + "pos": 9079, + "end": 9086, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "project" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 9073, + "end": 9078, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the project JSON

\n" + }, + { + "name": { + "pos": 9116, + "end": 9120, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "node" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 9110, + "end": 9115, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the current node we are on

\n" + }, + { + "name": { + "pos": 9160, + "end": 9169, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "idToOrder" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 9154, + "end": 9159, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the mapping of node id to item

\n" + }, + { + "name": { + "pos": 9213, + "end": 9223, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "stepNumber" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 9207, + "end": 9212, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the current step number

\n" + }, + { + "name": { + "pos": 9260, + "end": 9265, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodes" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 9254, + "end": 9259, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the array of nodes

\n" + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getNodePositionAndTitle", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 554, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the node position and title\n", + "description": "

Get the node position and title

\n", + "jsdoctags": [ + { + "name": { + "pos": 16908, + "end": 16914, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 16902, + "end": 16907, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id

\n" + }, + { + "tagName": { + "pos": 16933, + "end": 16940, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

the node position and title, e.g. "1.1 Introduction"

\n" + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getNodePositionById", + "args": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 379, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getNodes", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 104, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getNodesByToNodeId", + "args": [ + { + "name": "toNodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 736, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet nodes that have a transition to the given node id\n", + "description": "

Get nodes that have a transition to the given node id

\n", + "jsdoctags": [ + { + "name": { + "pos": 22028, + "end": 22036, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "toNodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 22022, + "end": 22027, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id

\n" + }, + { + "tagName": { + "pos": 22055, + "end": 22062, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

an array of node objects that transition to the given node id

\n" + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getNodeTitle", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 541, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nReturns the title of the node with the nodeId\nReturn null if nodeId param is null or the specified node does not exist in the project.\n", + "description": "

Returns the title of the node with the nodeId\nReturn null if nodeId param is null or the specified node does not exist in the project.

\n", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getOrCalculateAllPaths", + "args": [], + "optional": false, + "returnType": "[][]", + "typeParameters": [], + "line": 696, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getOrderById", + "args": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 361, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nReturns the order of the given node id in the project. Returns null if no node with id exists.\n", + "description": "

Returns the order of the given node id in the project. Returns null if no node with id exists.

\n", + "jsdoctags": [ + { + "name": { + "pos": 10508, + "end": 10510, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "id" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 10502, + "end": 10507, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

String node id

\n" + }, + { + "tagName": { + "pos": 10532, + "end": 10538, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

Number order of the given node id in the project

\n" + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getOrderedGroupNodes", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 120, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getOriginalProject", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 790, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getParentGroup", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "''" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 567, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "''", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getParentGroupId", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "''" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 584, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "''", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getPeerGrouping", + "args": [ + { + "name": "tag", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "PeerGrouping", + "typeParameters": [], + "line": 1823, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "tag", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getPeerGroupings", + "args": [], + "optional": false, + "returnType": "PeerGrouping[]", + "typeParameters": [], + "line": 1816, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getPreviousNodeId", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 1879, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getProject", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 61, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getProjectMetadata", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 100, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getProjectRootNode", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 1827, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getProjectScript", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 1616, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getProjectTitle", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 95, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getReferenceComponent", + "args": [ + { + "name": "content", + "type": "QuestionBank | DynamicPrompt", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Component", + "typeParameters": [], + "line": 1857, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "content", + "type": "QuestionBank | DynamicPrompt", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getReferenceComponentForField", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "fieldName", + "type": "\"dynamicPrompt\" | \"questionBank\"", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "ReferenceComponent", + "typeParameters": [], + "line": 1848, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the reference component from a field in the component content\nIn this example the fieldName would be 'dynamicPrompt'\n{\n id: 'component2',\n dynamicPrompt: {\n referenceComponent: {\n nodeId: 'node1',\n componentId: 'component1'\n }\n }\n}\n", + "description": "

Get the reference component from a field in the component content\nIn this example the fieldName would be 'dynamicPrompt'\n{\n id: 'component2',\n dynamicPrompt: {\n referenceComponent: {\n nodeId: 'node1',\n componentId: 'component1'\n }\n }\n}

\n", + "jsdoctags": [ + { + "name": { + "pos": 57501, + "end": 57507, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 57495, + "end": 57500, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id

\n" + }, + { + "name": { + "pos": 57532, + "end": 57543, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 57526, + "end": 57531, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component id

\n" + }, + { + "name": { + "pos": 57573, + "end": 57582, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "fieldName" + }, + "type": "\"dynamicPrompt\" | \"questionBank\"", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 57567, + "end": 57572, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the name of the object that contains a referenceComponent object\nIn this example the fieldName would be 'dynamicPrompt'\n{\nid: 'component2',\ndynamicPrompt: {\nreferenceComponent: {\nnodeId: 'node1',\ncomponentId: 'component1'\n}\n}\n}

\n" + }, + { + "tagName": { + "pos": 57893, + "end": 57900, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

the referenceComponent object from a component

\n" + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getRootNode", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 604, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getSpaces", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 1686, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getSpeechToTextSettings", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 1875, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getStartGroupId", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 657, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getStartNodeId", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 649, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getStepNodeIds", + "args": [], + "optional": false, + "returnType": "string[]", + "typeParameters": [], + "line": 1077, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getStepPaths", + "args": [ + { + "name": "pathSoFar", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "includeGroups", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "allPaths", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 864, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "pathSoFar", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "includeGroups", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "allPaths", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getStyle", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 91, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getTagFromParams", + "args": [ + { + "name": "params", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 1804, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "params", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getTagFromSingleCriteria", + "args": [ + { + "name": "singleCriteria", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 1795, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "singleCriteria", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getTags", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 1754, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getTagsFromNode", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 1763, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getThemePath", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 794, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getThemeSettings", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 805, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nReturns the theme settings for the current project\n", + "description": "

Returns the theme settings for the current project

\n", + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getTransitionsByFromNodeId", + "args": [ + { + "name": "fromNodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Transition[]", + "typeParameters": [], + "line": 727, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the transitions for a node\n", + "description": "

Get the transitions for a node

\n", + "jsdoctags": [ + { + "name": { + "pos": 21709, + "end": 21719, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "fromNodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 21703, + "end": 21708, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node to get transitions from

\n" + }, + { + "tagName": { + "pos": 21759, + "end": 21766, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

an array of transitions

\n", + "returnType": "unknown" + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "getTransitionsFromNode", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Transition[]", + "typeParameters": [], + "line": 1778, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "hasAdditionalProcessingFunctions", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 1711, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nReturns true iff the specified node and component has any registered\nadditionalProcessingFunctions\n", + "description": "

Returns true iff the specified node and component has any registered\nadditionalProcessingFunctions

\n", + "jsdoctags": [ + { + "name": { + "pos": 54037, + "end": 54043, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 54031, + "end": 54036, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id

\n" + }, + { + "name": { + "pos": 54068, + "end": 54079, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 54062, + "end": 54067, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component id

\n" + }, + { + "tagName": { + "pos": 54103, + "end": 54110, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

true/false

\n" + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "injectAssetPaths", + "args": [ + { + "name": "content", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 413, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nReplace relative asset paths with absolute paths\ne.g.\nassets/myimage.jpg\nwill be replaced with\nhttp://wise.berkeley.edu/curriculum/123456/assets/myimage.jpg\nbut with relative asset paths replaced with absolute paths\n", + "description": "

Replace relative asset paths with absolute paths\ne.g.\nassets/myimage.jpg\nwill be replaced with\nhttp://wise.berkeley.edu/curriculum/123456/assets/myimage.jpg\nbut with relative asset paths replaced with absolute paths

\n", + "jsdoctags": [ + { + "name": { + "pos": 11750, + "end": 11757, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "content" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 11744, + "end": 11749, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

a string or JSON object

\n" + }, + { + "tagName": { + "pos": 11788, + "end": 11794, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

the same type of object that was passed in as the content\nbut with relative asset paths replaced with absolute paths

\n" + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "instantiateDefaults", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 252, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "isActive", + "args": [ + { + "name": "target", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 1212, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if the target is active\n", + "description": "

Check if the target is active

\n", + "jsdoctags": [ + { + "name": { + "pos": 37925, + "end": 37931, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "target" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 37919, + "end": 37924, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id or inactiveNodes/inactiveGroups to check

\n" + }, + { + "tagName": { + "pos": 37991, + "end": 37998, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

whether the target is active

\n" + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "isApplicationNode", + "args": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 176, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "isBranchMergePoint", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 1286, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if a node is a branch end point\n", + "description": "

Check if a node is a branch end point

\n", + "jsdoctags": [ + { + "name": { + "pos": 40227, + "end": 40233, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 40221, + "end": 40226, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

look for a branch with this end node id

\n" + }, + { + "tagName": { + "pos": 40280, + "end": 40286, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether the node is a branch end point

\n" + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "isBranchStartPoint", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 1277, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if a node is a branch start point\n", + "description": "

Check if a node is a branch start point

\n", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": { + "pos": 39918, + "end": 39924, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 39912, + "end": 39917, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

look for a branch with this start node id

\n" + }, + { + "tagName": { + "pos": 39973, + "end": 39979, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether the node is a branch start point

\n" + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "isDefaultLocale", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 1871, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "isFirstStepInLesson", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 1895, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "isGroupNode", + "args": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 171, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "isNodeActive", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 1220, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if a node is active.\n", + "description": "

Check if a node is active.

\n", + "jsdoctags": [ + { + "name": { + "pos": 38226, + "end": 38232, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 38220, + "end": 38225, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the id of the node

\n" + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "isNodeAfterGroup", + "args": [ + { + "name": "groupId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 708, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\n", + "description": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": { + "pos": 21097, + "end": 21104, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "groupId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 21091, + "end": 21096, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "" + }, + { + "name": { + "pos": 21117, + "end": 21123, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 21111, + "end": 21116, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The node id of a step or group.

\n" + }, + { + "tagName": { + "pos": 21162, + "end": 21169, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

True iff nodeId comes after groupId.

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "isNodeDescendentOfGroup", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "group", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 620, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "group", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "isNodeDirectChildOfGroup", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "group", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 609, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "group", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "isNodeIdAfter", + "args": [ + { + "name": "nodeId1", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId2", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 671, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if a node id comes after another node id in the project.\n", + "description": "

Check if a node id comes after another node id in the project.

\n", + "jsdoctags": [ + { + "name": { + "pos": 20006, + "end": 20013, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId1" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 20000, + "end": 20005, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The node id of a step or group.

\n" + }, + { + "name": { + "pos": 20058, + "end": 20065, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId2" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 20052, + "end": 20057, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The node id of a step or group.

\n" + }, + { + "tagName": { + "pos": 20104, + "end": 20111, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

True iff nodeId2 comes after nodeId1.

\n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "isSpaceExists", + "args": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 1694, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "isStartNodeId", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 661, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "loadInactiveNodes", + "args": [ + { + "name": "nodes", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1191, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nLoad the inactive nodes\n", + "description": "

Load the inactive nodes

\n", + "jsdoctags": [ + { + "name": { + "pos": 37334, + "end": 37339, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodes" + }, + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 37328, + "end": 37333, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the inactive nodes

\n" + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "loadNodeIdsInAnyBranch", + "args": [ + { + "name": "branches", + "type": "Branch[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 219, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "branches", + "type": "Branch[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "loadNodes", + "args": [ + { + "name": "nodes", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 198, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodes", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "makeProjectRequest", + "args": [], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 784, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "nodeHasTransitionToNodeId", + "args": [ + { + "name": "node", + "type": "Node", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "toNodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 752, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if a node has a transition to the given nodeId.\n", + "description": "

Check if a node has a transition to the given nodeId.

\n", + "jsdoctags": [ + { + "name": { + "pos": 22475, + "end": 22479, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "node" + }, + "type": "Node", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 22469, + "end": 22474, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The node to check.

\n" + }, + { + "name": { + "pos": 22511, + "end": 22519, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "toNodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 22505, + "end": 22510, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

We are looking for a transition to this node id.

\n" + }, + { + "tagName": { + "pos": 22575, + "end": 22582, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

Whether the node has a transition to the given nodeId.

\n" + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "nodeHasWork", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 1234, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if a node generates work by looking at all of its components\n", + "description": "

Check if a node generates work by looking at all of its components

\n", + "jsdoctags": [ + { + "name": { + "pos": 38536, + "end": 38542, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 38530, + "end": 38535, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id

\n" + }, + { + "tagName": { + "pos": 38561, + "end": 38567, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether the node generates work

\n" + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "parseProject", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 227, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "pathIncludesNodesAndOneComesBeforeTwo", + "args": [ + { + "name": "path", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId1", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId2", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 688, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "path", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId1", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId2", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "replaceAssetPaths", + "args": [ + { + "name": "contentString", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 436, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nReplace the relative asset paths with absolute paths\nwith absolute asset paths\n", + "description": "

Replace the relative asset paths with absolute paths\nwith absolute asset paths

\n", + "jsdoctags": [ + { + "name": { + "pos": 12595, + "end": 12608, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "contentString" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 12589, + "end": 12594, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the content string

\n" + }, + { + "tagName": { + "pos": 12634, + "end": 12640, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

the content string with relative asset paths replaced\nwith absolute asset paths

\n" + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "replaceNode", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1726, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "retrieveProject", + "args": [], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 762, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nRetrieves the project JSON from Config.projectURL and returns it.\nIf Config.projectURL is undefined, returns null.\n", + "description": "

Retrieves the project JSON from Config.projectURL and returns it.\nIf Config.projectURL is undefined, returns null.

\n", + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "retrieveProjectWithoutParsing", + "args": [], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 773, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "setCurrentLanguage", + "args": [ + { + "name": "language", + "type": "Language", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1867, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "language", + "type": "Language", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "setIdToNode", + "args": [ + { + "name": "id", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "element", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 399, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "id", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "element", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "setLessonNodeNumber", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentActivityNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentStepNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 1598, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentActivityNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentStepNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "setProject", + "args": [ + { + "name": "project", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 65, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "project", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "setStartNodeId", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 653, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "setStepNodeNumber", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentActivityNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentStepNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "branchLetterCode", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1540, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentActivityNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentStepNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "branchLetterCode", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + }, + { + "name": "shouldIncludeInTotalScore", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 1202, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ProjectService" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "'use strict';\nimport { ProjectService } from '../services/projectService';\nimport { Injectable } from '@angular/core';\n\n@Injectable()\nexport class VLEProjectService extends ProjectService {\n /**\n * @param nodeId the node id of the component\n * @param componentId the component that is listening for connected changes\n * @param connectedComponentId the component that is broadcasting connected changes\n * @returns whether the componentId is connected to the connectedComponentId\n */\n isConnectedComponent(nodeId, componentId, connectedComponentId) {\n const connectedComponents = this.getConnectedComponentsByNodeIdAndComponentId(\n nodeId,\n componentId\n );\n for (const connectedComponent of connectedComponents) {\n if (this.isMatchingConnectedComponent(connectedComponent, connectedComponentId)) {\n return true;\n }\n }\n return false;\n }\n\n private getConnectedComponentsByNodeIdAndComponentId(nodeId: string, componentId: string): any[] {\n const component = this.getComponent(nodeId, componentId);\n if (component != null && component.connectedComponents != null) {\n return component.connectedComponents;\n }\n return [];\n }\n\n isMatchingConnectedComponent(connectedComponent, id) {\n return connectedComponent.id === id || connectedComponent.componentId === id;\n }\n\n /**\n * @param componentId the connected component id\n * @returns the params for the connected component\n */\n getConnectedComponentParams(componentContent, componentId) {\n for (const connectedComponent of componentContent.connectedComponents) {\n if (this.isMatchingConnectedComponent(connectedComponent, componentId)) {\n return connectedComponent;\n }\n }\n return null;\n }\n\n /**\n * Check if we need to display the annotation to the student\n * @param annotation the annotation\n * @returns {boolean} whether we need to display the annotation to the student\n */\n displayAnnotation(annotation) {\n const component = this.getComponent(annotation.nodeId, annotation.componentId);\n const componentService = this.componentServiceLookupService.getService(component.type);\n return componentService.displayAnnotation(component, annotation);\n }\n\n isScoreSequenceMatch(scoreSequence, previousScore, currentScore) {\n const previousScoreMatch = this.getExpectedPreviousScore(scoreSequence);\n const currentScoreMatch = this.getExpectedCurrentScore(scoreSequence);\n if (previousScore == null) {\n if (previousScoreMatch === '' && this.isScoreMatch(currentScore, currentScoreMatch)) {\n return true;\n }\n } else if (\n this.isScoreMatch(previousScore, previousScoreMatch) &&\n this.isScoreMatch(currentScore, currentScoreMatch)\n ) {\n return true;\n }\n return false;\n }\n\n getExpectedPreviousScore(scoreSequence) {\n return scoreSequence[0];\n }\n\n getExpectedCurrentScore(scoreSequence) {\n return scoreSequence[1];\n }\n\n isScoreMatch(score, expectedScore) {\n return score.toString().match(`[${expectedScore}]`) != null;\n }\n\n /**\n * @param component the component content\n * @param previousScore the previousScore we want notification for, can be null, which means we\n * just want to look at the currentScore\n * @param currentScore the currentScore we want notification for\n * @returns the notification for the given score\n */\n getNotificationByScore(component, previousScore, currentScore) {\n for (const notification of component.notificationSettings.notifications) {\n const scoreSequence = notification.enableCriteria.scoreSequence;\n if (this.isScoreSequenceMatch(scoreSequence, previousScore, currentScore)) {\n return notification;\n }\n }\n return null;\n }\n\n retrieveScript(scriptFilename) {\n return this.http\n .get(`${this.configService.getProjectAssetsDirectoryPath()}/${scriptFilename}`)\n .toPromise()\n .then((result: any) => {\n return result.data;\n });\n }\n\n /**\n * @param nodeId the node id\n * @param componentId the component id\n * @param additionalProcessingFunction the function to register for the node and component.\n */\n addAdditionalProcessingFunction(nodeId, componentId, additionalProcessingFunction) {\n const key = nodeId + '_' + componentId;\n if (this.additionalProcessingFunctionsMap[key] == null) {\n this.additionalProcessingFunctionsMap[key] = [];\n }\n this.additionalProcessingFunctionsMap[key].push(additionalProcessingFunction);\n }\n}\n", + "extends": [ + "ProjectService" + ], + "type": "injectable" + }, + { + "name": "WiseLinkService", + "id": "injectable-WiseLinkService-a1e83c4e2a412cf880728d9f9c15c7b695ac873fcc309a4eba14183dc3338bf6c1695b8c7accd81be1624412f57c196a9765cad82060ad0705d1938c96c67fb8", + "file": "src/app/services/wiseLinkService.ts", + "properties": [ + { + "name": "wiseLinkClickedEventName", + "defaultValue": "'wiselinkclicked'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 16 + }, + { + "name": "wiseLinkClickedHandler", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 17 + }, + { + "name": "wiseLinkCommunicatorId", + "defaultValue": "'wise-link-communicator'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 18 + } + ], + "methods": [ + { + "name": "addWiseLinkClickedListener", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 20, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "createWiseLinkClickedHandler", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 28, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "followLink", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 45, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "generateHtmlWithWiseLink", + "args": [ + { + "name": "html", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "SafeHtml", + "typeParameters": [], + "line": 71, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "html", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getWiseLinkCommunicator", + "args": [], + "optional": false, + "returnType": "HTMLElement", + "typeParameters": [], + "line": 41, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "goToNode", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 59, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "removeWiseLinkClickedListener", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 34, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "replaceDivReference", + "args": [ + { + "name": "html", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "newString", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 77, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "html", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "newString", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "scrollToComponentAndHighlight", + "args": [ + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 53, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Injectable } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { replaceWiseLinks } from '../../assets/wise5/common/wise-link/wise-link';\nimport { NodeService } from '../../assets/wise5/services/nodeService';\nimport { StudentDataService } from '../../assets/wise5/services/studentDataService';\nimport { scrollToElement, temporarilyHighlightElement } from '../../assets/wise5/common/dom/dom';\n\n@Injectable()\nexport class WiseLinkService {\n constructor(\n private nodeService: NodeService,\n private sanitizer: DomSanitizer,\n private studentDataService: StudentDataService\n ) {}\n\n wiseLinkClickedEventName: string = 'wiselinkclicked';\n wiseLinkClickedHandler: any;\n wiseLinkCommunicatorId: string = 'wise-link-communicator';\n\n addWiseLinkClickedListener(): void {\n this.wiseLinkClickedHandler = this.createWiseLinkClickedHandler();\n this.getWiseLinkCommunicator().addEventListener(\n this.wiseLinkClickedEventName,\n this.wiseLinkClickedHandler\n );\n }\n\n private createWiseLinkClickedHandler(): any {\n return (event: CustomEvent) => {\n this.followLink(event.detail.nodeId, event.detail.componentId);\n };\n }\n\n removeWiseLinkClickedListener(): void {\n this.getWiseLinkCommunicator()?.removeEventListener(\n this.wiseLinkClickedEventName,\n this.wiseLinkClickedHandler\n );\n }\n\n private getWiseLinkCommunicator(): HTMLElement {\n return document.getElementById(this.wiseLinkCommunicatorId);\n }\n\n private followLink(nodeId: string, componentId: string): void {\n if (nodeId === this.studentDataService.getCurrentNodeId()) {\n this.scrollToComponentAndHighlight(componentId);\n } else {\n this.goToNode(nodeId, componentId);\n }\n }\n\n private scrollToComponentAndHighlight(componentId: string): void {\n const elementId = `component_${componentId}`;\n scrollToElement(elementId);\n temporarilyHighlightElement(elementId);\n }\n\n private goToNode(nodeId: string, componentId: string): void {\n if (componentId !== '') {\n const subscription = this.studentDataService.currentNodeChanged$.subscribe(() => {\n setTimeout(() => {\n this.scrollToComponentAndHighlight(componentId);\n subscription.unsubscribe();\n }, 500); // timeout attempts to ensure that new node has loaded before scroll+highlight\n });\n }\n this.nodeService.setCurrentNode(nodeId);\n }\n\n generateHtmlWithWiseLink(html: string): SafeHtml {\n return this.sanitizer.bypassSecurityTrustHtml(\n this.replaceDivReference(replaceWiseLinks(html), this.wiseLinkCommunicatorId)\n );\n }\n\n private replaceDivReference(html: string, newString: string): string {\n return html.replace(\n /document\\.getElementById\\('replace-with-unique-id'\\)/g,\n `document.getElementById('${newString}')`\n );\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "sanitizer", + "type": "DomSanitizer", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentDataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 9, + "jsdoctags": [ + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "sanitizer", + "type": "DomSanitizer", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentDataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "type": "injectable" + }, + { + "name": "WorkgroupService", + "id": "injectable-WorkgroupService-eafcad800244a3a55988eb5758acd2c2d01f5d7550a2f1afa5a71f627282116701e8b72ab0a55ab40e32897b60cb3725ec35a35fadebe6a642f4f5253a6fe413", + "file": "src/app/services/workgroup.service.ts", + "properties": [], + "methods": [ + { + "name": "createWorkgroup", + "args": [ + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "memberIds", + "type": "number[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 31, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "memberIds", + "type": "number[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getWorkgroupsInPeriod", + "args": [ + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Map", + "typeParameters": [], + "line": 12, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getWorkgroupsSortedById", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 25, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "isUserInAnyWorkgroup", + "args": [ + { + "name": "user", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 38, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "user", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { ConfigService } from '../../assets/wise5/services/configService';\n\n@Injectable()\nexport class WorkgroupService {\n constructor(\n private ConfigService: ConfigService,\n private http: HttpClient\n ) {}\n getWorkgroupsInPeriod(periodId: number): Map {\n const workgroups = new Map();\n for (const workgroup of this.getWorkgroupsSortedById()) {\n if (periodId === -1 || (workgroup.periodId === periodId && workgroup.workgroupId != null)) {\n workgroup.displayNames = this.ConfigService.getDisplayUsernamesByWorkgroupId(\n workgroup.workgroupId\n );\n workgroups.set(workgroup.workgroupId, workgroup);\n }\n }\n return workgroups;\n }\n\n private getWorkgroupsSortedById() {\n return this.ConfigService.getClassmateUserInfos().sort((a, b) => {\n return a.workgroupId - b.workgroupId;\n });\n }\n\n createWorkgroup(periodId: number, memberIds: number[]): Observable {\n return this.http.post(\n `/api/teacher/run/${this.ConfigService.getRunId()}/workgroup/create/${periodId}`,\n memberIds\n );\n }\n\n isUserInAnyWorkgroup(user: any): boolean {\n return this.ConfigService.getClassmateUserInfos().some((userInfo) => {\n return userInfo.userIds != null && userInfo.userIds.includes(user.id);\n });\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "ConfigService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 7, + "jsdoctags": [ + { + "name": "ConfigService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "type": "injectable" + } + ], + "guards": [], + "interceptors": [ + { + "name": "HttpErrorInterceptor", + "id": "injectable-HttpErrorInterceptor-7fa7091cb1e59b8b3934a1d4a3428ba6b89b048a20907d36a7d01919f579a069316d630c821bf6f0b9d4e6eb083fded543a12aa8009e0b882d5f3284fad11dc7", + "file": "src/app/http-error.interceptor.ts", + "properties": [ + { + "name": "snackBar", + "deprecated": false, + "deprecationMessage": "", + "type": "MatSnackBar", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "modifierKind": [ + 125 + ] + } + ], + "methods": [ + { + "name": "intercept", + "args": [ + { + "name": "request", + "type": "HttpRequest", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "next", + "type": "HttpHandler", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable>", + "typeParameters": [], + "line": 12, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "HttpRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "next", + "type": "HttpHandler", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isErrorSavingStudentTeacherAppData", + "args": [ + { + "name": "url", + "type": "URL", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 55, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "url", + "type": "URL", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "processError", + "args": [ + { + "name": "err", + "type": "HttpErrorResponse", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 35, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "err", + "type": "HttpErrorResponse", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "showError", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 60, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Injectable } from '@angular/core';\nimport { HttpInterceptor, HttpRequest, HttpErrorResponse, HttpHandler, HttpEvent } from '@angular/common/http';\nimport { Observable, throwError } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { ConfigService } from './services/config.service';\n\n@Injectable()\nexport class HttpErrorInterceptor implements HttpInterceptor {\n constructor(protected configService: ConfigService, public snackBar: MatSnackBar) {}\n\n intercept(request: HttpRequest, next: HttpHandler): Observable> {\n return next.handle(request).pipe(\n catchError((err: HttpErrorResponse) => {\n if (err.error instanceof Error) {\n // A client-side or network error occurred. Handle it accordingly.\n console.error($localize`An error occurred: `, err.error.message);\n } else {\n // The backend returned an unsuccessful response code.\n // The response body may contain clues as to what went wrong.\n console.error(\n $localize`Backend returned code ${err.status}:status:, body was: ${err.error}:error:`\n );\n }\n\n if (err.status >= 500 || err.status === 0 || err.status === 403) {\n this.processError(err);\n return;\n }\n return throwError(err);\n })\n );\n }\n\n processError(err: HttpErrorResponse): void {\n try {\n const requestUrl = new URL(err.url);\n if (requestUrl.origin === this.configService.getWISEHostname()) {\n if (this.isErrorSavingStudentTeacherAppData(requestUrl)) {\n window.location.reload();\n } else {\n if (!requestUrl.pathname.includes('/api/author/config')) {\n // fix me: this check should not be necessary. AT should not need to request config\n // when session times out, but it currently is for some reason\n this.showError();\n }\n }\n }\n } catch (e) {\n // request was from a relative (or invalid) URL\n this.showError();\n }\n }\n\n private isErrorSavingStudentTeacherAppData(url: URL): boolean {\n const regExp = RegExp('/api/(student|teacher)/data|/api/author/project/save');\n return regExp.test(url.pathname);\n }\n\n showError() {\n this.snackBar.open($localize`An error occurred. Please refresh this page and try again.`);\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "snackBar", + "type": "MatSnackBar", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 9, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "snackBar", + "type": "MatSnackBar", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "type": "interceptor" + }, + { + "name": "XhrInterceptor", + "id": "injectable-XhrInterceptor-3f8f2ab3e8de4068509002040826b67cae258b8f0eb45e7be862ab3e2e22d338e0c05f97f05a6067a944acb295fe67daad530eb55e07bae7b453e89f6614feb8", + "file": "src/app/app-routing.module.ts", + "properties": [], + "methods": [ + { + "name": "intercept", + "args": [ + { + "name": "req", + "type": "HttpRequest", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "next", + "type": "HttpHandler", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 72, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "req", + "type": "HttpRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "next", + "type": "HttpHandler", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "description": "", + "rawdescription": "", + "sourceCode": "import { FormsModule } from '@angular/forms';\nimport { HTTP_INTERCEPTORS, HttpRequest, HttpHandler, HttpInterceptor } from '@angular/common/http';\nimport { Injectable, NgModule } from '@angular/core';\nimport { PersonalLibraryComponent } from './modules/library/personal-library/personal-library.component';\nimport { PublicLibraryComponent } from './modules/library/public-library/public-library.component';\nimport { RouterModule, Routes } from '@angular/router';\n\nconst routes: Routes = [\n { path: '', loadChildren: () => \"import('./home/home.module').then((m) => m.HomeModule)\" },\n {\n path: 'about',\n loadComponent: () => \"import('./about/about.component').then((m) => m.AboutComponent)\"\n },\n {\n path: 'contact',\n loadChildren: () => \"import('./contact/contact.module').then((m) => m.ContactModule)\"\n },\n {\n path: 'curriculum',\n loadComponent: () =>\n \"import('./curriculum/curriculum.component').then((m) => m.CurriculumComponent)\",\n children: [\n { path: '', redirectTo: 'public', pathMatch: 'full' },\n { path: 'public', component: PublicLibraryComponent },\n { path: 'personal', component: PersonalLibraryComponent },\n { path: '**', redirectTo: 'public' }\n ]\n },\n {\n path: 'features',\n loadComponent: () => \"import('./features/features.component').then((m) => m.FeaturesComponent)\"\n },\n {\n path: 'forgot',\n loadChildren: () => \"import('./forgot/forgot-routing.module').then((m) => m.ForgotRoutingModule)\"\n },\n {\n path: 'help',\n loadChildren: () => \"import('./help/help-routing.module').then((m) => m.HelpRoutingModule)\"\n },\n {\n path: 'join',\n loadChildren: () => \"import('./register/register.module').then((m) => m.RegisterModule)\"\n },\n { path: 'login', loadChildren: () => \"import('./login/login.module').then((m) => m.LoginModule)\" },\n { path: 'news', loadChildren: () => \"import('./news/news.module').then((m) => m.NewsModule)\" },\n {\n path: 'privacy',\n loadComponent: () => \"import('./privacy/privacy.component').then((m) => m.PrivacyComponent)\"\n },\n {\n path: 'preview',\n loadChildren: () => \"import('./student/student.module').then((m) => m.StudentModule)\"\n },\n {\n path: 'student',\n loadChildren: () => \"import('./student/student.module').then((m) => m.StudentModule)\"\n },\n {\n path: 'teacher',\n loadChildren: () => \"import('./teacher/teacher.module').then((m) => m.TeacherModule)\"\n },\n {\n path: 'survey',\n loadChildren: () =>\n \"import('./student/survey/survey-routing.module').then((m) => m.SurveyRoutingModule)\"\n }\n];\n\n@Injectable()\nexport class XhrInterceptor implements HttpInterceptor {\n intercept(req: HttpRequest, next: HttpHandler) {\n const xhr = req.clone({\n headers: req.headers.set('X-Requested-With', 'XMLHttpRequest')\n });\n return next.handle(xhr);\n }\n}\n\n@NgModule({\n imports: [RouterModule.forRoot(routes, { paramsInheritanceStrategy: 'always' }), FormsModule],\n exports: [RouterModule],\n providers: [{ provide: HTTP_INTERCEPTORS, useClass: XhrInterceptor, multi: true }]\n})\nexport class AppRoutingModule {}\n", + "extends": [], + "type": "interceptor" + } + ], + "classes": [ + { + "name": "AbstractComponentDataExportStrategy", + "id": "class-AbstractComponentDataExportStrategy-73aee9dfe2a6e722745502c7e70abeda168110bafc3f4fd847a52d66b7e9f3e2af8fc6838f1902eb3c040842b42c51371e6b5aab0eaea77b8411b4bfb261eb31", + "file": "src/assets/wise5/classroomMonitor/dataExport/strategies/AbstractComponentDataExportStrategy.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { ComponentState } from '../../../../../app/domain/componentState';\nimport { millisecondsToDateTime } from '../../../common/datetime/datetime';\nimport { removeHTMLTags } from '../../../common/string/string';\nimport { ComponentDataExportParams } from '../ComponentDataExportParams';\nimport { AbstractDataExportStrategy } from './AbstractDataExportStrategy';\n\nexport abstract class AbstractComponentDataExportStrategy extends AbstractDataExportStrategy {\n protected allOrLatest: 'all' | 'latest';\n protected componentStateIdToRevisionNumber = {};\n protected defaultColumnNames = [\n '#',\n 'Workgroup ID',\n 'User ID 1',\n 'Student Name 1',\n 'User ID 2',\n 'Student Name 2',\n 'User ID 3',\n 'Student Name 3',\n 'Class Period',\n 'Project ID',\n 'Project Name',\n 'Run ID',\n 'Start Date',\n 'End Date',\n 'Student Work ID',\n 'Server Timestamp',\n 'Client Timestamp',\n 'Node ID',\n 'Component ID',\n 'Component Part Number',\n 'Step Title',\n 'Component Type',\n 'Component Prompt',\n 'Student Data',\n 'Component Revision Counter',\n 'Is Submit',\n 'Submit Count'\n ];\n protected includeOnlySubmits: boolean;\n protected includeStudentNames: boolean;\n protected revisionCounter: any = {};\n\n constructor(\n protected nodeId: string,\n protected component: any,\n additionalParams: ComponentDataExportParams\n ) {\n super();\n this.includeOnlySubmits = additionalParams.includeOnlySubmits;\n this.includeStudentNames = additionalParams.includeStudentNames;\n }\n\n export(): void {\n const components = [{ nodeId: this.nodeId, componentId: this.component.id }];\n this.dataExportService.retrieveStudentData(components, true, false, true).subscribe(() => {\n const columnNameToNumber = {};\n const headerRow = this.generateComponentHeaderRow(this.component);\n this.populateColumnNameMappings(headerRow, columnNameToNumber);\n let rows = [headerRow];\n rows = rows.concat(\n this.generateComponentWorkRows(this.component, headerRow, columnNameToNumber, this.nodeId)\n );\n const fileName = super.generateExportFileName(\n this.nodeId,\n this.component.id,\n this.getComponentTypeWithUnderscore()\n );\n this.generateCSVFile(rows, fileName);\n });\n }\n\n protected abstract generateComponentHeaderRow(component: any): string[];\n\n protected abstract generateComponentWorkRows(\n component: any,\n columnNames: string[],\n columnNameToNumber: any,\n nodeId: string\n ): string[];\n\n protected setStudentInfo(row: any[], columnNameToNumber: any, componentState: any): void {\n this.setColumnValue(row, columnNameToNumber, 'Workgroup ID', componentState.workgroupId);\n const userInfo = this.configService.getUserInfoByWorkgroupId(componentState.workgroupId);\n if (userInfo != null) {\n for (let u = 0; u < userInfo.users.length; u++) {\n const user = userInfo.users[u];\n this.setColumnValue(row, columnNameToNumber, `User ID ${u + 1}`, user.id);\n this.setColumnValue(\n row,\n columnNameToNumber,\n `Student Name ${u + 1}`,\n this.includeStudentNames ? user.name : ''\n );\n }\n }\n }\n\n setAllOrLatest(allOrLatest: 'all' | 'latest'): void {\n this.allOrLatest = allOrLatest;\n }\n\n protected abstract getComponentTypeWithUnderscore(): string;\n\n protected getComponentStates(\n component: any,\n calculateRevisions: boolean = true\n ): ComponentState[] {\n let componentStates = this.dataService.getComponentStatesByComponentId(component.id);\n this.sortByWorkgroupIdAndTimestamp(componentStates);\n if (calculateRevisions) {\n this.calculateRevisionNumbers(componentStates);\n }\n if (this.allOrLatest === 'latest') {\n componentStates = this.getLatestRevisions(componentStates);\n }\n if (this.includeOnlySubmits) {\n componentStates = componentStates.filter((componentState: any) => componentState.isSubmit);\n }\n return componentStates;\n }\n\n private sortByWorkgroupIdAndTimestamp(componentStates: any[]): any[] {\n return componentStates.sort((a: any, b: any) => {\n return a.workgroupId == b.workgroupId\n ? a.serverSaveTime - b.serverSaveTime\n : a.workgroupId - b.workgroupId;\n });\n }\n\n private calculateRevisionNumbers(componentStates: any[]): void {\n for (const componentState of componentStates) {\n const workgroupId = componentState.workgroupId;\n const nodeId = componentState.nodeId;\n const componentId = componentState.componentId;\n this.incrementRevisionCounter(workgroupId, nodeId, componentId);\n this.componentStateIdToRevisionNumber[componentState.id] = this.getRevisionCounter(\n workgroupId,\n nodeId,\n componentId\n );\n }\n }\n\n protected incrementRevisionCounter(\n workgroupId: number,\n nodeId: string,\n componentId: string\n ): void {\n const key = this.getRevisionCounterKey(workgroupId, nodeId, componentId);\n if (this.revisionCounter[key] == null) {\n this.revisionCounter[key] = 1;\n } else {\n this.revisionCounter[key]++;\n }\n }\n\n protected getRevisionCounterKey(\n workgroupId: number,\n nodeId: string,\n componentId: string\n ): string {\n return `${workgroupId}-${nodeId}-${componentId}`;\n }\n\n private getRevisionCounter(workgroupId: number, nodeId: string, componentId: string): number {\n return this.revisionCounter[this.getRevisionCounterKey(workgroupId, nodeId, componentId)];\n }\n\n protected getLatestRevisions(componentStates: ComponentState[]): ComponentState[] {\n const latestRevisions = [];\n const workgroupIdsFound = {};\n for (let c = componentStates.length - 1; c >= 0; c--) {\n const componentState = componentStates[c];\n if (workgroupIdsFound[componentState.workgroupId] == null) {\n latestRevisions.unshift(componentState);\n workgroupIdsFound[componentState.workgroupId] = true;\n }\n }\n return latestRevisions;\n }\n\n protected setComponentInfo(\n row: any[],\n columnNameToNumber: any,\n nodeId: string,\n component: any\n ): void {\n this.setColumnValue(row, columnNameToNumber, 'Node ID', nodeId);\n this.setColumnValue(row, columnNameToNumber, 'Component ID', component.id);\n this.setColumnValue(\n row,\n columnNameToNumber,\n 'Component Part Number',\n this.projectService.getNode(nodeId).getComponentPosition(component.id) + 1\n );\n this.setColumnValue(\n row,\n columnNameToNumber,\n 'Step Title',\n this.projectService.getNodePositionAndTitle(nodeId)\n );\n this.setColumnValue(row, columnNameToNumber, 'Component Type', component.type);\n this.setColumnValue(row, columnNameToNumber, 'Component Prompt', this.getPrompt(component));\n }\n\n private getPrompt(component: any): string {\n return removeHTMLTags(component.prompt).replace(/\"/g, '\"\"');\n }\n\n protected setStudentWork(\n row: any[],\n columnNameToNumber: any,\n component: any,\n componentState: any\n ): void {\n this.setColumnValue(\n row,\n columnNameToNumber,\n 'Server Timestamp',\n millisecondsToDateTime(componentState.serverSaveTime)\n );\n this.setColumnValue(\n row,\n columnNameToNumber,\n 'Client Timestamp',\n millisecondsToDateTime(componentState.clientSaveTime)\n );\n this.setColumnValue(row, columnNameToNumber, 'Student Work ID', componentState.id);\n this.setColumnValue(row, columnNameToNumber, 'Student Data', componentState.studentData);\n this.setColumnValue(\n row,\n columnNameToNumber,\n 'Component Revision Counter',\n this.componentStateIdToRevisionNumber[componentState.id]\n );\n this.setColumnValue(row, columnNameToNumber, 'Is Submit', componentState.isSubmit ? 1 : 0);\n this.setColumnValue(\n row,\n columnNameToNumber,\n 'Submit Count',\n componentState.studentData.submitCounter ? componentState.studentData.submitCounter : 0\n );\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "additionalParams", + "type": "ComponentDataExportParams", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 41, + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "additionalParams", + "type": "ComponentDataExportParams", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "allOrLatest", + "deprecated": false, + "deprecationMessage": "", + "type": "\"all\" | \"latest\"", + "indexKey": "", + "optional": false, + "description": "", + "line": 8, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "componentStateIdToRevisionNumber", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "object", + "indexKey": "", + "optional": false, + "description": "", + "line": 9, + "modifierKind": [ + 124 + ] + }, + { + "name": "defaultColumnNames", + "defaultValue": "[\n '#',\n 'Workgroup ID',\n 'User ID 1',\n 'Student Name 1',\n 'User ID 2',\n 'Student Name 2',\n 'User ID 3',\n 'Student Name 3',\n 'Class Period',\n 'Project ID',\n 'Project Name',\n 'Run ID',\n 'Start Date',\n 'End Date',\n 'Student Work ID',\n 'Server Timestamp',\n 'Client Timestamp',\n 'Node ID',\n 'Component ID',\n 'Component Part Number',\n 'Step Title',\n 'Component Type',\n 'Component Prompt',\n 'Student Data',\n 'Component Revision Counter',\n 'Is Submit',\n 'Submit Count'\n ]", + "deprecated": false, + "deprecationMessage": "", + "type": "[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "modifierKind": [ + 124 + ] + }, + { + "name": "includeOnlySubmits", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 39, + "modifierKind": [ + 124 + ] + }, + { + "name": "includeStudentNames", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 40, + "modifierKind": [ + 124 + ] + }, + { + "name": "revisionCounter", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 41, + "modifierKind": [ + 124 + ] + }, + { + "name": "annotationService", + "deprecated": false, + "deprecationMessage": "", + "type": "AnnotationService", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "configService", + "deprecated": false, + "deprecationMessage": "", + "type": "ConfigService", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "context", + "deprecated": false, + "deprecationMessage": "", + "type": "DataExportContext", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "controller", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "dataExportService", + "deprecated": false, + "deprecationMessage": "", + "type": "DataExportService", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "dataService", + "deprecated": false, + "deprecationMessage": "", + "type": "TeacherDataService", + "indexKey": "", + "optional": false, + "description": "", + "line": 20, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "projectService", + "deprecated": false, + "deprecationMessage": "", + "type": "TeacherProjectService", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + } + ], + "methods": [ + { + "name": "calculateRevisionNumbers", + "args": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 130, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "export", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 53, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "generateComponentHeaderRow", + "args": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string[]", + "typeParameters": [], + "line": 72, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124, + 128 + ], + "jsdoctags": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "generateComponentWorkRows", + "args": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNames", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string[]", + "typeParameters": [], + "line": 74, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124, + 128 + ], + "jsdoctags": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNames", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getComponentStates", + "args": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "calculateRevisions", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "true" + } + ], + "optional": false, + "returnType": "ComponentState[]", + "typeParameters": [], + "line": 104, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "calculateRevisions", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "true", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getComponentTypeWithUnderscore", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 102, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124, + 128 + ] + }, + { + "name": "getLatestRevisions", + "args": [ + { + "name": "componentStates", + "type": "ComponentState[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "ComponentState[]", + "typeParameters": [], + "line": 169, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "componentStates", + "type": "ComponentState[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getPrompt", + "args": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 206, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getRevisionCounter", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 165, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getRevisionCounterKey", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 157, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "incrementRevisionCounter", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 144, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setAllOrLatest", + "args": [ + { + "name": "allOrLatest", + "type": "\"all\" | \"latest\"", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 98, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "allOrLatest", + "type": "\"all\" | \"latest\"", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setComponentInfo", + "args": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 182, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setStudentInfo", + "args": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 81, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setStudentWork", + "args": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 210, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "sortByWorkgroupIdAndTimestamp", + "args": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 122, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "generateCSVFile", + "args": [ + { + "name": "rows", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "fileName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 194, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "rows", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "fileName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "generateExportFileName", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentTypeWithUnderscore", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 179, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentTypeWithUnderscore", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "getColumnValue", + "args": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 113, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "getSelectedNodesMap", + "args": [ + { + "name": "selectedNodes", + "type": "[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]" + } + ], + "optional": false, + "returnType": "{}", + "typeParameters": [], + "line": 62, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet a mapping of node/component id strings to true.\nexample if\nselectedNodes = [\n {\n nodeId: \"node1\",\n componentId: \"343b8aesf7\"\n },\n {\n nodeId: \"node2\",\n componentId: \"b34gaf0ug2\"\n },\n {\n nodeId: \"node3\"\n }\n]\n\nthis function will return\n{\n \"node1-343b8aesf7\": true,\n \"node2-b34gaf0ug2\": true,\n \"node3\": true\n}\n\na componentId field\n", + "description": "

Get a mapping of node/component id strings to true.\nexample if\nselectedNodes = [\n {\n nodeId: "node1",\n componentId: "343b8aesf7"\n },\n {\n nodeId: "node2",\n componentId: "b34gaf0ug2"\n },\n {\n nodeId: "node3"\n }\n]

\n

this function will return\n{\n "node1-343b8aesf7": true,\n "node2-b34gaf0ug2": true,\n "node3": true\n}

\n

a componentId field

\n", + "jsdoctags": [ + { + "name": { + "pos": 1979, + "end": 1992, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "selectedNodes" + }, + "type": "[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]", + "tagName": { + "pos": 1973, + "end": 1978, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

an array of objects that contain a nodeId field and maybe also\na componentId field

\n" + }, + { + "tagName": { + "pos": 2087, + "end": 2093, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

a mapping of node/component id strings to true

\n" + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "getStudentDataString", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 157, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the plain text representation of the student work.\n", + "description": "

Get the plain text representation of the student work.

\n", + "jsdoctags": [ + { + "name": { + "pos": 5328, + "end": 5342, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 5322, + "end": 5327, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

A component state that contains the student work.

\n", + "typeExpression": { + "pos": 5343, + "end": 5351, + "kind": 310, + "id": 0, + "flags": 16842752, + "modifierFlagsCache": 0, + "transformFlags": 0, + "type": { + "pos": 5344, + "end": 5350, + "kind": 151, + "id": 0, + "flags": 16777216, + "transformFlags": 1 + } + } + }, + { + "tagName": { + "pos": 5408, + "end": 5415, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

A string that can be placed in a csv cell.

\n", + "returnType": "string" + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "insertColumnAtEnd", + "args": [ + { + "name": "headerRow", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 121, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "headerRow", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "insertColumnBeforeResponseColumn", + "args": [ + { + "name": "headerRow", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 117, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "headerRow", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "isComponentSelected", + "args": [ + { + "name": "selectedNodesMap", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 138, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if a component is selected\nto true\nexample\n{\n \"node1-38fj20egrj\": true,\n \"node1-20dbj2e0sf\": true\n}\n", + "description": "

Check if a component is selected\nto true\nexample\n{\n "node1-38fj20egrj": true,\n "node1-20dbj2e0sf": true\n}

\n", + "jsdoctags": [ + { + "name": { + "pos": 4590, + "end": 4606, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "selectedNodesMap" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4584, + "end": 4589, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

a map of node id and component id strings\nto true\nexample\n{\n"node1-38fj20egrj": true,\n"node1-20dbj2e0sf": true\n}

\n" + }, + { + "name": { + "pos": 4766, + "end": 4772, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4760, + "end": 4765, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id to check

\n" + }, + { + "name": { + "pos": 4806, + "end": 4817, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4800, + "end": 4805, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component id to check

\n" + }, + { + "tagName": { + "pos": 4850, + "end": 4856, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether the component is selected

\n" + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "populateColumnNameMappings", + "args": [ + { + "name": "columnNames", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 103, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "columnNames", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "setColumnValue", + "args": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "value", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 109, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "value", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "setDataExportContext", + "args": [ + { + "name": "context", + "type": "DataExportContext", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "context", + "type": "DataExportContext", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "setRunInfo", + "args": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + } + ], + "indexSignatures": [], + "extends": [ + "AbstractDataExportStrategy" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "AbstractConstraintStrategy", + "id": "class-AbstractConstraintStrategy-62a8f9d14fb9c5b6956fd4a6a1f406f0eea3f57c7025ff735d3efbf68611fdf8f8811c540a9ad09947d2d8dd983210cef8525ef7e2c228bc4ab90dd5fe28311f", + "file": "src/assets/wise5/common/constraint/strategies/AbstractConstraintStrategy.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { AnnotationService } from '../../../services/annotationService';\nimport { CompletionService } from '../../../services/completionService';\nimport { ComponentServiceLookupService } from '../../../services/componentServiceLookupService';\nimport { ConfigService } from '../../../services/configService';\nimport { NotebookService } from '../../../services/notebookService';\nimport { StudentDataService } from '../../../services/studentDataService';\nimport { TagService } from '../../../services/tagService';\nimport { EvaluateConstraintContext } from '../EvaluateConstraintContext';\nimport { ConstraintStrategy } from './ConstraintStrategy';\n\nexport abstract class AbstractConstraintStrategy implements ConstraintStrategy {\n annotationService: AnnotationService;\n completionService: CompletionService;\n componentServiceLookupService: ComponentServiceLookupService;\n configService: ConfigService;\n context: EvaluateConstraintContext;\n dataService: StudentDataService;\n notebookService: NotebookService;\n tagService: TagService;\n\n setContext(context: EvaluateConstraintContext): void {\n this.annotationService = context.getAnnotationService();\n this.completionService = context.getCompletionService();\n this.context = context;\n this.configService = context.getConfigService();\n this.dataService = context.getDataService();\n this.componentServiceLookupService = context.getComponentServiceLookupService();\n this.notebookService = context.getNotebookService();\n this.tagService = context.getTagService();\n }\n\n abstract evaluate(criteria: any): boolean;\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "annotationService", + "deprecated": false, + "deprecationMessage": "", + "type": "AnnotationService", + "indexKey": "", + "optional": false, + "description": "", + "line": 12 + }, + { + "name": "completionService", + "deprecated": false, + "deprecationMessage": "", + "type": "CompletionService", + "indexKey": "", + "optional": false, + "description": "", + "line": 13 + }, + { + "name": "componentServiceLookupService", + "deprecated": false, + "deprecationMessage": "", + "type": "ComponentServiceLookupService", + "indexKey": "", + "optional": false, + "description": "", + "line": 14 + }, + { + "name": "configService", + "deprecated": false, + "deprecationMessage": "", + "type": "ConfigService", + "indexKey": "", + "optional": false, + "description": "", + "line": 15 + }, + { + "name": "context", + "deprecated": false, + "deprecationMessage": "", + "type": "EvaluateConstraintContext", + "indexKey": "", + "optional": false, + "description": "", + "line": 16 + }, + { + "name": "dataService", + "deprecated": false, + "deprecationMessage": "", + "type": "StudentDataService", + "indexKey": "", + "optional": false, + "description": "", + "line": 17 + }, + { + "name": "notebookService", + "deprecated": false, + "deprecationMessage": "", + "type": "NotebookService", + "indexKey": "", + "optional": false, + "description": "", + "line": 18 + }, + { + "name": "tagService", + "deprecated": false, + "deprecationMessage": "", + "type": "TagService", + "indexKey": "", + "optional": false, + "description": "", + "line": 19 + } + ], + "methods": [ + { + "name": "evaluate", + "args": [ + { + "name": "criteria", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 32, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 128 + ], + "jsdoctags": [ + { + "name": "criteria", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setContext", + "args": [ + { + "name": "context", + "type": "EvaluateConstraintContext", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 21, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "context", + "type": "EvaluateConstraintContext", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [], + "implements": [ + "ConstraintStrategy" + ] + }, + { + "name": "AbstractDataExportStrategy", + "id": "class-AbstractDataExportStrategy-356e3db7f15c2b05a382782e7711b38ab876eb5d1a7a3bfe8e77102eafcad41076022ef9c087ac134eb9b10cce5b4a6193baa973bee7cd543dea0afb75d2a82b", + "file": "src/assets/wise5/classroomMonitor/dataExport/strategies/AbstractDataExportStrategy.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { millisecondsToDateTime } from '../../../common/datetime/datetime';\nimport { AnnotationService } from '../../../services/annotationService';\nimport { ConfigService } from '../../../services/configService';\nimport { DataExportService } from '../../../services/dataExportService';\nimport { TeacherDataService } from '../../../services/teacherDataService';\nimport { TeacherProjectService } from '../../../services/teacherProjectService';\nimport { DataExportContext } from '../DataExportContext';\nimport { DataExportStrategy } from './DataExportStrategy';\nimport { removeHTMLTags } from '../../../common/string/string';\nimport { generateCSVFile } from '../../../common/csv/csv';\n\nexport abstract class AbstractDataExportStrategy implements DataExportStrategy {\n context: DataExportContext;\n controller: any;\n annotationService: AnnotationService;\n configService: ConfigService;\n dataExportService: DataExportService;\n projectService: TeacherProjectService;\n protected allOrLatest: 'all' | 'latest' = 'all';\n dataService: TeacherDataService;\n\n setDataExportContext(context: DataExportContext) {\n this.context = context;\n this.controller = context.controller;\n this.annotationService = context.controller.annotationService;\n this.configService = context.controller.configService;\n this.dataExportService = context.controller.dataExportService;\n this.projectService = context.controller.projectService;\n this.dataService = context.controller.dataService;\n }\n\n abstract export();\n\n /**\n * Get a mapping of node/component id strings to true.\n * example if\n * selectedNodes = [\n * {\n * nodeId: \"node1\",\n * componentId: \"343b8aesf7\"\n * },\n * {\n * nodeId: \"node2\",\n * componentId: \"b34gaf0ug2\"\n * },\n * {\n * nodeId: \"node3\"\n * }\n * ]\n *\n * this function will return\n * {\n * \"node1-343b8aesf7\": true,\n * \"node2-b34gaf0ug2\": true,\n * \"node3\": true\n * }\n *\n * @param selectedNodes an array of objects that contain a nodeId field and maybe also\n * a componentId field\n * @return a mapping of node/component id strings to true\n */\n getSelectedNodesMap(selectedNodes = []) {\n const selectedNodesMap = {};\n for (var sn = 0; sn < selectedNodes.length; sn++) {\n var selectedNode = selectedNodes[sn];\n if (selectedNode != null) {\n var nodeId = selectedNode.nodeId;\n var componentId = selectedNode.componentId;\n var selectedNodeString = '';\n if (nodeId != null && componentId != null) {\n selectedNodeString = nodeId + '-' + componentId;\n } else if (nodeId != null) {\n selectedNodeString = nodeId;\n }\n if (selectedNodeString != null && selectedNodeString != '') {\n selectedNodesMap[selectedNodeString] = true;\n }\n }\n }\n return selectedNodesMap;\n }\n\n setRunInfo(row: any[], columnNameToNumber: any, componentState: any): void {\n const userInfo = this.configService.getUserInfoByWorkgroupId(componentState.workgroupId);\n if (userInfo != null) {\n this.setColumnValue(row, columnNameToNumber, 'Class Period', userInfo.periodName);\n }\n this.setColumnValue(row, columnNameToNumber, 'Project ID', this.configService.getProjectId());\n this.setColumnValue(row, columnNameToNumber, 'Project Name', this.configService.getRunName());\n this.setColumnValue(row, columnNameToNumber, 'Run ID', this.configService.getRunId());\n this.setColumnValue(\n row,\n columnNameToNumber,\n 'Start Date',\n millisecondsToDateTime(this.configService.getStartDate())\n );\n const endDate = this.configService.getEndDate();\n if (endDate != null) {\n this.setColumnValue(row, columnNameToNumber, 'End Date', millisecondsToDateTime(endDate));\n }\n }\n\n populateColumnNameMappings(columnNames: string[], columnNameToNumber: any): void {\n for (let c = 0; c < columnNames.length; c++) {\n columnNameToNumber[columnNames[c]] = c;\n }\n }\n\n setColumnValue(row: any[], columnNameToNumber: any, columnName: string, value: any): void {\n row[columnNameToNumber[columnName]] = value;\n }\n\n getColumnValue(row: any[], columnNameToNumber: any, columnName: string): any {\n return row[columnNameToNumber[columnName]];\n }\n\n insertColumnBeforeResponseColumn(headerRow: string[], columnName: string): void {\n headerRow.splice(headerRow.indexOf('Response'), 0, columnName);\n }\n\n insertColumnAtEnd(headerRow: string[], columnName: string): void {\n headerRow.push(columnName);\n }\n\n /**\n * Check if a component is selected\n * @param selectedNodesMap a map of node id and component id strings\n * to true\n * example\n * {\n * \"node1-38fj20egrj\": true,\n * \"node1-20dbj2e0sf\": true\n * }\n * @param nodeId the node id to check\n * @param componentId the component id to check\n * @return whether the component is selected\n */\n isComponentSelected(selectedNodesMap: any, nodeId: string, componentId: string): boolean {\n var result = false;\n if (selectedNodesMap != null) {\n if (\n nodeId != null &&\n componentId != null &&\n selectedNodesMap[nodeId + '-' + componentId] == true\n ) {\n result = true;\n }\n }\n return result;\n }\n\n /**\n * Get the plain text representation of the student work.\n * @param componentState {object} A component state that contains the student work.\n * @returns {string} A string that can be placed in a csv cell.\n */\n getStudentDataString(componentState: any): string {\n /*\n * In Excel, if there is a cell with a long string and the cell to the\n * right of it is empty, the long string will overlap onto cells to the\n * right until the string ends or hits a cell that contains a value.\n * To prevent this from occurring, we will default empty cell values to\n * a string with a space in it. This way all values of cells are limited\n * to displaying only in its own cell.\n */\n let studentDataString = ' ';\n let componentType = componentState.componentType;\n let componentService = this.controller.componentServiceLookupService.getService(componentType);\n if (componentService != null && componentService.getStudentDataString != null) {\n studentDataString = componentService.getStudentDataString(componentState);\n studentDataString = removeHTMLTags(studentDataString);\n studentDataString = studentDataString.replace(/\"/g, '\"\"');\n } else {\n studentDataString = componentState.studentData;\n }\n return studentDataString;\n }\n\n generateExportFileName(\n nodeId: string,\n componentId: string,\n componentTypeWithUnderscore: string\n ): string {\n const runId = this.configService.getRunId();\n const stepNumber = this.projectService.getNodePositionById(nodeId);\n const componentNumber =\n this.projectService.getNode(nodeId).getComponentPosition(componentId) + 1;\n return (\n `${runId}_step_${stepNumber}_component_` +\n `${componentNumber}_${componentTypeWithUnderscore}_work.csv`\n );\n }\n\n generateCSVFile(rows: any[], fileName: string): void {\n generateCSVFile(rows, fileName);\n }\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "allOrLatest", + "defaultValue": "'all'", + "deprecated": false, + "deprecationMessage": "", + "type": "\"all\" | \"latest\"", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "modifierKind": [ + 124 + ] + }, + { + "name": "annotationService", + "deprecated": false, + "deprecationMessage": "", + "type": "AnnotationService", + "indexKey": "", + "optional": false, + "description": "", + "line": 15 + }, + { + "name": "configService", + "deprecated": false, + "deprecationMessage": "", + "type": "ConfigService", + "indexKey": "", + "optional": false, + "description": "", + "line": 16 + }, + { + "name": "context", + "deprecated": false, + "deprecationMessage": "", + "type": "DataExportContext", + "indexKey": "", + "optional": false, + "description": "", + "line": 13 + }, + { + "name": "controller", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 14 + }, + { + "name": "dataExportService", + "deprecated": false, + "deprecationMessage": "", + "type": "DataExportService", + "indexKey": "", + "optional": false, + "description": "", + "line": 17 + }, + { + "name": "dataService", + "deprecated": false, + "deprecationMessage": "", + "type": "TeacherDataService", + "indexKey": "", + "optional": false, + "description": "", + "line": 20 + }, + { + "name": "projectService", + "deprecated": false, + "deprecationMessage": "", + "type": "TeacherProjectService", + "indexKey": "", + "optional": false, + "description": "", + "line": 18 + } + ], + "methods": [ + { + "name": "export", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 32, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 128 + ] + }, + { + "name": "generateCSVFile", + "args": [ + { + "name": "rows", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "fileName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 194, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "rows", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "fileName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "generateExportFileName", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentTypeWithUnderscore", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 179, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentTypeWithUnderscore", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getColumnValue", + "args": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 113, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getSelectedNodesMap", + "args": [ + { + "name": "selectedNodes", + "type": "[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]" + } + ], + "optional": false, + "returnType": "{}", + "typeParameters": [], + "line": 62, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet a mapping of node/component id strings to true.\nexample if\nselectedNodes = [\n {\n nodeId: \"node1\",\n componentId: \"343b8aesf7\"\n },\n {\n nodeId: \"node2\",\n componentId: \"b34gaf0ug2\"\n },\n {\n nodeId: \"node3\"\n }\n]\n\nthis function will return\n{\n \"node1-343b8aesf7\": true,\n \"node2-b34gaf0ug2\": true,\n \"node3\": true\n}\n\na componentId field\n", + "description": "

Get a mapping of node/component id strings to true.\nexample if\nselectedNodes = [\n {\n nodeId: "node1",\n componentId: "343b8aesf7"\n },\n {\n nodeId: "node2",\n componentId: "b34gaf0ug2"\n },\n {\n nodeId: "node3"\n }\n]

\n

this function will return\n{\n "node1-343b8aesf7": true,\n "node2-b34gaf0ug2": true,\n "node3": true\n}

\n

a componentId field

\n", + "jsdoctags": [ + { + "name": { + "pos": 1979, + "end": 1992, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "selectedNodes" + }, + "type": "[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]", + "tagName": { + "pos": 1973, + "end": 1978, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

an array of objects that contain a nodeId field and maybe also\na componentId field

\n" + }, + { + "tagName": { + "pos": 2087, + "end": 2093, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

a mapping of node/component id strings to true

\n" + } + ] + }, + { + "name": "getStudentDataString", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 157, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the plain text representation of the student work.\n", + "description": "

Get the plain text representation of the student work.

\n", + "jsdoctags": [ + { + "name": { + "pos": 5328, + "end": 5342, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 5322, + "end": 5327, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

A component state that contains the student work.

\n", + "typeExpression": { + "pos": 5343, + "end": 5351, + "kind": 310, + "id": 0, + "flags": 16842752, + "modifierFlagsCache": 0, + "transformFlags": 0, + "type": { + "pos": 5344, + "end": 5350, + "kind": 151, + "id": 0, + "flags": 16777216, + "transformFlags": 1 + } + } + }, + { + "tagName": { + "pos": 5408, + "end": 5415, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

A string that can be placed in a csv cell.

\n", + "returnType": "string" + } + ] + }, + { + "name": "insertColumnAtEnd", + "args": [ + { + "name": "headerRow", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 121, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "headerRow", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "insertColumnBeforeResponseColumn", + "args": [ + { + "name": "headerRow", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 117, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "headerRow", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isComponentSelected", + "args": [ + { + "name": "selectedNodesMap", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 138, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if a component is selected\nto true\nexample\n{\n \"node1-38fj20egrj\": true,\n \"node1-20dbj2e0sf\": true\n}\n", + "description": "

Check if a component is selected\nto true\nexample\n{\n "node1-38fj20egrj": true,\n "node1-20dbj2e0sf": true\n}

\n", + "jsdoctags": [ + { + "name": { + "pos": 4590, + "end": 4606, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "selectedNodesMap" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4584, + "end": 4589, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

a map of node id and component id strings\nto true\nexample\n{\n"node1-38fj20egrj": true,\n"node1-20dbj2e0sf": true\n}

\n" + }, + { + "name": { + "pos": 4766, + "end": 4772, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4760, + "end": 4765, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id to check

\n" + }, + { + "name": { + "pos": 4806, + "end": 4817, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4800, + "end": 4805, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component id to check

\n" + }, + { + "tagName": { + "pos": 4850, + "end": 4856, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether the component is selected

\n" + } + ] + }, + { + "name": "populateColumnNameMappings", + "args": [ + { + "name": "columnNames", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 103, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "columnNames", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setColumnValue", + "args": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "value", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 109, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "value", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setDataExportContext", + "args": [ + { + "name": "context", + "type": "DataExportContext", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "context", + "type": "DataExportContext", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setRunInfo", + "args": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [], + "implements": [ + "DataExportStrategy" + ] + }, + { + "name": "AbstractIdeaCountTermEvaluator", + "id": "class-AbstractIdeaCountTermEvaluator-8855eac10c10fba4e54c6f98519054d0d0b95f2fc71d3009a56f743a21ae5f88a4968953b8d7563f866f59d7fcaeb954e3a568f2910f546db2f66b25ac0beb82", + "file": "src/assets/wise5/components/common/feedbackRule/TermEvaluator/AbstractIdeaCountTermEvaluator.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { CRaterResponse } from '../../cRater/CRaterResponse';\nimport { TermEvaluator } from './TermEvaluator';\n\nexport abstract class AbstractIdeaCountTermEvaluator extends TermEvaluator {\n comparer: 'MoreThan' | 'Equals' | 'LessThan';\n expectedIdeaCount: number;\n matches: RegExpMatchArray;\n\n constructor(term: string, matcher: RegExp) {\n super(term);\n this.matches = term.match(matcher);\n this.comparer = this.matches[1] as 'MoreThan' | 'Equals' | 'LessThan';\n this.expectedIdeaCount = parseInt(this.matches[2]);\n }\n\n evaluate(response: CRaterResponse | CRaterResponse[]): boolean {\n const detectedIdeaCount = this.getDetectedIdeaCount(response);\n switch (this.comparer) {\n case 'MoreThan':\n return detectedIdeaCount > this.expectedIdeaCount;\n case 'Equals':\n return detectedIdeaCount === this.expectedIdeaCount;\n case 'LessThan':\n return detectedIdeaCount < this.expectedIdeaCount;\n }\n }\n\n protected abstract getDetectedIdeaCount(response: CRaterResponse | CRaterResponse[]): number;\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "matcher", + "type": "RegExp", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 7, + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "matcher", + "type": "RegExp", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "comparer", + "deprecated": false, + "deprecationMessage": "", + "type": "\"MoreThan\" | \"Equals\" | \"LessThan\"", + "indexKey": "", + "optional": false, + "description": "", + "line": 5 + }, + { + "name": "expectedIdeaCount", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 6 + }, + { + "name": "matches", + "deprecated": false, + "deprecationMessage": "", + "type": "RegExpMatchArray", + "indexKey": "", + "optional": false, + "description": "", + "line": 7 + }, + { + "name": "configService", + "deprecated": false, + "deprecationMessage": "", + "type": "ConfigService", + "indexKey": "", + "optional": false, + "description": "", + "line": 8, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "constraintService", + "deprecated": false, + "deprecationMessage": "", + "type": "ConstraintService", + "indexKey": "", + "optional": false, + "description": "", + "line": 9, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "peerGroup", + "deprecated": false, + "deprecationMessage": "", + "type": "PeerGroup", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "referenceComponent", + "deprecated": false, + "deprecationMessage": "", + "type": "Component", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "TermEvaluator" + } + } + ], + "methods": [ + { + "name": "evaluate", + "args": [ + { + "name": "response", + "type": "CRaterResponse | CRaterResponse[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 16, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "response", + "type": "CRaterResponse | CRaterResponse[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "getDetectedIdeaCount", + "args": [ + { + "name": "response", + "type": "CRaterResponse | CRaterResponse[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 28, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124, + 128 + ], + "jsdoctags": [ + { + "name": "response", + "type": "CRaterResponse | CRaterResponse[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isAccumulatedIdeaCountTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 16, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "isBooleanTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 20, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "isHasKIScoreTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 32, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "isIdeaCountTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 36, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "isIdeaCountWithResponseIndexTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 40, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "isLowestWorkgroupIdInPeerGroupTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 24, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "isMyChoiceChosenTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 28, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "isSubmitNumberTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 44, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "requiresAllResponses", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 48, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "setConfigService", + "args": [ + { + "name": "service", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 55, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "service", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "setConstraintService", + "args": [ + { + "name": "service", + "type": "ConstraintService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 59, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "service", + "type": "ConstraintService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "setPeerGroup", + "args": [ + { + "name": "peerGroup", + "type": "PeerGroup", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 63, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "peerGroup", + "type": "PeerGroup", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "setReferenceComponent", + "args": [ + { + "name": "referenceComponent", + "type": "Component", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 67, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "referenceComponent", + "type": "Component", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + } + ], + "indexSignatures": [], + "extends": [ + "TermEvaluator" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "AccumulatedIdeaCountTermEvaluator", + "id": "class-AccumulatedIdeaCountTermEvaluator-74858d6df2ea2e6a17b7a095452f77b824be4aeb658a846c6cac8baacbeb0557bd98bde71af1784abdaee2d11c5958ea7dae16ac47bcc563376a40dbcd72a21e", + "file": "src/assets/wise5/components/common/feedbackRule/TermEvaluator/AccumulatedIdeaCountTermEvaluator.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { CRaterResponse } from '../../cRater/CRaterResponse';\nimport { AbstractIdeaCountTermEvaluator } from './AbstractIdeaCountTermEvaluator';\n\nexport class AccumulatedIdeaCountTermEvaluator extends AbstractIdeaCountTermEvaluator {\n constructor(term: string) {\n super(term, /accumulatedIdeaCount(.*)\\((.*)\\)/);\n }\n\n protected getDetectedIdeaCount(responses: CRaterResponse[]): number {\n return new Set(responses.flatMap((response) => response.getDetectedIdeaNames())).size;\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 4, + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "comparer", + "deprecated": false, + "deprecationMessage": "", + "type": "\"MoreThan\" | \"Equals\" | \"LessThan\"", + "indexKey": "", + "optional": false, + "description": "", + "line": 5, + "inheritance": { + "file": "AbstractIdeaCountTermEvaluator" + } + }, + { + "name": "expectedIdeaCount", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 6, + "inheritance": { + "file": "AbstractIdeaCountTermEvaluator" + } + }, + { + "name": "matches", + "deprecated": false, + "deprecationMessage": "", + "type": "RegExpMatchArray", + "indexKey": "", + "optional": false, + "description": "", + "line": 7, + "inheritance": { + "file": "AbstractIdeaCountTermEvaluator" + } + }, + { + "name": "configService", + "deprecated": false, + "deprecationMessage": "", + "type": "ConfigService", + "indexKey": "", + "optional": false, + "description": "", + "line": 8, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "constraintService", + "deprecated": false, + "deprecationMessage": "", + "type": "ConstraintService", + "indexKey": "", + "optional": false, + "description": "", + "line": 9, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "peerGroup", + "deprecated": false, + "deprecationMessage": "", + "type": "PeerGroup", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "referenceComponent", + "deprecated": false, + "deprecationMessage": "", + "type": "Component", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "TermEvaluator" + } + } + ], + "methods": [ + { + "name": "getDetectedIdeaCount", + "args": [ + { + "name": "responses", + "type": "CRaterResponse[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 9, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "responses", + "type": "CRaterResponse[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractIdeaCountTermEvaluator" + } + }, + { + "name": "evaluate", + "args": [ + { + "name": "response", + "type": "CRaterResponse | CRaterResponse[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 16, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "response", + "type": "CRaterResponse | CRaterResponse[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "isAccumulatedIdeaCountTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 16, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "isBooleanTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 20, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "isHasKIScoreTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 32, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "isIdeaCountTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 36, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "isIdeaCountWithResponseIndexTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 40, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "isLowestWorkgroupIdInPeerGroupTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 24, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "isMyChoiceChosenTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 28, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "isSubmitNumberTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 44, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "requiresAllResponses", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 48, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "setConfigService", + "args": [ + { + "name": "service", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 55, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "service", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "setConstraintService", + "args": [ + { + "name": "service", + "type": "ConstraintService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 59, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "service", + "type": "ConstraintService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "setPeerGroup", + "args": [ + { + "name": "peerGroup", + "type": "PeerGroup", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 63, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "peerGroup", + "type": "PeerGroup", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "setReferenceComponent", + "args": [ + { + "name": "referenceComponent", + "type": "Component", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 67, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "referenceComponent", + "type": "Component", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + } + ], + "indexSignatures": [], + "extends": [ + "AbstractIdeaCountTermEvaluator" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "AddStepTarget", + "id": "class-AddStepTarget-8d1ddf8b8449a0f18560fef114daf4acc838ee4f2a1229180bd561d49356a605396c0113723ad9525c1c30a08811d1f05be186f211479cd88ac431121c439ed0", + "file": "src/app/domain/addStepTarget.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "export class AddStepTarget {\n branchNodeId?: string;\n firstNodeIdInBranchPath?: string;\n importProjectId?: number;\n node?: any;\n targetId?: string;\n type: 'in' | 'after' | 'firstStepInBranchPath';\n\n constructor(\n type: 'in' | 'after' | 'firstStepInBranchPath',\n targetId: string,\n branchNodeId?: string,\n firstNodeIdInBranchPath?: string\n ) {\n this.type = type;\n this.targetId = targetId;\n this.branchNodeId = branchNodeId;\n this.firstNodeIdInBranchPath = firstNodeIdInBranchPath;\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "type", + "type": "\"in\" | \"after\" | \"firstStepInBranchPath\"", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "targetId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "branchNodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "optional": true + }, + { + "name": "firstNodeIdInBranchPath", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "optional": true + } + ], + "line": 7, + "jsdoctags": [ + { + "name": "type", + "type": "\"in\" | \"after\" | \"firstStepInBranchPath\"", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "targetId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "branchNodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "optional": true, + "tagName": { + "text": "param" + } + }, + { + "name": "firstNodeIdInBranchPath", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "optional": true, + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "branchNodeId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": true, + "description": "", + "line": 2 + }, + { + "name": "firstNodeIdInBranchPath", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": true, + "description": "", + "line": 3 + }, + { + "name": "importProjectId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": true, + "description": "", + "line": 4 + }, + { + "name": "node", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": true, + "description": "", + "line": 5 + }, + { + "name": "targetId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": true, + "description": "", + "line": 6 + }, + { + "name": "type", + "deprecated": false, + "deprecationMessage": "", + "type": "\"in\" | \"after\" | \"firstStepInBranchPath\"", + "indexKey": "", + "optional": false, + "description": "", + "line": 7 + } + ], + "methods": [], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "AddXNumberOfNotesOnThisStepConstraintStrategy", + "id": "class-AddXNumberOfNotesOnThisStepConstraintStrategy-176f2b09f6e473635da02dca0a320a82bc30446d4106225e68bbdc55c7a7b05a9338df1d0d9a2cc50f2b4acb486fdf94b7fd683b1d6966c9e2e29e0c1428b60f", + "file": "src/assets/wise5/common/constraint/strategies/AddXNumberOfNotesOnThisStepConstraintStrategy.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { AbstractConstraintStrategy } from './AbstractConstraintStrategy';\n\nexport class AddXNumberOfNotesOnThisStepConstraintStrategy extends AbstractConstraintStrategy {\n evaluate(criteria: any): boolean {\n try {\n const notebookItemsByNodeId = this.getNotebookItemsByNodeId(\n this.notebookService.getNotebookByWorkgroup(),\n criteria.params.nodeId\n );\n return notebookItemsByNodeId.length >= criteria.params.requiredNumberOfNotes;\n } catch (e) {}\n return false;\n }\n\n private getNotebookItemsByNodeId(notebook: any, nodeId: string): any[] {\n return notebook.allItems.filter((item) => item.nodeId === nodeId);\n }\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "annotationService", + "deprecated": false, + "deprecationMessage": "", + "type": "AnnotationService", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "completionService", + "deprecated": false, + "deprecationMessage": "", + "type": "CompletionService", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "componentServiceLookupService", + "deprecated": false, + "deprecationMessage": "", + "type": "ComponentServiceLookupService", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "configService", + "deprecated": false, + "deprecationMessage": "", + "type": "ConfigService", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "context", + "deprecated": false, + "deprecationMessage": "", + "type": "EvaluateConstraintContext", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "dataService", + "deprecated": false, + "deprecationMessage": "", + "type": "StudentDataService", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "notebookService", + "deprecated": false, + "deprecationMessage": "", + "type": "NotebookService", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "tagService", + "deprecated": false, + "deprecationMessage": "", + "type": "TagService", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + } + ], + "methods": [ + { + "name": "evaluate", + "args": [ + { + "name": "criteria", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 4, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "criteria", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "getNotebookItemsByNodeId", + "args": [ + { + "name": "notebook", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 15, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "notebook", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setContext", + "args": [ + { + "name": "context", + "type": "EvaluateConstraintContext", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 21, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "context", + "type": "EvaluateConstraintContext", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractConstraintStrategy" + } + } + ], + "indexSignatures": [], + "extends": [ + "AbstractConstraintStrategy" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "AiChatComponent", + "id": "class-AiChatComponent-3d492e1cede91afb188d46b2a0e15853995e839c9d8aac583a54f7e948e18d257693196703893010ac7fe2418b0f2f27a283fbcf579f8801bb8df594f14a74da", + "file": "src/assets/wise5/components/aiChat/AiChatComponent.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { Component } from '../../common/Component';\nimport { ComputerAvatarComponent } from '../../common/computer-avatar/computer-avatar-component';\nimport { AiChatContent } from './AiChatContent';\nimport { applyMixins } from '../../common/apply-mixins';\n\nexport class AiChatComponent extends Component implements ComputerAvatarComponent {\n content: AiChatContent;\n isComputerAvatarEnabled: () => boolean;\n isComputerAvatarPromptAvailable: () => boolean;\n isOnlyOneComputerAvatarAvailable: () => boolean;\n isUseGlobalComputerAvatar: () => boolean;\n getComputerAvatarInitialResponse: () => string;\n}\n\napplyMixins(AiChatComponent, [ComputerAvatarComponent]);\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "content", + "deprecated": false, + "deprecationMessage": "", + "type": "AiChatContent", + "indexKey": "", + "optional": false, + "description": "", + "line": 7, + "inheritance": { + "file": "Component" + } + }, + { + "name": "getComputerAvatarInitialResponse", + "deprecated": false, + "deprecationMessage": "", + "type": "function", + "indexKey": "", + "optional": false, + "description": "", + "line": 12 + }, + { + "name": "isComputerAvatarEnabled", + "deprecated": false, + "deprecationMessage": "", + "type": "function", + "indexKey": "", + "optional": false, + "description": "", + "line": 8 + }, + { + "name": "isComputerAvatarPromptAvailable", + "deprecated": false, + "deprecationMessage": "", + "type": "function", + "indexKey": "", + "optional": false, + "description": "", + "line": 9 + }, + { + "name": "isOnlyOneComputerAvatarAvailable", + "deprecated": false, + "deprecationMessage": "", + "type": "function", + "indexKey": "", + "optional": false, + "description": "", + "line": 10 + }, + { + "name": "isUseGlobalComputerAvatar", + "deprecated": false, + "deprecationMessage": "", + "type": "function", + "indexKey": "", + "optional": false, + "description": "", + "line": 11 + }, + { + "name": "id", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 5, + "inheritance": { + "file": "Component" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 6, + "inheritance": { + "file": "Component" + } + } + ], + "methods": [ + { + "name": "getConnectedComponent", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 43, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "Component" + } + }, + { + "name": "hasConnectedComponent", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 14, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "Component" + } + }, + { + "name": "hasConnectedComponentAlwaysField", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 18, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "Component" + } + }, + { + "name": "isAcceptsAssets", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 34, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "Component" + } + }, + { + "name": "isGradable", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 39, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "Component" + } + } + ], + "indexSignatures": [], + "extends": [ + "Component" + ], + "hostBindings": [], + "hostListeners": [], + "implements": [ + "ComputerAvatarComponent" + ] + }, + { + "name": "AiChatInfo", + "id": "class-AiChatInfo-cd8bef94556c19b6532399bda4ad91c0a89b43411be2428b893398c741cbaeaef54dd68198511516cf4dd13057eb97b21b0e0d5433bbea973dc17f16ecd34906", + "file": "src/assets/wise5/components/aiChat/AiChatInfo.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { ComponentInfo } from '../ComponentInfo';\n\nexport class AiChatInfo extends ComponentInfo {\n protected description: string = $localize`Students chat with an AI bot.`;\n protected label: string = $localize`AI Chat`;\n protected previewExamples: any[] = [\n {\n label: $localize`AI Chat`,\n content: {\n id: 'abcde12345',\n type: 'AiChat',\n prompt:\n \"Let's think about how global warming happens. At the end of the project you will revise your answer to this question. On a cold winter day, Akbar is walking to his car that is parked in the sun. His car has not been driven for one week. How will the temperature inside the car feel? Hint: Akbar wonders if what happens in his car is similar to the greenhouse effect.\",\n model: 'gpt-4',\n systemPrompt:\n 'You are a teacher helping a student understand the greenhouse effect by using the example of the inside of a car heating up from the sun on a cold day. You do not tell them the correct answer but you do guide them to the correct answer. Also make sure they explain their reasoning. Limit your response to 100 words or less.',\n isComputerAvatarEnabled: true,\n computerAvatarSettings: {\n ids: [\n 'person1',\n 'person2',\n 'person3',\n 'person4',\n 'person5',\n 'person6',\n 'person7',\n 'person8',\n 'robot1',\n 'robot2'\n ],\n label: 'Thought Buddy',\n prompt: 'Discuss your answer with a thought buddy!',\n initialResponse: 'Can you explain what happens to the temperature inside the car?'\n }\n }\n }\n ];\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "description", + "defaultValue": "$localize`Students chat with an AI bot.`", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 4, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentInfo" + } + }, + { + "name": "label", + "defaultValue": "$localize`AI Chat`", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 5, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentInfo" + } + }, + { + "name": "previewExamples", + "defaultValue": "[\n {\n label: $localize`AI Chat`,\n content: {\n id: 'abcde12345',\n type: 'AiChat',\n prompt:\n \"Let's think about how global warming happens. At the end of the project you will revise your answer to this question. On a cold winter day, Akbar is walking to his car that is parked in the sun. His car has not been driven for one week. How will the temperature inside the car feel? Hint: Akbar wonders if what happens in his car is similar to the greenhouse effect.\",\n model: 'gpt-4',\n systemPrompt:\n 'You are a teacher helping a student understand the greenhouse effect by using the example of the inside of a car heating up from the sun on a cold day. You do not tell them the correct answer but you do guide them to the correct answer. Also make sure they explain their reasoning. Limit your response to 100 words or less.',\n isComputerAvatarEnabled: true,\n computerAvatarSettings: {\n ids: [\n 'person1',\n 'person2',\n 'person3',\n 'person4',\n 'person5',\n 'person6',\n 'person7',\n 'person8',\n 'robot1',\n 'robot2'\n ],\n label: 'Thought Buddy',\n prompt: 'Discuss your answer with a thought buddy!',\n initialResponse: 'Can you explain what happens to the temperature inside the car?'\n }\n }\n }\n ]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 6, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentInfo" + } + } + ], + "methods": [ + { + "name": "getDescription", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 6, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentInfo" + } + }, + { + "name": "getLabel", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 10, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentInfo" + } + }, + { + "name": "getPreviewExamples", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 14, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentInfo" + } + } + ], + "indexSignatures": [], + "extends": [ + "ComponentInfo" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "AiChatMessage", + "id": "class-AiChatMessage-1f499b3d766d48ff2e92eea88cb4355de62305dae94d37ea4e61fdaca1c1991d98f1de35b4ac055a8dd311d48d5d04926d2ec8ce7be75a4bff4f506b5ba89651", + "file": "src/assets/wise5/components/aiChat/AiChatMessage.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "export class AiChatMessage {\n content: string;\n hidden: boolean;\n role: 'assistant' | 'system' | 'user';\n\n constructor(role: 'assistant' | 'system' | 'user', content: string, hidden: boolean = false) {\n this.content = content;\n this.role = role;\n this.hidden = hidden;\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "role", + "type": "\"assistant\" | \"system\" | \"user\"", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "content", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "hidden", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "line": 4, + "jsdoctags": [ + { + "name": "role", + "type": "\"assistant\" | \"system\" | \"user\"", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "content", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "hidden", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "content", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 2 + }, + { + "name": "hidden", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 3 + }, + { + "name": "role", + "deprecated": false, + "deprecationMessage": "", + "type": "\"assistant\" | \"system\" | \"user\"", + "indexKey": "", + "optional": false, + "description": "", + "line": 4 + } + ], + "methods": [], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "AiChatMessageReponse", + "id": "class-AiChatMessageReponse-58c12b89ed3da23b2dedec47ebc100ff66fc17a6250891477edbe7a8e96ba4794e2c54cb336c63cabb3fb71b48ac8b9a4f4067a6fd2e2747ffca0d0c227aadde", + "file": "src/assets/wise5/components/aiChat/AiChatMessageResponse.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { AiChatMessageResponseChoice } from './AiChatMessageResponseChoice';\n\nexport class AiChatMessageReponse {\n choices: AiChatMessageResponseChoice[];\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "choices", + "deprecated": false, + "deprecationMessage": "", + "type": "AiChatMessageResponseChoice[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 4 + } + ], + "methods": [], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "AiChatMessageResponseChoice", + "id": "class-AiChatMessageResponseChoice-4909b868fd930dad13be536cdd5242fcf821ef4acbc8a435d8ab704f5f38a982aae5e32d7fa762986d65e2aee8ba1eba0d58b3c73b2df544f00201e9750dac51", + "file": "src/assets/wise5/components/aiChat/AiChatMessageResponseChoice.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { AiChatMessage } from './AiChatMessage';\n\nexport class AiChatMessageResponseChoice {\n message: AiChatMessage;\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "message", + "deprecated": false, + "deprecationMessage": "", + "type": "AiChatMessage", + "indexKey": "", + "optional": false, + "description": "", + "line": 4 + } + ], + "methods": [], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "AnimationInfo", + "id": "class-AnimationInfo-0b14dbf9295ab7defd02732279569d92d77d17aa2b8dfaa06e8107f286091a9930b91cc2a362579e93d87bb05a8a29151720ec7d99e0e834c6cf55b3e3d3d8fa", + "file": "src/assets/wise5/components/animation/AnimationInfo.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { ComponentInfo } from '../ComponentInfo';\n\nexport class AnimationInfo extends ComponentInfo {\n protected description: string = $localize`Students watch an animation.`;\n protected label: string = $localize`Animation`;\n protected previewExamples: any[] = [\n {\n label: $localize`Animation`,\n content: {\n id: 'abcde12345',\n type: 'Animation',\n showSaveButton: false,\n showSubmitButton: false,\n widthInPixels: 740,\n heightInPixels: 200,\n widthInUnits: 53,\n heightInUnits: 20,\n dataXOriginInPixels: 0,\n dataYOriginInPixels: 90,\n coordinateSystem: 'screen',\n objects: [\n {\n id: 'qnn0c2xgck',\n type: 'image',\n image: '/assets/img/component-preview/pool-background.png',\n pixelX: 0,\n pixelY: 90\n },\n {\n id: '8p02z89200',\n type: 'image',\n image: '/assets/img/component-preview/Diving-board.png',\n pixelX: 0,\n pixelY: 25\n },\n {\n id: 'y2yv5w078a',\n type: 'text',\n text: 'Diving board',\n pixelX: 0,\n pixelY: 0\n },\n {\n id: 'kjlw72m46a',\n type: 'text',\n text: '0',\n pixelX: 0,\n pixelY: 60\n },\n {\n id: '3med1wqhac',\n type: 'text',\n text: '25',\n pixelX: 360,\n pixelY: 60\n },\n {\n id: 'k8hs2qlcxh',\n type: 'text',\n text: '50',\n pixelX: 720,\n pixelY: 60\n },\n {\n id: 'g1m6j9iyur',\n type: 'image',\n image: '/assets/img/component-preview/Swimmer-correct.png',\n dataX: 0,\n dataY: 0,\n data: [\n {\n t: 0,\n x: 0\n },\n {\n t: 20,\n x: 50\n },\n {\n t: 60,\n x: 0\n }\n ],\n imageMovingRight: '/assets/img/component-preview/Swimmer-correct.png',\n imageMovingLeft: '/assets/img/component-preview/Swimmer-correct-reverse.png'\n },\n {\n id: 'og4rulilwn',\n type: 'image',\n image: '/assets/img/component-preview/Swimmer.png',\n dataX: 0,\n dataY: 0,\n imageMovingRight: '/assets/img/component-preview/Swimmer.png',\n imageMovingLeft: '/assets/img/component-preview/Swimmer-reverse.png'\n }\n ],\n constraints: []\n }\n }\n ];\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "description", + "defaultValue": "$localize`Students watch an animation.`", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 4, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentInfo" + } + }, + { + "name": "label", + "defaultValue": "$localize`Animation`", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 5, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentInfo" + } + }, + { + "name": "previewExamples", + "defaultValue": "[\n {\n label: $localize`Animation`,\n content: {\n id: 'abcde12345',\n type: 'Animation',\n showSaveButton: false,\n showSubmitButton: false,\n widthInPixels: 740,\n heightInPixels: 200,\n widthInUnits: 53,\n heightInUnits: 20,\n dataXOriginInPixels: 0,\n dataYOriginInPixels: 90,\n coordinateSystem: 'screen',\n objects: [\n {\n id: 'qnn0c2xgck',\n type: 'image',\n image: '/assets/img/component-preview/pool-background.png',\n pixelX: 0,\n pixelY: 90\n },\n {\n id: '8p02z89200',\n type: 'image',\n image: '/assets/img/component-preview/Diving-board.png',\n pixelX: 0,\n pixelY: 25\n },\n {\n id: 'y2yv5w078a',\n type: 'text',\n text: 'Diving board',\n pixelX: 0,\n pixelY: 0\n },\n {\n id: 'kjlw72m46a',\n type: 'text',\n text: '0',\n pixelX: 0,\n pixelY: 60\n },\n {\n id: '3med1wqhac',\n type: 'text',\n text: '25',\n pixelX: 360,\n pixelY: 60\n },\n {\n id: 'k8hs2qlcxh',\n type: 'text',\n text: '50',\n pixelX: 720,\n pixelY: 60\n },\n {\n id: 'g1m6j9iyur',\n type: 'image',\n image: '/assets/img/component-preview/Swimmer-correct.png',\n dataX: 0,\n dataY: 0,\n data: [\n {\n t: 0,\n x: 0\n },\n {\n t: 20,\n x: 50\n },\n {\n t: 60,\n x: 0\n }\n ],\n imageMovingRight: '/assets/img/component-preview/Swimmer-correct.png',\n imageMovingLeft: '/assets/img/component-preview/Swimmer-correct-reverse.png'\n },\n {\n id: 'og4rulilwn',\n type: 'image',\n image: '/assets/img/component-preview/Swimmer.png',\n dataX: 0,\n dataY: 0,\n imageMovingRight: '/assets/img/component-preview/Swimmer.png',\n imageMovingLeft: '/assets/img/component-preview/Swimmer-reverse.png'\n }\n ],\n constraints: []\n }\n }\n ]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 6, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentInfo" + } + } + ], + "methods": [ + { + "name": "getDescription", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 6, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentInfo" + } + }, + { + "name": "getLabel", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 10, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentInfo" + } + }, + { + "name": "getPreviewExamples", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 14, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentInfo" + } + } + ], + "indexSignatures": [], + "extends": [ + "ComponentInfo" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "Annotation", + "id": "class-Annotation-31c9e31db191b7126edac4b0e5b7acf39ef8bfb98a8a1c38d1eb1cc2921d28954d9fd73ec1039b7d75027dc56c9bedafc28a03a344b4d82ea6af932dbfde8df0", + "file": "src/assets/wise5/common/Annotation.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "export class Annotation {\n clientSaveTime: number;\n componentId: string;\n data: any;\n fromWorkgroupId?: number;\n id: number;\n localNotebookItemId?: number;\n nodeId: string;\n notebookItemId: number;\n periodId: number;\n serverSaveTime: number;\n studentWorkId: number;\n toWorkgroupId: number;\n type: string;\n\n constructor(jsonObject: any = {}) {\n for (const key of Object.keys(jsonObject)) {\n this[key] = jsonObject[key];\n }\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "jsonObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "{}" + } + ], + "line": 14, + "jsdoctags": [ + { + "name": "jsonObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "{}", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "clientSaveTime", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 2 + }, + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 3 + }, + { + "name": "data", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 4 + }, + { + "name": "fromWorkgroupId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": true, + "description": "", + "line": 5 + }, + { + "name": "id", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 6 + }, + { + "name": "localNotebookItemId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": true, + "description": "", + "line": 7 + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 8 + }, + { + "name": "notebookItemId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 9 + }, + { + "name": "periodId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 10 + }, + { + "name": "serverSaveTime", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 11 + }, + { + "name": "studentWorkId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 12 + }, + { + "name": "toWorkgroupId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 13 + }, + { + "name": "type", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 14 + } + ], + "methods": [], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "Announcement", + "id": "class-Announcement-294fe79e8a2d0565b26f2fa62525f45d814679c98704720eb8f81b2d6516304d46e63a6398877e667887e068b131b623b27e822784781278f9170a7c29557d56", + "file": "src/app/domain/announcement.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { AnnouncementButton } from './announcementButton';\n\nexport class Announcement {\n visible: boolean = true;\n bannerText: string = '';\n bannerButton: string = '';\n title: string = '';\n content: string = '';\n buttons: AnnouncementButton[] = [];\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "bannerButton", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 6 + }, + { + "name": "bannerText", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 5 + }, + { + "name": "buttons", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "AnnouncementButton[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 9 + }, + { + "name": "content", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 8 + }, + { + "name": "title", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 7 + }, + { + "name": "visible", + "defaultValue": "true", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 4 + } + ], + "methods": [], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "AnnouncementButton", + "id": "class-AnnouncementButton-b2893c973a8cce1c8f64e9175866363b3d024fe43b82a539f19ad400d7bd8ffe3edac1fd771645791deed553957bbc9628501df7917e3a2457009744272a01e4", + "file": "src/app/domain/announcementButton.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "export class AnnouncementButton {\n color: string;\n link: string;\n text: string;\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "color", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 2 + }, + { + "name": "link", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 3 + }, + { + "name": "text", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 4 + } + ], + "methods": [], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "ArchiveProjectResponse", + "id": "class-ArchiveProjectResponse-267a9b79974c430bbd0026bb8904ee357e49d8bc6e16aadf9a46be0f81e048c543cf52348cd2556f9a3155016075fbe792c8a7b31cdce692aaadb72d8275b188", + "file": "src/app/domain/archiveProjectResponse.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { Tag } from './tag';\n\nexport class ArchiveProjectResponse {\n archived: boolean;\n id: number;\n tag: Tag;\n\n constructor(id: number, archived: boolean, tag: Tag) {\n this.id = id;\n this.archived = archived;\n this.tag = tag;\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "id", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "archived", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "tag", + "type": "Tag", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 6, + "jsdoctags": [ + { + "name": "id", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "archived", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "tag", + "type": "Tag", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "archived", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 4 + }, + { + "name": "id", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 5 + }, + { + "name": "tag", + "deprecated": false, + "deprecationMessage": "", + "type": "Tag", + "indexKey": "", + "optional": false, + "description": "", + "line": 6 + } + ], + "methods": [], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "AssetChooser", + "id": "class-AssetChooser-b83d0e84f0429f5913d8dec9eb6d463f079450af31b1518d6058229ad10a46bd517796581926a760a2319a15547706a44093f0ea99edc530ea1e38c6fdd8333d", + "file": "src/assets/wise5/authoringTool/project-asset-authoring/asset-chooser.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { ProjectAssetAuthoringComponent } from './project-asset-authoring.component';\n\nexport class AssetChooser {\n constructor(\n private dialog: MatDialog,\n private nodeId: string = null,\n private componentId: string = null,\n private projectId: number = null\n ) {}\n\n open(target: string, targetObject: any = null): MatDialogRef {\n return this.dialog.open(ProjectAssetAuthoringComponent, {\n data: {\n componentId: this.componentId,\n isPopup: true,\n nodeId: this.nodeId,\n projectId: this.projectId,\n target: target,\n targetObject: targetObject\n },\n width: '80%'\n });\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + }, + { + "name": "projectId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + } + ], + "line": 4, + "jsdoctags": [ + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + }, + { + "name": "projectId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [], + "methods": [ + { + "name": "open", + "args": [ + { + "name": "target", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "targetObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + } + ], + "optional": false, + "returnType": "MatDialogRef", + "typeParameters": [], + "line": 12, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "target", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "targetObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + } + ] + } + ], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "Attachment", + "id": "class-Attachment-28df4057a8a5380729bb0a748775cd95cd1d7b68e5b77201e6b05d3d569c9e65496c88a529dff88a3163ae6232fbc48530ecb648cf80389e91f22534e293ee5f", + "file": "src/assets/wise5/components/openResponse/audio-recorder/audio-recorder.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\nimport { Subscription } from 'rxjs';\nimport { AudioRecorderService } from '../../../services/audioRecorderService';\nimport { MatButton, MatIconButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatTooltip } from '@angular/material/tooltip';\n\nclass Attachment {\n type: string;\n url: string;\n}\n\n@Component({\n imports: [MatButton, MatIcon, MatIconButton, MatTooltip],\n selector: 'audio-recorder',\n templateUrl: './audio-recorder.component.html'\n})\nexport class AudioRecorderComponent implements OnInit {\n @Output() attachAudioRecording: EventEmitter = new EventEmitter();\n @Input() audioAttachments: Attachment[] = [];\n @Input() componentId: string;\n @Input() nodeId: string;\n recording: boolean;\n recordingInterval: number;\n recordingMaxTime: number = 60000;\n recordingStartTime: number = 0;\n @Output() removeAttachment: EventEmitter = new EventEmitter();\n subscriptions: Subscription = new Subscription();\n\n constructor(\n private audioRecorderService: AudioRecorderService,\n private sanitizer: DomSanitizer\n ) {}\n\n ngOnInit(): void {\n this.subscriptions.add(\n this.audioRecorderService.audioRecorded$.subscribe(({ requester, audioFile }) => {\n if (requester === `${this.nodeId}-${this.componentId}`) {\n this.attachAudioRecording.emit(audioFile);\n }\n })\n );\n }\n\n ngOnChanges(): void {\n this.audioAttachments.map((attachment) => {\n attachment.url = attachment.url;\n });\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n sanitizeUrl(url: string): SafeResourceUrl {\n return this.sanitizer.bypassSecurityTrustResourceUrl(url);\n }\n\n stopRecording(): void {\n this.audioRecorderService.stopRecording();\n this.recording = false;\n clearInterval(this.recordingInterval);\n }\n\n private getTimeElapsed(): number {\n return new Date().getTime() - this.recordingStartTime;\n }\n\n getTimeRemaining(): number {\n return Math.floor((this.recordingMaxTime - this.getTimeElapsed()) / 1000);\n }\n\n removeAudioAttachment(attachment: Attachment): void {\n if (confirm($localize`Are you sure you want to delete your recording?`)) {\n this.removeAttachment.emit(attachment);\n }\n }\n\n startRecording(): void {\n if (this.audioAttachments.length > 0) {\n if (confirm($localize`This will replace your existing recording. Is this OK?`)) {\n this.removeAllAudioAttachments();\n } else {\n return;\n }\n }\n this.audioRecorderService.startRecording(`${this.nodeId}-${this.componentId}`);\n this.startCountdown();\n this.recording = true;\n }\n\n private removeAllAudioAttachments(): void {\n this.audioAttachments.forEach((attachment) => {\n this.removeAttachment.emit(attachment);\n });\n }\n\n private startCountdown(): void {\n this.recordingStartTime = new Date().getTime();\n this.recordingInterval = window.setInterval(() => {\n if (this.getTimeRemaining() <= 0) {\n this.stopRecording();\n }\n }, 500);\n }\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "type", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 10 + }, + { + "name": "url", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 11 + } + ], + "methods": [], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "AudioOscillatorInfo", + "id": "class-AudioOscillatorInfo-d647579d88281c96e54346bcbcef978999486071b2bccabc9c9128b4e8b95db4867fc4020a940a960bbea28b549f7e9dce89e580c9f7d22e9d1bf166a6f1065e", + "file": "src/assets/wise5/components/audioOscillator/AudioOscillatorInfo.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { ComponentInfo } from '../ComponentInfo';\n\nexport class AudioOscillatorInfo extends ComponentInfo {\n protected description: string = $localize`Students change the frequency and amplitude of a sound wave. They listen to the resulting sounds and view graphs of the waves.`;\n protected label: string = $localize`Audio Oscillator`;\n protected previewExamples: any[] = [\n {\n label: $localize`Audio Oscillator`,\n content: {\n id: 'abcde12345',\n type: 'AudioOscillator',\n prompt:\n 'Press play to listen to the sound wave and change the frequency to hear the difference.',\n showSaveButton: false,\n showSubmitButton: false,\n oscillatorTypes: ['sine'],\n startingAmplitude: 44,\n startingFrequency: 440,\n oscilloscopeWidth: 800,\n oscilloscopeHeight: 400,\n gridCellSize: 50,\n stopAfterGoodDraw: true,\n canStudentEditAmplitude: true,\n canStudentEditFrequency: true,\n canStudentViewAmplitudeInput: true,\n canStudentViewFrequencyInput: true,\n constraints: []\n }\n }\n ];\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "description", + "defaultValue": "$localize`Students change the frequency and amplitude of a sound wave. They listen to the resulting sounds and view graphs of the waves.`", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 4, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentInfo" + } + }, + { + "name": "label", + "defaultValue": "$localize`Audio Oscillator`", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 5, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentInfo" + } + }, + { + "name": "previewExamples", + "defaultValue": "[\n {\n label: $localize`Audio Oscillator`,\n content: {\n id: 'abcde12345',\n type: 'AudioOscillator',\n prompt:\n 'Press play to listen to the sound wave and change the frequency to hear the difference.',\n showSaveButton: false,\n showSubmitButton: false,\n oscillatorTypes: ['sine'],\n startingAmplitude: 44,\n startingFrequency: 440,\n oscilloscopeWidth: 800,\n oscilloscopeHeight: 400,\n gridCellSize: 50,\n stopAfterGoodDraw: true,\n canStudentEditAmplitude: true,\n canStudentEditFrequency: true,\n canStudentViewAmplitudeInput: true,\n canStudentViewFrequencyInput: true,\n constraints: []\n }\n }\n ]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 6, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentInfo" + } + } + ], + "methods": [ + { + "name": "getDescription", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 6, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentInfo" + } + }, + { + "name": "getLabel", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 10, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentInfo" + } + }, + { + "name": "getPreviewExamples", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 14, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentInfo" + } + } + ], + "indexSignatures": [], + "extends": [ + "ComponentInfo" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "BooleanTermEvaluator", + "id": "class-BooleanTermEvaluator-c608d797ddc7ca21a5dcb96a69eefae2af3c3f5a9ac60dffe830e4ffff00d6a51781927ce3de8a7c495dc6444540b2b23a9be079849dc5a9f6863eaa449c9668", + "file": "src/assets/wise5/components/common/feedbackRule/TermEvaluator/BooleanTermEvaluator.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { Response } from '../Response';\nimport { TermEvaluator } from './TermEvaluator';\n\nexport class BooleanTermEvaluator extends TermEvaluator {\n constructor(protected term: string) {\n super(term);\n }\n\n evaluate(response: Response): boolean {\n /**\n * The term 'true' or 'false' is usually not authored, but is created and added to the termStack\n * by the application as it processes operator expressions like \"&&\", \"||\", and \"!\"\n * (see FeedbackRuleEvaluator.evaluateOperator()).\n * For example, if the student had ideas 1, 2 and 3, evaluating the postfix expression\n * [\"1\", \"2\", \"&&\", \"3\", \"&&\"] goes like this:\n * [\"1\", \"2\", \"&&\", \"3\", \"&&\"] => [\"true\", \"3\", \"&&\"] => [\"true\"] => true.\n */\n return this.term === 'true';\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 4, + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "configService", + "deprecated": false, + "deprecationMessage": "", + "type": "ConfigService", + "indexKey": "", + "optional": false, + "description": "", + "line": 8, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "constraintService", + "deprecated": false, + "deprecationMessage": "", + "type": "ConstraintService", + "indexKey": "", + "optional": false, + "description": "", + "line": 9, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "peerGroup", + "deprecated": false, + "deprecationMessage": "", + "type": "PeerGroup", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "referenceComponent", + "deprecated": false, + "deprecationMessage": "", + "type": "Component", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "TermEvaluator" + } + } + ], + "methods": [ + { + "name": "evaluate", + "args": [ + { + "name": "response", + "type": "Response", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 9, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "response", + "type": "Response", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "isAccumulatedIdeaCountTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 16, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "isBooleanTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 20, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "isHasKIScoreTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 32, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "isIdeaCountTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 36, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "isIdeaCountWithResponseIndexTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 40, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "isLowestWorkgroupIdInPeerGroupTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 24, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "isMyChoiceChosenTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 28, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "isSubmitNumberTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 44, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "requiresAllResponses", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 48, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "setConfigService", + "args": [ + { + "name": "service", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 55, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "service", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "setConstraintService", + "args": [ + { + "name": "service", + "type": "ConstraintService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 59, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "service", + "type": "ConstraintService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "setPeerGroup", + "args": [ + { + "name": "peerGroup", + "type": "PeerGroup", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 63, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "peerGroup", + "type": "PeerGroup", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "setReferenceComponent", + "args": [ + { + "name": "referenceComponent", + "type": "Component", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 67, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "referenceComponent", + "type": "Component", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + } + ], + "indexSignatures": [], + "extends": [ + "TermEvaluator" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "Branch", + "id": "class-Branch-c299f5a3b3aba5f9db06516516f28a3480d4954a342d96a80d20af256700313629b8688bd330ea48913b18e185710002c6bb54d1fde6bea99296e5452f0ea816", + "file": "src/app/domain/branch.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "export class Branch {\n startPoint: string;\n paths: string[][];\n endPoint: string;\n\n constructor(startPoint: string, paths: string[][], endPoint: string) {\n this.startPoint = startPoint;\n this.paths = paths;\n this.endPoint = endPoint;\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "startPoint", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "paths", + "type": "string[][]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "endPoint", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 4, + "jsdoctags": [ + { + "name": "startPoint", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "paths", + "type": "string[][]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "endPoint", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "endPoint", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 4 + }, + { + "name": "paths", + "deprecated": false, + "deprecationMessage": "", + "type": "string[][]", + "indexKey": "", + "optional": false, + "description": "", + "line": 3 + }, + { + "name": "startPoint", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 2 + } + ], + "methods": [], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "BranchPathTakenConstraintStrategy", + "id": "class-BranchPathTakenConstraintStrategy-4d4accceaa5414c58e3d81fca9ed1a679921415ff98e9ae13eca4b0fc2adf0fbb1dfb8f577d3e53e240735b7d937c40a6a733af3d5ba73ac2d8e833623ac28c6", + "file": "src/assets/wise5/common/constraint/strategies/BranchPathTakenConstraintStrategy.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { AbstractConstraintStrategy } from './AbstractConstraintStrategy';\n\nexport class BranchPathTakenConstraintStrategy extends AbstractConstraintStrategy {\n evaluate(criteria: any): boolean {\n const branchPathTakenEvents = this.dataService.getBranchPathTakenEventsByNodeId(\n criteria.params.fromNodeId\n );\n return branchPathTakenEvents.some(\n (event) =>\n event.data.fromNodeId === criteria.params.fromNodeId &&\n event.data.toNodeId === criteria.params.toNodeId\n );\n }\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "annotationService", + "deprecated": false, + "deprecationMessage": "", + "type": "AnnotationService", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "completionService", + "deprecated": false, + "deprecationMessage": "", + "type": "CompletionService", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "componentServiceLookupService", + "deprecated": false, + "deprecationMessage": "", + "type": "ComponentServiceLookupService", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "configService", + "deprecated": false, + "deprecationMessage": "", + "type": "ConfigService", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "context", + "deprecated": false, + "deprecationMessage": "", + "type": "EvaluateConstraintContext", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "dataService", + "deprecated": false, + "deprecationMessage": "", + "type": "StudentDataService", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "notebookService", + "deprecated": false, + "deprecationMessage": "", + "type": "NotebookService", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "tagService", + "deprecated": false, + "deprecationMessage": "", + "type": "TagService", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + } + ], + "methods": [ + { + "name": "evaluate", + "args": [ + { + "name": "criteria", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 4, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "criteria", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "setContext", + "args": [ + { + "name": "context", + "type": "EvaluateConstraintContext", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 21, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "context", + "type": "EvaluateConstraintContext", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractConstraintStrategy" + } + } + ], + "indexSignatures": [], + "extends": [ + "AbstractConstraintStrategy" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "Bucket", + "id": "class-Bucket-3158c3fd1284747bcc2790bb8627c5eb4a615517f09fc52ff1d91adf6cb7da0ab1f5d6338da3b95b1544d285a69892289e1bfe09dfbe810e7393b21a735e779f", + "file": "src/assets/wise5/components/match/bucket.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { Choice, mergeChoices } from './choice';\n\nexport class Bucket {\n id: string;\n items?: Choice[];\n value: string;\n\n constructor(id: string, value: string) {\n this.id = id;\n this.value = value;\n }\n}\n\n/**\n * Merge a bucket into the array of buckets. If the bucket id already exists in the array, merge\n * the choices in the bucket. If the bucket does not already exist in the array, add the bucket.\n * The array of buckets will be modified.\n * @param {array} buckets an array of buckets\n * @param {object} bucket the bucket\n * @return {array} an array of buckets\n */\nexport function mergeBucket(buckets: any[], bucket: any): any[] {\n let bucketFound = false;\n for (const tempBucket of buckets) {\n if (tempBucket.id === bucket.id) {\n bucketFound = true;\n tempBucket.items = mergeChoices(tempBucket.items, bucket.items);\n }\n }\n if (!bucketFound) {\n buckets.push(bucket);\n }\n return buckets;\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "value", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 6, + "jsdoctags": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "value", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "id", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 4 + }, + { + "name": "items", + "deprecated": false, + "deprecationMessage": "", + "type": "Choice[]", + "indexKey": "", + "optional": true, + "description": "", + "line": 5 + }, + { + "name": "value", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 6 + } + ], + "methods": [], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "Choice", + "id": "class-Choice-31bef98350daaf8a3fa3347096a797a743166ba802a24898bec971041048af4c90492a05d2a74cb6fb85653598f647a72a99ff806ed4cff9b846f9f4a0a13806", + "file": "src/assets/wise5/components/match/choice.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { NotebookItem } from '../../common/notebook/notebookItem';\n\nexport class Choice {\n feedback?: string;\n id: string;\n isCorrect?: boolean;\n isIncorrectPosition?: boolean;\n studentCreated?: boolean;\n value: string;\n\n constructor(id: string, value: string) {\n this.id = id;\n this.value = value;\n }\n}\n\nexport function createChoiceFromNotebookItem(notebookItem: NotebookItem): Choice {\n let value = notebookItem.content.text;\n notebookItem.content.attachments.forEach((attachment) => {\n value += `
\"image
`;\n });\n return new Choice(notebookItem.localNotebookItemId, value);\n}\n\n/**\n * Merge two arrays of choices.\n * @param {array} choices1 an array of choice objects\n * @param {array} choices2 an array of choice objects\n * @return {array} A new array of unique choice objects\n */\nexport function mergeChoices(choices1: Choice[], choices2: Choice[]): Choice[] {\n const mergedChoices = choices1.slice();\n const choices1Ids = choices1.map((choice) => choice.id);\n for (const choice2 of choices2) {\n if (!choices1Ids.includes(choice2.id)) {\n mergedChoices.push(choice2);\n }\n }\n return mergedChoices;\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "value", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 9, + "jsdoctags": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "value", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "feedback", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": true, + "description": "", + "line": 4 + }, + { + "name": "id", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 5 + }, + { + "name": "isCorrect", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": true, + "description": "", + "line": 6 + }, + { + "name": "isIncorrectPosition", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": true, + "description": "", + "line": 7 + }, + { + "name": "studentCreated", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": true, + "description": "", + "line": 8 + }, + { + "name": "value", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 9 + } + ], + "methods": [], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "Choice", + "id": "class-Choice-db47fbb752b8f8a62133f9a88c84fcc9e5a3c9c080b9e6fc0eafc5bd5a9fb7a40ebfaa59035a503c61366cdbda45be86e9d57a5db93a77c036349953168b5f63-1", + "file": "src/assets/wise5/components/multipleChoice/Choice.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "export class Choice {\n feedbackToShow: string;\n id: string;\n isCorrect: boolean;\n text: string;\n\n constructor(id: string, text: string, isCorrect: boolean, feedbackToShow: string) {\n this.id = id;\n this.text = text;\n this.isCorrect = isCorrect;\n this.feedbackToShow = feedbackToShow;\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isCorrect", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "feedbackToShow", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 5, + "jsdoctags": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "isCorrect", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "feedbackToShow", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "feedbackToShow", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 2 + }, + { + "name": "id", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 3 + }, + { + "name": "isCorrect", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 4 + }, + { + "name": "text", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 5 + } + ], + "methods": [], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [], + "isDuplicate": true, + "duplicateId": 1, + "duplicateName": "Choice-1" + }, + { + "name": "ChoiceChosenConstraintStrategy", + "id": "class-ChoiceChosenConstraintStrategy-7bb3dcb114a2dd17915b5a7e1be623babec3f0078f3125cdae145bc281298da2072d4dfc995b1ab112a188892f0158a70dbcda3566938ac343fffbc2516a61f4", + "file": "src/assets/wise5/common/constraint/strategies/ChoiceChosenConstraintStrategy.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { AbstractConstraintStrategy } from './AbstractConstraintStrategy';\n\nexport class ChoiceChosenConstraintStrategy extends AbstractConstraintStrategy {\n evaluate(criteria: any): boolean {\n const service = this.componentServiceLookupService.getService('MultipleChoice');\n const latestComponentState = this.dataService.getLatestComponentStateByNodeIdAndComponentId(\n criteria.params.nodeId,\n criteria.params.componentId\n );\n return latestComponentState != null && service.choiceChosen(criteria, latestComponentState);\n }\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "annotationService", + "deprecated": false, + "deprecationMessage": "", + "type": "AnnotationService", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "completionService", + "deprecated": false, + "deprecationMessage": "", + "type": "CompletionService", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "componentServiceLookupService", + "deprecated": false, + "deprecationMessage": "", + "type": "ComponentServiceLookupService", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "configService", + "deprecated": false, + "deprecationMessage": "", + "type": "ConfigService", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "context", + "deprecated": false, + "deprecationMessage": "", + "type": "EvaluateConstraintContext", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "dataService", + "deprecated": false, + "deprecationMessage": "", + "type": "StudentDataService", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "notebookService", + "deprecated": false, + "deprecationMessage": "", + "type": "NotebookService", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "tagService", + "deprecated": false, + "deprecationMessage": "", + "type": "TagService", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + } + ], + "methods": [ + { + "name": "evaluate", + "args": [ + { + "name": "criteria", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 4, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "criteria", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "setContext", + "args": [ + { + "name": "context", + "type": "EvaluateConstraintContext", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 21, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "context", + "type": "EvaluateConstraintContext", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractConstraintStrategy" + } + } + ], + "indexSignatures": [], + "extends": [ + "AbstractConstraintStrategy" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "ChoiceChosenTransition", + "id": "class-ChoiceChosenTransition-c1c899fd24884e403c6e3c754599bbe5de59133eefc8d8b69d75133ca125a0d9f49044b044ed6051eec6cc5e92cc83421df8c0b8b717298fa11c8b6d42fa0150", + "file": "src/assets/wise5/services/authorBranchService.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { AuthorBranchParams } from '../common/AuthorBranchParams';\nimport { TeacherProjectService } from './teacherProjectService';\nimport {\n CHOICE_CHOSEN_VALUE,\n SCORE_VALUE,\n WORKGROUP_ID_VALUE\n} from '../../../app/domain/branchCriteria';\nimport { Transition } from '../common/Transition';\nimport { TransitionCriteria } from '../common/TransitionCriteria';\nimport { TransitionCriteriaParams } from '../common/TransitionCriteriaParams';\nimport { Injectable } from '@angular/core';\n\n@Injectable()\nexport abstract class AuthorBranchService {\n constructor(protected projectService: TeacherProjectService) {}\n\n protected createPathStep(\n params: AuthorBranchParams,\n branchNode: any,\n nodeId: string,\n pathIndex: number\n ): void {\n const newNode = this.projectService.createNode($localize`Path ${pathIndex + 1}`);\n newNode.id = nodeId;\n this.addTransitionFromBranchNodeToPathNode(params, branchNode, newNode, pathIndex);\n this.projectService.addNode(newNode);\n this.projectService.addApplicationNode(newNode);\n this.projectService.setIdToNode(newNode.id, newNode);\n this.projectService.addBranchPathTakenConstraints(newNode.id, branchNode.id, newNode.id);\n }\n\n protected setPathStepTransitions(newNodeIds: string[], mergeStepId: string): void {\n for (const newNodeId of newNodeIds) {\n this.projectService.getNode(newNodeId).getTransitionLogic().transitions = [\n new Transition(mergeStepId)\n ];\n }\n }\n\n protected setBranchNodeTransitionLogic(branchNode: any, criteria: string): void {\n branchNode.transitionLogic.maxPathsVisitable = 1;\n branchNode.transitionLogic.howToChooseAmongAvailablePaths =\n criteria === WORKGROUP_ID_VALUE ? WORKGROUP_ID_VALUE : 'random';\n branchNode.transitionLogic.canChangePath = false;\n }\n\n private addTransitionFromBranchNodeToPathNode(\n params: AuthorBranchParams,\n branchNode: any,\n newNode: any,\n pathIndex: number\n ): void {\n switch (params.criteria) {\n case SCORE_VALUE:\n branchNode.transitionLogic.transitions.push(\n new ScoreTransition(newNode.id, params, params.paths[pathIndex].split(','))\n );\n branchNode.transitionLogic.whenToChoosePath =\n params.branchStepId === params.nodeId ? 'studentDataChanged' : 'enterNode';\n break;\n case CHOICE_CHOSEN_VALUE:\n branchNode.transitionLogic.transitions.push(\n new ChoiceChosenTransition(newNode.id, params, [params.paths[pathIndex]])\n );\n branchNode.transitionLogic.whenToChoosePath =\n params.branchStepId === params.nodeId ? 'studentDataChanged' : 'enterNode';\n break;\n default:\n branchNode.transitionLogic.transitions.push(new Transition(newNode.id));\n branchNode.transitionLogic.whenToChoosePath = 'enterNode';\n }\n }\n}\n\nclass ScoreTransition extends Transition {\n constructor(toNodeId: string, params: AuthorBranchParams, scores: string[]) {\n super(toNodeId, [\n new TransitionCriteria(\n SCORE_VALUE,\n new TransitionCriteriaParams({\n nodeId: params.nodeId,\n componentId: params.componentId,\n scores: scores\n })\n )\n ]);\n }\n}\n\nclass ChoiceChosenTransition extends Transition {\n constructor(toNodeId: string, params: AuthorBranchParams, choiceIds: string[]) {\n super(toNodeId, [\n new TransitionCriteria(\n CHOICE_CHOSEN_VALUE,\n new TransitionCriteriaParams({\n nodeId: params.nodeId,\n componentId: params.componentId,\n choiceIds: choiceIds\n })\n )\n ]);\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "toNodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "params", + "type": "AuthorBranchParams", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "choiceIds", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 90, + "jsdoctags": [ + { + "name": "toNodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "params", + "type": "AuthorBranchParams", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "choiceIds", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "criteria", + "deprecated": false, + "deprecationMessage": "", + "type": "TransitionCriteria[]", + "indexKey": "", + "optional": true, + "description": "", + "line": 4, + "inheritance": { + "file": "Transition" + } + }, + { + "name": "to", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 5, + "inheritance": { + "file": "Transition" + } + } + ], + "methods": [], + "indexSignatures": [], + "extends": [ + "Transition" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "ClassroomMonitorTestHelper", + "id": "class-ClassroomMonitorTestHelper-b72df4c6eca9145b7e7d5ecf23404729c6503695bba80d4f09a3996337072e3f6a4325ed8de8b87ccf4897ae94772ad65ba6668699cece809edbdc6ade7151ce", + "file": "src/assets/wise5/classroomMonitor/classroomMonitorComponents/shared/testing/ClassroomMonitorTestHelper.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { StudentProgress } from '../../../student-progress/student-progress.component';\n\nexport class ClassroomMonitorTestHelper {\n workgroupId1: number = 1;\n workgroupId2: number = 2;\n workgroupId3: number = 3;\n workgroupId4: number = 4;\n workgroupId5: number = 5;\n\n students: StudentProgress[] = [\n new StudentProgress({\n location: '1.2: Open Response',\n order: 2,\n workgroupId: this.workgroupId1,\n username: 'Spongebob Squarepants',\n firstName: 'Spongebob',\n lastName: 'Squarepants',\n completionPct: 30,\n scorePct: 0.8\n }),\n new StudentProgress({\n location: '1.1: Open Response',\n order: 1,\n workgroupId: this.workgroupId5,\n username: 'Patrick Star',\n firstName: 'Patrick',\n lastName: 'Star',\n completionPct: 10,\n scorePct: 0.6\n }),\n new StudentProgress({\n location: '1.5: Open Response',\n order: 5,\n workgroupId: this.workgroupId3,\n username: 'Squidward Tentacles',\n firstName: 'Squidward',\n lastName: 'Tentacles',\n completionPct: 20,\n scorePct: 0.4\n }),\n new StudentProgress({\n location: '1.11: Open Response',\n order: 11,\n workgroupId: this.workgroupId2,\n username: 'Sandy Cheeks',\n firstName: 'Sandy',\n lastName: 'Cheeks',\n completionPct: 50,\n scorePct: 0.8\n }),\n new StudentProgress({\n location: '1.5: Open Response',\n order: 5,\n workgroupId: this.workgroupId4,\n username: 'Sheldon Plankton',\n firstName: 'Sheldon',\n lastName: 'Plankton',\n completionPct: 20,\n scorePct: 0.8\n })\n ];\n\n expectWorkgroupOrder(workgroups: any[], expectedWorkgroupIdOrder: number[]): void {\n for (let w = 0; w < workgroups.length; w++) {\n expect(workgroups[w].workgroupId).toEqual(expectedWorkgroupIdOrder[w]);\n }\n }\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "students", + "defaultValue": "[\n new StudentProgress({\n location: '1.2: Open Response',\n order: 2,\n workgroupId: this.workgroupId1,\n username: 'Spongebob Squarepants',\n firstName: 'Spongebob',\n lastName: 'Squarepants',\n completionPct: 30,\n scorePct: 0.8\n }),\n new StudentProgress({\n location: '1.1: Open Response',\n order: 1,\n workgroupId: this.workgroupId5,\n username: 'Patrick Star',\n firstName: 'Patrick',\n lastName: 'Star',\n completionPct: 10,\n scorePct: 0.6\n }),\n new StudentProgress({\n location: '1.5: Open Response',\n order: 5,\n workgroupId: this.workgroupId3,\n username: 'Squidward Tentacles',\n firstName: 'Squidward',\n lastName: 'Tentacles',\n completionPct: 20,\n scorePct: 0.4\n }),\n new StudentProgress({\n location: '1.11: Open Response',\n order: 11,\n workgroupId: this.workgroupId2,\n username: 'Sandy Cheeks',\n firstName: 'Sandy',\n lastName: 'Cheeks',\n completionPct: 50,\n scorePct: 0.8\n }),\n new StudentProgress({\n location: '1.5: Open Response',\n order: 5,\n workgroupId: this.workgroupId4,\n username: 'Sheldon Plankton',\n firstName: 'Sheldon',\n lastName: 'Plankton',\n completionPct: 20,\n scorePct: 0.8\n })\n ]", + "deprecated": false, + "deprecationMessage": "", + "type": "StudentProgress[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 10 + }, + { + "name": "workgroupId1", + "defaultValue": "1", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 4 + }, + { + "name": "workgroupId2", + "defaultValue": "2", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 5 + }, + { + "name": "workgroupId3", + "defaultValue": "3", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 6 + }, + { + "name": "workgroupId4", + "defaultValue": "4", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 7 + }, + { + "name": "workgroupId5", + "defaultValue": "5", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 8 + } + ], + "methods": [ + { + "name": "expectWorkgroupOrder", + "args": [ + { + "name": "workgroups", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "expectedWorkgroupIdOrder", + "type": "number[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 63, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "workgroups", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "expectedWorkgroupIdOrder", + "type": "number[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "CompletionStatus", + "id": "class-CompletionStatus-11c81650bd0ce17643e7c020698d0625c0eae37f0b6b15b909c2985a123d86e3f962df63bcbe33dd34b475519cecb3c404bd381d787650604f1cee0cd364b66e", + "file": "src/assets/wise5/classroomMonitor/classroomMonitorComponents/shared/CompletionStatus.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "export class CompletionStatus {\n isCompleted: boolean;\n isVisible: boolean;\n latestWorkTime: string;\n latestAnnotationTime: string;\n\n constructor() {\n this.isCompleted = false;\n this.isVisible = false;\n this.latestWorkTime = null;\n this.latestAnnotationTime = null;\n }\n\n /**\n * Returns a numerical status value for this completion status object depending on node completion\n * Available status values are:\n * -1 (not visible)\n * 0 (not visited/no work; default)\n * 1 (partially completed)\n * 2 (completed)\n * @returns number status value\n */\n getStateNumber(): number {\n let status = 0;\n if (!this.isVisible) {\n status = -1;\n } else if (this.isCompleted) {\n status = 2;\n } else if (this.latestWorkTime !== null) {\n status = 1;\n }\n return status;\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [], + "line": 5 + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "isCompleted", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 2 + }, + { + "name": "isVisible", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 3 + }, + { + "name": "latestAnnotationTime", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 5 + }, + { + "name": "latestWorkTime", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 4 + } + ], + "methods": [ + { + "name": "getStateNumber", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 23, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nReturns a numerical status value for this completion status object depending on node completion\nAvailable status values are:\n -1 (not visible)\n 0 (not visited/no work; default)\n 1 (partially completed)\n 2 (completed)\n", + "description": "

Returns a numerical status value for this completion status object depending on node completion\nAvailable status values are:\n -1 (not visible)\n 0 (not visited/no work; default)\n 1 (partially completed)\n 2 (completed)

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 555, + "end": 562, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

number status value

\n" + } + ] + } + ], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "Component", + "id": "class-Component-0b4f11d6c9a9a596a093e8fbd31c8033dccb64db84125db1c9e7aafe7c7d99a4e5cf09101b648d27ce1ab12e7261b2441445bb7bb322698714f4816061f2fc8d", + "file": "src/assets/wise5/common/Component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { ComponentContent } from './ComponentContent';\n\nexport class Component {\n content: ComponentContent;\n id: string;\n nodeId: string;\n\n constructor(content: ComponentContent, nodeId: string) {\n this.content = content;\n this.id = content.id;\n this.nodeId = nodeId;\n }\n\n hasConnectedComponent(): boolean {\n return this.content.connectedComponents?.length > 0;\n }\n\n hasConnectedComponentAlwaysField(): boolean {\n const connectedComponents = this.content.connectedComponents;\n if (connectedComponents != null && connectedComponents.length > 0) {\n for (const connectedComponent of connectedComponents) {\n if (connectedComponent.fields != null) {\n for (const field of connectedComponent.fields) {\n if (field.when == 'always') {\n return true;\n }\n }\n }\n }\n }\n return false;\n }\n\n isAcceptsAssets(): boolean {\n // TODO: move these to individual component classes when we have them\n return ['ConceptMap', 'Discussion', 'Draw', 'Label', 'Table'].includes(this.content.type);\n }\n\n isGradable(): boolean {\n return true;\n }\n\n getConnectedComponent(nodeId: string, componentId: string): any {\n return this.content.connectedComponents.find(\n (connectedComponent) =>\n connectedComponent.nodeId == nodeId && connectedComponent.componentId == componentId\n );\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "content", + "type": "ComponentContent", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 6, + "jsdoctags": [ + { + "name": "content", + "type": "ComponentContent", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "content", + "deprecated": false, + "deprecationMessage": "", + "type": "ComponentContent", + "indexKey": "", + "optional": false, + "description": "", + "line": 4 + }, + { + "name": "id", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 5 + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 6 + } + ], + "methods": [ + { + "name": "getConnectedComponent", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 43, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "hasConnectedComponent", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 14, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "hasConnectedComponentAlwaysField", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 18, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isAcceptsAssets", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 34, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isGradable", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 39, + "deprecated": false, + "deprecationMessage": "" + } + ], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "ComponentFactory", + "id": "class-ComponentFactory-85e1982b72655ecdd3787baf00b61bcd97ba54d510e37a066a4f9ee3e567ea6167b531207478ff036b580eec7b6f465fe202bb129b7c7e09c92c49c66fa75e45", + "file": "src/assets/wise5/common/ComponentFactory.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { AiChatComponent } from '../components/aiChat/AiChatComponent';\nimport { DialogGuidanceComponent } from '../components/dialogGuidance/DialogGuidanceComponent';\nimport { MultipleChoiceComponent } from '../components/multipleChoice/MultipleChoiceComponent';\nimport { PeerChatComponent } from '../components/peerChat/PeerChatComponent';\nimport { ShowGroupWorkComponent } from '../components/showGroupWork/ShowGroupWorkComponent';\nimport { Component } from './Component';\nimport { ComponentContent } from './ComponentContent';\n\nexport class ComponentFactory {\n getComponent(content: ComponentContent, nodeId: string): Component {\n if (content.type === 'AiChat') {\n return new AiChatComponent(content, nodeId);\n } else if (content.type === 'DialogGuidance') {\n return new DialogGuidanceComponent(content, nodeId);\n } else if (content.type === 'MultipleChoice') {\n return new MultipleChoiceComponent(content, nodeId);\n } else if (content.type === 'PeerChat') {\n return new PeerChatComponent(content, nodeId);\n } else if (content.type === 'ShowGroupWork') {\n return new ShowGroupWorkComponent(content, nodeId);\n } else {\n return new Component(content, nodeId);\n }\n }\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [], + "methods": [ + { + "name": "getComponent", + "args": [ + { + "name": "content", + "type": "ComponentContent", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Component", + "typeParameters": [], + "line": 10, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "content", + "type": "ComponentContent", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "ComponentInfo", + "id": "class-ComponentInfo-93148c3e79c2dc5af898ae7733ddf414b3b217d6c3ed284f0fa5748e28bad3eac37835f49c17909fd0e78011c4032f60cb772cbc99f0261e685db711c8c50bc7", + "file": "src/assets/wise5/components/ComponentInfo.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "export abstract class ComponentInfo {\n protected abstract description: string;\n protected abstract label: string;\n protected abstract previewExamples: any[];\n\n getDescription(): string {\n return this.description;\n }\n\n getLabel(): string {\n return this.label;\n }\n\n getPreviewExamples(): any[] {\n return this.previewExamples;\n }\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "description", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 2, + "modifierKind": [ + 124, + 128 + ] + }, + { + "name": "label", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 3, + "modifierKind": [ + 124, + 128 + ] + }, + { + "name": "previewExamples", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 4, + "modifierKind": [ + 124, + 128 + ] + } + ], + "methods": [ + { + "name": "getDescription", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 6, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getLabel", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 10, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getPreviewExamples", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 14, + "deprecated": false, + "deprecationMessage": "" + } + ], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "ComponentInfoDialogHarness", + "id": "class-ComponentInfoDialogHarness-d8df17ba6f378374e38729dd3fe9025f2924266786e14a30c56f3d57030ccf2a3fd67a78d71208224573d13e1b163e50f7ac0158431e3918a6a1a76ada1b1d25", + "file": "src/assets/wise5/authoringTool/components/component-info-dialog/component-info-dialog.harness.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { ComponentHarness } from '@angular/cdk/testing';\nimport { ComponentTypeSelectorHarness } from '../component-type-selector/component-type-selector.harness';\nimport { MatTabGroupHarness } from '@angular/material/tabs/testing';\n\nexport class ComponentInfoDialogHarness extends ComponentHarness {\n static hostSelector = 'component-info-dialog';\n getComponentTypeSelector = this.locatorFor(ComponentTypeSelectorHarness);\n getDescription = this.locatorFor('.description');\n getTabGroup = this.locatorFor(MatTabGroupHarness);\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "getComponentTypeSelector", + "defaultValue": "this.locatorFor(ComponentTypeSelectorHarness)", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 7 + }, + { + "name": "getDescription", + "defaultValue": "this.locatorFor('.description')", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 8 + }, + { + "name": "getTabGroup", + "defaultValue": "this.locatorFor(MatTabGroupHarness)", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 9 + }, + { + "name": "hostSelector", + "defaultValue": "'component-info-dialog'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 6, + "modifierKind": [ + 126 + ] + } + ], + "methods": [], + "indexSignatures": [], + "extends": [ + "ComponentHarness" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "ComponentRevisionCounter", + "id": "class-ComponentRevisionCounter-b71eedb0bd552ec6b5213b9fd9ace865ddc2fc213e7566056f4e8c390a69335224e79fa85c5260c43e640ee8f9e4ece36af157ee5856531f6cd4d81a7d564762", + "file": "src/assets/wise5/classroomMonitor/dataExport/ComponentRevisionCounter.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "export class ComponentRevisionCounter extends Map {\n incrementCounter(nodeId: string, componentId: string): void {\n const key = this.getKey(nodeId, componentId);\n this.initializeKeyIfNecessary(key);\n this.set(key, this.get(key) + 1);\n }\n\n getCounter(nodeId: string, componentId: string): number {\n const key = this.getKey(nodeId, componentId);\n this.initializeKeyIfNecessary(key);\n return this.get(key);\n }\n\n private getKey(nodeId: string, componentId: string): string {\n return `${nodeId}_${componentId}`;\n }\n\n private initializeKeyIfNecessary(key: string): void {\n if (!this.has(key)) {\n this.set(key, 1);\n }\n }\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [], + "methods": [ + { + "name": "getCounter", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 8, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getKey", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 14, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "incrementCounter", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 2, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "initializeKeyIfNecessary", + "args": [ + { + "name": "key", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 18, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "key", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "indexSignatures": [], + "extends": [ + "Map" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "ComponentState", + "id": "class-ComponentState-072d02e0a6149acb711377ce434322efe1f487c60fe032ce13de3fc2d6a04be3cd61867502f67cbd127502ba0c70b4138d4e26ef21bcec174ccbd55ec1995798", + "file": "src/app/domain/componentState.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "export class ComponentState {\n id?: number;\n clientSaveTime: number;\n componentId: string;\n componentType: string;\n isSubmit: boolean;\n nodeId: string;\n peerGroupId?: number;\n periodId: number;\n runId: number;\n serverSaveTime?: number;\n studentData: any;\n workgroupId: number;\n\n constructor(jsonObject: any = {}) {\n for (const key of Object.keys(jsonObject)) {\n this[key] = jsonObject[key];\n }\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "jsonObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "{}" + } + ], + "line": 13, + "jsdoctags": [ + { + "name": "jsonObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "{}", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "clientSaveTime", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 3 + }, + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 4 + }, + { + "name": "componentType", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 5 + }, + { + "name": "id", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": true, + "description": "", + "line": 2 + }, + { + "name": "isSubmit", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 6 + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 7 + }, + { + "name": "peerGroupId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": true, + "description": "", + "line": 8 + }, + { + "name": "periodId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 9 + }, + { + "name": "runId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 10 + }, + { + "name": "serverSaveTime", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": true, + "description": "", + "line": 11 + }, + { + "name": "studentData", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 12 + }, + { + "name": "workgroupId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 13 + } + ], + "methods": [], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "ComponentStatus", + "id": "class-ComponentStatus-2b3814ac220ee2e7cea7aeeb17df73caee3d4e91816f50170fc38dbf32489f62678118fd40487c3348af8afbd138c53834e765f90260bbe5414ae7cf478144bb", + "file": "src/assets/wise5/common/ComponentStatus.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "export class ComponentStatus {\n isCompleted: boolean;\n isVisible: boolean;\n\n constructor(isCompleted: boolean, isVisible: boolean) {\n this.isCompleted = isCompleted;\n this.isVisible = isVisible;\n }\n\n isVisibleAndNotCompleted(): boolean {\n return this.isVisible && !this.isCompleted;\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "isCompleted", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isVisible", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 3, + "jsdoctags": [ + { + "name": "isCompleted", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "isVisible", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "isCompleted", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 2 + }, + { + "name": "isVisible", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 3 + } + ], + "methods": [ + { + "name": "isVisibleAndNotCompleted", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 10, + "deprecated": false, + "deprecationMessage": "" + } + ], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "ComponentTypeSelectorHarness", + "id": "class-ComponentTypeSelectorHarness-bd6d6665bc346430077e3233e0973a9af8572222c704366cef22db65def702dc6bd2106e2d3e04755aeb340fe86f9951defe0cd9c0fd36798933607928a268d5", + "file": "src/assets/wise5/authoringTool/components/component-type-selector/component-type-selector.harness.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { ComponentHarness } from '@angular/cdk/testing';\nimport { MatButtonHarness } from '@angular/material/button/testing';\nimport { MatSelectHarness } from '@angular/material/select/testing';\n\nexport class ComponentTypeSelectorHarness extends ComponentHarness {\n static hostSelector = 'component-type-selector';\n getPreviousComponentTypeButton = this.locatorFor(\n MatButtonHarness.with({ selector: '[aria-label=\"Previous component type\"]' })\n );\n getNextComponentTypeButton = this.locatorFor(\n MatButtonHarness.with({ selector: '[aria-label=\"Next component type\"]' })\n );\n getComponentTypeSelect = this.locatorFor(MatSelectHarness);\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "getComponentTypeSelect", + "defaultValue": "this.locatorFor(MatSelectHarness)", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 13 + }, + { + "name": "getNextComponentTypeButton", + "defaultValue": "this.locatorFor(\n MatButtonHarness.with({ selector: '[aria-label=\"Next component type\"]' })\n )", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 10 + }, + { + "name": "getPreviousComponentTypeButton", + "defaultValue": "this.locatorFor(\n MatButtonHarness.with({ selector: '[aria-label=\"Previous component type\"]' })\n )", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 7 + }, + { + "name": "hostSelector", + "defaultValue": "'component-type-selector'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 6, + "modifierKind": [ + 126 + ] + } + ], + "methods": [], + "indexSignatures": [], + "extends": [ + "ComponentHarness" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "ComputerAvatar", + "id": "class-ComputerAvatar-272acd3c2771505cfcc36db5ef49b9216717de149bb5daf16a5950d720c435f272f95336c3a7cfe822eba8de3ed113909814d8e5ba8a52a45e6595a6bfafc8f8", + "file": "src/assets/wise5/common/computer-avatar/ComputerAvatar.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "export class ComputerAvatar {\n id: string;\n image: string;\n isSelected: boolean;\n name: string;\n\n constructor(id: string, name: string, image: string) {\n this.id = id;\n this.image = image;\n this.name = name;\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "name", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "image", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 5, + "jsdoctags": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "name", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "image", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "id", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 2 + }, + { + "name": "image", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 3 + }, + { + "name": "isSelected", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 4 + }, + { + "name": "name", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 5 + } + ], + "methods": [], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "ComputerAvatarComponent", + "id": "class-ComputerAvatarComponent-967550a823bf00b522fc73f6e0e68f6edf2dcc267a604ddc54ead4a481c11a63096ed38fd1bee4f02cce05a2a54df095ac27690b7b37d48504873b469073026e", + "file": "src/assets/wise5/common/computer-avatar/computer-avatar-component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { ComputerAvatarComponentContent } from './computer-avatar-component-content';\n\nexport class ComputerAvatarComponent {\n content: ComputerAvatarComponentContent;\n\n isComputerAvatarEnabled(): boolean {\n return this.content.isComputerAvatarEnabled;\n }\n\n isComputerAvatarPromptAvailable(): boolean {\n const computerAvatarPrompt = this.content.computerAvatarSettings.prompt;\n return computerAvatarPrompt != null && computerAvatarPrompt !== '';\n }\n\n isOnlyOneComputerAvatarAvailable(): boolean {\n return this.content.computerAvatarSettings.ids.length === 1;\n }\n\n isUseGlobalComputerAvatar(): boolean {\n return this.content.computerAvatarSettings.useGlobalComputerAvatar;\n }\n\n getComputerAvatarInitialResponse(): string {\n return this.content.computerAvatarSettings.initialResponse;\n }\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "content", + "deprecated": false, + "deprecationMessage": "", + "type": "ComputerAvatarComponentContent", + "indexKey": "", + "optional": false, + "description": "", + "line": 4 + } + ], + "methods": [ + { + "name": "getComputerAvatarInitialResponse", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 23, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isComputerAvatarEnabled", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 6, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isComputerAvatarPromptAvailable", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 10, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isOnlyOneComputerAvatarAvailable", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 15, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isUseGlobalComputerAvatar", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 19, + "deprecated": false, + "deprecationMessage": "" + } + ], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "ComputerAvatarInitializer", + "id": "class-ComputerAvatarInitializer-ef1663b3b53b43418c0fa8adff95f415dffe2db559ec8c7816637e29625621011f6616fb76948d1d03b636aecb65304925537944b1695ce15ec1c09fe35fd788", + "file": "src/assets/wise5/common/computer-avatar/computer-avatar-initializer.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { ComputerAvatar } from './ComputerAvatar';\nimport { ComputerAvatarComponent } from './computer-avatar-component';\nimport { ComputerAvatarService } from '../../services/computerAvatarService';\nimport { StudentStatusService } from '../../services/studentStatusService';\n\nexport abstract class ComputerAvatarInitializer {\n component: ComputerAvatarComponent;\n componentState: any;\n protected computerAvatar: ComputerAvatar;\n protected computerAvatarSelectorVisible: boolean = false;\n\n constructor(\n protected computerAvatarService: ComputerAvatarService,\n protected studentStatusService: StudentStatusService\n ) {}\n\n protected initializeComputerAvatar(): void {\n if (this.component.isComputerAvatarEnabled()) {\n this.tryToRepopulateComputerAvatar();\n if (this.hasStudentPreviouslyChosenComputerAvatar()) {\n this.hideComputerAvatarSelector();\n } else if (\n this.component.isOnlyOneComputerAvatarAvailable() &&\n !this.component.isComputerAvatarPromptAvailable()\n ) {\n this.selectComputerAvatar(this.getFirstComputerAvatar());\n } else {\n this.showComputerAvatarSelector();\n }\n } else {\n this.computerAvatar = this.computerAvatarService.getDefaultAvatar();\n }\n }\n\n private tryToRepopulateComputerAvatar(): void {\n if (this.includesComputerAvatar(this.componentState)) {\n this.repopulateComputerAvatarFromComponentState(this.componentState);\n } else if (\n this.component.isUseGlobalComputerAvatar() &&\n this.studentStatusService.isGlobalComputerAvatarAvailable()\n ) {\n this.repopulateGlobalComputerAvatar();\n }\n }\n\n private includesComputerAvatar(componentState: any): boolean {\n return componentState?.studentData?.computerAvatarId != null;\n }\n\n private repopulateComputerAvatarFromComponentState(componentState: any): void {\n this.computerAvatar = this.computerAvatarService.getAvatar(\n componentState?.studentData?.computerAvatarId\n );\n }\n\n private repopulateGlobalComputerAvatar(): void {\n const computerAvatarId = this.studentStatusService.getComputerAvatarId();\n if (computerAvatarId != null) {\n this.selectComputerAvatar(this.computerAvatarService.getAvatar(computerAvatarId));\n }\n }\n\n private hasStudentPreviouslyChosenComputerAvatar(): boolean {\n return this.computerAvatar != null;\n }\n\n private getFirstComputerAvatar(): ComputerAvatar {\n return this.computerAvatarService.getAvatar(\n this.component.content.computerAvatarSettings.ids[0]\n );\n }\n\n private showComputerAvatarSelector(): void {\n this.computerAvatarSelectorVisible = true;\n }\n\n private hideComputerAvatarSelector(): void {\n this.computerAvatarSelectorVisible = false;\n }\n\n protected selectComputerAvatar(computerAvatar: ComputerAvatar): void {\n this.computerAvatar = computerAvatar;\n if (this.component.isUseGlobalComputerAvatar()) {\n this.studentStatusService.setComputerAvatarId(computerAvatar.id);\n }\n this.hideComputerAvatarSelector();\n const computerAvatarInitialResponse = this.component.getComputerAvatarInitialResponse();\n if (computerAvatarInitialResponse != null && computerAvatarInitialResponse !== '') {\n this.showInitialMessage();\n }\n }\n\n abstract showInitialMessage(): void;\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "computerAvatarService", + "type": "ComputerAvatarService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentStatusService", + "type": "StudentStatusService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 10, + "jsdoctags": [ + { + "name": "computerAvatarService", + "type": "ComputerAvatarService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentStatusService", + "type": "StudentStatusService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "component", + "deprecated": false, + "deprecationMessage": "", + "type": "ComputerAvatarComponent", + "indexKey": "", + "optional": false, + "description": "", + "line": 7 + }, + { + "name": "componentState", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 8 + }, + { + "name": "computerAvatar", + "deprecated": false, + "deprecationMessage": "", + "type": "ComputerAvatar", + "indexKey": "", + "optional": false, + "description": "", + "line": 9, + "modifierKind": [ + 124 + ] + }, + { + "name": "computerAvatarSelectorVisible", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "modifierKind": [ + 124 + ] + } + ], + "methods": [ + { + "name": "getFirstComputerAvatar", + "args": [], + "optional": false, + "returnType": "ComputerAvatar", + "typeParameters": [], + "line": 67, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "hasStudentPreviouslyChosenComputerAvatar", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 63, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "hideComputerAvatarSelector", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 77, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "includesComputerAvatar", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 46, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "initializeComputerAvatar", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 17, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "repopulateComputerAvatarFromComponentState", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 50, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "repopulateGlobalComputerAvatar", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 56, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "selectComputerAvatar", + "args": [ + { + "name": "computerAvatar", + "type": "ComputerAvatar", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 81, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "computerAvatar", + "type": "ComputerAvatar", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "showComputerAvatarSelector", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 73, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "showInitialMessage", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 93, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 128 + ] + }, + { + "name": "tryToRepopulateComputerAvatar", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 35, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + } + ], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "ComputerAvatarSettings", + "id": "class-ComputerAvatarSettings-ed5bf708765542037e663a08c581d097ab915712ea5af3af3a3132a4a5974d2cc7d50f8bb124edc35c82a45c2113bab559c40e04d77e80245275406decb3c07e", + "file": "src/assets/wise5/common/computer-avatar/ComputerAvatarSettings.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "export class ComputerAvatarSettings {\n ids: string[];\n label: string;\n prompt: string;\n initialResponse: string;\n useGlobalComputerAvatar?: boolean;\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "ids", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 2 + }, + { + "name": "initialResponse", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 5 + }, + { + "name": "label", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 3 + }, + { + "name": "prompt", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 4 + }, + { + "name": "useGlobalComputerAvatar", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": true, + "description": "", + "line": 6 + } + ], + "methods": [], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "ComputerDialogResponse", + "id": "class-ComputerDialogResponse-27606a59c5605d1b0f212033b8804b0d3d8c663214f84ca5f42d69336136450e009d789fe1eebd12397a5719b9c90ffedfed15a63c3dd13de69c85ac495ed5b8", + "file": "src/assets/wise5/components/dialogGuidance/ComputerDialogResponse.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { CRaterIdea } from '../common/cRater/CRaterIdea';\nimport { DialogResponse } from './DialogResponse';\n\nexport class ComputerDialogResponse extends DialogResponse {\n feedbackRuleId?: string;\n ideas: CRaterIdea[];\n initialResponse: boolean;\n user: string = 'Computer';\n\n constructor(\n text: string,\n ideas: CRaterIdea[],\n timestamp: number,\n initialResponse: boolean = false\n ) {\n super(text, timestamp);\n this.ideas = ideas;\n this.initialResponse = initialResponse;\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ideas", + "type": "CRaterIdea[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "timestamp", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "initialResponse", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "line": 8, + "jsdoctags": [ + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "ideas", + "type": "CRaterIdea[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "timestamp", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "initialResponse", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "feedbackRuleId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": true, + "description": "", + "line": 5 + }, + { + "name": "ideas", + "deprecated": false, + "deprecationMessage": "", + "type": "CRaterIdea[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 6 + }, + { + "name": "initialResponse", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 7 + }, + { + "name": "user", + "defaultValue": "'Computer'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 8, + "inheritance": { + "file": "DialogResponse" + } + }, + { + "name": "text", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 2, + "inheritance": { + "file": "DialogResponse" + } + }, + { + "name": "timestamp", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 4, + "inheritance": { + "file": "DialogResponse" + } + }, + { + "name": "workgroupId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 5, + "inheritance": { + "file": "DialogResponse" + } + } + ], + "methods": [], + "indexSignatures": [], + "extends": [ + "DialogResponse" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "ComputerDialogResponseMultipleScores", + "id": "class-ComputerDialogResponseMultipleScores-cc36236d1c4dcdb25550bee930ce84d521f521001966debb81d8c6cc50f6e3e341b298e25e0cb4ae542ce2097db50ad333f30add2398d7419627110c1df749df", + "file": "src/assets/wise5/components/dialogGuidance/ComputerDialogResponseMultipleScores.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { ComputerDialogResponse } from './ComputerDialogResponse';\nimport { CRaterIdea } from '../common/cRater/CRaterIdea';\nimport { CRaterScore } from '../common/cRater/CRaterScore';\n\nexport class ComputerDialogResponseMultipleScores extends ComputerDialogResponse {\n scores: CRaterScore[];\n\n constructor(text: string, scores: CRaterScore[], ideas: CRaterIdea[], timestamp: number) {\n super(text, ideas, timestamp);\n this.scores = scores;\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "scores", + "type": "CRaterScore[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ideas", + "type": "CRaterIdea[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "timestamp", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 6, + "jsdoctags": [ + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "scores", + "type": "CRaterScore[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "ideas", + "type": "CRaterIdea[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "timestamp", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "scores", + "deprecated": false, + "deprecationMessage": "", + "type": "CRaterScore[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 6 + }, + { + "name": "feedbackRuleId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": true, + "description": "", + "line": 5, + "inheritance": { + "file": "ComputerDialogResponse" + } + }, + { + "name": "ideas", + "deprecated": false, + "deprecationMessage": "", + "type": "CRaterIdea[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 6, + "inheritance": { + "file": "ComputerDialogResponse" + } + }, + { + "name": "initialResponse", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 7, + "inheritance": { + "file": "ComputerDialogResponse" + } + }, + { + "name": "user", + "defaultValue": "'Computer'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 8, + "inheritance": { + "file": "DialogResponse" + } + }, + { + "name": "text", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 2, + "inheritance": { + "file": "DialogResponse" + } + }, + { + "name": "timestamp", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 4, + "inheritance": { + "file": "DialogResponse" + } + }, + { + "name": "workgroupId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 5, + "inheritance": { + "file": "DialogResponse" + } + } + ], + "methods": [], + "indexSignatures": [], + "extends": [ + "ComputerDialogResponse" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "ComputerDialogResponseSingleScore", + "id": "class-ComputerDialogResponseSingleScore-cf1cb329872e336e823bd1be596eb01fc4a637b7c05fb68d62a9554705140db1bbec91098305499456a61347df576bab7d2479b1fc17cc1100ae0d7e460b0f24", + "file": "src/assets/wise5/components/dialogGuidance/ComputerDialogResponseSingleScore.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { ComputerDialogResponse } from './ComputerDialogResponse';\nimport { CRaterIdea } from '../common/cRater/CRaterIdea';\n\nexport class ComputerDialogResponseSingleScore extends ComputerDialogResponse {\n score: number;\n\n constructor(text: string, score: number, ideas: CRaterIdea[], timestamp: number) {\n super(text, ideas, timestamp);\n this.score = score;\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "score", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ideas", + "type": "CRaterIdea[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "timestamp", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 5, + "jsdoctags": [ + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "score", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "ideas", + "type": "CRaterIdea[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "timestamp", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "score", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 5 + }, + { + "name": "feedbackRuleId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": true, + "description": "", + "line": 5, + "inheritance": { + "file": "ComputerDialogResponse" + } + }, + { + "name": "ideas", + "deprecated": false, + "deprecationMessage": "", + "type": "CRaterIdea[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 6, + "inheritance": { + "file": "ComputerDialogResponse" + } + }, + { + "name": "initialResponse", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 7, + "inheritance": { + "file": "ComputerDialogResponse" + } + }, + { + "name": "user", + "defaultValue": "'Computer'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 8, + "inheritance": { + "file": "DialogResponse" + } + }, + { + "name": "text", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 2, + "inheritance": { + "file": "DialogResponse" + } + }, + { + "name": "timestamp", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 4, + "inheritance": { + "file": "DialogResponse" + } + }, + { + "name": "workgroupId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 5, + "inheritance": { + "file": "DialogResponse" + } + } + ], + "methods": [], + "indexSignatures": [], + "extends": [ + "ComputerDialogResponse" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "ConceptMapInfo", + "id": "class-ConceptMapInfo-9133f10f724bb0d758298138b164a1cb4b4648163d4376ecde1f74d146d216c1eed7023a323995a352ca6abb06f8052567a22e46fc81296fe1639e9348f2440c", + "file": "src/assets/wise5/components/conceptMap/ConceptMapInfo.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { ComponentInfo } from '../ComponentInfo';\n\nexport class ConceptMapInfo extends ComponentInfo {\n protected description: string = $localize`Students add items to a canvas and connect the items with links.`;\n protected label: string = $localize`Concept Map`;\n protected previewExamples: any[] = [\n {\n label: $localize`Concept Map`,\n content: {\n id: 'abcde12345',\n type: 'ConceptMap',\n prompt:\n \"How is the Earth warmed by energy from the Sun? It's your turn to show how energy moves between the Sun, the Earth, and Space. Drag the pictures to the canvas and add links between them make your diagram.\",\n showSaveButton: false,\n showSubmitButton: false,\n showAddToNotebookButton: false,\n width: 800,\n height: 600,\n background: null,\n stretchBackground: null,\n nodes: [\n {\n fileName: '/assets/img/component-preview/sun2.png',\n width: 100,\n id: 'node1',\n label: 'Sun',\n height: 100\n },\n {\n fileName: '/assets/img/component-preview/Space.png',\n width: 100,\n id: 'node2',\n label: 'Space',\n height: 100\n },\n {\n fileName: '/assets/img/component-preview/Earth_surface.png',\n width: 100,\n id: 'node3',\n label: \"Earth's Surface\",\n height: 100\n },\n {\n fileName: '/assets/img/component-preview/Earth_beneath.png',\n width: 100,\n id: 'node4',\n label: 'Beneath Surface',\n height: 100\n }\n ],\n linksTitle: '',\n links: [\n {\n color: '#DDD266',\n id: 'link1',\n label: 'Solar Radiation'\n },\n {\n color: '#B62467',\n id: 'link2',\n label: 'Infrared Radiation'\n },\n {\n color: '#DE2D26',\n id: 'link3',\n label: 'Heat'\n }\n ],\n rules: [],\n starterConceptMap: null,\n customRuleEvaluator: '',\n showAutoScore: false,\n showAutoFeedback: false,\n showNodeLabels: true,\n constraints: []\n }\n }\n ];\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "description", + "defaultValue": "$localize`Students add items to a canvas and connect the items with links.`", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 4, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentInfo" + } + }, + { + "name": "label", + "defaultValue": "$localize`Concept Map`", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 5, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentInfo" + } + }, + { + "name": "previewExamples", + "defaultValue": "[\n {\n label: $localize`Concept Map`,\n content: {\n id: 'abcde12345',\n type: 'ConceptMap',\n prompt:\n \"How is the Earth warmed by energy from the Sun? It's your turn to show how energy moves between the Sun, the Earth, and Space. Drag the pictures to the canvas and add links between them make your diagram.\",\n showSaveButton: false,\n showSubmitButton: false,\n showAddToNotebookButton: false,\n width: 800,\n height: 600,\n background: null,\n stretchBackground: null,\n nodes: [\n {\n fileName: '/assets/img/component-preview/sun2.png',\n width: 100,\n id: 'node1',\n label: 'Sun',\n height: 100\n },\n {\n fileName: '/assets/img/component-preview/Space.png',\n width: 100,\n id: 'node2',\n label: 'Space',\n height: 100\n },\n {\n fileName: '/assets/img/component-preview/Earth_surface.png',\n width: 100,\n id: 'node3',\n label: \"Earth's Surface\",\n height: 100\n },\n {\n fileName: '/assets/img/component-preview/Earth_beneath.png',\n width: 100,\n id: 'node4',\n label: 'Beneath Surface',\n height: 100\n }\n ],\n linksTitle: '',\n links: [\n {\n color: '#DDD266',\n id: 'link1',\n label: 'Solar Radiation'\n },\n {\n color: '#B62467',\n id: 'link2',\n label: 'Infrared Radiation'\n },\n {\n color: '#DE2D26',\n id: 'link3',\n label: 'Heat'\n }\n ],\n rules: [],\n starterConceptMap: null,\n customRuleEvaluator: '',\n showAutoScore: false,\n showAutoFeedback: false,\n showNodeLabels: true,\n constraints: []\n }\n }\n ]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 6, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentInfo" + } + } + ], + "methods": [ + { + "name": "getDescription", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 6, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentInfo" + } + }, + { + "name": "getLabel", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 10, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentInfo" + } + }, + { + "name": "getPreviewExamples", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 14, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentInfo" + } + } + ], + "indexSignatures": [], + "extends": [ + "ComponentInfo" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "ConceptMapLink", + "id": "class-ConceptMapLink-fe41304b3a4fa62609706046b30efb08dcce7bf9c983af2e99ce506c9e9b4974b2d906f8c1f230dfdeea084bd7bd76a83d3b3c2e9663bd5db40e43eb9367a6d1", + "file": "src/assets/wise5/components/conceptMap/conceptMapLink.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "class ConceptMapLink {\n type: string;\n id: string;\n originalId: string;\n head: any;\n path: any;\n color: string;\n highlighted: boolean;\n group: any;\n draw: any;\n textPercentageLocationOnLink: number;\n sourceNode: any;\n destinationNode: any;\n curvature: number;\n startCurveUp: boolean;\n endCurveUp: boolean;\n curvedLink: boolean;\n label: string;\n deleteButtonGroup: any;\n textGroup: any;\n deleteButton: any;\n deleteButtonX: any;\n text: any;\n textRect: any;\n invisibleCircle: any;\n\n /**\n * The constructor to create a ConceptMapLink object\n * @param draw the svg.js draw object\n * @param id the instance id of the link\n * @param originalId the original authored id of the link\n * @param sourceNode the source ConceptMapNode\n * @param destinationNode the destination ConceptMapNode\n * @param label the text label\n * @param color the color of the link\n * @param curvature the curvature of the link\n * @param startCurveUp whether the start of the link curves up\n * @param endCurveUp whether the end of the link curves up\n */\n constructor(\n draw,\n id,\n originalId,\n sourceNode,\n destinationNode,\n label,\n color,\n curvature,\n startCurveUp,\n endCurveUp\n ) {\n this.type = 'ConceptMapLink';\n\n // remember the svg.js draw object\n this.draw = draw;\n\n // set the id\n this.id = id;\n\n // set the original id\n this.originalId = originalId;\n\n // the arrow head of the link\n this.head = null;\n\n // the line of the link\n this.path = null;\n\n // set the color of the link\n this.color = color;\n\n if (this.color == null) {\n // if no color is specified, use a default color\n this.color = 'blue';\n }\n\n // whether the link is highlighted\n this.highlighted = false;\n\n // create a group to contain the path and head\n this.group = this.draw.group();\n\n // where to place the text of the link along the line\n this.textPercentageLocationOnLink = 0.6;\n\n // remember the source node\n this.sourceNode = sourceNode;\n\n /*\n * used to remember the destination node later after the destination\n * node has been chosen\n */\n this.destinationNode = destinationNode;\n\n // remember the curvature\n this.curvature = curvature;\n\n if (this.curvature == null) {\n this.curvature = 0.5;\n }\n\n // set whether the link curves up or down\n this.startCurveUp = startCurveUp;\n this.endCurveUp = endCurveUp;\n\n if (this.startCurveUp == null || this.endCurveUp == null) {\n /*\n * start and end curve up have not been specified so we will set\n * it at random\n */\n\n // choose a random integer 0 or 1\n const randInt = Math.floor(Math.random() * 2);\n\n if (randInt == 0) {\n // set the link to curve down\n this.startCurveUp = false;\n this.endCurveUp = false;\n } else {\n // set the link to curve up\n this.startCurveUp = true;\n this.endCurveUp = true;\n }\n }\n\n // create a curved link\n this.curvedLink = true;\n\n // initialize the coordinates of both ends of the link\n const x1 = this.sourceNode.cx();\n const y1 = this.sourceNode.cy();\n let x2 = x1;\n let y2 = y1;\n\n if (this.destinationNode != null) {\n /*\n * get the nearest point from the center of the source node to the\n * destination node along the perimeter of the destination node\n * image\n */\n const nearestPoint: any = this.getNearestPointToDestinationNode(x1, y1);\n x2 = nearestPoint.x;\n y2 = nearestPoint.y;\n\n // connect the link to the nodes\n this.connectLinkToNodes();\n }\n\n if (this.curvedLink) {\n // create a curved link\n\n // calculate the curved line in svg\n const arrowPathArraysObject = this.calculateCurvedLine(x1, y1, x2, y2);\n\n // get the line\n const tail = arrowPathArraysObject[0];\n\n // get the arrow head\n const head = arrowPathArraysObject[1];\n\n // draw the head and tail\n this.head = this.draw.path(head.join(' '));\n this.path = this.draw.path(tail.join(' '));\n } else {\n // create a straight line\n this.path = this.draw.path('M' + x1 + ',' + y1 + ' L' + x2 + ',' + y2);\n }\n\n // set the style of the link\n this.path.attr('stroke', this.color);\n this.path.attr('stroke-width', 3);\n this.path.attr('fill', 'transparent');\n this.head.attr('stroke', this.color);\n this.head.attr('fill', this.color);\n this.head.attr('pointer-events', 'none');\n\n /*\n * remember the x and y coordinates of the source and destination\n * so that we can look them up easily later\n */\n this.path.attr('x1', x1);\n this.path.attr('y1', y1);\n this.path.attr('x2', x2);\n this.path.attr('y2', y2);\n\n // add the tail and head to the group\n this.group.add(this.path);\n this.group.add(this.head);\n\n // create the text group for the link\n this.createTextGroup();\n\n // text that describes the type of link chosen by the student\n this.setLabel(label);\n\n if (this.label == null || this.label == '') {\n // there is no label so we will hide the text group\n this.hideTextGroup();\n } else {\n // there is a label so we will show the text group\n this.showTextGroup();\n }\n\n // create the delete button group\n this.createDeleteButtonGroup();\n }\n\n /**\n * Get the JSON object representation of the ConceptMapLink\n * @returns a JSON object containing the data of the ConceptMapLink\n */\n toJSONObject() {\n return {\n originalId: this.originalId,\n instanceId: this.id,\n color: this.color,\n label: this.label,\n curvature: this.curvature,\n startCurveUp: this.startCurveUp,\n endCurveUp: this.endCurveUp,\n sourceNodeOriginalId: this.sourceNode.getOriginalId(),\n sourceNodeInstanceId: this.sourceNode.getId(),\n sourceNodeLabel: this.sourceNode.getLabel(),\n destinationNodeOriginalId: this.destinationNode.getOriginalId(),\n destinationNodeInstanceId: this.destinationNode.getId(),\n destinationNodeLabel: this.destinationNode.getLabel()\n };\n }\n\n /**\n * Get the id of the link\n * @returns the id of the link\n */\n getId() {\n return this.id;\n }\n\n /**\n * Get the original id of the node\n * @returns the original id of the node\n */\n getOriginalId() {\n return this.originalId;\n }\n\n /**\n * Get the id of the group\n * @returns the id of the group\n */\n getGroupId() {\n return this.group.id();\n }\n\n /**\n * Get the x1 value\n * @returns the x coordinate of the source of the link\n */\n x1() {\n return this.path.attr('x1');\n }\n\n /**\n * Get the y1 value\n * @returns the y coordinate of the source of the link\n */\n y1() {\n return this.path.attr('y1');\n }\n\n /**\n * Get the x2 value\n * @returns the x coordinate of the destination of the link\n */\n x2() {\n return this.path.attr('x2');\n }\n\n /**\n * Get the y2 value\n * @returns the y coordinate of the destination of the link\n */\n y2() {\n return this.path.attr('y2');\n }\n\n /**\n * Set the original id\n * @param originalId the original id\n */\n setOriginalId(originalId) {\n this.originalId = originalId;\n }\n\n /**\n * Get the label\n * @returns the label\n */\n getLabel() {\n return this.label;\n }\n\n /**\n * Getter/setter for the highlighted value\n * @param value (optional) the highlighted value\n * @returns whether the link is highlighted\n */\n isHighlighted(value) {\n if (value != null) {\n this.highlighted = value;\n }\n\n return this.highlighted;\n }\n\n /**\n * Update the coordinates of the link\n * @param x1 (optional) the x position of the source\n * @param y1 (optional) the y position of the source\n * @param x2 (optional) the x position of the destination\n * @param y2 (optional) the y position of the destination\n * @param isDragging whether the link is currently being dragged\n */\n updateCoordinates(x1, y1, x2, y2, isDragging) {\n const array = this.path.array();\n\n if (this.curvedLink) {\n // draw a curved link\n\n if (x1 == null) {\n /*\n * the x1 parameter was not provided so we will reuse the\n * existing value\n */\n x1 = this.path.attr('x1');\n }\n\n if (y1 == null) {\n /*\n * the y1 parameter was not provided so we will reuse the\n * existing value\n */\n y1 = this.path.attr('y1');\n }\n\n if (x2 == null) {\n /*\n * the x2 parameter was not provided so we will reuse the\n * existing value\n */\n x2 = this.path.attr('x2');\n }\n\n if (y2 == null) {\n /*\n * the y2 parameter was not provided so we will reuse the\n * existing value\n */\n y2 = this.path.attr('y2');\n }\n\n // calculate the line\n const arrowPathArraysObject = this.calculateCurvedLine(x1, y1, x2, y2, isDragging);\n\n // get the svg tail\n const tail = arrowPathArraysObject[0];\n\n // get the svg head\n const head = arrowPathArraysObject[1];\n\n // re-plot the head and path\n this.head.plot(head.join(' '));\n this.path.plot(tail.join(' '));\n } else {\n // draw a straight line\n\n if (x1 == null) {\n /*\n * the x1 parameter was not provided so we will reuse the\n * existing value\n */\n x1 = this.path.attr('x1');\n }\n\n if (y1 == null) {\n /*\n * the y1 parameter was not provided so we will reuse the\n * existing value\n */\n y1 = this.path.attr('y1');\n }\n\n if (x2 == null) {\n /*\n * the x2 parameter was not provided so we will reuse the\n * existing value\n */\n x2 = this.path.attr('x2');\n }\n\n if (y2 == null) {\n /*\n * the y2 parameter was not provided so we will reuse the\n * existing value\n */\n y2 = this.path.attr('y2');\n }\n\n // re-plot the line\n this.path.plot('M' + x1 + ',' + y1 + ' L' + x2 + ',' + y2);\n }\n\n // update the coordinate values\n this.path.attr('x1', x1);\n this.path.attr('y1', y1);\n this.path.attr('x2', x2);\n this.path.attr('y2', y2);\n\n if (this.deleteButtonGroup != null) {\n // update the location of the delete button\n const deleteButtonLocation = this.getDeleteButtonLocation();\n this.deleteButtonGroup.x(deleteButtonLocation.x);\n this.deleteButtonGroup.y(deleteButtonLocation.y);\n }\n\n if (this.textGroup != null) {\n // update the location of the text group\n\n // get the length of the line\n const totalLength = this.path.node.getTotalLength();\n\n // get the coordinate of a point somewhere in the middel of the line\n const midPoint = this.path.node.getPointAtLength(\n totalLength * this.textPercentageLocationOnLink\n );\n\n this.textGroup.cx(midPoint.x);\n this.textGroup.cy(midPoint.y);\n }\n }\n\n /**\n * Calculate the curved line\n * @param x1 the x coordinate of the source\n * @param y1 the y coordinate of the source\n * @param x2 the x coordinate of the destination\n * @param y2 the y coordinate of the destination\n * @param isDragging whether the line is currently being dragged\n * @returns an array that contains the svg objects for the arrow head and line\n */\n calculateCurvedLine(x1, y1, x2, y2, isDragging = false) {\n const startx = x1;\n const starty = y1;\n const endx = x2;\n const endy = y2;\n let startCurveUp = true;\n let endCurveUp = true;\n const len = 15;\n const angle = 45;\n let curvature = 0.5;\n const nodeRadius = 10;\n\n // set the amount of curvature of the line\n curvature = this.curvature;\n\n // whether the link should curve up or down\n startCurveUp = this.startCurveUp;\n endCurveUp = this.endCurveUp;\n\n // calculate the svg objects for the arrow head and line\n const arrowPathArraysObject = this.arrowPathArrays(\n startx,\n starty,\n endx,\n endy,\n startCurveUp,\n endCurveUp,\n len,\n angle,\n curvature,\n nodeRadius\n );\n\n return arrowPathArraysObject;\n }\n\n /**\n * Set the destination node\n * @param destinationNode the destination ConceptMapNode object\n */\n setDestination(destinationNode) {\n if (destinationNode != null) {\n // get x and y of the tail\n const x1 = this.path.attr('x1');\n const y1 = this.path.attr('y1');\n\n // remember the destination node\n this.destinationNode = destinationNode;\n\n /*\n * check if there are any links with that have the same source,\n * destination, and direction. if there is a link that has the\n * same source, destination, and direction, we will try to use\n * a different direction that hasn't already been used. if all\n * directions have already been used, we will use the original\n * direction the user specified. there are three link directions,\n * up, straight, and down.\n * ___\n * up / \\\n * o o\n *\n * straight o------o\n *\n * o o\n * down \\__/\n */\n\n let directionAlreadyUsed = false;\n let direction = '';\n\n if (this.curvature == 0) {\n // the user has created the curve to be straight\n direction = 'straight';\n } else if (this.startCurveUp && this.endCurveUp) {\n // the user has created the curve that starts by pointing up\n direction = 'up';\n } else if (!this.startCurveUp && !this.endCurveUp) {\n // the user has created the curve that starts by pointing down\n direction = 'down';\n }\n\n // get all the links that have the same source and destination\n const parallelLinks = this.sourceNode.getLinksToDestination(destinationNode);\n\n const usedDirections = [];\n\n // loop through all the links that have the same source and destination\n for (let p = 0; p < parallelLinks.length; p++) {\n const parallelLink = parallelLinks[p];\n\n if (parallelLink != null) {\n const curvature = parallelLink.curvature;\n const startCurveUp = parallelLink.startCurveUp;\n const endCurveUp = parallelLink.endCurveUp;\n\n let tempDirection = '';\n\n if (curvature == 0) {\n // the other link is straight\n tempDirection = 'straight';\n } else if (startCurveUp && endCurveUp) {\n // the other link points up\n tempDirection = 'up';\n } else if (!startCurveUp && !endCurveUp) {\n // the other link points down\n tempDirection = 'down';\n }\n\n if (direction == tempDirection) {\n /*\n * the direction is the same as the direction the user\n * has specified\n */\n directionAlreadyUsed = true;\n }\n\n // keep track of the directions that were used\n usedDirections.push(tempDirection);\n }\n }\n\n if (directionAlreadyUsed) {\n /*\n * the direction the user specified is already used so we will\n * try to find a direction that hasn't been used\n */\n\n if (usedDirections.indexOf('up') == -1) {\n /*\n * we have not used the up direction yet so we will make\n * the link point up\n */\n this.curvature = 0.5;\n this.startCurveUp = true;\n this.endCurveUp = true;\n } else if (usedDirections.indexOf('straight') == -1) {\n /*\n * we have not used the straight direction yet so we will\n * make the link point straight\n */\n this.curvature = 0.0;\n this.startCurveUp = true;\n this.endCurveUp = true;\n } else if (usedDirections.indexOf('down') == -1) {\n /*\n * we have not used the down direction yet so we will make\n * the link point down\n */\n this.curvature = 0.5;\n this.startCurveUp = false;\n this.endCurveUp = false;\n }\n }\n\n /*\n * get the nearest point from the center of the source node to the\n * destination node along the perimeter of the destination node\n * image\n */\n const nearestPoint: any = this.getNearestPointToDestinationNode(x1, y1);\n const x2 = nearestPoint.x;\n const y2 = nearestPoint.y;\n\n // update the coordinates of the link\n const isDragging = false;\n this.updateCoordinates(x1, y1, x2, y2, isDragging);\n\n // connect the link to the nodes\n this.connectLinkToNodes();\n\n // hide the delete button\n this.hideDeleteButton();\n }\n }\n\n /**\n * Get the nearest point to the destination node from a given x, y point\n * @param x the x value of the source point\n * @param y the y value of the source point\n * @returns an object containing an x and y field\n */\n getNearestPointToDestinationNode(x, y) {\n // get the coordinates of the upper left corner of the image\n const rectMinX = this.destinationNode.getImageX();\n let rectMinY = this.destinationNode.getImageY();\n\n /*\n * add padding of 25 pixels to resolve the problem of the arrow head\n * being placed behind the destination image\n */\n rectMinY = rectMinY - 25;\n\n // get the width and height of the image\n const width = this.destinationNode.getImageWidth();\n let height = this.destinationNode.getImageHeight();\n\n // compensate for the 25 pixel padding that we added above\n height = height + 25;\n\n /*\n var destinationNodeGroup = this.destinationNode.getGroup();\n var destinationNodeGroupBBox = destinationNodeGroup.bbox();\n\n rectMinX = this.destinationNode.getGroupX();\n rectMinY = this.destinationNode.getGroupY();\n\n width = destinationNodeGroupBBox.width;\n height = destinationNodeGroupBBox.height;\n */\n\n if (x == null && y == null) {\n // get the coordinates of the source if x and y were not provided\n x = this.path.attr('x1');\n y = this.path.attr('y1');\n }\n\n /*\n * find the nearest point from the source to anywhere along the\n * rectangular perimeter of the destination image\n */\n const point = this.getNearestPointInPerimeter(rectMinX, rectMinY, width, height, x, y);\n\n return point;\n }\n\n /**\n * Get the nearest point on a rectangle from a source point\n * @param l the upper left x value of the rectangle\n * @param t the upper left y value of the rectangle\n * @param w the width of the rectangle\n * @param h the height of the rectangle\n * @param x the source point x value\n * @param y the source point y value\n * @returns the point on the rectangle that is closest to the\n */\n getNearestPointInPerimeter(l, t, w, h, x, y) {\n const r = l + w;\n const b = t + h;\n\n x = this.clamp(x, l, r);\n y = this.clamp(y, t, b);\n\n const dl = Math.abs(x - l);\n const dr = Math.abs(x - r);\n const dt = Math.abs(y - t);\n const db = Math.abs(y - b);\n\n const m = Math.min(dl, dr, dt, db);\n\n const point: any = {};\n\n if (m == dt) {\n point.x = x;\n point.y = t;\n } else if (m == db) {\n point.x = x;\n point.y = b;\n } else if (m == dl) {\n point.x = l;\n point.y = y;\n } else {\n point.x = r;\n point.y = y;\n }\n\n return point;\n }\n\n /**\n * Helper function for getNearestPointInPerimeter\n */\n clamp(x, lower, upper) {\n return Math.max(lower, Math.min(upper, x));\n }\n\n /**\n * Set the color of the link\n * @param color the color\n */\n setColor(color) {\n if (color != null) {\n // set the color styling\n this.color = color;\n this.path.attr('stroke', this.color);\n this.head.attr('stroke', this.color);\n this.head.attr('fill', this.color);\n this.deleteButton.attr('stroke', this.color);\n this.deleteButtonX.attr('stroke', this.color);\n }\n }\n\n /**\n * Set the label\n * @param label the text label\n */\n setLabel(label) {\n if (label != null) {\n // remember the label\n this.label = label;\n\n // set the text into the text element\n this.text.text(label);\n\n // show the text group now that it has a label\n this.showTextGroup();\n\n // reset the width to adjust to the new text length\n let width = 0;\n\n try {\n // get the width of the bounding box of the text node\n const textBBox = this.text.node.getBBox();\n\n if (textBBox.width == 0) {\n width = this.calculateTextRectWidth(this.label);\n } else {\n width = textBBox.width + 10;\n }\n } catch (e) {\n /*\n * we were unable to get the bounding box (likely because\n * Firefox threw an error when trying to call getBBox())\n * so we will calculate the width based on the label text\n */\n width = this.calculateTextRectWidth(this.label);\n }\n\n this.textRect.attr('width', width);\n\n // recalculate the position of the svg text object\n const totalLength = this.path.node.getTotalLength();\n const midPoint = this.path.node.getPointAtLength(\n totalLength * this.textPercentageLocationOnLink\n );\n this.textGroup.cx(midPoint.x);\n this.textGroup.cy(midPoint.y);\n }\n }\n\n /**\n * Connect a link the its source and destination nodes\n */\n connectLinkToNodes() {\n if (this.sourceNode != null && this.destinationNode != null) {\n // add the link to the outgoing links of its source node\n this.sourceNode.addOutgoingLink(this);\n\n // add the link to the incoming links of its destination node\n this.destinationNode.addIncomingLink(this);\n }\n }\n\n /**\n * Create the delete button for the link\n */\n createDeleteButtonGroup() {\n // create a group to contain the elements of the delete button\n this.deleteButtonGroup = this.draw.group();\n\n /*\n * create an invisible circle that is placed behind the delete button\n * and has a larger radius than the delete button. this is used for\n * mouse over purposes so that we can keep the delete button visible\n * when the mouse is around the area of the delete button\n */\n const invisibleCircleRadius = 30;\n this.invisibleCircle = this.draw.circle();\n this.invisibleCircle.radius(invisibleCircleRadius);\n this.invisibleCircle.fill({ opacity: 0.0 });\n\n // create the delete button circle\n const deleteButtonRadius = 10;\n this.deleteButton = this.draw.circle();\n this.deleteButton.radius(deleteButtonRadius);\n this.deleteButton.fill({ opacity: 0.0 });\n this.deleteButton.stroke({ color: this.color, opacity: 1.0, width: 2 });\n\n /*\n * create the x part of the delete button by creating a + and then\n * rotating it 45 degrees\n */\n\n // get the coordinate of the center of the delete button\n const deleteButtonMidpointX = this.deleteButton.cx();\n const deleteButtonMidpointY = this.deleteButton.cy();\n\n // get the coordinates of the top of the +\n const topX = deleteButtonMidpointX;\n const topY = deleteButtonMidpointY - deleteButtonRadius * 0.7;\n\n // get the coordinates of the bottom of the +\n const bottomX = deleteButtonMidpointX;\n const bottomY = deleteButtonMidpointY + deleteButtonRadius * 0.7;\n\n // get the coordinates of the left of the +\n const leftX = deleteButtonMidpointX - deleteButtonRadius * 0.7;\n const leftY = deleteButtonMidpointY;\n\n // get the coordinates of the right of the +\n const rightX = deleteButtonMidpointX + deleteButtonRadius * 0.7;\n const rightY = deleteButtonMidpointY;\n\n // create the path for the +\n const deleteButtonXPath =\n 'M' +\n topX +\n ',' +\n topY +\n 'L' +\n bottomX +\n ',' +\n bottomY +\n 'M' +\n leftX +\n ',' +\n leftY +\n 'L' +\n rightX +\n ',' +\n rightY;\n\n // draw the path\n this.deleteButtonX = this.draw.path(deleteButtonXPath);\n this.deleteButtonX.stroke({ color: this.color, opacity: 1.0, width: 2 });\n\n /// rotate the + to create the x\n this.deleteButtonX.rotate(45);\n\n /*\n * disable pointer events on the x so that we only need to set a\n * mouse listener on the circle\n */\n this.deleteButtonX.attr('pointer-events', 'none');\n\n // add the invisible circle, regular circle, and x to the group\n this.deleteButtonGroup.add(this.invisibleCircle);\n this.deleteButtonGroup.add(this.deleteButton);\n this.deleteButtonGroup.add(this.deleteButtonX);\n\n // set the location of the delete button group\n const location: any = this.getDeleteButtonLocation();\n const x = location.x;\n const y = location.y;\n this.deleteButtonGroup.x(x);\n this.deleteButtonGroup.y(y);\n\n // set the listener for when the mouse is over the group\n this.deleteButtonGroup.mouseover((event) => {\n this.deleteButtonGroupMouseOver(event);\n });\n\n // set the listener for when the mouse moves out of the group\n this.deleteButtonGroup.mouseout((event) => {\n this.deleteButtonGroupMouseOut(event);\n });\n\n // add the delete button group to the link group\n this.group.add(this.deleteButtonGroup);\n\n /*\n * hide the delete button. we only need to show the delete button\n * when the link is active.\n */\n this.deleteButtonGroup.hide();\n }\n\n /**\n * Called when the mouse is over the delete button group\n * @param event the mouseover event\n */\n deleteButtonGroupMouseOver(event) {\n // show the delete button\n this.showDeleteButton();\n }\n\n /**\n * Called when the mouse leaves the delete button group\n * @param event the mouseout event\n */\n deleteButtonGroupMouseOut(event) {\n if (!this.highlighted) {\n // the link is not highlighted so we will hide the delete button\n this.hideDeleteButton();\n }\n }\n\n /**\n * Called when the delete button is clicked\n * @param deleteButtonClickedFunction the function to call when the delete\n * button is clicked\n */\n setDeleteButtonClicked(deleteButtonClickedFunction) {\n // listen for the click event on the delete button to call the function\n this.deleteButton.click(deleteButtonClickedFunction);\n }\n\n /**\n * Called when the mouse is clicked down on the group\n * @param linkMouseDownFunction the function to call when the mouse is\n * clicked down on the group\n */\n setLinkMouseDown(linkMouseDownFunction) {\n if (this.group != null) {\n /*\n * listen for the mousedown event on the group to call\n * the function\n */\n this.group.mousedown(linkMouseDownFunction);\n }\n }\n\n /**\n * Called when the mouse is clicked down on the link text group\n * @param linkTextMouseDownFunction the function to call when the mouse is\n * clicked down on the link text group\n */\n setLinkTextMouseDown(linkTextMouseDownFunction) {\n if (this.textGroup != null) {\n /*\n * listen for the mousedown event on the link text group to call\n * the function\n */\n this.textGroup.mousedown(linkTextMouseDownFunction);\n }\n }\n\n /**\n * Called when the mouse is over the group\n * @param linkMouseOverFunction the function to call when the mouse is over\n * the group\n */\n setLinkMouseOver(linkMouseOverFunction) {\n if (this.group != null) {\n // listen for the mouseover event on the group to call the function\n this.group.mouseover(linkMouseOverFunction);\n }\n }\n\n /**\n * Called when the mouse leaves the group\n * @param linkMouseOutFunction the function to call when the mouse leaves\n * the group\n */\n setLinkMouseOut(linkMouseOutFunction) {\n if (this.group != null) {\n // listen for the mouseout event on the group to call the function\n this.group.mouseout(linkMouseOutFunction);\n }\n }\n\n /**\n * Calculate the location of the delete button for the link\n *\n * Note: This function and the associated functions that are called by this\n * function are taken from the Concord MySystem github project.\n * https://github.com/concord-consortium/mysystem_sc\n * The code is found in the _setRemoveButtonLocation function in the link.js file.\n * mysystem_sc/apps/my_system/views/link.js\n */\n getDeleteButtonLocation() {\n //var line = raphaelObject.items[2];\n\n const line = this.path.node;\n const distanceAlongLine = 35;\n const distanceAlongNormal = 18;\n let len, p1, p2, scale, dx, dy, x, y, occluded;\n\n /*\n var link = this.get('content');\n if (!link.isComplete()) return;\n if (line.attr('path').length < 1) return; // this can happen after our content is destroyed\n */\n\n len = line.getTotalLength();\n p2 = line.getPointAtLength(len);\n\n if (len > 50) {\n p1 = line.getPointAtLength(len - distanceAlongLine);\n\n dx = p2.x - p1.x;\n dy = p2.y - p1.y;\n scale = (distanceAlongNormal / distanceAlongLine) * (dx > 0 ? 1 : -1);\n\n x = p1.x + scale * dy;\n y = p1.y - scale * dx;\n //occluded = NO;\n } else {\n x = 0;\n y = 0;\n //occluded = YES;\n }\n\n /*\n this.set('removeButtonX', x);\n this.set('removeButtonY', y);\n this.set('isRemoveButtonOccluded', occluded);\n */\n\n const location: any = {};\n location.x = x;\n location.y = y;\n\n return location;\n }\n\n /**\n * Show the delete button\n */\n showDeleteButton() {\n if (this.deleteButtonGroup != null) {\n this.deleteButtonGroup.show();\n }\n }\n\n /**\n * Hide the delete button\n */\n hideDeleteButton() {\n if (this.deleteButtonGroup != null) {\n this.deleteButtonGroup.hide();\n }\n }\n\n /**\n * Create the text group\n * @returns the text group\n */\n createTextGroup() {\n // create the group\n this.textGroup = this.draw.group();\n\n // create a rectangle to surround the text\n this.textRect = this.draw.rect(100, 15);\n this.textRect.attr('fill', 'white');\n this.textRect.attr('stroke', 'black');\n this.textRect.attr('x', 0);\n this.textRect.attr('y', 10);\n this.textRect.attr('width', 100);\n this.textRect.attr('height', 20);\n this.textRect.radius(5);\n\n let label = '';\n\n // create the text element\n this.text = this.draw.text(label);\n this.text.attr('x', 5);\n this.text.attr('y', 9);\n this.text.font({\n family: 'Arial',\n size: 12\n });\n\n // prevent the text from being highlighted when the user drags the mouse\n this.text.style('user-select:none');\n this.text.node.setAttribute('user-select', 'none');\n this.text.node.setAttribute('style', 'user-select:none');\n\n // add the rectangle and text to the group\n this.textGroup.add(this.textRect);\n this.textGroup.add(this.text);\n\n let width = 0;\n\n try {\n // get the width of the bounding box of the text node\n const textBBox = this.text.node.getBBox();\n\n if (textBBox.width == 0) {\n width = this.calculateTextRectWidth(this.label);\n } else {\n width = textBBox.width + 10;\n }\n } catch (e) {\n /*\n * we were unable to get the bounding box (likely because\n * Firefox threw an error when trying to call getBBox())\n * so we will calculate the width based on the label text\n */\n width = this.calculateTextRectWidth(this.label);\n }\n\n this.textRect.attr('width', width);\n\n // set the location of the text to be somewhere along the line of the link\n const totalLength = this.path.node.getTotalLength();\n const midPoint = this.path.node.getPointAtLength(\n totalLength * this.textPercentageLocationOnLink\n );\n this.textGroup.cx(midPoint.x);\n this.textGroup.cy(midPoint.y);\n\n // hide the text group until the student has chosen a link type\n this.textGroup.hide();\n\n /*\n * set the link group id into the text group so we can look it up\n * later when the mouse is clicked down on the text group\n */\n this.textGroup.node.linkGroupId = this.group.id();\n\n return this.textGroup;\n }\n\n /**\n * Move the text group to the front so that it won't be blocked behind\n * another element when the student tries to click on the text group.\n */\n moveTextGroupToFront() {\n this.textGroup.front();\n }\n\n /**\n * Show the text group\n */\n showTextGroup() {\n if (this.textGroup != null) {\n this.textGroup.show();\n }\n }\n\n /**\n * Hide the text group\n */\n hideTextGroup() {\n if (this.textGroup != null) {\n this.textGroup.hide();\n }\n }\n\n /**\n * Remove all the references to the link and also remove all the elements\n * from the svg\n */\n remove() {\n if (this.sourceNode != null) {\n // remove the link from the source node's outgoing links\n this.sourceNode.removeOutgoingLink(this);\n }\n\n if (this.destinationNode != null) {\n // remove the link from the destination node's incoming links\n this.destinationNode.removeIncomingLink(this);\n }\n\n if (this.path != null) {\n // remove the line\n this.path.remove();\n }\n\n if (this.head != null) {\n // remove the arrow head\n this.head.remove();\n }\n\n if (this.deleteButtonGroup != null) {\n // remove the delete button group\n this.deleteButtonGroup.remove();\n }\n\n if (this.textGroup != null) {\n // remove the text group\n this.textGroup.remove();\n }\n\n if (this.group != null) {\n // remove the link group\n this.group.remove();\n }\n }\n\n /**\n * Calculate the width that the text rectangle should be set to\n * @param labelText the label text that will be displayed in the rectangle\n * @return the width that the text rectangle should be set to\n */\n calculateTextRectWidth(labelText) {\n let width = 0;\n\n if (labelText != null) {\n width = labelText.length * 6 + 10;\n }\n\n return width;\n }\n\n /**\n\n Returns an array representation of the path elements for an arrow\n\n First we calculate a simple curve for the tail.\n\n Then we pick a point on that curve to use as the base-center of the arrow head,\n then calculate the position of that triangle based on the angle between that\n point and the tip.\n\n @params startx {Number} X-coordinate of the start point\n @params starty {Number} Y-coordinate of the start point\n @params endx {Number} X-coordinate of the end point\n @params endy {Number} Y-coordinate of the end point\n @params len {Number} Length of the \"tip\" of the arrowhead\n @params angle {Number} Angle in degrees\n between the line and each wing of the arrowhead.\n Should be less than 90.\n\n Note: This function and the associated functions that are called by this\n function are taken from the Concord MySystem github project.\n https://github.com/concord-consortium/mysystem_sc\n The code is found in the arrow_drawing.js file.\n mysystem_sc/apps/my_system/mixins/arrow_drawing.js\n\n **/\n arrowPathArrays(\n startx,\n starty,\n endx,\n endy,\n startCurveUp,\n endCurveUp,\n len,\n angle,\n curvature,\n nodeRadius\n ) {\n if (startx === endx && starty === endy) {\n return [[''], ['']];\n }\n\n const start = this.coord(startx, starty);\n const pathData = [];\n const arrowHeadData = [];\n let tip = this.coord(endx, endy);\n\n // calculate control points c2 and c3\n const curveDistance = (tip.x - start.x) * curvature;\n let startYCurveDistance =\n curveDistance === 0 ? 1 : Math.max(Math.min(curveDistance, 100), -100);\n let endYCurveDistance = startYCurveDistance;\n const startUp = startCurveUp ? 1 : -1;\n const endUp = endCurveUp ? 1 : -1;\n startYCurveDistance =\n startYCurveDistance * startUp > 0 ? startYCurveDistance : startYCurveDistance * -1;\n endYCurveDistance = endYCurveDistance * endUp > 0 ? endYCurveDistance : endYCurveDistance * -1;\n const c2 = this.coord(start.x + curveDistance / 2, start.y - startYCurveDistance),\n c3 = this.coord(tip.x - curveDistance / 2, tip.y - endYCurveDistance),\n cDistance = Math.sqrt(Math.pow(curveDistance / 2, 2) + Math.pow(startYCurveDistance, 2)),\n perimX = (nodeRadius * (curveDistance / 2)) / cDistance,\n perimYstart = (nodeRadius * startYCurveDistance) / cDistance,\n perimYend = (nodeRadius * endYCurveDistance) / cDistance;\n\n // update tip\n tip = this.coord(tip.x - perimX, tip.y - perimYend);\n\n // draw arrow path\n\n pathData.push('M', start.x + perimX, start.y - perimYstart); // move to start of line\n pathData.push('C', c2.x, c2.y, c3.x, c3.y, tip.x, tip.y); // curve line to the tip\n\n // draw arrow head\n const percLengthOfHead = len / this.getLengthOfCubicBezier(start, c2, c3, tip),\n centerBaseOfHead = this.getPointOnCubicBezier(percLengthOfHead, start, c2, c3, tip),\n theta = Math.atan2(tip.y - centerBaseOfHead.y, tip.x - centerBaseOfHead.x),\n baseAngleA = theta + (angle * Math.PI) / 180,\n baseAngleB = theta - (angle * Math.PI) / 180,\n baseA = this.coord(tip.x - len * Math.cos(baseAngleA), tip.y - len * Math.sin(baseAngleA)),\n baseB = this.coord(tip.x - len * Math.cos(baseAngleB), tip.y - len * Math.sin(baseAngleB));\n\n arrowHeadData.push('M', tip.x, tip.y);\n arrowHeadData.push('L', baseA.x, baseA.y); // line to baseA\n arrowHeadData.push('L', baseB.x, baseB.y); // line to baseB\n arrowHeadData.push('L', tip.x, tip.y); // line back to the tip\n\n return [pathData, arrowHeadData];\n }\n\n /**\n * Note: This function is from\n * https://github.com/concord-consortium/mysystem_sc\n * The code is found in the arrow_drawing.js file.\n * mysystem_sc/apps/my_system/mixins/arrow_drawing.js\n */\n coord(x = null, y = null) {\n if (!x) x = 0;\n if (!y) y = 0;\n /*\n * Limit precision of decimals for SVG rendering.\n * otherwise we get really long SVG strings,\n * and webkit error messsages like of this sort:\n * \"Error: Problem parsing d=''\"\n */\n x = Math.round(x * 1000) / 1000;\n y = Math.round(y * 1000) / 1000;\n return { x: x, y: y };\n }\n\n /**\n * Note: This function is from\n * https://github.com/concord-consortium/mysystem_sc\n * The code is found in the arrow_drawing.js file.\n * mysystem_sc/apps/my_system/mixins/arrow_drawing.js\n */\n getLengthOfCubicBezier(C1, C2, C3, C4) {\n const precision = 10;\n let length = 0;\n let t;\n let currentPoint;\n let previousPoint;\n\n for (let i = 0; i < precision; i++) {\n t = i / precision;\n currentPoint = this.getPointOnCubicBezier(t, C1, C2, C3, C4);\n if (i > 0) {\n const xDif = currentPoint.x - previousPoint.x,\n yDif = currentPoint.y - previousPoint.y;\n length += Math.sqrt(xDif * xDif + yDif * yDif);\n }\n previousPoint = currentPoint;\n }\n return length;\n }\n\n /**\n * Note: This function is from\n * https://github.com/concord-consortium/mysystem_sc\n * The code is found in the arrow_drawing.js file.\n * mysystem_sc/apps/my_system/mixins/arrow_drawing.js\n */\n getPointOnCubicBezier(percent, C1, C2, C3, C4) {\n if (percent < 0) percent = 0;\n if (percent > 1) percent = 1;\n const pos = this.coord();\n pos.x =\n C1.x * this.B1(percent) +\n C2.x * this.B2(percent) +\n C3.x * this.B3(percent) +\n C4.x * this.B4(percent);\n pos.y =\n C1.y * this.B1(percent) +\n C2.y * this.B2(percent) +\n C3.y * this.B3(percent) +\n C4.y * this.B4(percent);\n return pos;\n }\n\n /**\n * Note: These functions are from\n * https://github.com/concord-consortium/mysystem_sc\n * The code is found in the arrow_drawing.js file.\n * mysystem_sc/apps/my_system/mixins/arrow_drawing.js\n */\n B1(t) {\n return t * t * t;\n }\n B2(t) {\n return 3 * t * t * (1 - t);\n }\n B3(t) {\n return 3 * t * (1 - t) * (1 - t);\n }\n B4(t) {\n return (1 - t) * (1 - t) * (1 - t);\n }\n}\n\nexport default ConceptMapLink;\n", + "constructorObj": { + "name": "constructor", + "description": "

The constructor to create a ConceptMapLink object

\n", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "draw", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "id", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "originalId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "sourceNode", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "destinationNode", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "label", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "color", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "curvature", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "startCurveUp", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "endCurveUp", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 25, + "rawdescription": "\n\nThe constructor to create a ConceptMapLink object\n", + "jsdoctags": [ + { + "name": { + "pos": 576, + "end": 580, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "draw" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 570, + "end": 575, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the svg.js draw object

\n" + }, + { + "name": { + "pos": 616, + "end": 618, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "id" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 610, + "end": 615, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the instance id of the link

\n" + }, + { + "name": { + "pos": 659, + "end": 669, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "originalId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 653, + "end": 658, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the original authored id of the link

\n" + }, + { + "name": { + "pos": 719, + "end": 729, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "sourceNode" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 713, + "end": 718, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the source ConceptMapNode

\n" + }, + { + "name": { + "pos": 768, + "end": 783, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "destinationNode" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 762, + "end": 767, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the destination ConceptMapNode

\n" + }, + { + "name": { + "pos": 827, + "end": 832, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "label" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 821, + "end": 826, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the text label

\n" + }, + { + "name": { + "pos": 860, + "end": 865, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "color" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 854, + "end": 859, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the color of the link

\n" + }, + { + "name": { + "pos": 900, + "end": 909, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "curvature" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 894, + "end": 899, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the curvature of the link

\n" + }, + { + "name": { + "pos": 948, + "end": 960, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "startCurveUp" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 942, + "end": 947, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

whether the start of the link curves up

\n" + }, + { + "name": { + "pos": 1013, + "end": 1023, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "endCurveUp" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 1007, + "end": 1012, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

whether the end of the link curves up

\n" + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "color", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 7 + }, + { + "name": "curvature", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 14 + }, + { + "name": "curvedLink", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 17 + }, + { + "name": "deleteButton", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 21 + }, + { + "name": "deleteButtonGroup", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 19 + }, + { + "name": "deleteButtonX", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 22 + }, + { + "name": "destinationNode", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 13 + }, + { + "name": "draw", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 10 + }, + { + "name": "endCurveUp", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 16 + }, + { + "name": "group", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 9 + }, + { + "name": "head", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 5 + }, + { + "name": "highlighted", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 8 + }, + { + "name": "id", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 3 + }, + { + "name": "invisibleCircle", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 25 + }, + { + "name": "label", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 18 + }, + { + "name": "originalId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 4 + }, + { + "name": "path", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 6 + }, + { + "name": "sourceNode", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 12 + }, + { + "name": "startCurveUp", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 15 + }, + { + "name": "text", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 23 + }, + { + "name": "textGroup", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 20 + }, + { + "name": "textPercentageLocationOnLink", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 11 + }, + { + "name": "textRect", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 24 + }, + { + "name": "type", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 2 + } + ], + "methods": [ + { + "name": "arrowPathArrays", + "args": [ + { + "name": "startx", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "starty", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "endx", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "endy", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "startCurveUp", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "endCurveUp", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "len", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "angle", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "curvature", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeRadius", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "{}", + "typeParameters": [], + "line": 1261, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\n\nReturns an array representation of the path elements for an arrow\n\nFirst we calculate a simple curve for the tail.\n\nThen we pick a point on that curve to use as the base-center of the arrow head,\nthen calculate the position of that triangle based on the angle between that\npoint and the tip.\n\nbetween the line and each wing of the arrowhead.\nShould be less than 90.\n\nNote: This function and the associated functions that are called by this\nfunction are taken from the Concord MySystem github project.\nhttps://github.com/concord-consortium/mysystem_sc\nThe code is found in the arrow_drawing.js file.\nmysystem_sc/apps/my_system/mixins/arrow_drawing.js\n\n", + "description": "

Returns an array representation of the path elements for an arrow

\n

First we calculate a simple curve for the tail.

\n

Then we pick a point on that curve to use as the base-center of the arrow head,\nthen calculate the position of that triangle based on the angle between that\npoint and the tip.

\n

between the line and each wing of the arrowhead.\nShould be less than 90.

\n

Note: This function and the associated functions that are called by this\nfunction are taken from the Concord MySystem github project.\nhttps://github.com/concord-consortium/mysystem_sc\nThe code is found in the arrow_drawing.js file.\nmysystem_sc/apps/my_system/mixins/arrow_drawing.js

\n", + "jsdoctags": [ + { + "name": "startx", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "starty", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "endx", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "endy", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "startCurveUp", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "endCurveUp", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "len", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "angle", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "curvature", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeRadius", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "B1", + "args": [ + { + "name": "t", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 1399, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nNote: These functions are from\nhttps://github.com/concord-consortium/mysystem_sc\nThe code is found in the arrow_drawing.js file.\nmysystem_sc/apps/my_system/mixins/arrow_drawing.js\n", + "description": "

Note: These functions are from\nhttps://github.com/concord-consortium/mysystem_sc\nThe code is found in the arrow_drawing.js file.\nmysystem_sc/apps/my_system/mixins/arrow_drawing.js

\n", + "jsdoctags": [ + { + "name": "t", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "B2", + "args": [ + { + "name": "t", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 1402, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "t", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "B3", + "args": [ + { + "name": "t", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 1405, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "t", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "B4", + "args": [ + { + "name": "t", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 1408, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "t", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "calculateCurvedLine", + "args": [ + { + "name": "x1", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "y1", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "x2", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "y2", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isDragging", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "{}", + "typeParameters": [], + "line": 450, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCalculate the curved line\n", + "description": "

Calculate the curved line

\n", + "jsdoctags": [ + { + "name": { + "pos": 10999, + "end": 11001, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "x1" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 10993, + "end": 10998, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the x coordinate of the source

\n" + }, + { + "name": { + "pos": 11045, + "end": 11047, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "y1" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 11039, + "end": 11044, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the y coordinate of the source

\n" + }, + { + "name": { + "pos": 11091, + "end": 11093, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "x2" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 11085, + "end": 11090, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the x coordinate of the destination

\n" + }, + { + "name": { + "pos": 11142, + "end": 11144, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "y2" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 11136, + "end": 11141, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the y coordinate of the destination

\n" + }, + { + "name": { + "pos": 11193, + "end": 11203, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "isDragging" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "pos": 11187, + "end": 11192, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

whether the line is currently being dragged

\n" + }, + { + "tagName": { + "pos": 11254, + "end": 11261, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

an array that contains the svg objects for the arrow head and line

\n" + } + ] + }, + { + "name": "calculateTextRectWidth", + "args": [ + { + "name": "labelText", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 1225, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCalculate the width that the text rectangle should be set to\n", + "description": "

Calculate the width that the text rectangle should be set to

\n", + "jsdoctags": [ + { + "name": { + "pos": 33345, + "end": 33354, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "labelText" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 33339, + "end": 33344, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the label text that will be displayed in the rectangle

\n" + }, + { + "tagName": { + "pos": 33416, + "end": 33422, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

the width that the text rectangle should be set to

\n" + } + ] + }, + { + "name": "clamp", + "args": [ + { + "name": "x", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "lower", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "upper", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 721, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nHelper function for getNearestPointInPerimeter\n", + "description": "

Helper function for getNearestPointInPerimeter

\n", + "jsdoctags": [ + { + "name": "x", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "lower", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "upper", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "connectLinkToNodes", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 792, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nConnect a link the its source and destination nodes\n", + "description": "

Connect a link the its source and destination nodes

\n" + }, + { + "name": "coord", + "args": [ + { + "name": "x", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + }, + { + "name": "y", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + } + ], + "optional": false, + "returnType": "{ x: any; y: any; }", + "typeParameters": [], + "line": 1330, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nNote: This function is from\nhttps://github.com/concord-consortium/mysystem_sc\nThe code is found in the arrow_drawing.js file.\nmysystem_sc/apps/my_system/mixins/arrow_drawing.js\n", + "description": "

Note: This function is from\nhttps://github.com/concord-consortium/mysystem_sc\nThe code is found in the arrow_drawing.js file.\nmysystem_sc/apps/my_system/mixins/arrow_drawing.js

\n", + "jsdoctags": [ + { + "name": "x", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + }, + { + "name": "y", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createDeleteButtonGroup", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 805, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCreate the delete button for the link\n", + "description": "

Create the delete button for the link

\n" + }, + { + "name": "createTextGroup", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 1077, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCreate the text group\n", + "description": "

Create the text group

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 29521, + "end": 29528, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

the text group

\n" + } + ] + }, + { + "name": "deleteButtonGroupMouseOut", + "args": [ + { + "name": "event", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 929, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCalled when the mouse leaves the delete button group\n", + "description": "

Called when the mouse leaves the delete button group

\n", + "jsdoctags": [ + { + "name": { + "pos": 25547, + "end": 25552, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "event" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 25541, + "end": 25546, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the mouseout event

\n" + } + ] + }, + { + "name": "deleteButtonGroupMouseOver", + "args": [ + { + "name": "event", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 920, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCalled when the mouse is over the delete button group\n", + "description": "

Called when the mouse is over the delete button group

\n", + "jsdoctags": [ + { + "name": { + "pos": 25337, + "end": 25342, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "event" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 25331, + "end": 25336, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the mouseover event

\n" + } + ] + }, + { + "name": "getDeleteButtonLocation", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 1009, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCalculate the location of the delete button for the link\n\nNote: This function and the associated functions that are called by this\nfunction are taken from the Concord MySystem github project.\nhttps://github.com/concord-consortium/mysystem_sc\nThe code is found in the _setRemoveButtonLocation function in the link.js file.\nmysystem_sc/apps/my_system/views/link.js\n", + "description": "

Calculate the location of the delete button for the link

\n

Note: This function and the associated functions that are called by this\nfunction are taken from the Concord MySystem github project.\nhttps://github.com/concord-consortium/mysystem_sc\nThe code is found in the _setRemoveButtonLocation function in the link.js file.\nmysystem_sc/apps/my_system/views/link.js

\n" + }, + { + "name": "getGroupId", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 250, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the id of the group\n", + "description": "

Get the id of the group

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 6415, + "end": 6422, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

the id of the group

\n" + } + ] + }, + { + "name": "getId", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 234, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the id of the link\n", + "description": "

Get the id of the link

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 6160, + "end": 6167, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

the id of the link

\n" + } + ] + }, + { + "name": "getLabel", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 298, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the label\n", + "description": "

Get the label

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 7237, + "end": 7244, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

the label

\n" + } + ] + }, + { + "name": "getLengthOfCubicBezier", + "args": [ + { + "name": "C1", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "C2", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "C3", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "C4", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 1350, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nNote: This function is from\nhttps://github.com/concord-consortium/mysystem_sc\nThe code is found in the arrow_drawing.js file.\nmysystem_sc/apps/my_system/mixins/arrow_drawing.js\n", + "description": "

Note: This function is from\nhttps://github.com/concord-consortium/mysystem_sc\nThe code is found in the arrow_drawing.js file.\nmysystem_sc/apps/my_system/mixins/arrow_drawing.js

\n", + "jsdoctags": [ + { + "name": "C1", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "C2", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "C3", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "C4", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getNearestPointInPerimeter", + "args": [ + { + "name": "l", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "t", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "w", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "h", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "x", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "y", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 685, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the nearest point on a rectangle from a source point\n", + "description": "

Get the nearest point on a rectangle from a source point

\n", + "jsdoctags": [ + { + "name": { + "pos": 18358, + "end": 18359, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "l" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 18352, + "end": 18357, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the upper left x value of the rectangle

\n" + }, + { + "name": { + "pos": 18412, + "end": 18413, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "t" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 18406, + "end": 18411, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the upper left y value of the rectangle

\n" + }, + { + "name": { + "pos": 18466, + "end": 18467, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "w" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 18460, + "end": 18465, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the width of the rectangle

\n" + }, + { + "name": { + "pos": 18507, + "end": 18508, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "h" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 18501, + "end": 18506, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the height of the rectangle

\n" + }, + { + "name": { + "pos": 18549, + "end": 18550, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "x" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 18543, + "end": 18548, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the source point x value

\n" + }, + { + "name": { + "pos": 18588, + "end": 18589, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "y" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 18582, + "end": 18587, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the source point y value

\n" + }, + { + "tagName": { + "pos": 18621, + "end": 18628, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

the point on the rectangle that is closest to the

\n" + } + ] + }, + { + "name": "getNearestPointToDestinationNode", + "args": [ + { + "name": "x", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "y", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 631, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the nearest point to the destination node from a given x, y point\n", + "description": "

Get the nearest point to the destination node from a given x, y point

\n", + "jsdoctags": [ + { + "name": { + "pos": 16744, + "end": 16745, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "x" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 16738, + "end": 16743, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the x value of the source point

\n" + }, + { + "name": { + "pos": 16790, + "end": 16791, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "y" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 16784, + "end": 16789, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the y value of the source point

\n" + }, + { + "tagName": { + "pos": 16830, + "end": 16837, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

an object containing an x and y field

\n" + } + ] + }, + { + "name": "getOriginalId", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 242, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the original id of the node\n", + "description": "

Get the original id of the node

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 6279, + "end": 6286, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

the original id of the node

\n" + } + ] + }, + { + "name": "getPointOnCubicBezier", + "args": [ + { + "name": "percent", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "C1", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "C2", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "C3", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "C4", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "{ x: any; y: any; }", + "typeParameters": [], + "line": 1376, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nNote: This function is from\nhttps://github.com/concord-consortium/mysystem_sc\nThe code is found in the arrow_drawing.js file.\nmysystem_sc/apps/my_system/mixins/arrow_drawing.js\n", + "description": "

Note: This function is from\nhttps://github.com/concord-consortium/mysystem_sc\nThe code is found in the arrow_drawing.js file.\nmysystem_sc/apps/my_system/mixins/arrow_drawing.js

\n", + "jsdoctags": [ + { + "name": "percent", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "C1", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "C2", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "C3", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "C4", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "hideDeleteButton", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1067, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nHide the delete button\n", + "description": "

Hide the delete button

\n" + }, + { + "name": "hideTextGroup", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1173, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nHide the text group\n", + "description": "

Hide the text group

\n" + }, + { + "name": "isHighlighted", + "args": [ + { + "name": "value", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 307, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGetter/setter for the highlighted value\n", + "description": "

Getter/setter for the highlighted value

\n", + "jsdoctags": [ + { + "name": { + "pos": 7367, + "end": 7372, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "value" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 7361, + "end": 7366, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

(optional) the highlighted value

\n" + }, + { + "tagName": { + "pos": 7412, + "end": 7419, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

whether the link is highlighted

\n" + } + ] + }, + { + "name": "moveTextGroupToFront", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1157, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nMove the text group to the front so that it won't be blocked behind\nanother element when the student tries to click on the text group.\n", + "description": "

Move the text group to the front so that it won't be blocked behind\nanother element when the student tries to click on the text group.

\n" + }, + { + "name": "remove", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1183, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nRemove all the references to the link and also remove all the elements\nfrom the svg\n", + "description": "

Remove all the references to the link and also remove all the elements\nfrom the svg

\n" + }, + { + "name": "setColor", + "args": [ + { + "name": "color", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 729, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nSet the color of the link\n", + "description": "

Set the color of the link

\n", + "jsdoctags": [ + { + "name": { + "pos": 19493, + "end": 19498, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "color" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 19487, + "end": 19492, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the color

\n" + } + ] + }, + { + "name": "setDeleteButtonClicked", + "args": [ + { + "name": "deleteButtonClickedFunction", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 941, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCalled when the delete button is clicked\nbutton is clicked\n", + "description": "

Called when the delete button is clicked\nbutton is clicked

\n", + "jsdoctags": [ + { + "name": { + "pos": 25821, + "end": 25848, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "deleteButtonClickedFunction" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 25815, + "end": 25820, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the function to call when the delete\nbutton is clicked

\n" + } + ] + }, + { + "name": "setDestination", + "args": [ + { + "name": "destinationNode", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 490, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nSet the destination node\n", + "description": "

Set the destination node

\n", + "jsdoctags": [ + { + "name": { + "pos": 12195, + "end": 12210, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "destinationNode" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 12189, + "end": 12194, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the destination ConceptMapNode object

\n" + } + ] + }, + { + "name": "setLabel", + "args": [ + { + "name": "label", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 745, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nSet the label\n", + "description": "

Set the label

\n", + "jsdoctags": [ + { + "name": { + "pos": 19900, + "end": 19905, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "label" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 19894, + "end": 19899, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the text label

\n" + } + ] + }, + { + "name": "setLinkMouseDown", + "args": [ + { + "name": "linkMouseDownFunction", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 951, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCalled when the mouse is clicked down on the group\nclicked down on the group\n", + "description": "

Called when the mouse is clicked down on the group\nclicked down on the group

\n", + "jsdoctags": [ + { + "name": { + "pos": 26184, + "end": 26205, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "linkMouseDownFunction" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 26178, + "end": 26183, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the function to call when the mouse is\nclicked down on the group

\n" + } + ] + }, + { + "name": "setLinkMouseOut", + "args": [ + { + "name": "linkMouseOutFunction", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 993, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCalled when the mouse leaves the group\nthe group\n", + "description": "

Called when the mouse leaves the group\nthe group

\n", + "jsdoctags": [ + { + "name": { + "pos": 27406, + "end": 27426, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "linkMouseOutFunction" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 27400, + "end": 27405, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the function to call when the mouse leaves\nthe group

\n" + } + ] + }, + { + "name": "setLinkMouseOver", + "args": [ + { + "name": "linkMouseOverFunction", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 981, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCalled when the mouse is over the group\nthe group\n", + "description": "

Called when the mouse is over the group\nthe group

\n", + "jsdoctags": [ + { + "name": { + "pos": 27047, + "end": 27068, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "linkMouseOverFunction" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 27041, + "end": 27046, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the function to call when the mouse is over\nthe group

\n" + } + ] + }, + { + "name": "setLinkTextMouseDown", + "args": [ + { + "name": "linkTextMouseDownFunction", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 966, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCalled when the mouse is clicked down on the link text group\nclicked down on the link text group\n", + "description": "

Called when the mouse is clicked down on the link text group\nclicked down on the link text group

\n", + "jsdoctags": [ + { + "name": { + "pos": 26604, + "end": 26629, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "linkTextMouseDownFunction" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 26598, + "end": 26603, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the function to call when the mouse is\nclicked down on the link text group

\n" + } + ] + }, + { + "name": "setOriginalId", + "args": [ + { + "name": "originalId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 290, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nSet the original id\n", + "description": "

Set the original id

\n", + "jsdoctags": [ + { + "name": { + "pos": 7104, + "end": 7114, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "originalId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 7098, + "end": 7103, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the original id

\n" + } + ] + }, + { + "name": "showDeleteButton", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1058, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nShow the delete button\n", + "description": "

Show the delete button

\n" + }, + { + "name": "showTextGroup", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1164, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nShow the text group\n", + "description": "

Show the text group

\n" + }, + { + "name": "toJSONObject", + "args": [], + "optional": false, + "returnType": "{ originalId: string; instanceId: string; color: string; label: string; curvature: number; startCurveUp: boolean; endCurveUp: boolean; sourceNodeOriginalId: any; sourceNodeInstanceId: any; sourceNodeLabel: any; destinationNodeOriginalId: any; destinationNodeInstanceId: any; destinationNodeLabel: any; }", + "typeParameters": [], + "line": 212, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the JSON object representation of the ConceptMapLink\n", + "description": "

Get the JSON object representation of the ConceptMapLink

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 5428, + "end": 5435, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

a JSON object containing the data of the ConceptMapLink

\n" + } + ] + }, + { + "name": "updateCoordinates", + "args": [ + { + "name": "x1", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "y1", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "x2", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "y2", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isDragging", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 323, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nUpdate the coordinates of the link\n", + "description": "

Update the coordinates of the link

\n", + "jsdoctags": [ + { + "name": { + "pos": 7639, + "end": 7641, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "x1" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 7633, + "end": 7638, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

(optional) the x position of the source

\n" + }, + { + "name": { + "pos": 7694, + "end": 7696, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "y1" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 7688, + "end": 7693, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

(optional) the y position of the source

\n" + }, + { + "name": { + "pos": 7749, + "end": 7751, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "x2" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 7743, + "end": 7748, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

(optional) the x position of the destination

\n" + }, + { + "name": { + "pos": 7809, + "end": 7811, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "y2" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 7803, + "end": 7808, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

(optional) the y position of the destination

\n" + }, + { + "name": { + "pos": 7869, + "end": 7879, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "isDragging" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 7863, + "end": 7868, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

whether the link is currently being dragged

\n" + } + ] + }, + { + "name": "x1", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 258, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the x1 value\n", + "description": "

Get the x1 value

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 6533, + "end": 6540, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

the x coordinate of the source of the link

\n" + } + ] + }, + { + "name": "x2", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 274, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the x2 value\n", + "description": "

Get the x2 value

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 6809, + "end": 6816, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

the x coordinate of the destination of the link

\n" + } + ] + }, + { + "name": "y1", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 266, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the y1 value\n", + "description": "

Get the y1 value

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 6671, + "end": 6678, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

the y coordinate of the source of the link

\n" + } + ] + }, + { + "name": "y2", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 282, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the y2 value\n", + "description": "

Get the y2 value

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 6952, + "end": 6959, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

the y coordinate of the destination of the link

\n" + } + ] + } + ], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "ConceptMapNode", + "id": "class-ConceptMapNode-344acbd8c99dc94a637e5f20c3e0b1ee7246c2b9a49e3a310da44b390e723c06b6e910f9c1075f14159791e23e4577462d82e37e77f63828db1b166fcc9b0591", + "file": "src/assets/wise5/components/conceptMap/conceptMapNode.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "class ConceptMapNode {\n type: string;\n draw: any;\n id: string;\n originalId: string;\n filePath: string;\n fileName: string;\n label: any;\n showLabel: boolean;\n image: any;\n width: number;\n height: number;\n group: any;\n highlighted: boolean;\n deleteButtonColor: string;\n connector: any;\n deleteButtonGroup: any;\n border: any;\n x: number;\n y: number;\n outgoingLinks: any[];\n incomingLinks: any[];\n textGroup: any;\n deleteButtonCircle: any;\n deleteButtonX: any;\n textRect: any;\n text: any;\n controller: any;\n\n /**\n * The constructor for creating ConceptMapNodes\n * @param draw the svg.js draw object\n * @param filePath the path of the image file that represents the node\n * @param label the label of the node\n * @param x the x position of the node\n * @param y the y position of the node\n * @param width the the width of the node\n * @param height the height of the node\n * @param showLabel whether to show the label\n */\n constructor(draw, id, originalId, filePath, label, x, y, width, height, showLabel) {\n this.type = 'ConceptMapNode';\n\n // remember the svg.js draw object so we can draw onto it\n this.draw = draw;\n\n // set the id\n this.id = id;\n\n // set the original id\n this.originalId = originalId;\n\n // remember the file path e.g. \"/wise/curriculum/108/assets/Space.png\"\n this.filePath = filePath;\n\n if (this.filePath != null) {\n // get the file name e.g. \"Space.png\"\n this.fileName = this.filePath.substring(this.filePath.lastIndexOf('/') + 1);\n }\n\n // remember the label\n this.label = label;\n this.showLabel = showLabel;\n\n // create the svg image object\n this.image = this.draw.image(this.filePath).size(width, height);\n\n // remember the width\n this.width = width;\n\n // remember the height\n this.height = height;\n\n // create a group to contain all the elements of this node\n this.group = this.draw.group();\n\n // flag that specifies whether this node is highlighted by the student\n this.highlighted = false;\n\n // the color of the delete button\n this.deleteButtonColor = 'gray';\n\n // create the connector that students will use to create links\n this.connector = this.createConnector();\n\n // create the delete button\n this.deleteButtonGroup = this.createDeleteButtonGroup();\n\n /*\n * create the border that displays when the node is highighted or\n * moused over\n */\n this.border = this.createBorder();\n\n // remember the x and y coordinates\n this.x = x;\n this.y = y;\n\n // initialize the outgoing and incoming links arrays\n this.outgoingLinks = [];\n this.incomingLinks = [];\n\n // add all the elements to the group\n this.group.add(this.border);\n this.group.add(this.image);\n this.group.add(this.connector);\n this.group.add(this.deleteButtonGroup);\n if (showLabel) {\n this.textGroup = this.createTextGroup();\n this.group.add(this.textGroup);\n }\n\n // hide the border and delete button\n this.border.hide();\n this.deleteButtonGroup.hide();\n\n // set the position of the group\n this.group.x(x);\n this.group.y(y);\n }\n\n /**\n * Get the JSON object representation of the ConceptMapNode\n * @returns a JSON object containing the data of the ConceptMapNode\n */\n toJSONObject() {\n const jsonObject: any = {\n originalId: this.originalId,\n instanceId: this.id,\n fileName: this.fileName,\n filePath: this.filePath,\n label: this.label,\n x: this.x,\n y: this.y,\n width: this.width,\n height: this.height,\n outgoingLinks: [],\n incomingLinks: []\n };\n\n // loop through all the outgoing links\n for (let ol = 0; ol < this.outgoingLinks.length; ol++) {\n const outgoingLink = this.outgoingLinks[ol];\n const instanceId = outgoingLink.getId();\n const originalId = outgoingLink.getOriginalId();\n const label = outgoingLink.getLabel();\n\n /*\n * create an object containing the instance id, original id\n * and label of the link\n */\n const tempLinkObject = {\n originalId: originalId,\n instanceId: instanceId,\n label: label\n };\n\n jsonObject.outgoingLinks.push(tempLinkObject);\n }\n\n // loop through all the incoming links\n for (let il = 0; il < this.incomingLinks.length; il++) {\n const incomingLink = this.incomingLinks[il];\n const instanceId = incomingLink.getId();\n const originalId = incomingLink.getOriginalId();\n const label = incomingLink.getLabel();\n\n /*\n * create an object containing the instance id, original id\n * and label of the link\n */\n const tempLinkObject = {\n originalId: originalId,\n instanceId: instanceId,\n label: label\n };\n jsonObject.incomingLinks.push(tempLinkObject);\n }\n\n return jsonObject;\n }\n\n /**\n * Create the border that displays when the node is highlighted or\n * moused over.\n * @returns the svg rectangle that represents the border\n */\n createBorder() {\n // create the rectangle\n this.border = this.draw.rect(this.width, this.height);\n this.border.fill('none');\n this.border.stroke({ color: '#333333', opacity: 0.2, width: 2 });\n return this.border;\n }\n\n /**\n * Create the connector that students will use to create links from this\n * node.\n * @returns the svg circle that represents the connector\n */\n createConnector() {\n // create the circle\n const connectorRadius = 10;\n this.connector = this.draw.circle();\n this.connector.radius(connectorRadius);\n this.connector.cx(this.width / 2);\n this.connector.cy(0);\n this.connector.fill({ color: '#cccccc', opacity: 0.4 });\n this.connector.stroke({ color: '#333333', opacity: 0.2 });\n return this.connector;\n }\n\n /**\n * Create the delete button. The delete button is a group that contains\n * a circle and an x.\n * @returns a group that contains a circle and an x\n */\n createDeleteButtonGroup() {\n // create a group to contain the circle and x for the delete button\n this.deleteButtonGroup = this.draw.group();\n\n // create the delete button circle\n const deleteButtonRadius = 10;\n this.deleteButtonCircle = this.draw.circle();\n this.deleteButtonCircle.radius(deleteButtonRadius);\n this.deleteButtonCircle.cx(this.width);\n this.deleteButtonCircle.cy(0);\n this.deleteButtonCircle.fill({ opacity: 0.0 });\n this.deleteButtonCircle.stroke({ color: '#333333', opacity: 0.2, width: 2 });\n\n // create the x by first creating a + and then rotating it 45 degrees\n\n // get the top location of the +\n const topX = 0;\n const topY = 0 - deleteButtonRadius * 0.7;\n\n // get the bottom location of the +\n const bottomX = 0;\n const bottomY = 0 + deleteButtonRadius * 0.7;\n\n // get the left position of the +\n const leftX = 0 - deleteButtonRadius * 0.7;\n const leftY = 0;\n\n // get the right position of the +\n const rightX = 0 + deleteButtonRadius * 0.7;\n const rightY = 0;\n\n // draw the +\n const deleteButtonXPath =\n 'M' +\n topX +\n ',' +\n topY +\n 'L' +\n bottomX +\n ',' +\n bottomY +\n 'M' +\n leftX +\n ',' +\n leftY +\n 'L' +\n rightX +\n ',' +\n rightY;\n this.deleteButtonX = this.draw.path(deleteButtonXPath);\n this.deleteButtonX.stroke({ color: '#333333', opacity: 0.2, width: 2 });\n\n // rotate the + to turn it into an x\n this.deleteButtonX.transform({ rotation: 45 });\n\n // move the x to the upper right of the group\n this.deleteButtonX.translate(this.width, 0);\n\n /*\n * disable pointer events on the x so that clicks will pass through\n * and hit the circle. this way we only need to set a listener on the\n * circle for click events.\n */\n this.deleteButtonX.attr('pointer-events', 'none');\n\n // add the circle and the x\n this.deleteButtonGroup.add(this.deleteButtonCircle);\n this.deleteButtonGroup.add(this.deleteButtonX);\n\n return this.deleteButtonGroup;\n }\n\n /**\n * Create the text group\n * @returns the text group\n */\n createTextGroup() {\n // create the group\n this.textGroup = this.draw.group();\n\n // create a rectangle to surround the text\n this.textRect = this.draw.rect(100, 15);\n this.textRect.attr('fill', 'white');\n this.textRect.attr('stroke', 'black');\n this.textRect.attr('x', 0);\n this.textRect.attr('y', 10);\n this.textRect.attr('width', 100);\n this.textRect.attr('height', 20);\n this.textRect.radius(5);\n\n // create the text element\n this.text = this.draw.text(this.label);\n this.text.attr('x', 5);\n //this.text.attr('x', 0);\n this.text.attr('y', 9);\n this.text.font({\n family: 'Arial',\n size: 12\n });\n\n // prevent the text from being highlighted when the user drags the mouse\n this.text.style('user-select:none');\n this.text.node.setAttribute('user-select', 'none');\n this.text.node.setAttribute('style', 'user-select:none');\n\n // add the rectangle and text to the group\n this.textGroup.add(this.textRect);\n this.textGroup.add(this.text);\n\n // add the text group to the link group\n this.group.add(this.textGroup);\n\n let width = 0;\n\n try {\n // get the width of the bounding box of the text node\n const textBBox = this.text.node.getBBox();\n\n if (textBBox.width == 0) {\n width = this.calculateTextRectWidth(this.label);\n } else {\n width = textBBox.width + 10;\n }\n } catch (e) {\n /*\n * we were unable to get the bounding box (likely because\n * Firefox threw an error when trying to call getBBox())\n * so we will calculate the width based on the label text\n */\n width = this.calculateTextRectWidth(this.label);\n }\n\n this.textRect.attr('width', width);\n\n // set the position of the text group\n const x = this.getImageWidth() / 2;\n const y = this.getImageHeight();\n this.textGroup.cx(x);\n this.textGroup.cy(y);\n\n return this.textGroup;\n }\n\n /**\n * Get the id of the node\n * @returns the id of the node\n */\n getId() {\n return this.id;\n }\n\n /**\n * Get the original id of the node\n * @returns the original id of the node\n */\n getOriginalId() {\n return this.originalId;\n }\n\n /**\n * Get the group id of the node\n * @returns the group id of the node\n */\n getGroupId() {\n let groupId = null;\n\n if (this.group != null) {\n // get the id of the group which we will use as the id of the node\n groupId = this.group.id();\n }\n\n return groupId;\n }\n\n /**\n * Get the label\n * @returns the label of the node\n */\n getLabel() {\n return this.label;\n }\n\n /**\n * Set the label of the node\n * @param label the label of the node\n */\n setLabel(label) {\n // remember the label\n this.label = label;\n\n // set the label into the text element\n this.text.text(label);\n\n let width = 0;\n\n try {\n // get the width of the bounding box of the text node\n const textBBox = this.text.node.getBBox();\n\n if (textBBox.width == 0) {\n width = this.calculateTextRectWidth(this.label);\n } else {\n width = textBBox.width + 10;\n }\n } catch (e) {\n /*\n * we were unable to get the bounding box (likely because\n * Firefox threw an error when trying to call getBBox())\n * so we will calculate the width based on the label text\n */\n width = this.calculateTextRectWidth(this.label);\n }\n\n this.textRect.attr('width', width);\n\n // set the position of the text group\n const x = this.getImageWidth() / 2;\n const y = this.getImageHeight();\n this.textGroup.cx(x);\n this.textGroup.cy(y);\n }\n\n /**\n * Get the center x coordinate of the group\n */\n cx() {\n let val = 0;\n\n if (this.group != null && this.image != null) {\n // get the group\n const groupX = this.group.x();\n\n /*\n * get the center x coordinate of the image relative to the group.\n * this will be equal to half the width of the image.\n */\n const imageCX = this.image.cx();\n\n /*\n * get the x coordinate of the center of the group relative to the\n * svg parent\n */\n val = groupX + imageCX;\n }\n\n return val;\n }\n\n /**\n * Get the center y coordinate of the group\n */\n cy() {\n let val = 0;\n\n if (this.group != null && this.image != null) {\n // get the group\n const groupY = this.group.y();\n\n /*\n * get the center y coordinate of the image relative to the group.\n * this will be equal to half the height of the image.\n */\n const imageCY = this.image.cy();\n\n /*\n * get the y coordinate of the center of the group relative to the\n * svg parent\n */\n val = groupY + imageCY;\n }\n\n return val;\n }\n\n /**\n * Get the center x coordinate of the group\n */\n connectorCX() {\n let val = 0;\n\n if (this.group != null && this.image != null) {\n // get the group\n const groupX = this.group.x();\n\n /*\n * get the center x coordinate of the image relative to the group.\n * this will be equal to half the width of the image.\n */\n const imageCX = this.connector.cx();\n\n /*\n * get the x coordinate of the center of the group relative to the\n * svg parent\n */\n val = groupX + imageCX;\n }\n\n return val;\n }\n\n /**\n * Get the center y coordinate of the group\n */\n connectorCY() {\n let val = 0;\n\n if (this.group != null && this.image != null) {\n // get the group\n const groupY = this.group.y();\n\n /*\n * get the center y coordinate of the image relative to the group.\n * this will be equal to half the height of the image.\n */\n const imageCY = this.connector.cy();\n\n /*\n * get the y coordinate of the center of the group relative to the\n * svg parent\n */\n val = groupY + imageCY;\n }\n\n return val;\n }\n\n /**\n * Getter/setter for whether the node is highlighted\n * @parm value (optional) boolean value that sets the highlighted value\n * @returns whether the node is highlighted\n */\n isHighlighted(value) {\n if (value != null) {\n this.highlighted = value;\n }\n\n return this.highlighted;\n }\n\n /**\n * Get the group\n * @returns the group\n */\n getGroup() {\n return this.group;\n }\n\n /**\n * Show the delete button group\n */\n showDeleteButton() {\n this.deleteButtonGroup.show();\n }\n\n /**\n * Hide the delete button group\n */\n hideDeleteButton() {\n this.deleteButtonGroup.hide();\n }\n\n /**\n * Show the border of the node\n */\n showBorder() {\n this.border.show();\n }\n\n /**\n * Hide the border of the node\n */\n hideBorder() {\n this.border.hide();\n }\n\n /**\n * Get the connector of the node\n */\n getConnector() {\n return this.connector;\n }\n\n /**\n * Get the id of the connector\n */\n getConnectorId() {\n let id = null;\n\n if (this.connector != null) {\n id = this.connector.id();\n }\n\n return id;\n }\n\n /**\n * Get the x position of the group within the svg\n * @returns the x position of the group\n */\n getGroupX() {\n let x = 0;\n\n if (this.group != null) {\n /*\n * the image is located at 0, 0 within the group so we will obtain\n * the x location of the group\n */\n x = this.group.x();\n }\n\n return x;\n }\n\n /**\n * Get the y position of the group within the svg\n * @returns the y position of the group\n */\n getGroupY() {\n let y = 0;\n\n if (this.group != null) {\n /*\n * the image is located at 0, 0 within the group so we will obtain\n * the y location of the group\n */\n y = this.group.y();\n }\n\n return y;\n }\n\n /**\n * Get the x position of the image within the svg\n * @returns the x position of the image\n */\n getImageX() {\n // get the x position of the group\n const groupX = this.getGroupX();\n\n // get the x position of the image relative to the group\n const imageRelativeX = this.image.x();\n\n // add the values together to get the absolute x position of the image\n let imageX = groupX + imageRelativeX;\n\n // get the group\n const group = this.getGroup();\n\n // check if the group is shifted\n if (group != null) {\n // get the bounding box of the group\n const bbox = group.bbox();\n\n if (bbox != null) {\n // get the x position of the bounding box on the group\n const bboxX = bbox.x;\n\n // compensate for the shift of the group\n imageX = imageX - bboxX;\n }\n }\n\n return imageX;\n }\n\n /**\n * Get the y position of the image within the svg\n * @returns the y position of the image\n */\n getImageY() {\n // get the y position of the group\n const groupY = this.getGroupY();\n\n // get the y position of the image relative to the group\n const imageRelativeY = this.image.y();\n\n // add the values together to get the absolute y position of the image\n let imageY = groupY + imageRelativeY;\n\n // get the group\n const group = this.getGroup();\n\n // check if the group is shifted\n if (group != null) {\n // get the bounding box of the group\n const bbox = group.bbox();\n\n // get the y position of the bounding box on the group\n const bboxY = bbox.y;\n\n // compensate for the shift of the group\n imageY = imageY - bboxY;\n }\n\n return imageY;\n }\n\n /**\n * Get the width of the image\n * @returns the width of th eimage\n */\n getImageWidth() {\n let width = 0;\n\n if (this.image != null) {\n width = this.image.width();\n }\n\n return width;\n }\n\n /**\n * Get the height of the image\n * @returns the height of the image\n */\n getImageHeight() {\n let height = 0;\n\n if (this.image != null) {\n height = this.image.height();\n }\n\n return height;\n }\n\n /**\n * Set the mouseover listener for the group\n * @param nodeMouseOverFunction the function to call when the mouse is over\n * the group\n */\n setNodeMouseOver(nodeMouseOverFunction) {\n if (this.group != null) {\n this.group.mouseover(nodeMouseOverFunction);\n }\n }\n\n /**\n * Set the mouseout listener for the group\n * @param nodeMouseOutFunction the function to call when the mouse moves\n * out of the group\n */\n setNodeMouseOut(nodeMouseOutFunction) {\n if (this.group != null) {\n this.group.mouseout(nodeMouseOutFunction);\n }\n }\n\n /**\n * Set the mousedown listener for the group\n * @param nodeMouseDownFunction the function to call when the mouse is\n * down on the group\n */\n setNodeMouseDown(nodeMouseDownFunction) {\n if (this.group != null) {\n this.group.mousedown(nodeMouseDownFunction);\n }\n }\n\n /**\n * Set the mouseup listener for the group\n * @param nodeMouseUpFunction the function to call when the mouse is\n * released over the group\n */\n setNodeMouseUp(nodeMouseUpFunction) {\n if (this.group != null) {\n this.group.mouseup(nodeMouseUpFunction);\n }\n }\n\n /**\n * Set the click listener for the image\n * @param nodeMouseClickFunction the function to call when the image is\n * clicked\n */\n setNodeMouseClick(nodeMouseClickFunction) {\n if (this.group != null) {\n this.image.click(nodeMouseClickFunction);\n }\n }\n\n /**\n * Set the mousedown listener for the connector\n * @param connectorMouseDownFunction the function to call when the mouse\n * is down on the connector\n */\n setConnectorMouseDown(connectorMouseDownFunction) {\n if (this.connector != null) {\n this.connector.mousedown(connectorMouseDownFunction);\n }\n }\n\n /**\n * Set the mousedown listener for the delete button\n * @param deleteButtonMouseDownFunction the function to call when the mouse\n * is down on the delete button\n */\n setDeleteButtonMouseDown(deleteButtonMouseDownFunction) {\n if (this.deleteButtonCircle != null) {\n this.deleteButtonCircle.mousedown(deleteButtonMouseDownFunction);\n }\n }\n\n /**\n * Set the mouseover listener for the delete button\n * @param deleteButtonMouseOverFunction the function to call when the mouse\n * is over the delete button\n */\n setDeleteButtonMouseOver(deleteButtonMouseOverFunction) {\n if (this.deleteButtonCircle != null) {\n this.deleteButtonCircle.mouseover(deleteButtonMouseOverFunction);\n }\n }\n\n /**\n * Set the mouseout listener for the delete button\n * @param deleteButtonMouseOutFunction the function to call when the mouse\n * moves out of the delete button\n */\n setDeleteButtonMouseOut(deleteButtonMouseOutFunction) {\n if (this.deleteButtonCircle != null) {\n this.deleteButtonCircle.mouseout(deleteButtonMouseOutFunction);\n }\n }\n\n /**\n * Set the dragmove listener for the group\n * @param dragMoveFunction the function to call when the group is dragged\n */\n setDragMove(dragMoveFunction) {\n if (this.group != null) {\n // set a listener for when the node is dragged\n this.group.on('dragmove', dragMoveFunction);\n }\n }\n\n /**\n * Set the x position\n * @param x the x position\n */\n setX(x) {\n this.x = x;\n this.group.x(x);\n }\n\n /**\n * Set the y position\n * @param y the y position\n */\n setY(y) {\n this.y = y;\n this.group.y(y);\n }\n\n /**\n * Add an outgoing link to the node\n * @param outgoingLink a ConceptMapLink object\n */\n addOutgoingLink(outgoingLink) {\n if (outgoingLink != null) {\n this.outgoingLinks.push(outgoingLink);\n }\n }\n\n /**\n * Remove an outgoing link from the node\n * @param outgoingLink a ConceptMapLink object\n */\n removeOutgoingLink(outgoingLink) {\n if (outgoingLink != null) {\n // loop through all the outgoing links in this node\n for (let ol = 0; ol < this.outgoingLinks.length; ol++) {\n // get an outgoing link\n const tempOutgoingLink = this.outgoingLinks[ol];\n\n if (outgoingLink == tempOutgoingLink) {\n // we have found the outgoing link we want to remove\n this.outgoingLinks.splice(ol, 1);\n break;\n }\n }\n }\n }\n\n /**\n * Get the outgoing links\n * @return the outgoing links\n */\n getOutgoingLinks() {\n return this.outgoingLinks;\n }\n\n /**\n * Add an incoming link to the node\n * @param incomingLink a ConceptMapLink object\n */\n addIncomingLink(incomingLink) {\n if (incomingLink != null) {\n this.incomingLinks.push(incomingLink);\n }\n }\n\n /**\n * Remove an incoming link from the node\n * @param incomingLink a ConceptMapLink object\n */\n removeIncomingLink(incomingLink) {\n if (incomingLink != null) {\n // loop through the incoming links in the node\n for (let il = 0; il < this.incomingLinks.length; il++) {\n // get an incoming link\n const tempIncomingLink = this.incomingLinks[il];\n\n if (incomingLink == tempIncomingLink) {\n // we have found the incoming link we want to remove\n this.incomingLinks.splice(il, 1);\n break;\n }\n }\n }\n }\n\n /**\n * Get the incoming links\n * @return the incoming links\n */\n getIncomingLinks() {\n return this.incomingLinks;\n }\n\n /**\n * The function that is called when the node is moved\n * @param event\n */\n dragMove(event) {\n // get the group\n const group = this.getGroup();\n\n // get the x and y coordinates of the center of the image\n const cx = this.cx();\n const cy = this.cy();\n\n // update the local x, y values of the node for bookkeeping\n this.x = group.x();\n this.y = group.y();\n\n // get the outgoing links and incoming links\n const outgoingLinks = this.outgoingLinks;\n const incomingLinks = this.incomingLinks;\n\n if (outgoingLinks != null) {\n // loop through all the outgoing links\n for (let ol = 0; ol < outgoingLinks.length; ol++) {\n // get an outgoing link\n const outgoingLink = outgoingLinks[ol];\n\n // update the x, y coordinate of the tail of the link\n const x1 = cx;\n const y1 = cy;\n\n // calculate the nearest point to the destination node\n const nearestPoint = outgoingLink.getNearestPointToDestinationNode(x1, y1);\n const x2 = nearestPoint.x;\n const y2 = nearestPoint.y;\n\n // update the coordinates of the link\n outgoingLink.updateCoordinates(x1, y1, x2, y2);\n }\n\n // loop through all the incoming links\n for (let il = 0; il < incomingLinks.length; il++) {\n // get an incoming link\n const incomingLink = incomingLinks[il];\n\n // reuse the coordinates of the tail of the link\n const x1 = incomingLink.x1();\n const y1 = incomingLink.y1();\n\n // calculate the nearest point to the source node\n const nearestPoint = incomingLink.getNearestPointToDestinationNode(x1, y1);\n const x2 = nearestPoint.x;\n const y2 = nearestPoint.y;\n\n // update the coordinates of the link\n incomingLink.updateCoordinates(x1, y1, x2, y2);\n }\n }\n\n if (this.controller != null) {\n // handle the student data changing\n this.controller.studentDataChanged();\n }\n\n // move the group to the front so that it shows up above other elements\n group.front();\n }\n\n /**\n * Remove the node from the svg\n */\n remove() {\n // make the group not draggable\n this.group.draggable(false);\n\n // remove the group\n this.group.remove();\n\n // remove the image\n this.image.remove();\n\n // remove the connector\n this.connector.remove();\n\n // remove the delete button\n this.deleteButtonCircle.remove();\n this.deleteButtonX.remove();\n this.deleteButtonGroup.remove();\n\n // loop through all the outgoing links\n for (let ol = 0; ol < this.outgoingLinks.length; ol++) {\n // get an outgoing link\n const outgoingLink = this.outgoingLinks[ol];\n\n if (outgoingLink != null) {\n // remove the outgoing link\n outgoingLink.remove();\n\n /*\n * move the counter back one because calling outgoingLink.remove()\n * has removed the outgoingLink from the outgoingLinks array\n */\n ol--;\n }\n }\n\n // loop through all the incoming links\n for (let il = 0; il < this.incomingLinks.length; il++) {\n // get an incoming link\n const incomingLink = this.incomingLinks[il];\n\n if (incomingLink != null) {\n // remove the incoming link\n incomingLink.remove();\n\n /*\n * move the counter back one because calling incomingLink.remove()\n * has removed the incomingLink from the incomingLinks array\n */\n il--;\n }\n }\n }\n\n /**\n * Get the links from this node to a given destination node\n * @param destinationNode the destination node\n */\n getLinksToDestination(destinationNode) {\n const linksToDestination = [];\n\n // loop through all the outgoing links\n for (let ol = 0; ol < this.outgoingLinks.length; ol++) {\n // get an outgoing link\n const outgoingLink = this.outgoingLinks[ol];\n\n if (outgoingLink != null) {\n if (destinationNode == outgoingLink.destinationNode) {\n /*\n * the destination of the link is the destination we are\n * looking for\n */\n linksToDestination.push(outgoingLink);\n }\n }\n }\n\n return linksToDestination;\n }\n\n /**\n * Calculate the width that the text rectangle should be set to\n * @param labelText the label text that will be displayed in the rectangle\n * @return the width that the text rectangle should be set to\n */\n calculateTextRectWidth(labelText) {\n let width = 0;\n\n if (labelText != null) {\n width = labelText.length * 6 + 10;\n }\n\n return width;\n }\n}\n\nexport default ConceptMapNode;\n", + "constructorObj": { + "name": "constructor", + "description": "

The constructor for creating ConceptMapNodes

\n", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "draw", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "id", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "originalId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "filePath", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "label", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "x", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "y", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "width", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "height", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "showLabel", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 28, + "rawdescription": "\n\nThe constructor for creating ConceptMapNodes\n", + "jsdoctags": [ + { + "name": { + "pos": 598, + "end": 602, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "draw" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 592, + "end": 597, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the svg.js draw object

\n" + }, + { + "name": "id", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "originalId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": { + "pos": 638, + "end": 646, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "filePath" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 632, + "end": 637, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the path of the image file that represents the node

\n" + }, + { + "name": { + "pos": 711, + "end": 716, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "label" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 705, + "end": 710, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the label of the node

\n" + }, + { + "name": { + "pos": 751, + "end": 752, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "x" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 745, + "end": 750, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the x position of the node

\n" + }, + { + "name": { + "pos": 792, + "end": 793, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "y" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 786, + "end": 791, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the y position of the node

\n" + }, + { + "name": { + "pos": 833, + "end": 838, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "width" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 827, + "end": 832, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the the width of the node

\n" + }, + { + "name": { + "pos": 877, + "end": 883, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "height" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 871, + "end": 876, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the height of the node

\n" + }, + { + "name": { + "pos": 919, + "end": 928, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "showLabel" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 913, + "end": 918, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

whether to show the label

\n" + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "border", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 18 + }, + { + "name": "connector", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 16 + }, + { + "name": "controller", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 28 + }, + { + "name": "deleteButtonCircle", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 24 + }, + { + "name": "deleteButtonColor", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 15 + }, + { + "name": "deleteButtonGroup", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 17 + }, + { + "name": "deleteButtonX", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 25 + }, + { + "name": "draw", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 3 + }, + { + "name": "fileName", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 7 + }, + { + "name": "filePath", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 6 + }, + { + "name": "group", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 13 + }, + { + "name": "height", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 12 + }, + { + "name": "highlighted", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 14 + }, + { + "name": "id", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 4 + }, + { + "name": "image", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 10 + }, + { + "name": "incomingLinks", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 22 + }, + { + "name": "label", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 8 + }, + { + "name": "originalId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 5 + }, + { + "name": "outgoingLinks", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 21 + }, + { + "name": "showLabel", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 9 + }, + { + "name": "text", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 27 + }, + { + "name": "textGroup", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 23 + }, + { + "name": "textRect", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 26 + }, + { + "name": "type", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 2 + }, + { + "name": "width", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 11 + }, + { + "name": "x", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 19 + }, + { + "name": "y", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 20 + } + ], + "methods": [ + { + "name": "addIncomingLink", + "args": [ + { + "name": "incomingLink", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 913, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nAdd an incoming link to the node\n", + "description": "

Add an incoming link to the node

\n", + "jsdoctags": [ + { + "name": { + "pos": 22258, + "end": 22270, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "incomingLink" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 22252, + "end": 22257, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

a ConceptMapLink object

\n" + } + ] + }, + { + "name": "addOutgoingLink", + "args": [ + { + "name": "outgoingLink", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 875, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nAdd an outgoing link to the node\n", + "description": "

Add an outgoing link to the node

\n", + "jsdoctags": [ + { + "name": { + "pos": 21321, + "end": 21333, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "outgoingLink" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 21315, + "end": 21320, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

a ConceptMapLink object

\n" + } + ] + }, + { + "name": "calculateTextRectWidth", + "args": [ + { + "name": "labelText", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 1101, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCalculate the width that the text rectangle should be set to\n", + "description": "

Calculate the width that the text rectangle should be set to

\n", + "jsdoctags": [ + { + "name": { + "pos": 27396, + "end": 27405, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "labelText" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 27390, + "end": 27395, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the label text that will be displayed in the rectangle

\n" + }, + { + "tagName": { + "pos": 27467, + "end": 27473, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

the width that the text rectangle should be set to

\n" + } + ] + }, + { + "name": "connectorCX", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 495, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the center x coordinate of the group\n", + "description": "

Get the center x coordinate of the group

\n" + }, + { + "name": "connectorCY", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 521, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the center y coordinate of the group\n", + "description": "

Get the center y coordinate of the group

\n" + }, + { + "name": "createBorder", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 188, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCreate the border that displays when the node is highlighted or\nmoused over.\n", + "description": "

Create the border that displays when the node is highlighted or\nmoused over.

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 4960, + "end": 4967, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

the svg rectangle that represents the border

\n" + } + ] + }, + { + "name": "createConnector", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 201, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCreate the connector that students will use to create links from this\nnode.\n", + "description": "

Create the connector that students will use to create links from this\nnode.

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 5352, + "end": 5359, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

the svg circle that represents the connector

\n" + } + ] + }, + { + "name": "createDeleteButtonGroup", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 218, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCreate the delete button. The delete button is a group that contains\na circle and an x.\n", + "description": "

Create the delete button. The delete button is a group that contains\na circle and an x.

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 5906, + "end": 5913, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

a group that contains a circle and an x

\n" + } + ] + }, + { + "name": "createTextGroup", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 294, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCreate the text group\n", + "description": "

Create the text group

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 8079, + "end": 8086, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

the text group

\n" + } + ] + }, + { + "name": "cx", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 443, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the center x coordinate of the group\n", + "description": "

Get the center x coordinate of the group

\n" + }, + { + "name": "cy", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 469, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the center y coordinate of the group\n", + "description": "

Get the center y coordinate of the group

\n" + }, + { + "name": "dragMove", + "args": [ + { + "name": "event", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 951, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nThe function that is called when the node is moved\n", + "description": "

The function that is called when the node is moved

\n", + "jsdoctags": [ + { + "name": { + "pos": 23208, + "end": 23213, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "event" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 23202, + "end": 23207, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "" + } + ] + }, + { + "name": "getConnector", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 596, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the connector of the node\n", + "description": "

Get the connector of the node

\n" + }, + { + "name": "getConnectorId", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 603, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the id of the connector\n", + "description": "

Get the id of the connector

\n" + }, + { + "name": "getGroup", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 561, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the group\n", + "description": "

Get the group

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 14326, + "end": 14333, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

the group

\n" + } + ] + }, + { + "name": "getGroupId", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 381, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the group id of the node\n", + "description": "

Get the group id of the node

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 10336, + "end": 10343, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

the group id of the node

\n" + } + ] + }, + { + "name": "getGroupX", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 617, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the x position of the group within the svg\n", + "description": "

Get the x position of the group within the svg

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 15134, + "end": 15141, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

the x position of the group

\n" + } + ] + }, + { + "name": "getGroupY", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 635, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the y position of the group within the svg\n", + "description": "

Get the y position of the group within the svg

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 15483, + "end": 15490, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

the y position of the group

\n" + } + ] + }, + { + "name": "getId", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 365, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the id of the node\n", + "description": "

Get the id of the node

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 10076, + "end": 10083, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

the id of the node

\n" + } + ] + }, + { + "name": "getImageHeight", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 733, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the height of the image\n", + "description": "

Get the height of the image

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 17704, + "end": 17711, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

the height of the image

\n" + } + ] + }, + { + "name": "getImageWidth", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 719, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the width of the image\n", + "description": "

Get the width of the image

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 17488, + "end": 17495, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

the width of th eimage

\n" + } + ] + }, + { + "name": "getImageX", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 653, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the x position of the image within the svg\n", + "description": "

Get the x position of the image within the svg

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 15832, + "end": 15839, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

the x position of the image

\n" + } + ] + }, + { + "name": "getImageY", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 687, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the y position of the image within the svg\n", + "description": "

Get the y position of the image within the svg

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 16691, + "end": 16698, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

the y position of the image

\n" + } + ] + }, + { + "name": "getIncomingLinks", + "args": [], + "optional": false, + "returnType": "{}", + "typeParameters": [], + "line": 943, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the incoming links\n", + "description": "

Get the incoming links

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 23043, + "end": 23049, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

the incoming links

\n" + } + ] + }, + { + "name": "getLabel", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 396, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the label\n", + "description": "

Get the label

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 10616, + "end": 10623, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

the label of the node

\n" + } + ] + }, + { + "name": "getLinksToDestination", + "args": [ + { + "name": "destinationNode", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "{}", + "typeParameters": [], + "line": 1074, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the links from this node to a given destination node\n", + "description": "

Get the links from this node to a given destination node

\n", + "jsdoctags": [ + { + "name": { + "pos": 26678, + "end": 26693, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "destinationNode" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 26672, + "end": 26677, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the destination node

\n" + } + ] + }, + { + "name": "getOriginalId", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 373, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the original id of the node\n", + "description": "

Get the original id of the node

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 10195, + "end": 10202, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

the original id of the node

\n" + } + ] + }, + { + "name": "getOutgoingLinks", + "args": [], + "optional": false, + "returnType": "{}", + "typeParameters": [], + "line": 905, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the outgoing links\n", + "description": "

Get the outgoing links

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 22111, + "end": 22117, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

the outgoing links

\n" + } + ] + }, + { + "name": "hideBorder", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 589, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nHide the border of the node\n", + "description": "

Hide the border of the node

\n" + }, + { + "name": "hideDeleteButton", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 575, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nHide the delete button group\n", + "description": "

Hide the delete button group

\n" + }, + { + "name": "isHighlighted", + "args": [ + { + "name": "value", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 549, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGetter/setter for whether the node is highlighted\n", + "description": "

Getter/setter for whether the node is highlighted

\n", + "jsdoctags": [ + { + "name": "value", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "tagName": { + "pos": 14126, + "end": 14133, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

whether the node is highlighted

\n" + } + ] + }, + { + "name": "remove", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1017, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nRemove the node from the svg\n", + "description": "

Remove the node from the svg

\n" + }, + { + "name": "removeIncomingLink", + "args": [ + { + "name": "incomingLink", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 923, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nRemove an incoming link from the node\n", + "description": "

Remove an incoming link from the node

\n", + "jsdoctags": [ + { + "name": { + "pos": 22484, + "end": 22496, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "incomingLink" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 22478, + "end": 22483, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

a ConceptMapLink object

\n" + } + ] + }, + { + "name": "removeOutgoingLink", + "args": [ + { + "name": "outgoingLink", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 885, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nRemove an outgoing link from the node\n", + "description": "

Remove an outgoing link from the node

\n", + "jsdoctags": [ + { + "name": { + "pos": 21547, + "end": 21559, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "outgoingLink" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 21541, + "end": 21546, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

a ConceptMapLink object

\n" + } + ] + }, + { + "name": "setConnectorMouseDown", + "args": [ + { + "name": "connectorMouseDownFunction", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 803, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nSet the mousedown listener for the connector\nis down on the connector\n", + "description": "

Set the mousedown listener for the connector\nis down on the connector

\n", + "jsdoctags": [ + { + "name": { + "pos": 19372, + "end": 19398, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "connectorMouseDownFunction" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 19366, + "end": 19371, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the function to call when the mouse\nis down on the connector

\n" + } + ] + }, + { + "name": "setDeleteButtonMouseDown", + "args": [ + { + "name": "deleteButtonMouseDownFunction", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 814, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nSet the mousedown listener for the delete button\nis down on the delete button\n", + "description": "

Set the mousedown listener for the delete button\nis down on the delete button

\n", + "jsdoctags": [ + { + "name": { + "pos": 19702, + "end": 19731, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "deleteButtonMouseDownFunction" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 19696, + "end": 19701, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the function to call when the mouse\nis down on the delete button

\n" + } + ] + }, + { + "name": "setDeleteButtonMouseOut", + "args": [ + { + "name": "deleteButtonMouseOutFunction", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 836, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nSet the mouseout listener for the delete button\nmoves out of the delete button\n", + "description": "

Set the mouseout listener for the delete button\nmoves out of the delete button

\n", + "jsdoctags": [ + { + "name": { + "pos": 20426, + "end": 20454, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "deleteButtonMouseOutFunction" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 20420, + "end": 20425, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the function to call when the mouse\nmoves out of the delete button

\n" + } + ] + }, + { + "name": "setDeleteButtonMouseOver", + "args": [ + { + "name": "deleteButtonMouseOverFunction", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 825, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nSet the mouseover listener for the delete button\nis over the delete button\n", + "description": "

Set the mouseover listener for the delete button\nis over the delete button

\n", + "jsdoctags": [ + { + "name": { + "pos": 20066, + "end": 20095, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "deleteButtonMouseOverFunction" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 20060, + "end": 20065, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the function to call when the mouse\nis over the delete button

\n" + } + ] + }, + { + "name": "setDragMove", + "args": [ + { + "name": "dragMoveFunction", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 846, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nSet the dragmove listener for the group\n", + "description": "

Set the dragmove listener for the group

\n", + "jsdoctags": [ + { + "name": { + "pos": 20778, + "end": 20794, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "dragMoveFunction" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 20772, + "end": 20777, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the function to call when the group is dragged

\n" + } + ] + }, + { + "name": "setLabel", + "args": [ + { + "name": "label", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 404, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nSet the label of the node\n", + "description": "

Set the label of the node

\n", + "jsdoctags": [ + { + "name": { + "pos": 10744, + "end": 10749, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "label" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 10738, + "end": 10743, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the label of the node

\n" + } + ] + }, + { + "name": "setNodeMouseClick", + "args": [ + { + "name": "nodeMouseClickFunction", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 792, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nSet the click listener for the image\nclicked\n", + "description": "

Set the click listener for the image\nclicked

\n", + "jsdoctags": [ + { + "name": { + "pos": 19088, + "end": 19110, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "nodeMouseClickFunction" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 19082, + "end": 19087, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the function to call when the image is\nclicked

\n" + } + ] + }, + { + "name": "setNodeMouseDown", + "args": [ + { + "name": "nodeMouseDownFunction", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 770, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nSet the mousedown listener for the group\ndown on the group\n", + "description": "

Set the mousedown listener for the group\ndown on the group

\n", + "jsdoctags": [ + { + "name": { + "pos": 18518, + "end": 18539, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "nodeMouseDownFunction" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 18512, + "end": 18517, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the function to call when the mouse is\ndown on the group

\n" + } + ] + }, + { + "name": "setNodeMouseOut", + "args": [ + { + "name": "nodeMouseOutFunction", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 759, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nSet the mouseout listener for the group\nout of the group\n", + "description": "

Set the mouseout listener for the group\nout of the group

\n", + "jsdoctags": [ + { + "name": { + "pos": 18231, + "end": 18251, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "nodeMouseOutFunction" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 18225, + "end": 18230, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the function to call when the mouse moves\nout of the group

\n" + } + ] + }, + { + "name": "setNodeMouseOver", + "args": [ + { + "name": "nodeMouseOverFunction", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 748, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nSet the mouseover listener for the group\nthe group\n", + "description": "

Set the mouseover listener for the group\nthe group

\n", + "jsdoctags": [ + { + "name": { + "pos": 17945, + "end": 17966, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "nodeMouseOverFunction" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 17939, + "end": 17944, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the function to call when the mouse is over\nthe group

\n" + } + ] + }, + { + "name": "setNodeMouseUp", + "args": [ + { + "name": "nodeMouseUpFunction", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 781, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nSet the mouseup listener for the group\nreleased over the group\n", + "description": "

Set the mouseup listener for the group\nreleased over the group

\n", + "jsdoctags": [ + { + "name": { + "pos": 18806, + "end": 18825, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "nodeMouseUpFunction" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 18800, + "end": 18805, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the function to call when the mouse is\nreleased over the group

\n" + } + ] + }, + { + "name": "setX", + "args": [ + { + "name": "x", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 857, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nSet the x position\n", + "description": "

Set the x position

\n", + "jsdoctags": [ + { + "name": { + "pos": 21069, + "end": 21070, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "x" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 21063, + "end": 21068, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the x position

\n" + } + ] + }, + { + "name": "setY", + "args": [ + { + "name": "y", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 866, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nSet the y position\n", + "description": "

Set the y position

\n", + "jsdoctags": [ + { + "name": { + "pos": 21188, + "end": 21189, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "y" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 21182, + "end": 21187, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the y position

\n" + } + ] + }, + { + "name": "showBorder", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 582, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nShow the border of the node\n", + "description": "

Show the border of the node

\n" + }, + { + "name": "showDeleteButton", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 568, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nShow the delete button group\n", + "description": "

Show the delete button group

\n" + }, + { + "name": "toJSONObject", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 126, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the JSON object representation of the ConceptMapNode\n", + "description": "

Get the JSON object representation of the ConceptMapNode

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 3213, + "end": 3220, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

a JSON object containing the data of the ConceptMapNode

\n" + } + ] + } + ], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "Config", + "id": "class-Config-52b25a99c6c06c86fcbbf0e1ca179e014f41bbdac8a8f83bca8bff848e6333f8aad2c4d798adab158517c0178d0b75148607b6b8724e38ce3fbd87b911cf1f23", + "file": "src/app/domain/config.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "export class Config {\n contextPath: string;\n googleAnalyticsId?: string;\n googleTagManagerId?: string;\n googleClientId?: string;\n isGoogleClassroomEnabled?: boolean;\n microsoftClientId?: string;\n recaptchaPublicKey?: string;\n logOutURL: string;\n currentTime: number;\n wiseHostname?: string;\n wise4Hostname?: string;\n discourseNewsCategory?: string;\n discourseURL?: string;\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "contextPath", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 2 + }, + { + "name": "currentTime", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 10 + }, + { + "name": "discourseNewsCategory", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": true, + "description": "", + "line": 13 + }, + { + "name": "discourseURL", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": true, + "description": "", + "line": 14 + }, + { + "name": "googleAnalyticsId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": true, + "description": "", + "line": 3 + }, + { + "name": "googleClientId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": true, + "description": "", + "line": 5 + }, + { + "name": "googleTagManagerId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": true, + "description": "", + "line": 4 + }, + { + "name": "isGoogleClassroomEnabled", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": true, + "description": "", + "line": 6 + }, + { + "name": "logOutURL", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 9 + }, + { + "name": "microsoftClientId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": true, + "description": "", + "line": 7 + }, + { + "name": "recaptchaPublicKey", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": true, + "description": "", + "line": 8 + }, + { + "name": "wise4Hostname", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": true, + "description": "", + "line": 12 + }, + { + "name": "wiseHostname", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": true, + "description": "", + "line": 11 + } + ], + "methods": [], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "Constraint", + "id": "class-Constraint-40daef2a32050d1bf10f07e7d285af72e87801c0449b2fc7e994510edc0af68005da3e9691dbbc88d7ef8365d354230f24f888370c19d1e787c5017515af8280", + "file": "src/app/domain/constraint.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { RemovalCriteria } from './removalCriteria';\n\nexport class Constraint {\n action: string;\n id: string;\n removalConditional: string;\n removalCriteria: RemovalCriteria[];\n targetId: string;\n\n constructor(jsonObject: any = {}) {\n for (const key of Object.keys(jsonObject)) {\n this[key] = jsonObject[key];\n }\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "jsonObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "{}" + } + ], + "line": 8, + "jsdoctags": [ + { + "name": "jsonObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "{}", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "action", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 4 + }, + { + "name": "id", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 5 + }, + { + "name": "removalConditional", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 6 + }, + { + "name": "removalCriteria", + "deprecated": false, + "deprecationMessage": "", + "type": "RemovalCriteria[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 7 + }, + { + "name": "targetId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 8 + } + ], + "methods": [], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "ConstraintAction", + "id": "class-ConstraintAction-ea0e3102582e0b8b0628ad02524ee4838289992285d4d0535e21ca8ba24082aa114a8352daaffb580e9d89d9dc457cca6d7d7f8ada446c58c14ef5c167a36b21", + "file": "src/app/domain/constraintAction.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { ValueAndText } from './valueAndText';\n\nexport class ConstraintAction extends ValueAndText {}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "text", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 2, + "inheritance": { + "file": "ValueAndText" + } + }, + { + "name": "value", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 3, + "inheritance": { + "file": "ValueAndText" + } + } + ], + "methods": [], + "indexSignatures": [], + "extends": [ + "ValueAndText" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "ConstraintRemovalCriteria", + "id": "class-ConstraintRemovalCriteria-dffed68282e5f3d3841d2445b403c35dd67b7193ee27661bc1904a254558f786452c639a2fc64700ea6e849640dce128028becdbb878e88bcfd523ae5058edb7", + "file": "src/assets/wise5/common/ConstraintRemovalCriteria.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { ConstraintRemovalCriteriaParams } from './ConstraintRemovalCriteriaParams';\n\nexport class ConstraintRemovalCriteria {\n name: string;\n params: ConstraintRemovalCriteriaParams;\n\n constructor(name: string, params: ConstraintRemovalCriteriaParams) {\n this.name = name;\n this.params = params;\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "name", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "params", + "type": "ConstraintRemovalCriteriaParams", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 5, + "jsdoctags": [ + { + "name": "name", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "params", + "type": "ConstraintRemovalCriteriaParams", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "name", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 4 + }, + { + "name": "params", + "deprecated": false, + "deprecationMessage": "", + "type": "ConstraintRemovalCriteriaParams", + "indexKey": "", + "optional": false, + "description": "", + "line": 5 + } + ], + "methods": [], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "ConstraintRemovalCriteriaParams", + "id": "class-ConstraintRemovalCriteriaParams-52f1bc7c6d266e463d0b5728f4aa8d5db50404cfcdbb1de2bb6a7b26ea5a784892fdf400b219c2b1e9346c42739a9a6d98ad1bdb0e762803459067e04d3922d3", + "file": "src/assets/wise5/common/ConstraintRemovalCriteriaParams.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "export class ConstraintRemovalCriteriaParams {\n choiceIds?: string;\n componentId?: string;\n fromNodeId?: string;\n requireAllCellsInARowToBeFilled?: boolean;\n requiredNumberOfFilledRows?: number;\n requiredNumberOfNotes?: number;\n requiredNumberOfWords?: number;\n requiredSubmitCount?: number;\n scores?: string[];\n tableHasHeaderRow?: boolean;\n toNodeId?: string;\n nodeId?: string;\n\n constructor(jsonObject: any = {}) {\n for (const key of Object.keys(jsonObject)) {\n this[key] = jsonObject[key];\n }\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "jsonObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "{}" + } + ], + "line": 13, + "jsdoctags": [ + { + "name": "jsonObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "{}", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "choiceIds", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": true, + "description": "", + "line": 2 + }, + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": true, + "description": "", + "line": 3 + }, + { + "name": "fromNodeId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": true, + "description": "", + "line": 4 + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": true, + "description": "", + "line": 13 + }, + { + "name": "requireAllCellsInARowToBeFilled", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": true, + "description": "", + "line": 5 + }, + { + "name": "requiredNumberOfFilledRows", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": true, + "description": "", + "line": 6 + }, + { + "name": "requiredNumberOfNotes", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": true, + "description": "", + "line": 7 + }, + { + "name": "requiredNumberOfWords", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": true, + "description": "", + "line": 8 + }, + { + "name": "requiredSubmitCount", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": true, + "description": "", + "line": 9 + }, + { + "name": "scores", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": true, + "description": "", + "line": 10 + }, + { + "name": "tableHasHeaderRow", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": true, + "description": "", + "line": 11 + }, + { + "name": "toNodeId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": true, + "description": "", + "line": 12 + } + ], + "methods": [], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "Container", + "id": "class-Container-eff8560e6f2d7e8f88f32f55619a74bdd73f8d4c69f8468bafb4a56c44758bcdb9ae27120ecc5c1d2bd9e325cdc7df3293908474f9a6821262490af62ad8b0c5", + "file": "src/assets/wise5/components/match/match-student/container.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { Choice } from '../choice';\n\nexport class Container {\n isSourceBucket: boolean;\n items: Choice[];\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "isSourceBucket", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 4 + }, + { + "name": "items", + "deprecated": false, + "deprecationMessage": "", + "type": "Choice[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 5 + } + ], + "methods": [], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "Course", + "id": "class-Course-af75d5fce7a7e5a325c24b2bee90067b2f5fdc4928cfabd4c712b523a3c0cb8f0059c56f23ad8bafd9860b09db301b98ea5fee3e953728f95a442f842b80cb0d", + "file": "src/app/domain/course.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "export class Course {\n id: string;\n name: string;\n section: string;\n constructor(jsonObject: any = {}) {\n for (const key of Object.keys(jsonObject)) {\n this[key] = jsonObject[key];\n }\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "jsonObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "{}" + } + ], + "line": 4, + "jsdoctags": [ + { + "name": "jsonObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "{}", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "id", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 2 + }, + { + "name": "name", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 3 + }, + { + "name": "section", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 4 + } + ], + "methods": [], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "CRaterIdea", + "id": "class-CRaterIdea-9390d64f00a18e415e54a2de2a038dfd4e96920eeab5d4faf85a73284dfc5ef85358abb0d777e6fd72194be4ac82edfa45253e7e927533320c3d2885f1612a7b", + "file": "src/assets/wise5/components/common/cRater/CRaterIdea.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "export class CRaterIdea {\n name: string;\n detected?: boolean;\n characterOffsets: any[];\n text?: string;\n\n constructor(name: string, detected?: boolean, text?: string) {\n this.name = name;\n if (detected) {\n this.detected = detected;\n }\n if (text) {\n this.text = text;\n }\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "name", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "detected", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "optional": true + }, + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "optional": true + } + ], + "line": 5, + "jsdoctags": [ + { + "name": "name", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "detected", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "optional": true, + "tagName": { + "text": "param" + } + }, + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "optional": true, + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "characterOffsets", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 4 + }, + { + "name": "detected", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": true, + "description": "", + "line": 3 + }, + { + "name": "name", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 2 + }, + { + "name": "text", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": true, + "description": "", + "line": 5 + } + ], + "methods": [], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "CRaterResponse", + "id": "class-CRaterResponse-7e54db2de99381c3a4542b0d8ccf4656aa9e31508bbd2aa78205d2e900b39244d9941956512051bb43e891a21e6efd3f1e029f8a422714164668ad91319c8bbb", + "file": "src/assets/wise5/components/common/cRater/CRaterResponse.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { Response } from '../feedbackRule/Response';\nimport { CRaterIdea } from './CRaterIdea';\nimport { CRaterScore } from './CRaterScore';\n\nexport class CRaterResponse extends Response {\n ideas: CRaterIdea[] = [];\n score: number;\n scores: CRaterScore[];\n\n constructor(jsonObject: any = {}) {\n super(jsonObject);\n this.populateFields(jsonObject);\n }\n\n getDetectedIdeaCount(): number {\n return this.getDetectedIdeaNames().length;\n }\n\n getDetectedIdeaNames(): string[] {\n const detectedIdeaNames = [];\n this.ideas.forEach((idea: CRaterIdea) => {\n if (idea.detected) {\n detectedIdeaNames.push(idea.name);\n }\n });\n return detectedIdeaNames;\n }\n\n getKIScore(): number {\n return this.isSingleScoreItem()\n ? this.score\n : this.scores.find((score) => score.id === 'ki').score;\n }\n\n private isSingleScoreItem(): boolean {\n return this.score != null;\n }\n\n isNonScorable(): boolean {\n return this.scores.some((score) => score.id === 'nonscorable' && score.score === 1);\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "jsonObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "{}" + } + ], + "line": 8, + "jsdoctags": [ + { + "name": "jsonObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "{}", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "ideas", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "CRaterIdea[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 6 + }, + { + "name": "score", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 7 + }, + { + "name": "scores", + "deprecated": false, + "deprecationMessage": "", + "type": "CRaterScore[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 8 + }, + { + "name": "submitCounter", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 2, + "inheritance": { + "file": "Response" + } + } + ], + "methods": [ + { + "name": "getDetectedIdeaCount", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 15, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getDetectedIdeaNames", + "args": [], + "optional": false, + "returnType": "string[]", + "typeParameters": [], + "line": 19, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getKIScore", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 29, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isNonScorable", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 39, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isSingleScoreItem", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 35, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "populateFields", + "args": [ + { + "name": "jsonObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "{}" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 7, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "jsonObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "{}", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "Response" + } + } + ], + "indexSignatures": [], + "extends": [ + "Response" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "CRaterRubric", + "id": "class-CRaterRubric-2d15c62f3f12272c2b876a4650dd216b786732c3fa6b02aba4bc0bd323d4615ab14cc988e68210f33bb4f876f6eeae766fcb093b3b8ae3408a8f93e66da3976a", + "file": "src/assets/wise5/components/common/cRater/CRaterRubric.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { CRaterIdea } from './CRaterIdea';\n\nexport class CRaterRubric {\n description: string = '';\n ideas: CRaterIdea[] = [];\n\n constructor(rubric: any = { description: '', ideas: [] }) {\n this.description = rubric.description;\n this.ideas = rubric.ideas;\n }\n\n getIdea(ideaId: string): CRaterIdea {\n return this.ideas.find((idea) => idea.name === ideaId);\n }\n\n hasRubricData(): boolean {\n return (this.description ?? '') !== '' || this.ideas.length > 0;\n }\n}\n\nexport function getUniqueIdeas(responses: any[], rubric: CRaterRubric): CRaterIdea[] {\n const uniqueIdeas: CRaterIdea[] = [];\n responses.forEach((response) =>\n response.ideas\n ?.filter(\n (idea) => idea.detected && !uniqueIdeas.some((uniqueIdea) => uniqueIdea.name === idea.name)\n )\n .forEach((idea) => {\n const cRaterIdea = new CRaterIdea(idea.name, true);\n const cRaterRubricIdea = rubric.getIdea(idea.name);\n cRaterIdea.text = cRaterRubricIdea?.text ?? idea.name;\n uniqueIdeas.push(cRaterIdea);\n })\n );\n return uniqueIdeas;\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "rubric", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "{ description: '', ideas: [] }" + } + ], + "line": 5, + "jsdoctags": [ + { + "name": "rubric", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "{ description: '', ideas: [] }", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "description", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 4 + }, + { + "name": "ideas", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "CRaterIdea[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 5 + } + ], + "methods": [ + { + "name": "getIdea", + "args": [ + { + "name": "ideaId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "CRaterIdea", + "typeParameters": [], + "line": 12, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "ideaId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "hasRubricData", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 16, + "deprecated": false, + "deprecationMessage": "" + } + ], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "CRaterScore", + "id": "class-CRaterScore-8bff6c0a8ebe96c27e5b1cf3696368cbbded47b02bde56f4ed64d25f097fc0a22c0768638f4b4f06ae91a7a4983e0b2936b2cd28339b2fd50a0448cc4ba79775", + "file": "src/assets/wise5/components/common/cRater/CRaterScore.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "export class CRaterScore {\n id: string;\n realNumberScore: number;\n score: number;\n scoreRangeMax: number;\n scoreRangeMin: number;\n\n constructor(\n id: string,\n score: number,\n realNumberScore: number,\n scoreRangeMin: number,\n scoreRangeMax: number\n ) {\n this.id = id;\n this.score = score;\n this.realNumberScore = realNumberScore;\n this.scoreRangeMin = scoreRangeMin;\n this.scoreRangeMax = scoreRangeMax;\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "score", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "realNumberScore", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "scoreRangeMin", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "scoreRangeMax", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 6, + "jsdoctags": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "score", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "realNumberScore", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "scoreRangeMin", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "scoreRangeMax", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "id", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 2 + }, + { + "name": "realNumberScore", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 3 + }, + { + "name": "score", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 4 + }, + { + "name": "scoreRangeMax", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 5 + }, + { + "name": "scoreRangeMin", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 6 + } + ], + "methods": [], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "DataExplorerManager", + "id": "class-DataExplorerManager-d89a10bd18e64a81cd2984629e20473de286507b3bd2012583e4cc7cece58925ffb8de97b48fa19e133c823aaaf642f44a19a9f54f9c48b4f84ae300ca488971", + "file": "src/assets/wise5/components/graph/data-explorer-manager.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import * as covariance from 'compute-covariance';\nimport { addPointFromTableIntoData, calculateMean, isMultipleYAxes, isSingleYAxis } from './util';\nimport { Series } from './domain/series';\n\nexport class DataExplorerManager {\n dataExplorerColors: string[] = ['blue', 'orange', 'purple', 'black', 'green'];\n\n constructor(\n private xAxis: any,\n private yAxis: any,\n private activeTrial: any\n ) {}\n\n handleDataExplorer(studentData: any): Series[] {\n this.xAxis.title.text = studentData.dataExplorerXAxisLabel;\n this.setYAxisLabels(studentData);\n this.setXAxisLabels(studentData);\n return this.addAllSeries(studentData);\n }\n\n private addAllSeries(studentData: any): Series[] {\n const allRegressionSeries = [];\n const dataExplorerSeries = studentData.dataExplorerSeries;\n for (let seriesIndex = 0; seriesIndex < dataExplorerSeries.length; seriesIndex++) {\n if (dataExplorerSeries[seriesIndex].yColumn != null) {\n const color = this.dataExplorerColors[seriesIndex];\n this.addSeries(studentData, dataExplorerSeries[seriesIndex], seriesIndex, color);\n this.handleRegressionSeries(\n studentData,\n dataExplorerSeries[seriesIndex],\n color,\n allRegressionSeries\n );\n }\n }\n return allRegressionSeries;\n }\n\n private addSeries(\n studentData: any,\n singleDataExplorerSeries: any,\n seriesIndex: number,\n color: string\n ): void {\n const series = this.generateDataExplorerSeries(\n studentData.tableData,\n singleDataExplorerSeries.xColumn,\n singleDataExplorerSeries.yColumn,\n studentData.dataExplorerGraphType,\n singleDataExplorerSeries.name,\n color,\n singleDataExplorerSeries.yAxis,\n studentData.dataExplorerTooltipHeaderColumn\n );\n if (series.yAxis == null) {\n this.setSeriesYAxisIndex(series, seriesIndex);\n }\n this.activeTrial.series.push(series);\n }\n\n private handleRegressionSeries(\n studentData: any,\n singleDataExplorerSeries: any,\n color: string,\n allRegressionSeries: any[]\n ): void {\n if (this.shouldAddRegressionSeries(studentData)) {\n this.addRegressionSeries(\n studentData.tableData,\n singleDataExplorerSeries.xColumn,\n singleDataExplorerSeries.yColumn,\n color,\n singleDataExplorerSeries.yAxis,\n allRegressionSeries\n );\n }\n }\n\n private shouldAddRegressionSeries(studentData: any): boolean {\n return (\n studentData.dataExplorerGraphType === 'scatter' &&\n studentData.isDataExplorerScatterPlotRegressionLineEnabled\n );\n }\n\n private addRegressionSeries(\n tableData: any[][],\n xColumn: number,\n yColumn: number,\n color: string,\n yAxis: number,\n allRegressionSeries: Series[]\n ): void {\n const singleRegressionSeries = this.generateDataExplorerRegressionSeries(\n tableData,\n xColumn,\n yColumn,\n color,\n yAxis\n );\n allRegressionSeries.push(singleRegressionSeries);\n }\n\n private setYAxisLabels(studentData: any): void {\n if (isSingleYAxis(this.yAxis)) {\n this.yAxis.title.text = studentData.dataExplorerYAxisLabel;\n } else if (studentData.dataExplorerYAxisLabels != null) {\n for (let [index, yAxis] of Object.entries(this.yAxis)) {\n this.setYAxisAttributes(studentData, yAxis, index);\n }\n }\n }\n\n private setYAxisAttributes(studentData: any, yAxis: any, index: string): void {\n yAxis.title.text = studentData.dataExplorerYAxisLabels[index];\n const yAxisIndex = studentData.dataExplorerSeries[index].yAxis;\n yAxis.title.style.color = this.dataExplorerColors[yAxisIndex];\n yAxis.labels.style.color = this.dataExplorerColors[yAxisIndex];\n }\n\n private setSeriesYAxisIndex(series: Series, seriesIndex: number): void {\n if (this.hasMultipleYAxes(this.yAxis)) {\n if (seriesIndex === 0 || seriesIndex === 1) {\n series.yAxis = seriesIndex;\n } else {\n series.yAxis = 0;\n }\n }\n }\n\n private hasMultipleYAxes(yAxis: any): boolean {\n return isMultipleYAxes(yAxis) && yAxis.length == 2;\n }\n\n private setXAxisLabels(studentData: any): void {\n const thisComponent = this;\n this.xAxis.labels = {\n formatter: function () {\n if (thisComponent.shouldGenerateDataExplorerLabel(this.value, studentData)) {\n // try to convert the x value number to a category string on the x axis\n const textValue = thisComponent.getXColumnTextValue(\n studentData.dataExplorerSeries,\n studentData.tableData,\n this.value\n );\n if (thisComponent.shouldGetColumnLabel(textValue)) {\n return studentData.tableData[this.value + 1][studentData.dataExplorerSeries[0].xColumn]\n .text;\n }\n }\n return this.value;\n }\n };\n }\n\n private shouldGenerateDataExplorerLabel(value: number, studentData: any): boolean {\n return (\n value + 1 < studentData.tableData.length &&\n studentData.isDataExplorerEnabled != null &&\n studentData.dataExplorerSeries != null &&\n studentData.tableData != null\n );\n }\n\n private shouldGetColumnLabel(textValue: string): boolean {\n return (\n typeof textValue === 'string' &&\n textValue !== '' &&\n !this.isNA(textValue) &&\n isNaN(Number(textValue))\n );\n }\n\n private getXColumnTextValue(\n dataExplorerSeries: any[],\n tableData: any[][],\n value: number\n ): string {\n const xColumn = dataExplorerSeries[0].xColumn;\n const dataRow = tableData[value + 1];\n return dataRow[xColumn].text;\n }\n\n private isNA(text: string): boolean {\n const textUpperCase = text.toUpperCase();\n return textUpperCase === 'NA' || textUpperCase === 'N/A';\n }\n\n private generateDataExplorerSeries(\n tableData: any[][],\n xColumn: number,\n yColumn: number,\n graphType: string,\n name: string,\n color: string,\n yAxis: any,\n tooltipHeaderColumn: number\n ): Series {\n const series: Series = {\n type: graphType,\n name: name,\n color: color,\n yAxis: yAxis,\n data: this.convertDataExplorerDataToSeriesData(\n tableData,\n xColumn,\n yColumn,\n tooltipHeaderColumn\n )\n };\n if (graphType === 'line') {\n series.data.sort(this.sortLineData);\n }\n return series;\n }\n\n private sortLineData(a, b): number {\n if (a[0] > b[0]) {\n return 1;\n } else if (a[0] < b[0]) {\n return -1;\n } else {\n if (a[1] > b[1]) {\n return 1;\n } else if (a[1] < b[1]) {\n return -1;\n } else {\n return 0;\n }\n }\n }\n\n private convertDataExplorerDataToSeriesData(\n rows: any[],\n xColumn: number,\n yColumn: number,\n tooltipHeaderColumn: number\n ): any[] {\n const data = [];\n rows.slice(1).forEach((row: any) => {\n const xCell = row[xColumn];\n const yCell = row[yColumn];\n if (this.isValidDataPoint(xCell, yCell)) {\n const tooltipHeader = row[tooltipHeaderColumn]?.text;\n addPointFromTableIntoData(xCell, yCell, data, tooltipHeader);\n }\n });\n return data;\n }\n\n private isValidDataPoint(xCell: any, yCell: any): boolean {\n return xCell != null && yCell != null;\n }\n\n private generateDataExplorerRegressionSeries(\n tableData: any[][],\n xColumn: number,\n yColumn: number,\n color: string,\n yAxis: number\n ): Series {\n const regressionLineData = this.calculateRegressionLineData(tableData, xColumn, yColumn);\n return {\n type: 'line',\n name: 'Regression Line',\n color: color,\n data: regressionLineData,\n yAxis: yAxis,\n enableMouseTracking: false\n };\n }\n\n private calculateRegressionLineData(\n tableData: any[][],\n xColumn: number,\n yColumn: number\n ): any[][] {\n const xValues = this.getValuesInColumn(tableData, xColumn);\n const yValues = this.getValuesInColumn(tableData, yColumn);\n const covarianceMatrix = covariance(xValues, yValues);\n const covarianceXY = covarianceMatrix[0][1];\n const varianceX = covarianceMatrix[0][0];\n const meanY = calculateMean(yValues);\n const meanX = calculateMean(xValues);\n const slope = covarianceXY / varianceX;\n const intercept = meanY - slope * meanX;\n let firstX = Math.min(...xValues);\n let firstY = slope * firstX + intercept;\n if (firstY < 0) {\n firstY = 0;\n firstX = (firstY - intercept) / slope;\n }\n let secondX = Math.max(...xValues);\n let secondY = slope * secondX + intercept;\n if (secondY < 0) {\n secondY = 0;\n secondX = (secondY - intercept) / slope;\n }\n return [\n [firstX, firstY],\n [secondX, secondY]\n ];\n }\n\n private getValuesInColumn(tableData: any[][], columnIndex: number): any[] {\n const values = [];\n for (let r = 1; r < tableData.length; r++) {\n const row = tableData[r];\n const value = Number(row[columnIndex].text);\n values.push(value);\n }\n return values;\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "xAxis", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "yAxis", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "activeTrial", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 6, + "jsdoctags": [ + { + "name": "xAxis", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "yAxis", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "activeTrial", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "dataExplorerColors", + "defaultValue": "['blue', 'orange', 'purple', 'black', 'green']", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 6 + } + ], + "methods": [ + { + "name": "addAllSeries", + "args": [ + { + "name": "studentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Series[]", + "typeParameters": [], + "line": 21, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "studentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addRegressionSeries", + "args": [ + { + "name": "tableData", + "type": "any[][]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "xColumn", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "yColumn", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "color", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "yAxis", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "allRegressionSeries", + "type": "Series[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 86, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "tableData", + "type": "any[][]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "xColumn", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "yColumn", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "color", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "yAxis", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "allRegressionSeries", + "type": "Series[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addSeries", + "args": [ + { + "name": "studentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "singleDataExplorerSeries", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "seriesIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "color", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 39, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "studentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "singleDataExplorerSeries", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "seriesIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "color", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "calculateRegressionLineData", + "args": [ + { + "name": "tableData", + "type": "any[][]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "xColumn", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "yColumn", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "[][]", + "typeParameters": [], + "line": 273, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "tableData", + "type": "any[][]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "xColumn", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "yColumn", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "convertDataExplorerDataToSeriesData", + "args": [ + { + "name": "rows", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "xColumn", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "yColumn", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "tooltipHeaderColumn", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 233, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "rows", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "xColumn", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "yColumn", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "tooltipHeaderColumn", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "generateDataExplorerRegressionSeries", + "args": [ + { + "name": "tableData", + "type": "any[][]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "xColumn", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "yColumn", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "color", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "yAxis", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Series", + "typeParameters": [], + "line": 255, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "tableData", + "type": "any[][]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "xColumn", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "yColumn", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "color", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "yAxis", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "generateDataExplorerSeries", + "args": [ + { + "name": "tableData", + "type": "any[][]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "xColumn", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "yColumn", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "graphType", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "name", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "color", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "yAxis", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "tooltipHeaderColumn", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Series", + "typeParameters": [], + "line": 189, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "tableData", + "type": "any[][]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "xColumn", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "yColumn", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "graphType", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "name", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "color", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "yAxis", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "tooltipHeaderColumn", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getValuesInColumn", + "args": [ + { + "name": "tableData", + "type": "any[][]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 305, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "tableData", + "type": "any[][]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getXColumnTextValue", + "args": [ + { + "name": "dataExplorerSeries", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "tableData", + "type": "any[][]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "value", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 174, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "dataExplorerSeries", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "tableData", + "type": "any[][]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "value", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "handleDataExplorer", + "args": [ + { + "name": "studentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Series[]", + "typeParameters": [], + "line": 14, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "handleRegressionSeries", + "args": [ + { + "name": "studentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "singleDataExplorerSeries", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "color", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "allRegressionSeries", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 61, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "studentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "singleDataExplorerSeries", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "color", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "allRegressionSeries", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "hasMultipleYAxes", + "args": [ + { + "name": "yAxis", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 131, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "yAxis", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isNA", + "args": [ + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 184, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isValidDataPoint", + "args": [ + { + "name": "xCell", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "yCell", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 251, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "xCell", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "yCell", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setSeriesYAxisIndex", + "args": [ + { + "name": "series", + "type": "Series", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "seriesIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 121, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "series", + "type": "Series", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "seriesIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setXAxisLabels", + "args": [ + { + "name": "studentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 135, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "studentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setYAxisAttributes", + "args": [ + { + "name": "studentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "yAxis", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 114, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "studentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "yAxis", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setYAxisLabels", + "args": [ + { + "name": "studentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 104, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "studentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "shouldAddRegressionSeries", + "args": [ + { + "name": "studentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 79, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "studentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "shouldGenerateDataExplorerLabel", + "args": [ + { + "name": "value", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 156, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "value", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "shouldGetColumnLabel", + "args": [ + { + "name": "textValue", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 165, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "textValue", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "sortLineData", + "args": [ + { + "name": "a", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "b", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 217, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "a", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "b", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "DataExportContext", + "id": "class-DataExportContext-12984cec2a8689d01f96a75abbbe91d011e4495e7e09167ef006d5072323ff60dcc80b98ee9766ac3a9f35bb9cf593dad699cdc14cd38616d83bca6521253e20", + "file": "src/assets/wise5/classroomMonitor/dataExport/DataExportContext.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { DataExportComponent } from './data-export/data-export.component';\nimport { DataExportStrategy } from './strategies/DataExportStrategy';\n\nexport class DataExportContext {\n private strategy: DataExportStrategy;\n constructor(public controller: DataExportComponent) {}\n\n setStrategy(strategy: DataExportStrategy) {\n strategy.setDataExportContext(this);\n this.strategy = strategy;\n }\n\n export() {\n this.strategy.export();\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "controller", + "type": "DataExportComponent", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 5, + "jsdoctags": [ + { + "name": "controller", + "type": "DataExportComponent", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "controller", + "deprecated": false, + "deprecationMessage": "", + "type": "DataExportComponent", + "indexKey": "", + "optional": false, + "description": "", + "line": 6, + "modifierKind": [ + 125 + ] + }, + { + "name": "strategy", + "deprecated": false, + "deprecationMessage": "", + "type": "DataExportStrategy", + "indexKey": "", + "optional": false, + "description": "", + "line": 5, + "modifierKind": [ + 123 + ] + } + ], + "methods": [ + { + "name": "export", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 13, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "setStrategy", + "args": [ + { + "name": "strategy", + "type": "DataExportStrategy", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 8, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "strategy", + "type": "DataExportStrategy", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "DialogGuidanceComponent", + "id": "class-DialogGuidanceComponent-a185d5400131f46ebd495b9a25e13a39a172309cc0b9fade72239dae4a668f4482b69b33082589b88d14afe5d084ab01c0db0f11281e7931314c998824089a56", + "file": "src/assets/wise5/components/dialogGuidance/DialogGuidanceComponent.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { Component } from '../../common/Component';\nimport { ComputerAvatarComponent } from '../../common/computer-avatar/computer-avatar-component';\nimport { applyMixins } from '../../common/apply-mixins';\nimport { FeedbackRule } from '../common/feedbackRule/FeedbackRule';\nimport { DialogGuidanceContent } from './DialogGuidanceContent';\n\nexport class DialogGuidanceComponent extends Component implements ComputerAvatarComponent {\n content: DialogGuidanceContent;\n\n getFeedbackRules(): FeedbackRule[] {\n return this.content.feedbackRules;\n }\n\n getItemId(): string {\n return this.content.itemId;\n }\n\n isMultipleFeedbackTextsForSameRuleAllowed(): boolean {\n return !this.isVersion1();\n }\n\n isVersion1(): boolean {\n return this.content.version == null;\n }\n\n isVersion2(): boolean {\n return this.content.version === 2;\n }\n\n isComputerAvatarEnabled: () => boolean;\n isComputerAvatarPromptAvailable: () => boolean;\n isOnlyOneComputerAvatarAvailable: () => boolean;\n isUseGlobalComputerAvatar: () => boolean;\n getComputerAvatarInitialResponse: () => string;\n}\n\napplyMixins(DialogGuidanceComponent, [ComputerAvatarComponent]);\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "content", + "deprecated": false, + "deprecationMessage": "", + "type": "DialogGuidanceContent", + "indexKey": "", + "optional": false, + "description": "", + "line": 8, + "inheritance": { + "file": "Component" + } + }, + { + "name": "getComputerAvatarInitialResponse", + "deprecated": false, + "deprecationMessage": "", + "type": "function", + "indexKey": "", + "optional": false, + "description": "", + "line": 34 + }, + { + "name": "isComputerAvatarEnabled", + "deprecated": false, + "deprecationMessage": "", + "type": "function", + "indexKey": "", + "optional": false, + "description": "", + "line": 30 + }, + { + "name": "isComputerAvatarPromptAvailable", + "deprecated": false, + "deprecationMessage": "", + "type": "function", + "indexKey": "", + "optional": false, + "description": "", + "line": 31 + }, + { + "name": "isOnlyOneComputerAvatarAvailable", + "deprecated": false, + "deprecationMessage": "", + "type": "function", + "indexKey": "", + "optional": false, + "description": "", + "line": 32 + }, + { + "name": "isUseGlobalComputerAvatar", + "deprecated": false, + "deprecationMessage": "", + "type": "function", + "indexKey": "", + "optional": false, + "description": "", + "line": 33 + }, + { + "name": "id", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 5, + "inheritance": { + "file": "Component" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 6, + "inheritance": { + "file": "Component" + } + } + ], + "methods": [ + { + "name": "getFeedbackRules", + "args": [], + "optional": false, + "returnType": "FeedbackRule[]", + "typeParameters": [], + "line": 10, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getItemId", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 14, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isMultipleFeedbackTextsForSameRuleAllowed", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 18, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isVersion1", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isVersion2", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getConnectedComponent", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 43, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "Component" + } + }, + { + "name": "hasConnectedComponent", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 14, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "Component" + } + }, + { + "name": "hasConnectedComponentAlwaysField", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 18, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "Component" + } + }, + { + "name": "isAcceptsAssets", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 34, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "Component" + } + }, + { + "name": "isGradable", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 39, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "Component" + } + } + ], + "indexSignatures": [], + "extends": [ + "Component" + ], + "hostBindings": [], + "hostListeners": [], + "implements": [ + "ComputerAvatarComponent" + ] + }, + { + "name": "DialogGuidanceComponentDataExportStrategy", + "id": "class-DialogGuidanceComponentDataExportStrategy-871735be65216e571a4bd910891bbf283d63b517cd267062aef812b336dd1b9650da0e31f0710303e907cfa83f64dd998bc72bb1b83b58249b719ac14eb36bec", + "file": "src/assets/wise5/classroomMonitor/dataExport/strategies/DialogGuidanceComponentDataExportStrategy.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { ComponentDataExportParams } from '../ComponentDataExportParams';\nimport { AbstractComponentDataExportStrategy } from './AbstractComponentDataExportStrategy';\n\nexport class DialogGuidanceComponentDataExportStrategy extends AbstractComponentDataExportStrategy {\n private computerLabel = 'Computer';\n private ideaLabel = 'Idea';\n private itemIdLabel = 'Item ID';\n private responseLabel = 'Response';\n private scoreLabel = 'Score';\n private studentLabel = 'Student';\n\n constructor(\n protected nodeId: string,\n protected component: any,\n additionalParams: ComponentDataExportParams,\n protected allOrLatest: 'all' | 'latest'\n ) {\n super(nodeId, component, additionalParams);\n }\n\n protected generateComponentHeaderRow(component: any): string[] {\n const headerRow = [...this.defaultColumnNames];\n this.addDialogGuidanceSpecificHeaderColumns(component, headerRow);\n return headerRow;\n }\n\n private addDialogGuidanceSpecificHeaderColumns(component: any, headerRow: string[]): void {\n headerRow.push(this.itemIdLabel);\n const componentStates = this.dataService.getComponentStatesByComponentId(component.id);\n const ideaNames = this.getIdeaNames(this.getIdeas(componentStates));\n const scoreNames = this.getScoreNames(this.getScores(componentStates));\n for (let i = 1; i <= this.getMaxNumStudentResponses(componentStates); i++) {\n const responseLabelNumber = `${this.responseLabel} ${i}`;\n headerRow.push(`${this.studentLabel} ${responseLabelNumber}`);\n ideaNames.forEach((ideaName) =>\n headerRow.push(`${this.ideaLabel} ${ideaName} ${responseLabelNumber}`)\n );\n this.addScoreNamesToHeaderRow(headerRow, scoreNames, responseLabelNumber);\n headerRow.push(`${this.computerLabel} ${responseLabelNumber}`);\n }\n }\n\n private getIdeas(componentStates: any[]): any[] {\n return (\n componentStates\n .flatMap((componentState) => componentState.studentData.responses)\n .find((response) => response.ideas?.length > 0)?.ideas ?? []\n );\n }\n\n private getIdeaNames(ideas: any[]): string[] {\n return ideas.map((idea) => idea.name).sort(this.sortIdeaNames);\n }\n\n private sortIdeaNames(a: any, b: any): number {\n const aInt = parseInt(a);\n const bInt = parseInt(b);\n // If a and b are the same number but one of them contains a letter, we will sort\n // alphabetically. When a string like \"5a\" is given to parseInt(), it will return 5. Therefore\n // if we are comparing \"5\" and \"5a\", we will sort alphabetically because we want 5 to show up\n // before 5a.\n return !isNaN(aInt) && !isNaN(bInt) && aInt !== bInt\n ? aInt - bInt // sort numerically\n : a.localeCompare(b); // sort alphabetically\n }\n\n private getScores(componentStates: any[]): string[] {\n return (\n componentStates\n .flatMap((componentState) => componentState.studentData.responses)\n .find((response) => response.scores?.length > 0)?.scores ?? []\n );\n }\n\n private getScoreNames(scores: any[]): string[] {\n return scores.map((score) => score.id).sort();\n }\n\n private getMaxNumStudentResponses(componentStates: any[]): number {\n return Math.max(\n ...componentStates.map(\n (componentState) =>\n componentState.studentData.responses.filter((response) => response.user === 'Student')\n .length\n )\n );\n }\n\n private addScoreNamesToHeaderRow(\n headerRow: string[],\n scoreNames: string[],\n responseLabelNumber: string\n ): void {\n if (scoreNames.length === 0) {\n headerRow.push(`${this.scoreLabel} ${responseLabelNumber}`);\n } else {\n scoreNames.forEach((scoreName) =>\n headerRow.push(`${this.scoreLabel} ${scoreName} ${responseLabelNumber}`)\n );\n }\n }\n\n protected generateComponentWorkRows(\n component: any,\n columnNames: string[],\n columnNameToNumber: any,\n nodeId: string\n ): string[] {\n const workRows = [];\n const componentStates = this.getComponentStates(component);\n for (let r = 0; r < componentStates.length; r++) {\n const componentState = componentStates[r];\n const row = new Array(columnNames.length).fill('');\n this.setColumnValue(row, columnNameToNumber, '#', r + 1);\n this.setStudentInfo(row, columnNameToNumber, componentState);\n this.setRunInfo(row, columnNameToNumber, componentState);\n this.setComponentInfo(row, columnNameToNumber, nodeId, component);\n this.setStudentWork(row, columnNameToNumber, component, componentState);\n workRows.push(row);\n }\n return workRows;\n }\n\n protected setComponentInfo(\n row: any[],\n columnNameToNumber: any,\n nodeId: string,\n component: any\n ): void {\n super.setComponentInfo(row, columnNameToNumber, nodeId, component);\n this.setColumnValue(row, columnNameToNumber, this.itemIdLabel, component.itemId);\n }\n\n protected setStudentWork(\n row: any[],\n columnNameToNumber: any,\n component: any,\n componentState: any\n ): void {\n super.setStudentWork(row, columnNameToNumber, component, componentState);\n let studentResponseCounter = 0;\n let responseLabelNumber = '';\n componentState.studentData.responses.forEach((response) => {\n if (response.user === 'Student') {\n studentResponseCounter++;\n responseLabelNumber = `${this.responseLabel} ${studentResponseCounter}`;\n this.setColumnValue(\n row,\n columnNameToNumber,\n `${this.studentLabel} ${responseLabelNumber}`,\n response.text\n );\n } else if (response.user === 'Computer') {\n this.addComputerResponseDataToRow(row, columnNameToNumber, responseLabelNumber, response);\n }\n });\n }\n\n private addComputerResponseDataToRow(\n row: any[],\n columnNameToNumber: any,\n responseLabelNumber: string,\n response: any\n ): void {\n if (response.ideas != null) {\n this.addIdeasToRow(row, columnNameToNumber, responseLabelNumber, response.ideas);\n }\n if (response.scores != null) {\n this.addScoresToRow(row, columnNameToNumber, responseLabelNumber, response.scores);\n }\n if (response.score != null) {\n this.setColumnValue(\n row,\n columnNameToNumber,\n `${this.scoreLabel} ${responseLabelNumber}`,\n response.score\n );\n }\n this.setColumnValue(\n row,\n columnNameToNumber,\n `${this.computerLabel} ${responseLabelNumber}`,\n response.text\n );\n }\n\n private addIdeasToRow(\n row: any[],\n columnNameToNumber: any,\n responseLabelNumber: string,\n ideas: any[]\n ): void {\n ideas.forEach((ideaObject) =>\n this.setColumnValue(\n row,\n columnNameToNumber,\n `${this.ideaLabel} ${ideaObject.name} ${responseLabelNumber}`,\n ideaObject.detected ? 1 : 0\n )\n );\n }\n\n private addScoresToRow(\n row: any[],\n columnNameToNumber: any,\n responseLabelNumber: string,\n scores: any[]\n ): void {\n scores.forEach((scoreObject) =>\n this.setColumnValue(\n row,\n columnNameToNumber,\n `${this.scoreLabel} ${scoreObject.id} ${responseLabelNumber}`,\n scoreObject.score\n )\n );\n }\n\n protected getComponentTypeWithUnderscore(): string {\n return 'dialog_guidance';\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "additionalParams", + "type": "ComponentDataExportParams", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "allOrLatest", + "type": "\"all\" | \"latest\"", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 10, + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "additionalParams", + "type": "ComponentDataExportParams", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "allOrLatest", + "type": "\"all\" | \"latest\"", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "computerLabel", + "defaultValue": "'Computer'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 5, + "modifierKind": [ + 123 + ] + }, + { + "name": "ideaLabel", + "defaultValue": "'Idea'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 6, + "modifierKind": [ + 123 + ] + }, + { + "name": "itemIdLabel", + "defaultValue": "'Item ID'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 7, + "modifierKind": [ + 123 + ] + }, + { + "name": "responseLabel", + "defaultValue": "'Response'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 8, + "modifierKind": [ + 123 + ] + }, + { + "name": "scoreLabel", + "defaultValue": "'Score'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 9, + "modifierKind": [ + 123 + ] + }, + { + "name": "studentLabel", + "defaultValue": "'Student'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "modifierKind": [ + 123 + ] + }, + { + "name": "allOrLatest", + "deprecated": false, + "deprecationMessage": "", + "type": "\"all\" | \"latest\"", + "indexKey": "", + "optional": false, + "description": "", + "line": 8, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "componentStateIdToRevisionNumber", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "object", + "indexKey": "", + "optional": false, + "description": "", + "line": 9, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "defaultColumnNames", + "defaultValue": "[\n '#',\n 'Workgroup ID',\n 'User ID 1',\n 'Student Name 1',\n 'User ID 2',\n 'Student Name 2',\n 'User ID 3',\n 'Student Name 3',\n 'Class Period',\n 'Project ID',\n 'Project Name',\n 'Run ID',\n 'Start Date',\n 'End Date',\n 'Student Work ID',\n 'Server Timestamp',\n 'Client Timestamp',\n 'Node ID',\n 'Component ID',\n 'Component Part Number',\n 'Step Title',\n 'Component Type',\n 'Component Prompt',\n 'Student Data',\n 'Component Revision Counter',\n 'Is Submit',\n 'Submit Count'\n ]", + "deprecated": false, + "deprecationMessage": "", + "type": "[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "includeOnlySubmits", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 39, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "includeStudentNames", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 40, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "revisionCounter", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 41, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "annotationService", + "deprecated": false, + "deprecationMessage": "", + "type": "AnnotationService", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "configService", + "deprecated": false, + "deprecationMessage": "", + "type": "ConfigService", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "context", + "deprecated": false, + "deprecationMessage": "", + "type": "DataExportContext", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "controller", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "dataExportService", + "deprecated": false, + "deprecationMessage": "", + "type": "DataExportService", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "dataService", + "deprecated": false, + "deprecationMessage": "", + "type": "TeacherDataService", + "indexKey": "", + "optional": false, + "description": "", + "line": 20, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "projectService", + "deprecated": false, + "deprecationMessage": "", + "type": "TeacherProjectService", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + } + ], + "methods": [ + { + "name": "addComputerResponseDataToRow", + "args": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "responseLabelNumber", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "response", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 159, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "responseLabelNumber", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "response", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addDialogGuidanceSpecificHeaderColumns", + "args": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "headerRow", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 27, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "headerRow", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addIdeasToRow", + "args": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "responseLabelNumber", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ideas", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 187, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "responseLabelNumber", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "ideas", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addScoreNamesToHeaderRow", + "args": [ + { + "name": "headerRow", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "scoreNames", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "responseLabelNumber", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 89, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "headerRow", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "scoreNames", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "responseLabelNumber", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addScoresToRow", + "args": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "responseLabelNumber", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "scores", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 203, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "responseLabelNumber", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "scores", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "generateComponentHeaderRow", + "args": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string[]", + "typeParameters": [], + "line": 21, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "generateComponentWorkRows", + "args": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNames", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string[]", + "typeParameters": [], + "line": 103, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNames", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "getComponentTypeWithUnderscore", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 219, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "getIdeaNames", + "args": [ + { + "name": "ideas", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string[]", + "typeParameters": [], + "line": 51, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "ideas", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getIdeas", + "args": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 43, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getMaxNumStudentResponses", + "args": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 79, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getScoreNames", + "args": [ + { + "name": "scores", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string[]", + "typeParameters": [], + "line": 75, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "scores", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getScores", + "args": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string[]", + "typeParameters": [], + "line": 67, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setComponentInfo", + "args": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 124, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "setStudentWork", + "args": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 134, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "sortIdeaNames", + "args": [ + { + "name": "a", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "b", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 55, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "a", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "b", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "calculateRevisionNumbers", + "args": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 130, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "export", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 53, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "getComponentStates", + "args": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "calculateRevisions", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "true" + } + ], + "optional": false, + "returnType": "ComponentState[]", + "typeParameters": [], + "line": 104, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "calculateRevisions", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "true", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "getLatestRevisions", + "args": [ + { + "name": "componentStates", + "type": "ComponentState[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "ComponentState[]", + "typeParameters": [], + "line": 169, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "componentStates", + "type": "ComponentState[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "getPrompt", + "args": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 206, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "getRevisionCounter", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 165, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "getRevisionCounterKey", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 157, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "incrementRevisionCounter", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 144, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "setAllOrLatest", + "args": [ + { + "name": "allOrLatest", + "type": "\"all\" | \"latest\"", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 98, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "allOrLatest", + "type": "\"all\" | \"latest\"", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "setStudentInfo", + "args": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 81, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "sortByWorkgroupIdAndTimestamp", + "args": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 122, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "generateCSVFile", + "args": [ + { + "name": "rows", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "fileName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 194, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "rows", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "fileName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "generateExportFileName", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentTypeWithUnderscore", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 179, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentTypeWithUnderscore", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "getColumnValue", + "args": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 113, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "getSelectedNodesMap", + "args": [ + { + "name": "selectedNodes", + "type": "[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]" + } + ], + "optional": false, + "returnType": "{}", + "typeParameters": [], + "line": 62, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet a mapping of node/component id strings to true.\nexample if\nselectedNodes = [\n {\n nodeId: \"node1\",\n componentId: \"343b8aesf7\"\n },\n {\n nodeId: \"node2\",\n componentId: \"b34gaf0ug2\"\n },\n {\n nodeId: \"node3\"\n }\n]\n\nthis function will return\n{\n \"node1-343b8aesf7\": true,\n \"node2-b34gaf0ug2\": true,\n \"node3\": true\n}\n\na componentId field\n", + "description": "

Get a mapping of node/component id strings to true.\nexample if\nselectedNodes = [\n {\n nodeId: "node1",\n componentId: "343b8aesf7"\n },\n {\n nodeId: "node2",\n componentId: "b34gaf0ug2"\n },\n {\n nodeId: "node3"\n }\n]

\n

this function will return\n{\n "node1-343b8aesf7": true,\n "node2-b34gaf0ug2": true,\n "node3": true\n}

\n

a componentId field

\n", + "jsdoctags": [ + { + "name": { + "pos": 1979, + "end": 1992, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "selectedNodes" + }, + "type": "[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]", + "tagName": { + "pos": 1973, + "end": 1978, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

an array of objects that contain a nodeId field and maybe also\na componentId field

\n" + }, + { + "tagName": { + "pos": 2087, + "end": 2093, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

a mapping of node/component id strings to true

\n" + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "getStudentDataString", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 157, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the plain text representation of the student work.\n", + "description": "

Get the plain text representation of the student work.

\n", + "jsdoctags": [ + { + "name": { + "pos": 5328, + "end": 5342, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 5322, + "end": 5327, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

A component state that contains the student work.

\n", + "typeExpression": { + "pos": 5343, + "end": 5351, + "kind": 310, + "id": 0, + "flags": 16842752, + "modifierFlagsCache": 0, + "transformFlags": 0, + "type": { + "pos": 5344, + "end": 5350, + "kind": 151, + "id": 0, + "flags": 16777216, + "transformFlags": 1 + } + } + }, + { + "tagName": { + "pos": 5408, + "end": 5415, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

A string that can be placed in a csv cell.

\n", + "returnType": "string" + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "insertColumnAtEnd", + "args": [ + { + "name": "headerRow", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 121, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "headerRow", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "insertColumnBeforeResponseColumn", + "args": [ + { + "name": "headerRow", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 117, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "headerRow", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "isComponentSelected", + "args": [ + { + "name": "selectedNodesMap", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 138, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if a component is selected\nto true\nexample\n{\n \"node1-38fj20egrj\": true,\n \"node1-20dbj2e0sf\": true\n}\n", + "description": "

Check if a component is selected\nto true\nexample\n{\n "node1-38fj20egrj": true,\n "node1-20dbj2e0sf": true\n}

\n", + "jsdoctags": [ + { + "name": { + "pos": 4590, + "end": 4606, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "selectedNodesMap" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4584, + "end": 4589, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

a map of node id and component id strings\nto true\nexample\n{\n"node1-38fj20egrj": true,\n"node1-20dbj2e0sf": true\n}

\n" + }, + { + "name": { + "pos": 4766, + "end": 4772, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4760, + "end": 4765, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id to check

\n" + }, + { + "name": { + "pos": 4806, + "end": 4817, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4800, + "end": 4805, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component id to check

\n" + }, + { + "tagName": { + "pos": 4850, + "end": 4856, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether the component is selected

\n" + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "populateColumnNameMappings", + "args": [ + { + "name": "columnNames", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 103, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "columnNames", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "setColumnValue", + "args": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "value", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 109, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "value", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "setDataExportContext", + "args": [ + { + "name": "context", + "type": "DataExportContext", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "context", + "type": "DataExportContext", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "setRunInfo", + "args": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + } + ], + "indexSignatures": [], + "extends": [ + "AbstractComponentDataExportStrategy" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "DialogGuidanceInfo", + "id": "class-DialogGuidanceInfo-272c0cd04bbf7ac130de0cde0a69e969731de468e7abc39e619174549ff22741374f2903a81df43ad4ef763f702d72c91bb21dc3eaea6bc7387a7c1bb0be4217", + "file": "src/assets/wise5/components/dialogGuidance/DialogGuidanceInfo.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { ComponentInfo } from '../ComponentInfo';\n\nexport class DialogGuidanceInfo extends ComponentInfo {\n protected description: string = $localize`Students chat with a computer avatar about a specific topic.`;\n protected label: string = $localize`Dialog Guidance`;\n protected previewExamples: any[] = [\n {\n label: $localize`Dialog Guidance`,\n content: {\n id: 'abcde12345',\n type: 'DialogGuidance',\n itemId: 'PhotoEnergyStory_score-ki_idea-ki_nonscore',\n version: 2,\n feedbackRules: [\n {\n id: '6encpml66s',\n expression: 'isFinalSubmit',\n feedback: [\n 'Thanks for chatting with me! Now revise your response based on the ideas you shared in the chat.'\n ]\n },\n {\n id: 'ixvd0iaxh7',\n expression: 'isSubmitNumber(2) && 13a',\n feedback: [\n 'I agree that animals get energy from sleeping and eating. Where does the energy in their food come from?'\n ]\n },\n {\n id: 'dculqoydzc',\n expression: '13a',\n feedback: [\n 'I agree that animals need sleep! What other types of energy can animals get from the sun?'\n ]\n },\n {\n id: 'lm0odmyxre',\n expression: 'isSubmitNumber(2) && 4a',\n feedback: ['How do plants get energy from the sun, differently than animals?']\n },\n {\n id: '1urvciu5sy',\n expression: '4a',\n feedback: [\n 'Interesting Idea! Where does the energy originally come from? How is the energy transformed in the process?'\n ]\n },\n {\n id: 'jv23u1nmxj',\n expression: 'isSubmitNumber(2) && 4b',\n feedback: [\n 'You are thinking like a scientist! Where does the energy come from? What type of energy is released in this process?'\n ]\n },\n {\n id: 'irhj6xhvft',\n expression: '4b',\n feedback: [\n 'Interesting Idea! What is the glucose made from? What happened to the molecules? '\n ]\n },\n {\n id: 'uubc2szgcm',\n expression: 'isSubmitNumber(2) && 6b',\n feedback: [\n 'Interesting idea. When the animal eats plants, how is the energy transferred from plants to animals?'\n ]\n },\n {\n id: '617hd0zsmt',\n expression: '6b',\n feedback: [\n 'Nice thinking! Where does the plant-stored glucose go? What happened to the part of glucose that hasn’t been used for plant growth?'\n ]\n },\n {\n id: '6n643zmexn',\n expression: 'isSubmitNumber(2) && 6c',\n feedback: [\n 'Interesting idea. How is the energy transformed from the plants to animals in this process?'\n ]\n },\n {\n id: 'gxoeeryzyw',\n expression: '6c',\n feedback: [\n 'Nice thinking! What type of energy is released during cellular respiration?'\n ]\n },\n {\n id: 'rjvjxzn8fi',\n expression: 'isSubmitNumber(2) && 11a',\n feedback: [\n 'The sun helps animals in lots of ways! How do you think the sun helps animals get energy from food?'\n ]\n },\n {\n id: 'kl5zguma0m',\n expression: '11a',\n feedback: [\n 'I agree that animals can directly use the sun’s energy. What are other sources of energy that animals can get from their food?'\n ]\n },\n {\n id: 'sf8ttj8pzf',\n expression: 'isSubmitNumber(2) && 11b',\n feedback: [\n 'I agree that too much sun can be harmful. Imagine what would happen to plants if there were no sunlight. How do you think the sun helps animals get energy from food?'\n ]\n },\n {\n id: 'g056fzgmij',\n expression: '11b',\n feedback: [\n 'Hmm, too much sun can be harmful. What other impacts does the sun’s energy have on animals?'\n ]\n },\n {\n id: 't1mhcn37qi',\n expression: 'isSubmitNumber(2) && 9a',\n feedback: [\n 'I enjoy hearing your thoughts. Where does the energy in the plant come from and how does it get used by the animal?'\n ]\n },\n {\n id: 'm1hofcqj7a',\n expression: '9a',\n feedback: [\n 'Nice thinking! How is the energy from the sun transformed so the animal can use it?'\n ]\n },\n {\n id: 'yfm6esxnde',\n expression: 'isSubmitNumber(2) && 12b',\n feedback: [\n 'Interesting idea. When the animal eats plants, how does the animal get the energy it needs from the plant it ate - what is the process?'\n ]\n },\n {\n id: 'pwmhvfbdo5',\n expression: '12b',\n feedback: [\n 'Nice thinking! Can you tell me more about the process that transfers energy from the plant to the animal?'\n ]\n },\n {\n id: 'xx1w3rs1cb',\n expression: 'isSubmitNumber(2) && 6a',\n feedback: [\n 'Interesting idea. When the animal eats plants, what happens to the stored glucose?'\n ]\n },\n {\n id: '46duvz3re6',\n expression: '6a',\n feedback: ['Nice thinking! What is the stored glucose used for?']\n },\n {\n id: 'cfp2kn3fxy',\n expression: 'isSubmitNumber(2) && 3a',\n feedback: [\n 'I like hearing your thoughts. What do you think the plant does with the usable energy?'\n ]\n },\n {\n id: 'w43b2yu1p5',\n expression: '3a',\n feedback: [\n 'Nice thinking about how plants convert light energy to usable energy. How does this energy go from the plant to the animal?'\n ]\n },\n {\n id: 'vcqortmk5q',\n expression: 'isSubmitNumber(2) && 3b',\n feedback: [\n 'Interesting idea about photosynthesis! How does the energy from plants get to an animal?'\n ]\n },\n {\n id: '26uhwx54e2',\n expression: '3b',\n feedback: [\n 'Nice thinking about photosynthesis. How are the products of photosynthesis useful for animals?'\n ]\n },\n {\n id: 'od5s1no0b4',\n expression: 'isSubmitNumber(2) && 2',\n feedback: [\n 'I like hearing your thoughts. How do you think animals make use of the glucose or oxygen produced by plants during photosynthesis?'\n ]\n },\n {\n id: '62scpp3ndm',\n expression: '2',\n feedback: [\n 'Interesting idea about the products of photosynthesis. How are the products useful for animals?'\n ]\n },\n {\n id: 'ac4nazjj8l',\n expression: 'isSubmitNumber(2) && 1',\n feedback: [\n 'I like hearing your thoughts. How does photosynthesis help the animal get energy?'\n ]\n },\n {\n id: 'wi5dtcmlgu',\n expression: '1',\n feedback: [\n 'Nice thinking. You mentioned the inputs of photosynthesis. Can you tell me more about what happens during photosynthesis?'\n ]\n },\n {\n id: 'sffk18map8',\n expression: 'isSubmitNumber(2) && 4c',\n feedback: [\n 'I like your idea about energy conservation. Do you think energy is transformed into different types in the food chain? If so, how?'\n ]\n },\n {\n id: '581eophtvi',\n expression: '4c',\n feedback: [\n 'I agree about energy conservation! How does energy get transferred in this process?'\n ]\n },\n {\n id: '8qo8p60wtg',\n expression: 'isSubmitNumber(2) && 4d',\n feedback: ['If energy starts with the sun, how does it move through the food chain? ']\n },\n {\n id: 'wylrvpkf22',\n expression: '4d',\n feedback: [\n 'Hmmm, I wonder how the energy decreases down the food chain. Tell me more about how energy moves through the food chain.'\n ]\n },\n {\n id: '2uqgi6lp0l',\n expression: 'isSubmitNumber(2) && 9',\n feedback: [\n 'What happens when animals get the glucose from plants? How does the animal use the energy from glucose?'\n ]\n },\n {\n id: '6rvyqj6rnt',\n expression: '9',\n feedback: [\n 'How does the animal get and use the glucose? What changes does the animal make to the glucose?'\n ]\n },\n {\n id: 'ffdkkanuae',\n expression: 'isSubmitNumber(2) && 11',\n feedback: ['How does energy from the sun get to animals to help them survive?']\n },\n {\n id: 'ow60yaplo2',\n expression: '11',\n feedback: [\n 'I see, you are saying that animals need the sun to survive. Can you give me an example of how the sun helps animals?'\n ]\n },\n {\n id: '2mupe6xoyy',\n expression: 'isSubmitNumber(2) && 3',\n feedback: [\n 'What else do plants need to grow other than the sun? What happens inside plants for the sun to help them grow??'\n ]\n },\n {\n id: 'zbus61wnqy',\n expression: '3',\n feedback: ['Can you tell me more about how the Sun helps plants survive?']\n },\n {\n id: 'uc4d6jj3zi',\n expression: 'isSubmitNumber(2) && 12',\n feedback: [\n 'I enjoy hearing your thoughts. Can you tell me more about how the energy from the sun is transferred from plants to animals?'\n ]\n },\n {\n id: 'fm7wctlxpr',\n expression: '12',\n feedback: ['Interesting idea! What type of energy do animals get from plants?']\n },\n {\n id: 'dzm7j60m0t',\n expression: 'isDefault',\n feedback: [\n 'Can you tell me more about this idea or another one in your explanation? I am still learning about student ideas to become a better thought partner.',\n 'How does the energy transfer from the sun to the plants and then to the animals?'\n ]\n }\n ],\n maxSubmitCount: 3,\n showSubmitButton: false,\n showSaveButton: false,\n prompt: '',\n computerAvatarSettings: {\n ids: [\n 'person1',\n 'person2',\n 'person3',\n 'person4',\n 'person5',\n 'person6',\n 'person7',\n 'person8',\n 'robot1',\n 'robot2'\n ],\n label: 'Thought Buddy',\n prompt:\n '

Discuss with a thought buddy.

Your buddy will ask you to explain your thinking and compare your response to responses from other students around the country.

Then your buddy will ask you some questions.',\n initialResponse:\n 'Hi Preview User!
How do you think animals get and use energy from the sun to survive?
',\n useGlobalComputerAvatar: false\n },\n isComputerAvatarEnabled: true,\n constraints: []\n }\n }\n ];\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "description", + "defaultValue": "$localize`Students chat with a computer avatar about a specific topic.`", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 4, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentInfo" + } + }, + { + "name": "label", + "defaultValue": "$localize`Dialog Guidance`", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 5, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentInfo" + } + }, + { + "name": "previewExamples", + "defaultValue": "[\n {\n label: $localize`Dialog Guidance`,\n content: {\n id: 'abcde12345',\n type: 'DialogGuidance',\n itemId: 'PhotoEnergyStory_score-ki_idea-ki_nonscore',\n version: 2,\n feedbackRules: [\n {\n id: '6encpml66s',\n expression: 'isFinalSubmit',\n feedback: [\n 'Thanks for chatting with me! Now revise your response based on the ideas you shared in the chat.'\n ]\n },\n {\n id: 'ixvd0iaxh7',\n expression: 'isSubmitNumber(2) && 13a',\n feedback: [\n 'I agree that animals get energy from sleeping and eating. Where does the energy in their food come from?'\n ]\n },\n {\n id: 'dculqoydzc',\n expression: '13a',\n feedback: [\n 'I agree that animals need sleep! What other types of energy can animals get from the sun?'\n ]\n },\n {\n id: 'lm0odmyxre',\n expression: 'isSubmitNumber(2) && 4a',\n feedback: ['How do plants get energy from the sun, differently than animals?']\n },\n {\n id: '1urvciu5sy',\n expression: '4a',\n feedback: [\n 'Interesting Idea! Where does the energy originally come from? How is the energy transformed in the process?'\n ]\n },\n {\n id: 'jv23u1nmxj',\n expression: 'isSubmitNumber(2) && 4b',\n feedback: [\n 'You are thinking like a scientist! Where does the energy come from? What type of energy is released in this process?'\n ]\n },\n {\n id: 'irhj6xhvft',\n expression: '4b',\n feedback: [\n 'Interesting Idea! What is the glucose made from? What happened to the molecules? '\n ]\n },\n {\n id: 'uubc2szgcm',\n expression: 'isSubmitNumber(2) && 6b',\n feedback: [\n 'Interesting idea. When the animal eats plants, how is the energy transferred from plants to animals?'\n ]\n },\n {\n id: '617hd0zsmt',\n expression: '6b',\n feedback: [\n 'Nice thinking! Where does the plant-stored glucose go? What happened to the part of glucose that hasn’t been used for plant growth?'\n ]\n },\n {\n id: '6n643zmexn',\n expression: 'isSubmitNumber(2) && 6c',\n feedback: [\n 'Interesting idea. How is the energy transformed from the plants to animals in this process?'\n ]\n },\n {\n id: 'gxoeeryzyw',\n expression: '6c',\n feedback: [\n 'Nice thinking! What type of energy is released during cellular respiration?'\n ]\n },\n {\n id: 'rjvjxzn8fi',\n expression: 'isSubmitNumber(2) && 11a',\n feedback: [\n 'The sun helps animals in lots of ways! How do you think the sun helps animals get energy from food?'\n ]\n },\n {\n id: 'kl5zguma0m',\n expression: '11a',\n feedback: [\n 'I agree that animals can directly use the sun’s energy. What are other sources of energy that animals can get from their food?'\n ]\n },\n {\n id: 'sf8ttj8pzf',\n expression: 'isSubmitNumber(2) && 11b',\n feedback: [\n 'I agree that too much sun can be harmful. Imagine what would happen to plants if there were no sunlight. How do you think the sun helps animals get energy from food?'\n ]\n },\n {\n id: 'g056fzgmij',\n expression: '11b',\n feedback: [\n 'Hmm, too much sun can be harmful. What other impacts does the sun’s energy have on animals?'\n ]\n },\n {\n id: 't1mhcn37qi',\n expression: 'isSubmitNumber(2) && 9a',\n feedback: [\n 'I enjoy hearing your thoughts. Where does the energy in the plant come from and how does it get used by the animal?'\n ]\n },\n {\n id: 'm1hofcqj7a',\n expression: '9a',\n feedback: [\n 'Nice thinking! How is the energy from the sun transformed so the animal can use it?'\n ]\n },\n {\n id: 'yfm6esxnde',\n expression: 'isSubmitNumber(2) && 12b',\n feedback: [\n 'Interesting idea. When the animal eats plants, how does the animal get the energy it needs from the plant it ate - what is the process?'\n ]\n },\n {\n id: 'pwmhvfbdo5',\n expression: '12b',\n feedback: [\n 'Nice thinking! Can you tell me more about the process that transfers energy from the plant to the animal?'\n ]\n },\n {\n id: 'xx1w3rs1cb',\n expression: 'isSubmitNumber(2) && 6a',\n feedback: [\n 'Interesting idea. When the animal eats plants, what happens to the stored glucose?'\n ]\n },\n {\n id: '46duvz3re6',\n expression: '6a',\n feedback: ['Nice thinking! What is the stored glucose used for?']\n },\n {\n id: 'cfp2kn3fxy',\n expression: 'isSubmitNumber(2) && 3a',\n feedback: [\n 'I like hearing your thoughts. What do you think the plant does with the usable energy?'\n ]\n },\n {\n id: 'w43b2yu1p5',\n expression: '3a',\n feedback: [\n 'Nice thinking about how plants convert light energy to usable energy. How does this energy go from the plant to the animal?'\n ]\n },\n {\n id: 'vcqortmk5q',\n expression: 'isSubmitNumber(2) && 3b',\n feedback: [\n 'Interesting idea about photosynthesis! How does the energy from plants get to an animal?'\n ]\n },\n {\n id: '26uhwx54e2',\n expression: '3b',\n feedback: [\n 'Nice thinking about photosynthesis. How are the products of photosynthesis useful for animals?'\n ]\n },\n {\n id: 'od5s1no0b4',\n expression: 'isSubmitNumber(2) && 2',\n feedback: [\n 'I like hearing your thoughts. How do you think animals make use of the glucose or oxygen produced by plants during photosynthesis?'\n ]\n },\n {\n id: '62scpp3ndm',\n expression: '2',\n feedback: [\n 'Interesting idea about the products of photosynthesis. How are the products useful for animals?'\n ]\n },\n {\n id: 'ac4nazjj8l',\n expression: 'isSubmitNumber(2) && 1',\n feedback: [\n 'I like hearing your thoughts. How does photosynthesis help the animal get energy?'\n ]\n },\n {\n id: 'wi5dtcmlgu',\n expression: '1',\n feedback: [\n 'Nice thinking. You mentioned the inputs of photosynthesis. Can you tell me more about what happens during photosynthesis?'\n ]\n },\n {\n id: 'sffk18map8',\n expression: 'isSubmitNumber(2) && 4c',\n feedback: [\n 'I like your idea about energy conservation. Do you think energy is transformed into different types in the food chain? If so, how?'\n ]\n },\n {\n id: '581eophtvi',\n expression: '4c',\n feedback: [\n 'I agree about energy conservation! How does energy get transferred in this process?'\n ]\n },\n {\n id: '8qo8p60wtg',\n expression: 'isSubmitNumber(2) && 4d',\n feedback: ['If energy starts with the sun, how does it move through the food chain? ']\n },\n {\n id: 'wylrvpkf22',\n expression: '4d',\n feedback: [\n 'Hmmm, I wonder how the energy decreases down the food chain. Tell me more about how energy moves through the food chain.'\n ]\n },\n {\n id: '2uqgi6lp0l',\n expression: 'isSubmitNumber(2) && 9',\n feedback: [\n 'What happens when animals get the glucose from plants? How does the animal use the energy from glucose?'\n ]\n },\n {\n id: '6rvyqj6rnt',\n expression: '9',\n feedback: [\n 'How does the animal get and use the glucose? What changes does the animal make to the glucose?'\n ]\n },\n {\n id: 'ffdkkanuae',\n expression: 'isSubmitNumber(2) && 11',\n feedback: ['How does energy from the sun get to animals to help them survive?']\n },\n {\n id: 'ow60yaplo2',\n expression: '11',\n feedback: [\n 'I see, you are saying that animals need the sun to survive. Can you give me an example of how the sun helps animals?'\n ]\n },\n {\n id: '2mupe6xoyy',\n expression: 'isSubmitNumber(2) && 3',\n feedback: [\n 'What else do plants need to grow other than the sun? What happens inside plants for the sun to help them grow??'\n ]\n },\n {\n id: 'zbus61wnqy',\n expression: '3',\n feedback: ['Can you tell me more about how the Sun helps plants survive?']\n },\n {\n id: 'uc4d6jj3zi',\n expression: 'isSubmitNumber(2) && 12',\n feedback: [\n 'I enjoy hearing your thoughts. Can you tell me more about how the energy from the sun is transferred from plants to animals?'\n ]\n },\n {\n id: 'fm7wctlxpr',\n expression: '12',\n feedback: ['Interesting idea! What type of energy do animals get from plants?']\n },\n {\n id: 'dzm7j60m0t',\n expression: 'isDefault',\n feedback: [\n 'Can you tell me more about this idea or another one in your explanation? I am still learning about student ideas to become a better thought partner.',\n 'How does the energy transfer from the sun to the plants and then to the animals?'\n ]\n }\n ],\n maxSubmitCount: 3,\n showSubmitButton: false,\n showSaveButton: false,\n prompt: '',\n computerAvatarSettings: {\n ids: [\n 'person1',\n 'person2',\n 'person3',\n 'person4',\n 'person5',\n 'person6',\n 'person7',\n 'person8',\n 'robot1',\n 'robot2'\n ],\n label: 'Thought Buddy',\n prompt:\n '

Discuss with a thought buddy.

Your buddy will ask you to explain your thinking and compare your response to responses from other students around the country.

Then your buddy will ask you some questions.',\n initialResponse:\n 'Hi Preview User!
How do you think animals get and use energy from the sun to survive?
',\n useGlobalComputerAvatar: false\n },\n isComputerAvatarEnabled: true,\n constraints: []\n }\n }\n ]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 6, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentInfo" + } + } + ], + "methods": [ + { + "name": "getDescription", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 6, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentInfo" + } + }, + { + "name": "getLabel", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 10, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentInfo" + } + }, + { + "name": "getPreviewExamples", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 14, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentInfo" + } + } + ], + "indexSignatures": [], + "extends": [ + "ComponentInfo" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "DialogGuidanceSummaryData", + "id": "class-DialogGuidanceSummaryData-988383521e081f2a3f19f254ff29e55e62131085bebf1ea1ccb614a969373cbf2f8974715f75f18f9c6021852f6dcf79960e46cc419dabf0ebfa6302c6c74227", + "file": "src/assets/wise5/directives/teacher-summary-display/summary-data/DialogGuidanceSummaryData.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { ComponentState } from '../../../../../app/domain/componentState';\nimport { DialogGuidanceSummaryDataPoint } from './DialogGuidanceSummaryDataPoint';\nimport { IdeasSummaryData } from './IdeasSummaryData';\n\nexport class DialogGuidanceSummaryData extends IdeasSummaryData {\n constructor(componentStates: ComponentState[]) {\n super();\n componentStates.forEach((componentState) =>\n this.dataPoints.push(new DialogGuidanceSummaryDataPoint(componentState))\n );\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "componentStates", + "type": "ComponentState[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 5, + "jsdoctags": [ + { + "name": "componentStates", + "type": "ComponentState[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "dataPoints", + "deprecated": false, + "deprecationMessage": "", + "type": "IdeasSummaryDataPoint[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 4, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "IdeasSummaryData" + } + } + ], + "methods": [ + { + "name": "getIdeaCountMap", + "args": [], + "optional": false, + "returnType": "Map", + "typeParameters": [], + "line": 10, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "IdeasSummaryData" + } + } + ], + "indexSignatures": [], + "extends": [ + "IdeasSummaryData" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "DialogGuidanceSummaryDataPoint", + "id": "class-DialogGuidanceSummaryDataPoint-55bc5e588374cc582325e41d777a87a38f2d06ad1d5f58b44e103877cf40d9a5916abd4cef273c6dede75bffdfe218f096ff9f2b6eeca8f708b3bb8f7d7431c4", + "file": "src/assets/wise5/directives/teacher-summary-display/summary-data/DialogGuidanceSummaryDataPoint.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { ComponentState } from '../../../../../app/domain/componentState';\nimport { IdeasSummaryDataPoint } from './IdeasSummaryDataPoint';\n\nexport class DialogGuidanceSummaryDataPoint extends IdeasSummaryDataPoint {\n constructor(componentState: ComponentState) {\n super();\n componentState.studentData.responses.forEach((response) =>\n response.ideas?.forEach((idea) => this.processIdea(idea))\n );\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "componentState", + "type": "ComponentState", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 4, + "jsdoctags": [ + { + "name": "componentState", + "type": "ComponentState", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "allIdeaIds", + "deprecated": false, + "deprecationMessage": "", + "type": "Set", + "indexKey": "", + "optional": false, + "description": "", + "line": 2, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "IdeasSummaryDataPoint" + } + }, + { + "name": "detectedIdeaIds", + "deprecated": false, + "deprecationMessage": "", + "type": "Set", + "indexKey": "", + "optional": false, + "description": "", + "line": 3, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "IdeasSummaryDataPoint" + } + } + ], + "methods": [ + { + "name": "getAllIdeaIds", + "args": [], + "optional": false, + "returnType": "Set", + "typeParameters": [], + "line": 17, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "IdeasSummaryDataPoint" + } + }, + { + "name": "getDetectedIdeaIds", + "args": [], + "optional": false, + "returnType": "Set", + "typeParameters": [], + "line": 21, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "IdeasSummaryDataPoint" + } + }, + { + "name": "processIdea", + "args": [ + { + "name": "idea", + "type": "literal type", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 10, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "idea", + "type": "literal type", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "IdeasSummaryDataPoint" + } + } + ], + "indexSignatures": [], + "extends": [ + "IdeasSummaryDataPoint" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "DialogResponse", + "id": "class-DialogResponse-167d96758bb8d4c82857c73051341115faff58d4b7b3f3110a5e0de22475ce03b776342ab744ec5b4802f12c0b97e6ee7e997a751c067f47f0eb2dfd8e216b71", + "file": "src/assets/wise5/components/dialogGuidance/DialogResponse.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "export class DialogResponse {\n text: string;\n user: string;\n timestamp: number;\n workgroupId: number;\n\n constructor(text: string, timestamp: number, workgroupId: number = null) {\n this.text = text;\n this.timestamp = timestamp;\n this.workgroupId = workgroupId;\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "timestamp", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + } + ], + "line": 5, + "jsdoctags": [ + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "timestamp", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "text", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 2 + }, + { + "name": "timestamp", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 4 + }, + { + "name": "user", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 3 + }, + { + "name": "workgroupId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 5 + } + ], + "methods": [], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "Discipline", + "id": "class-Discipline-a0ef8391a1615e2c7efcbcea52488b3348eacb3b38086b717003e7da86446e5093db5be67e4fad7083aab27fabb6eb971e127e40d9486c2c43bba69732ee0c19", + "file": "src/app/modules/library/Discipline.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "export class Discipline {\n id: string = '';\n name: string = '';\n\n constructor(id: string = '', name: string = '') {\n this.id = id;\n this.name = name;\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "''" + }, + { + "name": "name", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "''" + } + ], + "line": 3, + "jsdoctags": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "''", + "tagName": { + "text": "param" + } + }, + { + "name": "name", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "''", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "id", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 2 + }, + { + "name": "name", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 3 + } + ], + "methods": [], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "DiscussionComponentDataExportStrategy", + "id": "class-DiscussionComponentDataExportStrategy-0529e59b21964845bce71982b93b47bf2050946fd639f653bdc6df44a216c6e7c9c324a1d0fadf1972a4105d9e1bfc91bfa3029c659a8784d38f916cf3634065", + "file": "src/assets/wise5/classroomMonitor/dataExport/strategies/DiscussionComponentDataExportStrategy.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { removeHTMLTags } from '../../../common/string/string';\nimport { millisecondsToDateTime } from '../../../common/datetime/datetime';\nimport { AbstractComponentDataExportStrategy } from './AbstractComponentDataExportStrategy';\n\nexport class DiscussionComponentDataExportStrategy extends AbstractComponentDataExportStrategy {\n protected defaultColumnNames = [\n '#',\n 'Workgroup ID',\n 'User ID 1',\n 'Student Name 1',\n 'User ID 2',\n 'Student Name 2',\n 'User ID 3',\n 'Student Name 3',\n 'Class Period',\n 'Project ID',\n 'Project Name',\n 'Run ID',\n 'Start Date',\n 'End Date',\n 'Server Timestamp',\n 'Client Timestamp',\n 'Node ID',\n 'Component ID',\n 'Component Part Number',\n 'Step Title',\n 'Component Type',\n 'Component Prompt',\n 'Student Data',\n 'Thread ID',\n 'Student Work ID',\n 'Post Level',\n 'Post Text'\n ];\n\n protected generateComponentHeaderRow(component: any): string[] {\n return [...this.defaultColumnNames];\n }\n\n protected generateComponentWorkRows(\n component: any,\n columnNames: string[],\n columnNameToNumber: any,\n nodeId: string\n ) {\n const rows = [];\n const componentStates = this.dataService.getComponentStatesByComponentId(component.id);\n const structuredPosts = this.getStructuredPosts(componentStates);\n let rowCounter = 1;\n for (let threadId of Object.keys(structuredPosts)) {\n let topLevelPost = structuredPosts[threadId];\n rows.push(\n this.generateDiscussionComponentWorkRow(\n component,\n topLevelPost.workgroupId,\n columnNames,\n columnNameToNumber,\n nodeId,\n component.id,\n rowCounter,\n topLevelPost,\n threadId\n )\n );\n rowCounter++;\n if (topLevelPost.replies != null) {\n for (let replyPost of topLevelPost.replies) {\n rows.push(\n this.generateDiscussionComponentWorkRow(\n component,\n replyPost.workgroupId,\n columnNames,\n columnNameToNumber,\n nodeId,\n component.id,\n rowCounter,\n replyPost,\n threadId\n )\n );\n rowCounter++;\n }\n }\n }\n return rows;\n }\n\n private generateDiscussionComponentWorkRow(\n component,\n workgroupId,\n columnNames,\n columnNameToNumber,\n nodeId,\n componentId,\n rowCounter,\n componentState,\n threadId\n ) {\n const row = new Array(columnNames.length);\n row.fill('');\n const userInfo = this.configService.getUserInfoByWorkgroupId(workgroupId);\n if (userInfo != null) {\n let userId1 = null;\n let userId2 = null;\n let userId3 = null;\n let studentName1 = null;\n let studentName2 = null;\n let studentName3 = null;\n if (userInfo.users[0] != null) {\n userId1 = userInfo.users[0].id;\n studentName1 = userInfo.users[0].name;\n }\n if (userInfo.users[1] != null) {\n userId2 = userInfo.users[1].id;\n studentName2 = userInfo.users[1].name;\n }\n if (userInfo.users[2] != null) {\n userId3 = userInfo.users[2].id;\n studentName3 = userInfo.users[2].name;\n }\n this.setStudentInfo(row, columnNameToNumber, componentState);\n row[columnNameToNumber['Class Period']] = userInfo.periodName;\n }\n\n row[columnNameToNumber['#']] = rowCounter;\n row[columnNameToNumber['Project ID']] = this.configService.getProjectId();\n row[columnNameToNumber['Project Name']] = this.projectService.getProjectTitle();\n row[columnNameToNumber['Run ID']] = this.configService.getRunId();\n this.setColumnValue(\n row,\n columnNameToNumber,\n 'Start Date',\n millisecondsToDateTime(this.configService.getStartDate())\n );\n const endDate = this.configService.getEndDate();\n if (endDate != null) {\n this.setColumnValue(row, columnNameToNumber, 'End Date', millisecondsToDateTime(endDate));\n }\n if (componentState.serverSaveTime != null) {\n row[columnNameToNumber['Server Timestamp']] = millisecondsToDateTime(\n componentState.serverSaveTime\n );\n }\n\n if (componentState.clientSaveTime != null) {\n const clientSaveTime = new Date(componentState.clientSaveTime);\n row[columnNameToNumber['Client Timestamp']] =\n clientSaveTime.toDateString() + ' ' + clientSaveTime.toLocaleTimeString();\n }\n\n row[columnNameToNumber['Node ID']] = nodeId;\n row[columnNameToNumber['Step Title']] = this.projectService.getNodePositionAndTitle(nodeId);\n row[columnNameToNumber['Component Part Number']] =\n this.projectService.getNode(nodeId).getComponentPosition(componentId) + 1;\n row[columnNameToNumber['Component ID']] = component.id;\n row[columnNameToNumber['Component Type']] = component.type;\n row[columnNameToNumber['Component Prompt']] = removeHTMLTags(component.prompt);\n row[columnNameToNumber['Student Data']] = componentState.studentData;\n row[columnNameToNumber['Student Work ID']] = componentState.id;\n row[columnNameToNumber['Thread ID']] = Number(threadId);\n row[columnNameToNumber['Workgroup ID']] = workgroupId;\n row[columnNameToNumber['Post Level']] = this.getPostLevel(componentState);\n row[columnNameToNumber['Post Text']] = removeHTMLTags(componentState.studentData.response);\n return row;\n }\n\n private getPostLevel(componentState) {\n if (this.isTopLevelPost(componentState)) {\n return 1;\n } else if (this.isReply(componentState)) {\n return 2;\n }\n }\n\n private isTopLevelPost(componentState) {\n return componentState.studentData.componentStateIdReplyingTo == null;\n }\n\n private isReply(componentState) {\n return componentState.studentData.componentStateIdReplyingTo != null;\n }\n\n private getStructuredPosts(componentStates) {\n const structuredPosts = {};\n for (let componentState of componentStates) {\n if (this.isTopLevelPost(componentState)) {\n structuredPosts[componentState.id] = componentState;\n } else if (this.isReply(componentState)) {\n this.addReplyToTopLevelPost(structuredPosts, componentState);\n }\n }\n return structuredPosts;\n }\n\n private addReplyToTopLevelPost(structuredPosts, replyComponentState) {\n const parentComponentStateId = replyComponentState.studentData.componentStateIdReplyingTo;\n const parentPost = structuredPosts[parentComponentStateId];\n if (parentPost.replies == null) {\n parentPost.replies = [];\n }\n parentPost.replies.push(replyComponentState);\n }\n\n protected getComponentTypeWithUnderscore(): string {\n return 'discussion';\n }\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "defaultColumnNames", + "defaultValue": "[\n '#',\n 'Workgroup ID',\n 'User ID 1',\n 'Student Name 1',\n 'User ID 2',\n 'Student Name 2',\n 'User ID 3',\n 'Student Name 3',\n 'Class Period',\n 'Project ID',\n 'Project Name',\n 'Run ID',\n 'Start Date',\n 'End Date',\n 'Server Timestamp',\n 'Client Timestamp',\n 'Node ID',\n 'Component ID',\n 'Component Part Number',\n 'Step Title',\n 'Component Type',\n 'Component Prompt',\n 'Student Data',\n 'Thread ID',\n 'Student Work ID',\n 'Post Level',\n 'Post Text'\n ]", + "deprecated": false, + "deprecationMessage": "", + "type": "[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 6, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "allOrLatest", + "deprecated": false, + "deprecationMessage": "", + "type": "\"all\" | \"latest\"", + "indexKey": "", + "optional": false, + "description": "", + "line": 8, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "componentStateIdToRevisionNumber", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "object", + "indexKey": "", + "optional": false, + "description": "", + "line": 9, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "includeOnlySubmits", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 39, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "includeStudentNames", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 40, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "revisionCounter", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 41, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "annotationService", + "deprecated": false, + "deprecationMessage": "", + "type": "AnnotationService", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "configService", + "deprecated": false, + "deprecationMessage": "", + "type": "ConfigService", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "context", + "deprecated": false, + "deprecationMessage": "", + "type": "DataExportContext", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "controller", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "dataExportService", + "deprecated": false, + "deprecationMessage": "", + "type": "DataExportService", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "dataService", + "deprecated": false, + "deprecationMessage": "", + "type": "TeacherDataService", + "indexKey": "", + "optional": false, + "description": "", + "line": 20, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "projectService", + "deprecated": false, + "deprecationMessage": "", + "type": "TeacherProjectService", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + } + ], + "methods": [ + { + "name": "addReplyToTopLevelPost", + "args": [ + { + "name": "structuredPosts", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "replyComponentState", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 195, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "structuredPosts", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "replyComponentState", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "generateComponentHeaderRow", + "args": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string[]", + "typeParameters": [], + "line": 36, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "generateComponentWorkRows", + "args": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNames", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "{}", + "typeParameters": [], + "line": 40, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNames", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "generateDiscussionComponentWorkRow", + "args": [ + { + "name": "component", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "workgroupId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNames", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "rowCounter", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "threadId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 88, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "component", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "workgroupId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNames", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "rowCounter", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "threadId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getComponentTypeWithUnderscore", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 204, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "getPostLevel", + "args": [ + { + "name": "componentState", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "1 | 2", + "typeParameters": [], + "line": 167, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentState", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getStructuredPosts", + "args": [ + { + "name": "componentStates", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "{}", + "typeParameters": [], + "line": 183, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentStates", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isReply", + "args": [ + { + "name": "componentState", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 179, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentState", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isTopLevelPost", + "args": [ + { + "name": "componentState", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 175, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentState", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "calculateRevisionNumbers", + "args": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 130, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "export", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 53, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "getComponentStates", + "args": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "calculateRevisions", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "true" + } + ], + "optional": false, + "returnType": "ComponentState[]", + "typeParameters": [], + "line": 104, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "calculateRevisions", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "true", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "getLatestRevisions", + "args": [ + { + "name": "componentStates", + "type": "ComponentState[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "ComponentState[]", + "typeParameters": [], + "line": 169, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "componentStates", + "type": "ComponentState[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "getPrompt", + "args": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 206, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "getRevisionCounter", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 165, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "getRevisionCounterKey", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 157, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "incrementRevisionCounter", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 144, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "setAllOrLatest", + "args": [ + { + "name": "allOrLatest", + "type": "\"all\" | \"latest\"", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 98, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "allOrLatest", + "type": "\"all\" | \"latest\"", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "setComponentInfo", + "args": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 182, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "setStudentInfo", + "args": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 81, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "setStudentWork", + "args": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 210, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "sortByWorkgroupIdAndTimestamp", + "args": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 122, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "generateCSVFile", + "args": [ + { + "name": "rows", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "fileName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 194, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "rows", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "fileName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "generateExportFileName", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentTypeWithUnderscore", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 179, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentTypeWithUnderscore", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "getColumnValue", + "args": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 113, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "getSelectedNodesMap", + "args": [ + { + "name": "selectedNodes", + "type": "[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]" + } + ], + "optional": false, + "returnType": "{}", + "typeParameters": [], + "line": 62, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet a mapping of node/component id strings to true.\nexample if\nselectedNodes = [\n {\n nodeId: \"node1\",\n componentId: \"343b8aesf7\"\n },\n {\n nodeId: \"node2\",\n componentId: \"b34gaf0ug2\"\n },\n {\n nodeId: \"node3\"\n }\n]\n\nthis function will return\n{\n \"node1-343b8aesf7\": true,\n \"node2-b34gaf0ug2\": true,\n \"node3\": true\n}\n\na componentId field\n", + "description": "

Get a mapping of node/component id strings to true.\nexample if\nselectedNodes = [\n {\n nodeId: "node1",\n componentId: "343b8aesf7"\n },\n {\n nodeId: "node2",\n componentId: "b34gaf0ug2"\n },\n {\n nodeId: "node3"\n }\n]

\n

this function will return\n{\n "node1-343b8aesf7": true,\n "node2-b34gaf0ug2": true,\n "node3": true\n}

\n

a componentId field

\n", + "jsdoctags": [ + { + "name": { + "pos": 1979, + "end": 1992, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "selectedNodes" + }, + "type": "[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]", + "tagName": { + "pos": 1973, + "end": 1978, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

an array of objects that contain a nodeId field and maybe also\na componentId field

\n" + }, + { + "tagName": { + "pos": 2087, + "end": 2093, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

a mapping of node/component id strings to true

\n" + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "getStudentDataString", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 157, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the plain text representation of the student work.\n", + "description": "

Get the plain text representation of the student work.

\n", + "jsdoctags": [ + { + "name": { + "pos": 5328, + "end": 5342, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 5322, + "end": 5327, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

A component state that contains the student work.

\n", + "typeExpression": { + "pos": 5343, + "end": 5351, + "kind": 310, + "id": 0, + "flags": 16842752, + "modifierFlagsCache": 0, + "transformFlags": 0, + "type": { + "pos": 5344, + "end": 5350, + "kind": 151, + "id": 0, + "flags": 16777216, + "transformFlags": 1 + } + } + }, + { + "tagName": { + "pos": 5408, + "end": 5415, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

A string that can be placed in a csv cell.

\n", + "returnType": "string" + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "insertColumnAtEnd", + "args": [ + { + "name": "headerRow", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 121, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "headerRow", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "insertColumnBeforeResponseColumn", + "args": [ + { + "name": "headerRow", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 117, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "headerRow", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "isComponentSelected", + "args": [ + { + "name": "selectedNodesMap", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 138, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if a component is selected\nto true\nexample\n{\n \"node1-38fj20egrj\": true,\n \"node1-20dbj2e0sf\": true\n}\n", + "description": "

Check if a component is selected\nto true\nexample\n{\n "node1-38fj20egrj": true,\n "node1-20dbj2e0sf": true\n}

\n", + "jsdoctags": [ + { + "name": { + "pos": 4590, + "end": 4606, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "selectedNodesMap" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4584, + "end": 4589, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

a map of node id and component id strings\nto true\nexample\n{\n"node1-38fj20egrj": true,\n"node1-20dbj2e0sf": true\n}

\n" + }, + { + "name": { + "pos": 4766, + "end": 4772, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4760, + "end": 4765, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id to check

\n" + }, + { + "name": { + "pos": 4806, + "end": 4817, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4800, + "end": 4805, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component id to check

\n" + }, + { + "tagName": { + "pos": 4850, + "end": 4856, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether the component is selected

\n" + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "populateColumnNameMappings", + "args": [ + { + "name": "columnNames", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 103, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "columnNames", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "setColumnValue", + "args": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "value", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 109, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "value", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "setDataExportContext", + "args": [ + { + "name": "context", + "type": "DataExportContext", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "context", + "type": "DataExportContext", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "setRunInfo", + "args": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + } + ], + "indexSignatures": [], + "extends": [ + "AbstractComponentDataExportStrategy" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "DiscussionInfo", + "id": "class-DiscussionInfo-e66323002dafb257b4aac530eaf0d03d0d0192fca82fa82834d58b958c9769e47e64ab41e1102c3037cd808afab677934e38bff0564665e995616bc8553f0889", + "file": "src/assets/wise5/components/discussion/DiscussionInfo.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { ComponentInfo } from '../ComponentInfo';\n\nexport class DiscussionInfo extends ComponentInfo {\n protected description: string = $localize`Students post messages for the whole class to see and can reply to other students' posts.`;\n protected label: string = $localize`Discussion`;\n protected previewExamples: any[] = [\n {\n label: $localize`Discussion`,\n content: {\n id: 'abcde12345',\n type: 'Discussion',\n prompt:\n 'Based on your findings, how does the color of the sand affect the population of fish? Post your ideas to share with the class.',\n showSaveButton: false,\n showSubmitButton: false,\n isStudentAttachmentEnabled: true,\n gateClassmateResponses: true,\n constraints: []\n }\n }\n ];\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "description", + "defaultValue": "$localize`Students post messages for the whole class to see and can reply to other students' posts.`", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 4, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentInfo" + } + }, + { + "name": "label", + "defaultValue": "$localize`Discussion`", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 5, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentInfo" + } + }, + { + "name": "previewExamples", + "defaultValue": "[\n {\n label: $localize`Discussion`,\n content: {\n id: 'abcde12345',\n type: 'Discussion',\n prompt:\n 'Based on your findings, how does the color of the sand affect the population of fish? Post your ideas to share with the class.',\n showSaveButton: false,\n showSubmitButton: false,\n isStudentAttachmentEnabled: true,\n gateClassmateResponses: true,\n constraints: []\n }\n }\n ]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 6, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentInfo" + } + } + ], + "methods": [ + { + "name": "getDescription", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 6, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentInfo" + } + }, + { + "name": "getLabel", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 10, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentInfo" + } + }, + { + "name": "getPreviewExamples", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 14, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentInfo" + } + } + ], + "indexSignatures": [], + "extends": [ + "ComponentInfo" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "DrawInfo", + "id": "class-DrawInfo-e0e7fb9ce30d58a50fa51dda0a31872b7b01c7ad82e51d02ee3639dd4cbacf47fdc2193432fa999b46819e8347a5d4cad8cc5ca0f8bde756492e5ee94d51e4fc", + "file": "src/assets/wise5/components/draw/DrawInfo.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { ComponentInfo } from '../ComponentInfo';\n\nexport class DrawInfo extends ComponentInfo {\n protected description: string = $localize`Students draw on a canvas using a variety of tools.`;\n protected label: string = $localize`Draw`;\n protected previewExamples: any[] = [\n {\n label: $localize`Draw`,\n content: {\n id: 'abcde12345',\n type: 'Draw',\n prompt: `

Draw the path of electrons in a METAL molecular structure. Make sure you distinguish this sketch from your sketch of the plastic and tire rubber in the previous activities.

\n
  1. Use the STAMP tool to place 2 valence electrons on the metal structure.
  2. Use the stamp tool to shade the part of the atomic structure where each electron spends its time.
`,\n showSaveButton: false,\n showSubmitButton: false,\n showAddToNotebookButton: false,\n background: '/assets/img/component-preview/metal_draw.jpg',\n stamps: {\n Stamps: [\n '/assets/img/component-preview/electron.png',\n '/assets/img/component-preview/highlight.png'\n ]\n },\n tools: {\n select: true,\n line: true,\n shape: true,\n freeHand: true,\n text: true,\n stamp: true,\n strokeColor: true,\n fillColor: true,\n clone: true,\n strokeWidth: true,\n sendBack: true,\n sendForward: true,\n undo: true,\n redo: true,\n delete: true\n },\n constraints: []\n }\n }\n ];\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "description", + "defaultValue": "$localize`Students draw on a canvas using a variety of tools.`", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 4, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentInfo" + } + }, + { + "name": "label", + "defaultValue": "$localize`Draw`", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 5, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentInfo" + } + }, + { + "name": "previewExamples", + "defaultValue": "[\n {\n label: $localize`Draw`,\n content: {\n id: 'abcde12345',\n type: 'Draw',\n prompt: `

Draw the path of electrons in a METAL molecular structure. Make sure you distinguish this sketch from your sketch of the plastic and tire rubber in the previous activities.

\n
  1. Use the STAMP tool to place 2 valence electrons on the metal structure.
  2. Use the stamp tool to shade the part of the atomic structure where each electron spends its time.
`,\n showSaveButton: false,\n showSubmitButton: false,\n showAddToNotebookButton: false,\n background: '/assets/img/component-preview/metal_draw.jpg',\n stamps: {\n Stamps: [\n '/assets/img/component-preview/electron.png',\n '/assets/img/component-preview/highlight.png'\n ]\n },\n tools: {\n select: true,\n line: true,\n shape: true,\n freeHand: true,\n text: true,\n stamp: true,\n strokeColor: true,\n fillColor: true,\n clone: true,\n strokeWidth: true,\n sendBack: true,\n sendForward: true,\n undo: true,\n redo: true,\n delete: true\n },\n constraints: []\n }\n }\n ]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 6, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentInfo" + } + } + ], + "methods": [ + { + "name": "getDescription", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 6, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentInfo" + } + }, + { + "name": "getLabel", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 10, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentInfo" + } + }, + { + "name": "getPreviewExamples", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 14, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentInfo" + } + } + ], + "indexSignatures": [], + "extends": [ + "ComponentInfo" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "DummyAnnotation", + "id": "class-DummyAnnotation-ce2372104f541c3c7b512f1f0832dd6284d8bb66af522dc22be5e7ab2da0e8754c4bfa78dcae6be97d5aef3ad38dea71dcbe5ad4b9a231dea07094df84deba04", + "file": "src/assets/wise5/common/DummyAnnotation.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { Annotation } from './Annotation';\n\nexport class DummyAnnotation extends Annotation {}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "clientSaveTime", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 2, + "inheritance": { + "file": "Annotation" + } + }, + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 3, + "inheritance": { + "file": "Annotation" + } + }, + { + "name": "data", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 4, + "inheritance": { + "file": "Annotation" + } + }, + { + "name": "fromWorkgroupId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": true, + "description": "", + "line": 5, + "inheritance": { + "file": "Annotation" + } + }, + { + "name": "id", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 6, + "inheritance": { + "file": "Annotation" + } + }, + { + "name": "localNotebookItemId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": true, + "description": "", + "line": 7, + "inheritance": { + "file": "Annotation" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 8, + "inheritance": { + "file": "Annotation" + } + }, + { + "name": "notebookItemId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 9, + "inheritance": { + "file": "Annotation" + } + }, + { + "name": "periodId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "inheritance": { + "file": "Annotation" + } + }, + { + "name": "serverSaveTime", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "inheritance": { + "file": "Annotation" + } + }, + { + "name": "studentWorkId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "inheritance": { + "file": "Annotation" + } + }, + { + "name": "toWorkgroupId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "inheritance": { + "file": "Annotation" + } + }, + { + "name": "type", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "inheritance": { + "file": "Annotation" + } + } + ], + "methods": [], + "indexSignatures": [], + "extends": [ + "Annotation" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "DummyComponentState", + "id": "class-DummyComponentState-7adf43b9b205569032118ce71c98a99b658ca0274a753d8c9f1565d49f92dace8d1184279ff9e5b26d2ba4b3690273a7c1fffb6518d3c56552f192426737ddfd", + "file": "src/app/domain/dummyComponentState.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { ComponentState } from './componentState';\n\nexport class DummyComponentState extends ComponentState {}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "clientSaveTime", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 3, + "inheritance": { + "file": "ComponentState" + } + }, + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 4, + "inheritance": { + "file": "ComponentState" + } + }, + { + "name": "componentType", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 5, + "inheritance": { + "file": "ComponentState" + } + }, + { + "name": "id", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": true, + "description": "", + "line": 2, + "inheritance": { + "file": "ComponentState" + } + }, + { + "name": "isSubmit", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 6, + "inheritance": { + "file": "ComponentState" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 7, + "inheritance": { + "file": "ComponentState" + } + }, + { + "name": "peerGroupId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": true, + "description": "", + "line": 8, + "inheritance": { + "file": "ComponentState" + } + }, + { + "name": "periodId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 9, + "inheritance": { + "file": "ComponentState" + } + }, + { + "name": "runId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "inheritance": { + "file": "ComponentState" + } + }, + { + "name": "serverSaveTime", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": true, + "description": "", + "line": 11, + "inheritance": { + "file": "ComponentState" + } + }, + { + "name": "studentData", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "inheritance": { + "file": "ComponentState" + } + }, + { + "name": "workgroupId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "inheritance": { + "file": "ComponentState" + } + } + ], + "methods": [], + "indexSignatures": [], + "extends": [ + "ComponentState" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "DynamicPrompt", + "id": "class-DynamicPrompt-76bbbe600e18795adf45414bc46bb636160a0378bf3143b2c6e128603f00933290748536c98173744382ffa8fcced03b42af6bdccddf11993de8cf878a2c452b", + "file": "src/assets/wise5/directives/dynamic-prompt/DynamicPrompt.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { ReferenceComponentRules } from '../../components/common/ReferenceComponentRules';\n\nexport class DynamicPrompt extends ReferenceComponentRules {\n postPrompt?: string;\n prePrompt?: string;\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "postPrompt", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": true, + "description": "", + "line": 4 + }, + { + "name": "prePrompt", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": true, + "description": "", + "line": 5 + }, + { + "name": "enabled", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 5, + "inheritance": { + "file": "ReferenceComponentRules" + } + }, + { + "name": "peerGroupingTag", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": true, + "description": "", + "line": 6, + "inheritance": { + "file": "ReferenceComponentRules" + } + }, + { + "name": "referenceComponent", + "deprecated": false, + "deprecationMessage": "", + "type": "ReferenceComponent", + "indexKey": "", + "optional": false, + "description": "", + "line": 7, + "inheritance": { + "file": "ReferenceComponentRules" + } + }, + { + "name": "rules", + "deprecated": false, + "deprecationMessage": "", + "type": "FeedbackRule[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 8, + "inheritance": { + "file": "ReferenceComponentRules" + } + } + ], + "methods": [ + { + "name": "getPeerGroupingTag", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 18, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ReferenceComponentRules" + } + }, + { + "name": "getReferenceComponentId", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ReferenceComponentRules" + } + }, + { + "name": "getReferenceNodeId", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ReferenceComponentRules" + } + }, + { + "name": "getRules", + "args": [], + "optional": false, + "returnType": "FeedbackRule[]", + "typeParameters": [], + "line": 30, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ReferenceComponentRules" + } + }, + { + "name": "isPeerGroupingTagSpecified", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 34, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ReferenceComponentRules" + } + } + ], + "indexSignatures": [], + "extends": [ + "ReferenceComponentRules" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "DynamicPromptEvaluator", + "id": "class-DynamicPromptEvaluator-4fa205ce45044b8d4fdc46fd38b8938fd83df2111047541b6a3831129bc4a80f24b0070b58255c9754c00d51700ec0b0090a400061ccb7ea03bd232ebb6a4116", + "file": "src/assets/wise5/directives/dynamic-prompt/DynamicPromptEvaluator.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { Observable, concatMap, map } from 'rxjs';\nimport { Component } from '../../common/Component';\nimport { PeerGroupStudentData } from '../../../../app/domain/peerGroupStudentData';\nimport { PeerGroup } from '../../components/peerChat/PeerGroup';\nimport { DynamicPromptComponent } from './dynamic-prompt.component';\nimport { FeedbackRuleEvaluator } from '../../components/common/feedbackRule/FeedbackRuleEvaluator';\nimport { Response } from '../../components/common/feedbackRule/Response';\nimport { FeedbackRuleEvaluatorMultipleStudents } from '../../components/common/feedbackRule/FeedbackRuleEvaluatorMultipleStudents';\nimport { FeedbackRuleComponent } from '../../components/feedbackRule/FeedbackRuleComponent';\nimport { FeedbackRule } from '../../components/common/feedbackRule/FeedbackRule';\n\nexport abstract class DynamicPromptEvaluator {\n constructor(protected component: DynamicPromptComponent) {}\n\n evaluate(referenceComponent: Component): void {\n if (this.component.dynamicPrompt.isPeerGroupingTagSpecified()) {\n this.component.peerGroupService\n .retrievePeerGroup(this.component.dynamicPrompt.getPeerGroupingTag())\n .subscribe((peerGroup) => {\n this.component.peerGroup = peerGroup;\n this.evaluatePeerGroup(referenceComponent);\n });\n } else {\n this.evaluatePersonal(referenceComponent);\n }\n }\n\n protected getFeedbackRuleEvaluator(\n referenceComponent: Component\n ): FeedbackRuleEvaluator {\n const feedbackRuleComponent = new FeedbackRuleComponent(\n this.component.dynamicPrompt.getRules(),\n referenceComponent.content.maxSubmitCount,\n false\n );\n const evaluator = this.component.dynamicPrompt.isPeerGroupingTagSpecified()\n ? new FeedbackRuleEvaluatorMultipleStudents(\n feedbackRuleComponent,\n this.component.configService,\n this.component.constraintService\n )\n : new FeedbackRuleEvaluator(\n feedbackRuleComponent,\n this.component.configService,\n this.component.constraintService\n );\n evaluator.setReferenceComponent(referenceComponent);\n return evaluator;\n }\n\n protected getPeerGroupData(): Observable {\n return this.component.peerGroupService\n .retrievePeerGroup(this.component.dynamicPrompt.getPeerGroupingTag())\n .pipe(\n concatMap((peerGroup: PeerGroup) => {\n return this.component.peerGroupService\n .retrieveDynamicPromptStudentData(\n peerGroup.id,\n this.component.nodeId,\n this.component.componentId\n )\n .pipe(\n map((peerGroupStudentData: PeerGroupStudentData[]) => {\n return peerGroupStudentData;\n })\n );\n })\n );\n }\n\n protected getSubmitCounter(componentState: any): number {\n return componentState.studentData.submitCounter;\n }\n\n protected setPromptAndEmitRule(feedbackRule: FeedbackRule): void {\n this.component.prompt = feedbackRule.prompt;\n this.component.dynamicPromptChanged.emit(feedbackRule); // TODO: change to two-way binding variable\n }\n\n abstract evaluatePeerGroup(referenceComponent: Component): void;\n abstract evaluatePersonal(referenceComponent: Component): void;\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "component", + "type": "DynamicPromptComponent", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 12, + "jsdoctags": [ + { + "name": "component", + "type": "DynamicPromptComponent", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [], + "methods": [ + { + "name": "evaluate", + "args": [ + { + "name": "referenceComponent", + "type": "Component", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 15, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "referenceComponent", + "type": "Component", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "evaluatePeerGroup", + "args": [ + { + "name": "referenceComponent", + "type": "Component", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 80, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 128 + ], + "jsdoctags": [ + { + "name": "referenceComponent", + "type": "Component", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "evaluatePersonal", + "args": [ + { + "name": "referenceComponent", + "type": "Component", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 81, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 128 + ], + "jsdoctags": [ + { + "name": "referenceComponent", + "type": "Component", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getFeedbackRuleEvaluator", + "args": [ + { + "name": "referenceComponent", + "type": "Component", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "FeedbackRuleEvaluator", + "typeParameters": [], + "line": 28, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "referenceComponent", + "type": "Component", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getPeerGroupData", + "args": [], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 51, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "getSubmitCounter", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 71, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setPromptAndEmitRule", + "args": [ + { + "name": "feedbackRule", + "type": "FeedbackRule", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 75, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "feedbackRule", + "type": "FeedbackRule", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "DynamicPromptMultipleChoiceEvaluator", + "id": "class-DynamicPromptMultipleChoiceEvaluator-2f188d7456f292fc0fb0969408795361fd0350445097034b45f022c57ce05ee655b60a9158e93f2db96405bf45e5a09e0a63168587504abf9b874ecf71f92e7d", + "file": "src/assets/wise5/directives/dynamic-prompt/DynamicPromptMultipleChoiceEvaluator.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { PeerGroupStudentData } from '../../../../app/domain/peerGroupStudentData';\nimport { Component } from '../../common/Component';\nimport { Response } from '../../components/common/feedbackRule/Response';\nimport { DynamicPromptEvaluator } from './DynamicPromptEvaluator';\n\nexport class DynamicPromptMultipleChoiceEvaluator extends DynamicPromptEvaluator {\n evaluatePeerGroup(referenceComponent: Component): void {\n this.getPeerGroupData().subscribe((peerGroupStudentData: PeerGroupStudentData[]) => {\n const responses = peerGroupStudentData.map((peerMemberData: PeerGroupStudentData) => {\n return new Response({\n submitCounter: this.getSubmitCounter(peerMemberData.studentWork)\n });\n });\n const feedbackRuleEvaluator = this.getFeedbackRuleEvaluator(referenceComponent);\n feedbackRuleEvaluator.setPeerGroup(this.component.peerGroup);\n this.setPromptAndEmitRule(feedbackRuleEvaluator.getFeedbackRule(responses));\n });\n }\n\n evaluatePersonal(referenceComponent: Component): void {\n const feedbackRuleEvaluator = this.getFeedbackRuleEvaluator(referenceComponent);\n const nodeId = this.component.dynamicPrompt.getReferenceNodeId();\n const componentId = referenceComponent.content.id;\n const latestComponentState = this.component.dataService.getLatestComponentStateByNodeIdAndComponentId(\n nodeId,\n componentId\n );\n const response = new Response({\n submitCounter: this.getSubmitCounter(latestComponentState)\n });\n this.setPromptAndEmitRule(feedbackRuleEvaluator.getFeedbackRule([response]));\n }\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [], + "methods": [ + { + "name": "evaluatePeerGroup", + "args": [ + { + "name": "referenceComponent", + "type": "Component", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 7, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "referenceComponent", + "type": "Component", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "DynamicPromptEvaluator" + } + }, + { + "name": "evaluatePersonal", + "args": [ + { + "name": "referenceComponent", + "type": "Component", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 20, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "referenceComponent", + "type": "Component", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "DynamicPromptEvaluator" + } + }, + { + "name": "evaluate", + "args": [ + { + "name": "referenceComponent", + "type": "Component", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 15, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "referenceComponent", + "type": "Component", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "DynamicPromptEvaluator" + } + }, + { + "name": "getFeedbackRuleEvaluator", + "args": [ + { + "name": "referenceComponent", + "type": "Component", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "FeedbackRuleEvaluator", + "typeParameters": [], + "line": 28, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "referenceComponent", + "type": "Component", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "DynamicPromptEvaluator" + } + }, + { + "name": "getPeerGroupData", + "args": [], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 51, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "DynamicPromptEvaluator" + } + }, + { + "name": "getSubmitCounter", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 71, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "DynamicPromptEvaluator" + } + }, + { + "name": "setPromptAndEmitRule", + "args": [ + { + "name": "feedbackRule", + "type": "FeedbackRule", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 75, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "feedbackRule", + "type": "FeedbackRule", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "DynamicPromptEvaluator" + } + } + ], + "indexSignatures": [], + "extends": [ + "DynamicPromptEvaluator" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "DynamicPromptOpenResponseEvaluator", + "id": "class-DynamicPromptOpenResponseEvaluator-682c35e642b7cca4440622d0fe25b1884afc894dd733e13048565b59d85addaecec4a9fe3403e2a7b9348e6a3e0ad30c1ed95cdace3a0676e7897cb9f41997c4", + "file": "src/assets/wise5/directives/dynamic-prompt/DynamicPromptOpenResponseEvaluator.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { PeerGroupStudentData } from '../../../../app/domain/peerGroupStudentData';\nimport { Component } from '../../common/Component';\nimport { CRaterResponse } from '../../components/common/cRater/CRaterResponse';\nimport { DynamicPromptEvaluator } from './DynamicPromptEvaluator';\n\nexport class DynamicPromptOpenResponseEvaluator extends DynamicPromptEvaluator {\n evaluatePeerGroup(referenceComponent: Component): void {\n this.getPeerGroupData().subscribe((peerGroupStudentData: PeerGroupStudentData[]) => {\n const cRaterResponses = peerGroupStudentData.map((peerMemberData: PeerGroupStudentData) => {\n return new CRaterResponse({\n ideas: peerMemberData.annotation.data.ideas,\n scores: peerMemberData.annotation.data.scores,\n submitCounter: this.getSubmitCounter(peerMemberData.studentWork)\n });\n });\n const feedbackRuleEvaluator = this.getFeedbackRuleEvaluator(referenceComponent);\n feedbackRuleEvaluator.setPeerGroup(this.component.peerGroup);\n this.setPromptAndEmitRule(feedbackRuleEvaluator.getFeedbackRule(cRaterResponses));\n });\n }\n\n evaluatePersonal(referenceComponent: Component): void {\n const nodeId = this.component.dynamicPrompt.getReferenceNodeId();\n const componentId = referenceComponent.content.id;\n const latestComponentState = this.component.dataService.getLatestComponentStateByNodeIdAndComponentId(\n nodeId,\n componentId\n );\n const latestAutoScoreAnnotation = this.component.annotationService.getLatestScoreAnnotation(\n nodeId,\n componentId,\n this.component.configService.getWorkgroupId(),\n 'autoScore'\n );\n if (latestComponentState != null && latestAutoScoreAnnotation != null) {\n const cRaterResponse = new CRaterResponse({\n ideas: latestAutoScoreAnnotation.data.ideas,\n scores: latestAutoScoreAnnotation.data.scores,\n submitCounter: this.getSubmitCounter(latestComponentState)\n });\n const feedbackRuleEvaluator = this.getFeedbackRuleEvaluator(referenceComponent);\n this.setPromptAndEmitRule(feedbackRuleEvaluator.getFeedbackRule([cRaterResponse]));\n }\n }\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [], + "methods": [ + { + "name": "evaluatePeerGroup", + "args": [ + { + "name": "referenceComponent", + "type": "Component", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 7, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "referenceComponent", + "type": "Component", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "DynamicPromptEvaluator" + } + }, + { + "name": "evaluatePersonal", + "args": [ + { + "name": "referenceComponent", + "type": "Component", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "referenceComponent", + "type": "Component", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "DynamicPromptEvaluator" + } + }, + { + "name": "evaluate", + "args": [ + { + "name": "referenceComponent", + "type": "Component", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 15, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "referenceComponent", + "type": "Component", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "DynamicPromptEvaluator" + } + }, + { + "name": "getFeedbackRuleEvaluator", + "args": [ + { + "name": "referenceComponent", + "type": "Component", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "FeedbackRuleEvaluator", + "typeParameters": [], + "line": 28, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "referenceComponent", + "type": "Component", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "DynamicPromptEvaluator" + } + }, + { + "name": "getPeerGroupData", + "args": [], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 51, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "DynamicPromptEvaluator" + } + }, + { + "name": "getSubmitCounter", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 71, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "DynamicPromptEvaluator" + } + }, + { + "name": "setPromptAndEmitRule", + "args": [ + { + "name": "feedbackRule", + "type": "FeedbackRule", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 75, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "feedbackRule", + "type": "FeedbackRule", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "DynamicPromptEvaluator" + } + } + ], + "indexSignatures": [], + "extends": [ + "DynamicPromptEvaluator" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "EditConstraintRemovalCriteriaHelper", + "id": "class-EditConstraintRemovalCriteriaHelper-c7c8916c32050810eac60869aa44d2bd208b8866530af8f1a17ca63ae787487f23e1d637be4d053f565d3bdf7a4b129409db5fd2c8c7a5fac2ba989b8dd5fa13", + "file": "src/assets/wise5/authoringTool/constraint/edit-constraint-removal-criteria/edit-constraint-removal-criteria-helper.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { ComponentContent } from '../../../common/ComponentContent';\nimport { ProjectService } from '../../../services/projectService';\n\nexport class EditConstraintRemovalCriteriaHelper {\n criteriaNameToComponentType: Map = new Map(\n Object.entries({\n choiceChosen: 'MultipleChoice',\n fillXNumberOfRows: 'Table',\n wroteXNumberOfWords: 'OpenResponse'\n })\n );\n\n constructor(private projectService: ProjectService, private componentIdToIsSelectable: any) {}\n\n hasCriteriaNameToComponentType(criteriaName: string): boolean {\n return this.criteriaNameToComponentType.has(criteriaName);\n }\n\n getCriteriaNameToComponentType(criteriaName: string): string {\n return this.criteriaNameToComponentType.get(criteriaName);\n }\n\n stepContainsAcceptableComponent(nodeId: string, criteria: any): boolean {\n if (this.criteriaNameToComponentType.has(criteria.name)) {\n return this.hasComponentType(nodeId, this.criteriaNameToComponentType.get(criteria.name));\n }\n return true;\n }\n\n private hasComponentType(nodeId: string, componentType: string): boolean {\n return (\n this.projectService\n .getComponents(nodeId)\n .filter((component) => component.type === componentType).length > 0\n );\n }\n\n calculateSelectableComponents(criteria: any): void {\n const components = this.projectService.getComponents(criteria.params.nodeId);\n if (this.criteriaNameToComponentType.has(criteria.name)) {\n this.setSelectableComponents(components, this.criteriaNameToComponentType.get(criteria.name));\n } else {\n this.makeAllComponentsSelectable(components);\n }\n }\n\n private setSelectableComponents(components: ComponentContent[], componentType: string): void {\n components.forEach((component) => {\n this.componentIdToIsSelectable[component.id] = component.type === componentType;\n });\n }\n\n private makeAllComponentsSelectable(components: ComponentContent[]): void {\n components.forEach((component) => {\n this.componentIdToIsSelectable[component.id] = true;\n });\n }\n\n automaticallySelectComponentIfPossible(criteria: any): void {\n if (this.criteriaNameToComponentType.has(criteria.name)) {\n this.selectIfOnlyOneOfComponentType(\n criteria,\n this.projectService.getComponents(criteria.params.nodeId),\n this.criteriaNameToComponentType.get(criteria.name)\n );\n }\n }\n\n private selectIfOnlyOneOfComponentType(\n criteria: any,\n components: ComponentContent[],\n componentType: string\n ): void {\n if (components.filter((component) => component.type === componentType).length === 1) {\n criteria.params.componentId = components.find(\n (component) => component.type === componentType\n ).id;\n }\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentIdToIsSelectable", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 11, + "jsdoctags": [ + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentIdToIsSelectable", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "criteriaNameToComponentType", + "defaultValue": "new Map(\n Object.entries({\n choiceChosen: 'MultipleChoice',\n fillXNumberOfRows: 'Table',\n wroteXNumberOfWords: 'OpenResponse'\n })\n )", + "deprecated": false, + "deprecationMessage": "", + "type": "Map", + "indexKey": "", + "optional": false, + "description": "", + "line": 5 + } + ], + "methods": [ + { + "name": "automaticallySelectComponentIfPossible", + "args": [ + { + "name": "criteria", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 59, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "criteria", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "calculateSelectableComponents", + "args": [ + { + "name": "criteria", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 38, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "criteria", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getCriteriaNameToComponentType", + "args": [ + { + "name": "criteriaName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 19, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "criteriaName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "hasComponentType", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 30, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "hasCriteriaNameToComponentType", + "args": [ + { + "name": "criteriaName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 15, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "criteriaName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "makeAllComponentsSelectable", + "args": [ + { + "name": "components", + "type": "ComponentContent[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 53, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "components", + "type": "ComponentContent[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "selectIfOnlyOneOfComponentType", + "args": [ + { + "name": "criteria", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "components", + "type": "ComponentContent[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 69, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "criteria", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "components", + "type": "ComponentContent[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setSelectableComponents", + "args": [ + { + "name": "components", + "type": "ComponentContent[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 47, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "components", + "type": "ComponentContent[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "stepContainsAcceptableComponent", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "criteria", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 23, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "criteria", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "EmbeddedInfo", + "id": "class-EmbeddedInfo-86ca66f85bf3be42d93de0a4dfcf49c96096bb7344c825e28c8cd69d64feca9ae306aa378ffc8adba2252610c3a3befa06c0dd8ac5d764548d7b8e8980bb7847", + "file": "src/assets/wise5/components/embedded/EmbeddedInfo.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { ComponentInfo } from '../ComponentInfo';\n\nexport class EmbeddedInfo extends ComponentInfo {\n protected description: string = $localize`Students interact with a custom applicatio, such as a model or simulation.`;\n protected label: string = $localize`Embedded (Custom)`;\n protected previewExamples: any[] = [\n {\n label: $localize`Embedded`,\n content: {\n id: 'abcde12345',\n type: 'Embedded',\n prompt: 'Click the differnt boundary types to view them in action.',\n showSaveButton: false,\n showSubmitButton: false,\n showAddToNotebookButton: false,\n url:\n 'https://wise.berkeley.edu/curriculum/shared/plate-tectonics-convection-explorer/v1/index.html?maxWidth=900',\n height: 600,\n constraints: []\n }\n }\n ];\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "description", + "defaultValue": "$localize`Students interact with a custom applicatio, such as a model or simulation.`", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 4, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentInfo" + } + }, + { + "name": "label", + "defaultValue": "$localize`Embedded (Custom)`", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 5, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentInfo" + } + }, + { + "name": "previewExamples", + "defaultValue": "[\n {\n label: $localize`Embedded`,\n content: {\n id: 'abcde12345',\n type: 'Embedded',\n prompt: 'Click the differnt boundary types to view them in action.',\n showSaveButton: false,\n showSubmitButton: false,\n showAddToNotebookButton: false,\n url:\n 'https://wise.berkeley.edu/curriculum/shared/plate-tectonics-convection-explorer/v1/index.html?maxWidth=900',\n height: 600,\n constraints: []\n }\n }\n ]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 6, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentInfo" + } + } + ], + "methods": [ + { + "name": "getDescription", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 6, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentInfo" + } + }, + { + "name": "getLabel", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 10, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentInfo" + } + }, + { + "name": "getPreviewExamples", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 14, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentInfo" + } + } + ], + "indexSignatures": [], + "extends": [ + "ComponentInfo" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "EvaluateConstraintContext", + "id": "class-EvaluateConstraintContext-98354c33b35777127403e279621eb4fb2bc2879dfe45bd1a0bb4b3997a97a2d32879b71c7dd62613c2cd81b1abb8a6709b418032d668f12b0e785a25bdd2ba57", + "file": "src/assets/wise5/common/constraint/EvaluateConstraintContext.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { AnnotationService } from '../../services/annotationService';\nimport { CompletionService } from '../../services/completionService';\nimport { ComponentServiceLookupService } from '../../services/componentServiceLookupService';\nimport { ConfigService } from '../../services/configService';\nimport { NotebookService } from '../../services/notebookService';\nimport { StudentDataService } from '../../services/studentDataService';\nimport { TagService } from '../../services/tagService';\nimport { ConstraintStrategy } from './strategies/ConstraintStrategy';\n\nexport class EvaluateConstraintContext {\n private strategy: ConstraintStrategy;\n\n constructor(\n private annotationService: AnnotationService,\n private completionService: CompletionService,\n private componentServiceLookupService: ComponentServiceLookupService,\n private configService: ConfigService,\n private dataService: StudentDataService,\n private notebookService: NotebookService,\n private tagService: TagService\n ) {}\n\n getAnnotationService(): AnnotationService {\n return this.annotationService;\n }\n\n getCompletionService(): CompletionService {\n return this.completionService;\n }\n\n getComponentServiceLookupService(): ComponentServiceLookupService {\n return this.componentServiceLookupService;\n }\n\n getConfigService(): ConfigService {\n return this.configService;\n }\n\n getDataService(): StudentDataService {\n return this.dataService;\n }\n\n getNotebookService(): NotebookService {\n return this.notebookService;\n }\n\n getTagService(): TagService {\n return this.tagService;\n }\n\n setStrategy(strategy: ConstraintStrategy): void {\n strategy.setContext(this);\n this.strategy = strategy;\n }\n\n evaluate(criteria: any): boolean {\n return this.strategy.evaluate(criteria);\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "completionService", + "type": "CompletionService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentServiceLookupService", + "type": "ComponentServiceLookupService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "notebookService", + "type": "NotebookService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "tagService", + "type": "TagService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 11, + "jsdoctags": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "completionService", + "type": "CompletionService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentServiceLookupService", + "type": "ComponentServiceLookupService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "notebookService", + "type": "NotebookService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "tagService", + "type": "TagService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "strategy", + "deprecated": false, + "deprecationMessage": "", + "type": "ConstraintStrategy", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "modifierKind": [ + 123 + ] + } + ], + "methods": [ + { + "name": "evaluate", + "args": [ + { + "name": "criteria", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 56, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "criteria", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getAnnotationService", + "args": [], + "optional": false, + "returnType": "AnnotationService", + "typeParameters": [], + "line": 23, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getCompletionService", + "args": [], + "optional": false, + "returnType": "CompletionService", + "typeParameters": [], + "line": 27, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getComponentServiceLookupService", + "args": [], + "optional": false, + "returnType": "ComponentServiceLookupService", + "typeParameters": [], + "line": 31, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getConfigService", + "args": [], + "optional": false, + "returnType": "ConfigService", + "typeParameters": [], + "line": 35, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getDataService", + "args": [], + "optional": false, + "returnType": "StudentDataService", + "typeParameters": [], + "line": 39, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getNotebookService", + "args": [], + "optional": false, + "returnType": "NotebookService", + "typeParameters": [], + "line": 43, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getTagService", + "args": [], + "optional": false, + "returnType": "TagService", + "typeParameters": [], + "line": 47, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "setStrategy", + "args": [ + { + "name": "strategy", + "type": "ConstraintStrategy", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 51, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "strategy", + "type": "ConstraintStrategy", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "EventDataExportStrategy", + "id": "class-EventDataExportStrategy-888614133ce352518c87b981d7c568b200a9860a8f4f78478cff45c57b0204870d37f6b7de50eb579ea277f06b1c240e083ed4a91f2bd0cd68ec5512dd07c643", + "file": "src/assets/wise5/classroomMonitor/dataExport/strategies/EventDataExportStrategy.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { removeHTMLTags } from '../../../common/string/string';\nimport { AbstractDataExportStrategy } from './AbstractDataExportStrategy';\nimport { millisecondsToDateTime } from '../../../common/datetime/datetime';\n\nexport class EventDataExportStrategy extends AbstractDataExportStrategy {\n export() {\n this.controller.showDownloadingExportMessage();\n this.dataExportService\n .retrieveEventsExport(\n this.controller.includeStudentEvents,\n this.controller.includeTeacherEvents,\n this.controller.includeStudentNames\n )\n .subscribe(({ events }: any) => {\n this.generateEventsExport(events);\n });\n }\n\n private generateEventsExport(events: any[]): void {\n const rows = [];\n const columnNames = this.getEventsColumnNames();\n const columnNameToNumber = this.getColumnNameToNumber(columnNames);\n rows.push(this.createHeaderRow(columnNames));\n let rowCounter = 1;\n if (this.controller.includeStudentEvents) {\n rowCounter = this.addStudentEvents(\n rows,\n rowCounter,\n columnNames,\n columnNameToNumber,\n this.dataExportService\n .getStudentEvents(events)\n .sort(this.sortByFields('workgroupId', 'serverSaveTime'))\n );\n }\n if (this.controller.includeTeacherEvents) {\n rowCounter = this.addTeacherEvents(\n rows,\n rowCounter,\n columnNames,\n columnNameToNumber,\n this.dataExportService\n .getTeacherEvents(events)\n .sort(this.sortByFields('userId', 'serverSaveTime'))\n );\n }\n const fileName = this.configService.getRunId() + '_events.csv';\n this.generateCSVFile(rows, fileName);\n this.controller.hideDownloadingExportMessage();\n }\n\n private addStudentEvents(\n rows: any[],\n rowCounter: number,\n columnNames: string[],\n columnNameToNumber: any,\n events: any[]\n ): number {\n for (const workgroup of this.configService.getClassmateUserInfosSortedByWorkgroupId()) {\n rowCounter = this.addStudentEventsForWorkgroup(\n workgroup,\n rows,\n rowCounter,\n columnNames,\n columnNameToNumber,\n events\n );\n }\n return rowCounter;\n }\n\n private addStudentEventsForWorkgroup(\n workgroup: any,\n rows: any[],\n rowCounter: number,\n columnNames: string[],\n columnNameToNumber: any,\n events: any\n ): number {\n for (const event of events) {\n if (event.workgroupId === workgroup.workgroupId) {\n rowCounter = this.addStudentEventRow(\n workgroup,\n rows,\n rowCounter,\n columnNames,\n columnNameToNumber,\n event\n );\n }\n }\n return rowCounter;\n }\n\n private addStudentEventRow(\n workgroup: any,\n rows: any[],\n rowCounter: number,\n columnNames: string[],\n columnNameToNumber: any,\n event: any\n ): number {\n const workgroupId = workgroup.workgroupId;\n const periodName = workgroup.periodName;\n const userInfo = this.configService.getUserInfoByWorkgroupId(workgroupId);\n const extractedUserIDsAndStudentNames = this.controller.extractUserIDsAndStudentNames(\n userInfo.users\n );\n rows.push(\n this.createStudentEventExportRow(\n columnNames,\n columnNameToNumber,\n rowCounter,\n workgroupId,\n extractedUserIDsAndStudentNames['userId1'],\n extractedUserIDsAndStudentNames['userId2'],\n extractedUserIDsAndStudentNames['userId3'],\n extractedUserIDsAndStudentNames['studentName1'],\n extractedUserIDsAndStudentNames['studentName2'],\n extractedUserIDsAndStudentNames['studentName3'],\n periodName,\n event\n )\n );\n return ++rowCounter;\n }\n\n /**\n * Create the array that will be used as a row in the events export\n * @param columnNames all the header column name\n * @param columnNameToNumber the mapping from column name to column number\n * @param rowCounter the current row number\n * @param workgroupId the workgroup id\n * @param userId1 the User ID 1\n * @param userId2 the User ID 2\n * @param userId3 the User ID 3\n * @param periodName the period name\n * @param componentEventCount the mapping of component to event count\n * @param event the event\n * @return an array containing the cells in the row\n */\n private createStudentEventExportRow(\n columnNames,\n columnNameToNumber,\n rowCounter,\n workgroupId,\n userId1,\n userId2,\n userId3,\n studentName1,\n studentName2,\n studentName3,\n periodName,\n event\n ) {\n const row = this.createRow(columnNames.length);\n this.setRowCounter(row, columnNameToNumber, rowCounter);\n this.setWorkgroupId(row, columnNameToNumber, workgroupId);\n this.setUserType(row, columnNameToNumber, 'Student');\n this.setStudentIDs(row, columnNameToNumber, userId1, userId2, userId3);\n this.setStudentNames(row, columnNameToNumber, studentName1, studentName2, studentName3);\n this.setPeriodName(row, columnNameToNumber, periodName);\n this.setProjectId(row, columnNameToNumber);\n this.setProjectName(row, columnNameToNumber);\n this.setRunId(row, columnNameToNumber);\n this.setEventId(row, columnNameToNumber, event);\n this.setServerSaveTime(row, columnNameToNumber, event);\n this.setClientSaveTime(row, columnNameToNumber, event);\n this.setNodeId(row, columnNameToNumber, event);\n this.setRowComponentId(row, columnNameToNumber, event);\n this.setTitle(row, columnNameToNumber, event);\n this.setComponentPartNumber(row, columnNameToNumber, event);\n this.setComponentTypeAndPrompt(row, columnNameToNumber, event);\n this.setEventJSON(row, columnNameToNumber, event);\n this.setContext(row, columnNameToNumber, event);\n this.setCategory(row, columnNameToNumber, event);\n this.setEvent(row, columnNameToNumber, event);\n this.setEventData(row, columnNameToNumber, event);\n this.setResponse(row, columnNameToNumber, event);\n return row;\n }\n\n private addTeacherEvents(\n rows: any[],\n rowCounter: number,\n columnNames: any,\n columnNameToNumber: any,\n events: any[]\n ): number {\n return this.addTeacherEvent(rows, rowCounter, columnNames, columnNameToNumber, events);\n }\n\n private addTeacherEvent(\n rows: any[],\n rowCounter: number,\n columnNames: any,\n columnNameToNumber: any,\n events: any[]\n ): number {\n for (const event of events) {\n const row = this.createTeacherEventExportRow(\n columnNames,\n columnNameToNumber,\n rowCounter,\n event.workgroupId,\n event.userId,\n this.configService.getTeacherUsername(event.userId),\n event\n );\n rows.push(row);\n rowCounter++;\n }\n return rowCounter;\n }\n\n private getEventsColumnNames() {\n return [\n '#',\n 'Workgroup ID',\n 'User Type',\n 'Student User ID 1',\n 'Student Name 1',\n 'Student User ID 2',\n 'Student Name 2',\n 'Student User ID 3',\n 'Student Name 3',\n 'Teacher User ID',\n 'Teacher Username',\n 'Class Period',\n 'Project ID',\n 'Project Name',\n 'Run ID',\n 'Start Date',\n 'End Date',\n 'Event ID',\n 'Server Timestamp',\n 'Client Timestamp',\n 'Node ID',\n 'Component ID',\n 'Component Part Number',\n 'Step Title',\n 'Component Type',\n 'Component Prompt',\n 'JSON',\n 'Context',\n 'Category',\n 'Event',\n 'Data'\n ];\n }\n\n private sortByFields(field1: string, field2: string): any {\n return (object1: any, object2: any): number => {\n if (object1[field1] !== object2[field1]) {\n return object1[field1] - object2[field1];\n } else {\n return object1[field2] - object2[field2];\n }\n };\n }\n\n private getColumnNameToNumber(columnNames) {\n const columnNameToNumber = {};\n for (let c = 0; c < columnNames.length; c++) {\n columnNameToNumber[columnNames[c]] = c;\n }\n return columnNameToNumber;\n }\n\n private createHeaderRow(columnNames) {\n const headerRow = [];\n for (const columnName of columnNames) {\n headerRow.push(columnName);\n }\n return headerRow;\n }\n\n private setStudentIDs(row, columnNameToNumber, userId1, userId2, userId3) {\n if (userId1 != null) {\n row[columnNameToNumber['Student User ID 1']] = userId1;\n }\n if (userId2 != null) {\n row[columnNameToNumber['Student User ID 2']] = userId2;\n }\n if (userId3 != null) {\n row[columnNameToNumber['Student User ID 3']] = userId3;\n }\n }\n\n private setStudentNames(row, columnNameToNumber, studentName1, studentName2, studentName3) {\n if (studentName1 != null && this.controller.includeNames) {\n row[columnNameToNumber['Student Name 1']] = studentName1;\n }\n if (studentName2 != null && this.controller.includeNames) {\n row[columnNameToNumber['Student Name 2']] = studentName2;\n }\n if (studentName3 != null && this.controller.includeNames) {\n row[columnNameToNumber['Student Name 3']] = studentName3;\n }\n }\n\n private createTeacherEventExportRow(\n columnNames,\n columnNameToNumber,\n rowCounter,\n workgroupId,\n userId,\n username,\n event\n ) {\n const row = this.createRow(columnNames.length);\n this.setRowCounter(row, columnNameToNumber, rowCounter);\n this.setWorkgroupId(row, columnNameToNumber, workgroupId);\n this.setUserType(row, columnNameToNumber, 'Teacher');\n this.setTeacherUserId(row, columnNameToNumber, userId);\n this.setTeacherUsername(row, columnNameToNumber, username);\n this.setProjectId(row, columnNameToNumber);\n this.setProjectName(row, columnNameToNumber);\n this.setRunId(row, columnNameToNumber);\n this.setEventId(row, columnNameToNumber, event);\n this.setServerSaveTime(row, columnNameToNumber, event);\n this.setClientSaveTime(row, columnNameToNumber, event);\n this.setEventJSON(row, columnNameToNumber, event);\n this.setContext(row, columnNameToNumber, event);\n this.setCategory(row, columnNameToNumber, event);\n this.setEvent(row, columnNameToNumber, event);\n this.setEventData(row, columnNameToNumber, event);\n this.setResponse(row, columnNameToNumber, event);\n return row;\n }\n\n private createRow(length) {\n const row = new Array(length);\n row.fill('');\n return row;\n }\n\n private setWorkgroupId(row, columnNameToNumber, workgroupId) {\n row[columnNameToNumber['Workgroup ID']] = workgroupId;\n }\n\n private setEventData(row, columnNameToNumber, data) {\n row[columnNameToNumber['Data']] = data.data;\n }\n\n private setUserType(row, columnNameToNumber, userType) {\n row[columnNameToNumber['User Type']] = userType;\n }\n\n private setPeriodName(row, columnNameToNumber, periodName) {\n row[columnNameToNumber['Class Period']] = periodName;\n }\n\n private setTeacherUserId(row, columnNameToNumber, userId) {\n row[columnNameToNumber['Teacher User ID']] = userId;\n }\n\n private setTeacherUsername(row, columnNameToNumber, username) {\n if (this.controller.includeNames) {\n row[columnNameToNumber['Teacher Username']] = username;\n }\n }\n\n private setProjectId(row, columnNameToNumber) {\n row[columnNameToNumber['Project ID']] = this.configService.getProjectId();\n }\n\n private setProjectName(row, columnNameToNumber) {\n row[columnNameToNumber['Project Name']] = this.projectService.getProjectTitle();\n }\n\n private setRunId(row, columnNameToNumber) {\n row[columnNameToNumber['Run ID']] = this.configService.getRunId();\n }\n\n private setEventId(row, columnNameToNumber, data) {\n row[columnNameToNumber['Event ID']] = data.id;\n }\n\n private setRowCounter(row, columnNameToNumber, rowCounter) {\n row[columnNameToNumber['#']] = rowCounter;\n }\n\n private setResponse(row, columnNameToNumber, data) {\n const response = this.getEventResponse(event);\n row[columnNameToNumber['Response']] = response;\n }\n\n private setServerSaveTime(row, columnNameToNumber, data) {\n row[columnNameToNumber['Server Timestamp']] = millisecondsToDateTime(data.serverSaveTime);\n }\n\n private setClientSaveTime(row, columnNameToNumber, data) {\n row[columnNameToNumber['Client Timestamp']] = millisecondsToDateTime(data.clientSaveTime);\n }\n\n private setNodeId(row, columnNameToNumber, data) {\n if (data.nodeId != null) {\n row[columnNameToNumber['Node ID']] = data.nodeId;\n }\n }\n\n private setRowComponentId(row, columnNameToNumber, data) {\n if (data.componentId != null) {\n row[columnNameToNumber['Component ID']] = data.componentId;\n }\n }\n\n private setEventJSON(row, columnNameToNumber, data) {\n row[columnNameToNumber['JSON']] = data;\n }\n\n private setContext(row, columnNameToNumber, data) {\n if (data.context != null) {\n row[columnNameToNumber['Context']] = data.context;\n }\n }\n\n private setCategory(row, columnNameToNumber, data) {\n if (data.category != null) {\n row[columnNameToNumber['Category']] = data.category;\n }\n }\n\n private setEvent(row, columnNameToNumber, data) {\n if (data.event != null) {\n row[columnNameToNumber['Event']] = data.event;\n }\n }\n\n private setTitle(row, columnNameToNumber, data) {\n const stepTitle = this.projectService.getNodePositionAndTitle(data.nodeId);\n if (stepTitle != null) {\n row[columnNameToNumber['Step Title']] = stepTitle;\n }\n }\n\n private setComponentPartNumber(row, columnNameToNumber, data) {\n const componentPartNumber = this.projectService\n .getNode(data.nodeId)\n .getComponentPosition(data.componentId);\n if (componentPartNumber != -1) {\n row[columnNameToNumber['Component Part Number']] = componentPartNumber + 1;\n }\n }\n\n private setComponentType(row, columnNameToNumber, component) {\n if (component != null) {\n row[columnNameToNumber['Component Type']] = component.type;\n }\n }\n\n private setComponentPrompt(row, columnNameToNumber, component) {\n if (component != null) {\n let prompt = removeHTMLTags(component.prompt);\n prompt = prompt.replace(/\"/g, '\"\"');\n row[columnNameToNumber['Component Prompt']] = prompt;\n }\n }\n\n private setComponentTypeAndPrompt(row, columnNameToNumber, data) {\n const nodeId = data.nodeId;\n const componentId = data.componentId;\n if (nodeId != null && componentId != null) {\n const component = this.projectService.getComponent(data.nodeId, data.componentId);\n this.setComponentType(row, columnNameToNumber, component);\n this.setComponentPrompt(row, columnNameToNumber, component);\n }\n }\n\n /**\n * Get the pretty printed representation of the event\n * @param event the event JSON object\n * @return the pretty printed representation of the event\n */\n private getEventResponse(event) {\n var response = ' ';\n if (event != null) {\n if (event.event == 'branchPathTaken') {\n /*\n * this is a branch path taken event so we will show the title\n * of the first step in the branch path that was taken\n */\n if (event.data != null && event.data.toNodeId != null) {\n var toNodeId = event.data.toNodeId;\n var stepTitle = this.projectService.getNodePositionAndTitle(toNodeId);\n response = stepTitle;\n }\n }\n }\n return response;\n }\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "allOrLatest", + "defaultValue": "'all'", + "deprecated": false, + "deprecationMessage": "", + "type": "\"all\" | \"latest\"", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "annotationService", + "deprecated": false, + "deprecationMessage": "", + "type": "AnnotationService", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "configService", + "deprecated": false, + "deprecationMessage": "", + "type": "ConfigService", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "context", + "deprecated": false, + "deprecationMessage": "", + "type": "DataExportContext", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "controller", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "dataExportService", + "deprecated": false, + "deprecationMessage": "", + "type": "DataExportService", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "dataService", + "deprecated": false, + "deprecationMessage": "", + "type": "TeacherDataService", + "indexKey": "", + "optional": false, + "description": "", + "line": 20, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "projectService", + "deprecated": false, + "deprecationMessage": "", + "type": "TeacherProjectService", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + } + ], + "methods": [ + { + "name": "addStudentEventRow", + "args": [ + { + "name": "workgroup", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "rows", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "rowCounter", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNames", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 95, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "workgroup", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "rows", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "rowCounter", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNames", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addStudentEvents", + "args": [ + { + "name": "rows", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "rowCounter", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNames", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "events", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 52, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "rows", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "rowCounter", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNames", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "events", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addStudentEventsForWorkgroup", + "args": [ + { + "name": "workgroup", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "rows", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "rowCounter", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNames", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "events", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 72, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "workgroup", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "rows", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "rowCounter", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNames", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "events", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addTeacherEvent", + "args": [ + { + "name": "rows", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "rowCounter", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNames", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "events", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 193, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "rows", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "rowCounter", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNames", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "events", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addTeacherEvents", + "args": [ + { + "name": "rows", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "rowCounter", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNames", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "events", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 183, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "rows", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "rowCounter", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNames", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "events", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createHeaderRow", + "args": [ + { + "name": "columnNames", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "{}", + "typeParameters": [], + "line": 270, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "columnNames", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createRow", + "args": [ + { + "name": "length", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 332, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "length", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createStudentEventExportRow", + "args": [ + { + "name": "columnNames", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "rowCounter", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "workgroupId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "userId1", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "userId2", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "userId3", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentName1", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentName2", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentName3", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "periodName", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "event", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 142, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCreate the array that will be used as a row in the events export\n", + "description": "

Create the array that will be used as a row in the events export

\n", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": { + "pos": 3809, + "end": 3820, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "columnNames" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3803, + "end": 3808, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

all the header column name

\n" + }, + { + "name": { + "pos": 3860, + "end": 3878, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "columnNameToNumber" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3854, + "end": 3859, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the mapping from column name to column number

\n" + }, + { + "name": { + "pos": 3937, + "end": 3947, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "rowCounter" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3931, + "end": 3936, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the current row number

\n" + }, + { + "name": { + "pos": 3983, + "end": 3994, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "workgroupId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3977, + "end": 3982, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the workgroup id

\n" + }, + { + "name": { + "pos": 4024, + "end": 4031, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "userId1" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4018, + "end": 4023, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the User ID 1

\n" + }, + { + "name": { + "pos": 4058, + "end": 4065, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "userId2" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4052, + "end": 4057, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the User ID 2

\n" + }, + { + "name": { + "pos": 4092, + "end": 4099, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "userId3" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4086, + "end": 4091, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the User ID 3

\n" + }, + { + "name": "studentName1", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentName2", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentName3", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": { + "pos": 4126, + "end": 4136, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "periodName" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4120, + "end": 4125, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the period name

\n" + }, + { + "name": { + "pos": 4237, + "end": 4242, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "event" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4231, + "end": 4236, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the event

\n" + }, + { + "tagName": { + "pos": 4259, + "end": 4265, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

an array containing the cells in the row

\n" + } + ] + }, + { + "name": "createTeacherEventExportRow", + "args": [ + { + "name": "columnNames", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "rowCounter", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "workgroupId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "userId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "username", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "event", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 302, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "columnNames", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "rowCounter", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "workgroupId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "userId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "username", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "event", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "export", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 6, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "generateEventsExport", + "args": [ + { + "name": "events", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 19, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "events", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getColumnNameToNumber", + "args": [ + { + "name": "columnNames", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "{}", + "typeParameters": [], + "line": 262, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "columnNames", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getEventResponse", + "args": [ + { + "name": "event", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 476, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the pretty printed representation of the event\n", + "description": "

Get the pretty printed representation of the event

\n", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": { + "pos": 14562, + "end": 14567, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "event" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 14556, + "end": 14561, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the event JSON object

\n" + }, + { + "tagName": { + "pos": 14596, + "end": 14602, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

the pretty printed representation of the event

\n" + } + ] + }, + { + "name": "getEventsColumnNames", + "args": [], + "optional": false, + "returnType": "{}", + "typeParameters": [], + "line": 216, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "setCategory", + "args": [ + { + "name": "row", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "data", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 419, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "row", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "data", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setClientSaveTime", + "args": [ + { + "name": "row", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "data", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 393, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "row", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "data", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setComponentPartNumber", + "args": [ + { + "name": "row", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "data", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 438, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "row", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "data", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setComponentPrompt", + "args": [ + { + "name": "row", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "component", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 453, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "row", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "component", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setComponentType", + "args": [ + { + "name": "row", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "component", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 447, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "row", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "component", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setComponentTypeAndPrompt", + "args": [ + { + "name": "row", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "data", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 461, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "row", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "data", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setContext", + "args": [ + { + "name": "row", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "data", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 413, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "row", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "data", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setEvent", + "args": [ + { + "name": "row", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "data", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 425, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "row", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "data", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setEventData", + "args": [ + { + "name": "row", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "data", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 342, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "row", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "data", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setEventId", + "args": [ + { + "name": "row", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "data", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 376, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "row", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "data", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setEventJSON", + "args": [ + { + "name": "row", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "data", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 409, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "row", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "data", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setNodeId", + "args": [ + { + "name": "row", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "data", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 397, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "row", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "data", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setPeriodName", + "args": [ + { + "name": "row", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "periodName", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 350, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "row", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "periodName", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setProjectId", + "args": [ + { + "name": "row", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 364, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "row", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setProjectName", + "args": [ + { + "name": "row", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 368, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "row", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setResponse", + "args": [ + { + "name": "row", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "data", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 384, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "row", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "data", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setRowComponentId", + "args": [ + { + "name": "row", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "data", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 403, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "row", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "data", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setRowCounter", + "args": [ + { + "name": "row", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "rowCounter", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 380, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "row", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "rowCounter", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setRunId", + "args": [ + { + "name": "row", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 372, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "row", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setServerSaveTime", + "args": [ + { + "name": "row", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "data", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 389, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "row", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "data", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setStudentIDs", + "args": [ + { + "name": "row", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "userId1", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "userId2", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "userId3", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 278, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "row", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "userId1", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "userId2", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "userId3", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setStudentNames", + "args": [ + { + "name": "row", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentName1", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentName2", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentName3", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 290, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "row", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentName1", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentName2", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentName3", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setTeacherUserId", + "args": [ + { + "name": "row", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "userId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 354, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "row", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "userId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setTeacherUsername", + "args": [ + { + "name": "row", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "username", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 358, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "row", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "username", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setTitle", + "args": [ + { + "name": "row", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "data", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 431, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "row", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "data", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setUserType", + "args": [ + { + "name": "row", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "userType", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 346, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "row", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "userType", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setWorkgroupId", + "args": [ + { + "name": "row", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "workgroupId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 338, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "row", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "workgroupId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "sortByFields", + "args": [ + { + "name": "field1", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "field2", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 252, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "field1", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "field2", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "generateCSVFile", + "args": [ + { + "name": "rows", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "fileName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 194, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "rows", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "fileName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "generateExportFileName", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentTypeWithUnderscore", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 179, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentTypeWithUnderscore", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "getColumnValue", + "args": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 113, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "getSelectedNodesMap", + "args": [ + { + "name": "selectedNodes", + "type": "[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]" + } + ], + "optional": false, + "returnType": "{}", + "typeParameters": [], + "line": 62, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet a mapping of node/component id strings to true.\nexample if\nselectedNodes = [\n {\n nodeId: \"node1\",\n componentId: \"343b8aesf7\"\n },\n {\n nodeId: \"node2\",\n componentId: \"b34gaf0ug2\"\n },\n {\n nodeId: \"node3\"\n }\n]\n\nthis function will return\n{\n \"node1-343b8aesf7\": true,\n \"node2-b34gaf0ug2\": true,\n \"node3\": true\n}\n\na componentId field\n", + "description": "

Get a mapping of node/component id strings to true.\nexample if\nselectedNodes = [\n {\n nodeId: "node1",\n componentId: "343b8aesf7"\n },\n {\n nodeId: "node2",\n componentId: "b34gaf0ug2"\n },\n {\n nodeId: "node3"\n }\n]

\n

this function will return\n{\n "node1-343b8aesf7": true,\n "node2-b34gaf0ug2": true,\n "node3": true\n}

\n

a componentId field

\n", + "jsdoctags": [ + { + "name": { + "pos": 1979, + "end": 1992, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "selectedNodes" + }, + "type": "[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]", + "tagName": { + "pos": 1973, + "end": 1978, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

an array of objects that contain a nodeId field and maybe also\na componentId field

\n" + }, + { + "tagName": { + "pos": 2087, + "end": 2093, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

a mapping of node/component id strings to true

\n" + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "getStudentDataString", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 157, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the plain text representation of the student work.\n", + "description": "

Get the plain text representation of the student work.

\n", + "jsdoctags": [ + { + "name": { + "pos": 5328, + "end": 5342, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 5322, + "end": 5327, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

A component state that contains the student work.

\n", + "typeExpression": { + "pos": 5343, + "end": 5351, + "kind": 310, + "id": 0, + "flags": 16842752, + "modifierFlagsCache": 0, + "transformFlags": 0, + "type": { + "pos": 5344, + "end": 5350, + "kind": 151, + "id": 0, + "flags": 16777216, + "transformFlags": 1 + } + } + }, + { + "tagName": { + "pos": 5408, + "end": 5415, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

A string that can be placed in a csv cell.

\n", + "returnType": "string" + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "insertColumnAtEnd", + "args": [ + { + "name": "headerRow", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 121, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "headerRow", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "insertColumnBeforeResponseColumn", + "args": [ + { + "name": "headerRow", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 117, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "headerRow", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "isComponentSelected", + "args": [ + { + "name": "selectedNodesMap", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 138, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if a component is selected\nto true\nexample\n{\n \"node1-38fj20egrj\": true,\n \"node1-20dbj2e0sf\": true\n}\n", + "description": "

Check if a component is selected\nto true\nexample\n{\n "node1-38fj20egrj": true,\n "node1-20dbj2e0sf": true\n}

\n", + "jsdoctags": [ + { + "name": { + "pos": 4590, + "end": 4606, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "selectedNodesMap" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4584, + "end": 4589, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

a map of node id and component id strings\nto true\nexample\n{\n"node1-38fj20egrj": true,\n"node1-20dbj2e0sf": true\n}

\n" + }, + { + "name": { + "pos": 4766, + "end": 4772, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4760, + "end": 4765, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id to check

\n" + }, + { + "name": { + "pos": 4806, + "end": 4817, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4800, + "end": 4805, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component id to check

\n" + }, + { + "tagName": { + "pos": 4850, + "end": 4856, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether the component is selected

\n" + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "populateColumnNameMappings", + "args": [ + { + "name": "columnNames", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 103, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "columnNames", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "setColumnValue", + "args": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "value", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 109, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "value", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "setDataExportContext", + "args": [ + { + "name": "context", + "type": "DataExportContext", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "context", + "type": "DataExportContext", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "setRunInfo", + "args": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + } + ], + "indexSignatures": [], + "extends": [ + "AbstractDataExportStrategy" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "ExportController", + "id": "class-ExportController-32d0c07e1b952f942c31cc04284d298354e022494e216b2fe3f99c333802008912d613d17616fc0df76883c83c5984351b586ef23db8d9ae6b5c54a4d704313d", + "file": "src/assets/wise5/classroomMonitor/dataExport/exportController.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "'use strict';\n\nimport * as FileSaver from 'file-saver';\n\nclass ExportController {\n maxExcelCellSize: number = 32767;\n\n constructor() {}\n\n /**\n * Generate the csv file and have the client download it\n * @param rows a 2D array that represents the rows in the export. each row contains an array. the\n * inner array contains strings or numbers which represent the cell values in the export.\n * @param fileName the name of the file that will be generated\n */\n generateCSVFile(rows: any[], fileName: string): void {\n const csvString = this.generateCSVString(rows);\n const csvBlob = new Blob([csvString], { type: 'text/csv' });\n FileSaver.saveAs(csvBlob, fileName);\n }\n\n private generateCSVString(rows: any[]): string {\n let csvString = '';\n for (const row of rows) {\n csvString += this.createCSVRow(row);\n }\n return csvString;\n }\n\n private createCSVRow(row: any[]): string {\n let csvString = '';\n for (const cell of row) {\n csvString += `${this.createCSVCell(cell)},`;\n }\n csvString += '\\r\\n';\n return csvString;\n }\n\n private createCSVCell(cell: any): string {\n let csvString = '';\n if (this.isEmpty(cell)) {\n csvString = ' ';\n } else if (this.isObject(cell)) {\n csvString = JSON.stringify(cell);\n csvString = csvString.replace(/\"/g, '\"\"');\n csvString = this.wrapInDoubleQuotes(csvString);\n } else if (this.isString(cell)) {\n csvString = this.wrapInDoubleQuotes(cell);\n } else {\n csvString = cell;\n }\n if (this.isStringTooLarge(csvString)) {\n csvString = 'Data Too Large';\n }\n return csvString;\n }\n\n private isEmpty(data: any): boolean {\n return data == null || data === '' || typeof data === 'undefined';\n }\n\n private isObject(data: any): boolean {\n return typeof data === 'object';\n }\n\n private isString(data: any): boolean {\n return typeof data === 'string';\n }\n\n private wrapInDoubleQuotes(str: string): string {\n return `\"${str}\"`;\n }\n\n private isStringTooLarge(str: string): boolean {\n return str.length >= this.maxExcelCellSize;\n }\n}\n\nexport default ExportController;\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [], + "line": 6 + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "maxExcelCellSize", + "defaultValue": "32767", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 6 + } + ], + "methods": [ + { + "name": "createCSVCell", + "args": [ + { + "name": "cell", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 39, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "cell", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createCSVRow", + "args": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 30, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "generateCSVFile", + "args": [ + { + "name": "rows", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "fileName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 16, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGenerate the csv file and have the client download it\ninner array contains strings or numbers which represent the cell values in the export.\n", + "description": "

Generate the csv file and have the client download it\ninner array contains strings or numbers which represent the cell values in the export.

\n", + "jsdoctags": [ + { + "name": { + "pos": 216, + "end": 220, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "rows" + }, + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 210, + "end": 215, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

a 2D array that represents the rows in the export. each row contains an array. the\ninner array contains strings or numbers which represent the cell values in the export.

\n" + }, + { + "name": { + "pos": 408, + "end": 416, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "fileName" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 402, + "end": 407, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the name of the file that will be generated

\n" + } + ] + }, + { + "name": "generateCSVString", + "args": [ + { + "name": "rows", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "rows", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isEmpty", + "args": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 58, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isObject", + "args": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 62, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isString", + "args": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 66, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isStringTooLarge", + "args": [ + { + "name": "str", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 74, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "str", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "wrapInDoubleQuotes", + "args": [ + { + "name": "str", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 70, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "str", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "ExportStrategyTester", + "id": "class-ExportStrategyTester-b2e108873dd82288b9adbaa6f6e94e3f6ccf12b7b771c46d608724d95db13cda759662bdd1681909399eba2c0855af77e30a9ea51b243a99843f33ba103cfeb7", + "file": "src/assets/wise5/classroomMonitor/dataExport/strategies/ExportStrategyTester.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { of } from 'rxjs';\nimport { AnnotationService } from '../../../services/annotationService';\nimport { ConfigService } from '../../../services/configService';\nimport { DataExportService } from '../../../services/dataExportService';\nimport { TeacherDataService } from '../../../services/teacherDataService';\nimport { TeacherProjectService } from '../../../services/teacherProjectService';\nimport { TeacherWebSocketService } from '../../../services/teacherWebSocketService';\nimport { AbstractDataExportStrategy } from './AbstractDataExportStrategy';\nimport { millisecondsToDateTime } from '../../../common/datetime/datetime';\nimport { copy } from '../../../common/object/object';\nimport { ComponentState } from '../../../../../app/domain/componentState';\nimport { Annotation } from '../../../common/Annotation';\nimport { ComponentDataExportParams } from '../ComponentDataExportParams';\nimport { ExportItemComponent } from '../export-item/export-item.component';\nimport { Node } from '../../../common/Node';\n\nexport class ExportStrategyTester {\n annotationService: AnnotationService = new AnnotationService(null, null, null);\n component: any;\n componentExportStrategy: any;\n componentId: string = 'component1';\n componentPrompt: string = 'This is the prompt.';\n componentPosition: number = 0;\n componentPartNumber: number = this.componentPosition + 1;\n configService: ConfigService;\n dataExportService: DataExportService;\n endTimeMilliseconds: number = 1606780800000; // 2020-11-30\n endDate = millisecondsToDateTime(this.endTimeMilliseconds);\n generateCSVFileSpy: jasmine.Spy;\n nodeId: string = 'node1';\n nodePositionAndTitle: string = '1.1: Test Step';\n periodId: number = 100;\n periodName: string = 'Period 1';\n projectId: number = 10;\n projectTitle: string = 'Test Project';\n runId: number = 10;\n startTimeMilliseconds: number = 1577836800000; // 2019-12-31\n startDate = millisecondsToDateTime(this.startTimeMilliseconds);\n stepNumber: string = '1.1';\n studentName1 = 'Student A';\n studentName2 = 'Student B';\n studentWorkId1 = 10000;\n studentWorkId2 = 10001;\n studentWorkId3 = 10002;\n studentWorkId4 = 10003;\n studentWorkResponse1 = 'Hello';\n studentWorkResponse2 = 'World';\n studentWorkResponse3 = 'Heat';\n studentWorkResponse4 = 'Energy';\n studentWorkTimestampMilliseconds1 = 1577923200000; // 2020-01-01\n studentWorkTimestampMilliseconds2 = 1578009600000; // 2020-01-02\n studentWorkTimestampMilliseconds3 = 1578009600000; // 2020-01-03\n studentWorkTimestampMilliseconds4 = 1578096000000; // 2020-01-04\n studentWorkTimestamp1 = millisecondsToDateTime(this.studentWorkTimestampMilliseconds1);\n studentWorkTimestamp2 = millisecondsToDateTime(this.studentWorkTimestampMilliseconds2);\n studentWorkTimestamp3 = millisecondsToDateTime(this.studentWorkTimestampMilliseconds3);\n studentWorkTimestamp4 = millisecondsToDateTime(this.studentWorkTimestampMilliseconds4);\n dataService: TeacherDataService;\n teacherProjectService: TeacherProjectService;\n teacherWebSocketService: TeacherWebSocketService = new TeacherWebSocketService(\n null,\n null,\n null,\n null\n );\n userId1: number = 100;\n userId2: number = 101;\n workgroupId1: number = 1000;\n workgroupId2: number = 1001;\n workgroupIdToUserInfo = {};\n workgroupUserInfo1 = {\n periodName: this.periodName,\n users: [{ id: this.userId1, name: this.studentName1 }]\n };\n workgroupUserInfo2 = {\n periodName: this.periodName,\n users: [{ id: this.userId2, name: this.studentName2 }]\n };\n\n setUpServices(): void {\n this.setUpConfigService();\n this.setUpDataExportService();\n this.setUpTeacherProjectService();\n this.setUpTeacherDataService();\n this.setUpWorkgroups();\n }\n\n setUpConfigService(): void {\n this.configService = new ConfigService(null, null);\n spyOn(this.configService, 'getUserInfoByWorkgroupId').and.callFake((workgroupId: number) => {\n return this.workgroupIdToUserInfo[workgroupId];\n });\n spyOn(this.configService, 'getRunId').and.returnValue(this.runId);\n spyOn(this.configService, 'getProjectId').and.returnValue(this.projectId);\n spyOn(this.configService, 'getRunName').and.returnValue(this.projectTitle);\n this.configService.config = {\n startTime: this.startTimeMilliseconds,\n endTime: this.endTimeMilliseconds\n };\n }\n\n setUpDataExportService(): void {\n this.dataExportService = new DataExportService(null, null, null);\n spyOn(this.dataExportService, 'retrieveStudentData').and.returnValue(of({}));\n }\n\n setUpTeacherProjectService(): void {\n this.teacherProjectService = new TeacherProjectService(null, null, null, null, null);\n spyOn(this.teacherProjectService, 'getNodePositionById').and.returnValue(this.stepNumber);\n spyOn(this.teacherProjectService, 'getNodePositionAndTitle').and.returnValue(\n this.nodePositionAndTitle\n );\n const node = new Node();\n node.components = [{ id: this.componentId }];\n spyOn(this.teacherProjectService, 'getNode').and.returnValue(node);\n spyOn(this.teacherProjectService, 'getProjectTitle').and.returnValue(this.projectTitle);\n }\n\n setUpTeacherDataService(): void {\n this.dataService = new TeacherDataService(\n this.annotationService,\n this.configService,\n null,\n this.teacherProjectService,\n this.teacherWebSocketService\n );\n }\n\n setUpWorkgroups(): void {\n this.addWorkgroup(this.workgroupId1, this.workgroupUserInfo1);\n this.addWorkgroup(this.workgroupId2, this.workgroupUserInfo2);\n }\n\n setUpExportStrategy(componentExportStrategy: AbstractDataExportStrategy): void {\n this.componentExportStrategy = componentExportStrategy;\n this.componentExportStrategy.controller = this.createDataExportComponent();\n this.componentExportStrategy.annotationService = this.annotationService;\n this.componentExportStrategy.configService = this.configService;\n this.componentExportStrategy.dataExportService = this.dataExportService;\n this.componentExportStrategy.projectService = this.teacherProjectService;\n this.componentExportStrategy.dataService = this.dataService;\n }\n\n createDataExportComponent(): any {\n const controller = new ExportItemComponent(\n this.annotationService,\n this.configService,\n this.dataExportService,\n this.dataService,\n null,\n this.teacherProjectService,\n null,\n null\n );\n this.generateCSVFileSpy = spyOn(this.componentExportStrategy, 'generateCSVFile').and.callFake(\n () => {}\n );\n return controller;\n }\n\n setStudentData(componentStates: any[]): void {\n this.dataService.processComponentStates(componentStates);\n }\n\n setAnnotations(annotations: any[]): void {\n this.annotationService.annotations = annotations;\n }\n\n addWorkgroup(workgroupId: number, workgroupUserInfo: any): void {\n this.workgroupIdToUserInfo[workgroupId] = workgroupUserInfo;\n }\n\n setComponent(component: any): void {\n this.component = component;\n }\n\n createExpectedFileName(componentTypeWithUnderscore: string): string {\n return (\n `${this.runId}_step_${this.stepNumber}_component_` +\n `${this.componentPartNumber}_${componentTypeWithUnderscore}_work.csv`\n );\n }\n\n createHeaderRowInsertAdditionalColumnsBeforeResponse(\n additionalHeaderColumns: string[]\n ): string[] {\n const headerRow = copy(this.componentExportStrategy.defaultColumnNames);\n additionalHeaderColumns.forEach((columnName) => {\n headerRow.splice(headerRow.indexOf('Reponse'), 0, columnName);\n });\n return headerRow;\n }\n\n createHeaderRowAddAdditionalColumnsAtEnd(additionalHeaderColumns: string[]): string[] {\n const headerRow = copy(this.componentExportStrategy.defaultColumnNames);\n return headerRow.concat(additionalHeaderColumns);\n }\n\n createComponentDataExportParams(\n canViewStudentNames: boolean = true,\n includeOnlySubmits: boolean = false,\n includeStudentNames: boolean = true\n ): ComponentDataExportParams {\n return {\n canViewStudentNames: canViewStudentNames,\n includeOnlySubmits: includeOnlySubmits,\n includeStudentNames: includeStudentNames,\n workSelectionType: null\n };\n }\n\n createComponentState(\n componentType: string,\n studentWorkId: number,\n timestamp: number,\n isSubmit: boolean,\n studentData: any,\n workgroupId: number\n ): ComponentState {\n return new ComponentState({\n id: studentWorkId,\n clientSaveTime: timestamp,\n componentId: this.componentId,\n componentType: componentType,\n isSubmit: isSubmit,\n nodeId: this.nodeId,\n periodId: this.periodId,\n runId: this.runId,\n serverSaveTime: timestamp,\n studentData: studentData,\n workgroupId: workgroupId\n });\n }\n\n createAnnotation(\n data: any,\n studentWorkId: number,\n toWorkgroupId: number,\n type: string\n ): Annotation {\n return new Annotation({\n componentId: this.componentId,\n data: data,\n nodeId: this.nodeId,\n studentWorkId: studentWorkId,\n toWorkgroupId: toWorkgroupId,\n type: type\n });\n }\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "annotationService", + "defaultValue": "new AnnotationService(null, null, null)", + "deprecated": false, + "deprecationMessage": "", + "type": "AnnotationService", + "indexKey": "", + "optional": false, + "description": "", + "line": 18 + }, + { + "name": "component", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 19 + }, + { + "name": "componentExportStrategy", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 20 + }, + { + "name": "componentId", + "defaultValue": "'component1'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 21 + }, + { + "name": "componentPartNumber", + "defaultValue": "this.componentPosition + 1", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 24 + }, + { + "name": "componentPosition", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 23 + }, + { + "name": "componentPrompt", + "defaultValue": "'This is the prompt.'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 22 + }, + { + "name": "configService", + "deprecated": false, + "deprecationMessage": "", + "type": "ConfigService", + "indexKey": "", + "optional": false, + "description": "", + "line": 25 + }, + { + "name": "dataExportService", + "deprecated": false, + "deprecationMessage": "", + "type": "DataExportService", + "indexKey": "", + "optional": false, + "description": "", + "line": 26 + }, + { + "name": "dataService", + "deprecated": false, + "deprecationMessage": "", + "type": "TeacherDataService", + "indexKey": "", + "optional": false, + "description": "", + "line": 58 + }, + { + "name": "endDate", + "defaultValue": "millisecondsToDateTime(this.endTimeMilliseconds)", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 28 + }, + { + "name": "endTimeMilliseconds", + "defaultValue": "1606780800000", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 27 + }, + { + "name": "generateCSVFileSpy", + "deprecated": false, + "deprecationMessage": "", + "type": "jasmine.Spy", + "indexKey": "", + "optional": false, + "description": "", + "line": 29 + }, + { + "name": "nodeId", + "defaultValue": "'node1'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 30 + }, + { + "name": "nodePositionAndTitle", + "defaultValue": "'1.1: Test Step'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 31 + }, + { + "name": "periodId", + "defaultValue": "100", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 32 + }, + { + "name": "periodName", + "defaultValue": "'Period 1'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 33 + }, + { + "name": "projectId", + "defaultValue": "10", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 34 + }, + { + "name": "projectTitle", + "defaultValue": "'Test Project'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 35 + }, + { + "name": "runId", + "defaultValue": "10", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 36 + }, + { + "name": "startDate", + "defaultValue": "millisecondsToDateTime(this.startTimeMilliseconds)", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 38 + }, + { + "name": "startTimeMilliseconds", + "defaultValue": "1577836800000", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 37 + }, + { + "name": "stepNumber", + "defaultValue": "'1.1'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 39 + }, + { + "name": "studentName1", + "defaultValue": "'Student A'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 40 + }, + { + "name": "studentName2", + "defaultValue": "'Student B'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 41 + }, + { + "name": "studentWorkId1", + "defaultValue": "10000", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 42 + }, + { + "name": "studentWorkId2", + "defaultValue": "10001", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 43 + }, + { + "name": "studentWorkId3", + "defaultValue": "10002", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 44 + }, + { + "name": "studentWorkId4", + "defaultValue": "10003", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 45 + }, + { + "name": "studentWorkResponse1", + "defaultValue": "'Hello'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 46 + }, + { + "name": "studentWorkResponse2", + "defaultValue": "'World'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 47 + }, + { + "name": "studentWorkResponse3", + "defaultValue": "'Heat'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 48 + }, + { + "name": "studentWorkResponse4", + "defaultValue": "'Energy'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 49 + }, + { + "name": "studentWorkTimestamp1", + "defaultValue": "millisecondsToDateTime(this.studentWorkTimestampMilliseconds1)", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 54 + }, + { + "name": "studentWorkTimestamp2", + "defaultValue": "millisecondsToDateTime(this.studentWorkTimestampMilliseconds2)", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 55 + }, + { + "name": "studentWorkTimestamp3", + "defaultValue": "millisecondsToDateTime(this.studentWorkTimestampMilliseconds3)", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 56 + }, + { + "name": "studentWorkTimestamp4", + "defaultValue": "millisecondsToDateTime(this.studentWorkTimestampMilliseconds4)", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 57 + }, + { + "name": "studentWorkTimestampMilliseconds1", + "defaultValue": "1577923200000", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 50 + }, + { + "name": "studentWorkTimestampMilliseconds2", + "defaultValue": "1578009600000", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 51 + }, + { + "name": "studentWorkTimestampMilliseconds3", + "defaultValue": "1578009600000", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 52 + }, + { + "name": "studentWorkTimestampMilliseconds4", + "defaultValue": "1578096000000", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 53 + }, + { + "name": "teacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "type": "TeacherProjectService", + "indexKey": "", + "optional": false, + "description": "", + "line": 59 + }, + { + "name": "teacherWebSocketService", + "defaultValue": "new TeacherWebSocketService(\n null,\n null,\n null,\n null\n )", + "deprecated": false, + "deprecationMessage": "", + "type": "TeacherWebSocketService", + "indexKey": "", + "optional": false, + "description": "", + "line": 60 + }, + { + "name": "userId1", + "defaultValue": "100", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 66 + }, + { + "name": "userId2", + "defaultValue": "101", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 67 + }, + { + "name": "workgroupId1", + "defaultValue": "1000", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 68 + }, + { + "name": "workgroupId2", + "defaultValue": "1001", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 69 + }, + { + "name": "workgroupIdToUserInfo", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "object", + "indexKey": "", + "optional": false, + "description": "", + "line": 70 + }, + { + "name": "workgroupUserInfo1", + "defaultValue": "{\n periodName: this.periodName,\n users: [{ id: this.userId1, name: this.studentName1 }]\n }", + "deprecated": false, + "deprecationMessage": "", + "type": "object", + "indexKey": "", + "optional": false, + "description": "", + "line": 71 + }, + { + "name": "workgroupUserInfo2", + "defaultValue": "{\n periodName: this.periodName,\n users: [{ id: this.userId2, name: this.studentName2 }]\n }", + "deprecated": false, + "deprecationMessage": "", + "type": "object", + "indexKey": "", + "optional": false, + "description": "", + "line": 75 + } + ], + "methods": [ + { + "name": "addWorkgroup", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "workgroupUserInfo", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 169, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "workgroupUserInfo", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createAnnotation", + "args": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "toWorkgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "type", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Annotation", + "typeParameters": [], + "line": 235, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "toWorkgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "type", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createComponentDataExportParams", + "args": [ + { + "name": "canViewStudentNames", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "true" + }, + { + "name": "includeOnlySubmits", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + }, + { + "name": "includeStudentNames", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "true" + } + ], + "optional": false, + "returnType": "ComponentDataExportParams", + "typeParameters": [], + "line": 199, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "canViewStudentNames", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "true", + "tagName": { + "text": "param" + } + }, + { + "name": "includeOnlySubmits", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + }, + { + "name": "includeStudentNames", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "true", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createComponentState", + "args": [ + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "timestamp", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "ComponentState", + "typeParameters": [], + "line": 212, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "timestamp", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createDataExportComponent", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 144, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "createExpectedFileName", + "args": [ + { + "name": "componentTypeWithUnderscore", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 177, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentTypeWithUnderscore", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createHeaderRowAddAdditionalColumnsAtEnd", + "args": [ + { + "name": "additionalHeaderColumns", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string[]", + "typeParameters": [], + "line": 194, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "additionalHeaderColumns", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createHeaderRowInsertAdditionalColumnsBeforeResponse", + "args": [ + { + "name": "additionalHeaderColumns", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string[]", + "typeParameters": [], + "line": 184, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "additionalHeaderColumns", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setAnnotations", + "args": [ + { + "name": "annotations", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 165, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "annotations", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setComponent", + "args": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 173, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setStudentData", + "args": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 161, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setUpConfigService", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 88, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "setUpDataExportService", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 102, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "setUpExportStrategy", + "args": [ + { + "name": "componentExportStrategy", + "type": "AbstractDataExportStrategy", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 134, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentExportStrategy", + "type": "AbstractDataExportStrategy", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setUpServices", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 80, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "setUpTeacherDataService", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 119, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "setUpTeacherProjectService", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 107, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "setUpWorkgroups", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 129, + "deprecated": false, + "deprecationMessage": "" + } + ], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "Feature", + "id": "class-Feature-b54dc77abad3db796aa805818cd5160713d34cba3d5a3a92143152f08b31d585f6897e9ec138d9b114fc50cd958543d5f8a36746750d451d0f6fbb88a56e24bd", + "file": "src/app/modules/library/Feature.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "export class Feature {\n id: string = '';\n name: string = '';\n\n constructor(id: string = '', name: string = '') {\n this.id = id;\n this.name = name;\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "''" + }, + { + "name": "name", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "''" + } + ], + "line": 3, + "jsdoctags": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "''", + "tagName": { + "text": "param" + } + }, + { + "name": "name", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "''", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "id", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 2 + }, + { + "name": "name", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 3 + } + ], + "methods": [], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "FeedbackRule", + "id": "class-FeedbackRule-24324d0a63f0b1c7050e657ab90bebbcc0e8897755251ba6052a2dab9c947348b48119c617873af689925f7e7cc233f8818b2d8504fd4d46c3e9538facea9fce", + "file": "src/assets/wise5/components/common/feedbackRule/FeedbackRule.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { FeedbackRuleExpression } from './FeedbackRuleExpression';\n\nexport class FeedbackRule {\n id?: string;\n expression: string;\n feedback?: string | string[];\n prompt?: string;\n\n constructor(jsonObject: any = {}) {\n for (const key of Object.keys(jsonObject)) {\n if (jsonObject[key] != null) {\n this[key] = jsonObject[key];\n }\n }\n }\n\n static isSpecialRule(feedbackRule: FeedbackRule): boolean {\n return ['isDefault', 'isFinalSubmit', 'isSecondToLastSubmit', 'isNonScorable'].includes(\n feedbackRule.expression\n );\n }\n\n static isSecondToLastSubmitRule(feedbackRule: FeedbackRule): boolean {\n return feedbackRule.expression === 'isSecondToLastSubmit';\n }\n\n static isFinalSubmitRule(feedbackRule: FeedbackRule): boolean {\n return feedbackRule.expression === 'isFinalSubmit';\n }\n\n static isDefaultRule(feedbackRule: FeedbackRule): boolean {\n return feedbackRule.expression === 'isDefault';\n }\n\n getPostfixExpression(): string[] {\n return new FeedbackRuleExpression(this.expression).getPostfix();\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "jsonObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "{}" + } + ], + "line": 7, + "jsdoctags": [ + { + "name": "jsonObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "{}", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "expression", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 5 + }, + { + "name": "feedback", + "deprecated": false, + "deprecationMessage": "", + "type": "string | string[]", + "indexKey": "", + "optional": true, + "description": "", + "line": 6 + }, + { + "name": "id", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": true, + "description": "", + "line": 4 + }, + { + "name": "prompt", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": true, + "description": "", + "line": 7 + } + ], + "methods": [ + { + "name": "getPostfixExpression", + "args": [], + "optional": false, + "returnType": "string[]", + "typeParameters": [], + "line": 35, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isDefaultRule", + "args": [ + { + "name": "feedbackRule", + "type": "FeedbackRule", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 31, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "feedbackRule", + "type": "FeedbackRule", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isFinalSubmitRule", + "args": [ + { + "name": "feedbackRule", + "type": "FeedbackRule", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 27, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "feedbackRule", + "type": "FeedbackRule", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isSecondToLastSubmitRule", + "args": [ + { + "name": "feedbackRule", + "type": "FeedbackRule", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 23, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "feedbackRule", + "type": "FeedbackRule", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isSpecialRule", + "args": [ + { + "name": "feedbackRule", + "type": "FeedbackRule", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 17, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "feedbackRule", + "type": "FeedbackRule", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "FeedbackRuleComponent", + "id": "class-FeedbackRuleComponent-7780f48925526ebfc17c09ccbbe22fb875ee4e0dfc4ef0becc92af6cc41e43aff9f4377a098213c95e43ad85001eb5f74eb2894137b2975ff56211d3c072f4dc", + "file": "src/assets/wise5/components/feedbackRule/FeedbackRuleComponent.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { FeedbackRule } from '../common/feedbackRule/FeedbackRule';\n\nexport class FeedbackRuleComponent {\n constructor(\n private feedbackRules: FeedbackRule[],\n private maxSubmitCount: number,\n private multipleFeedbackTextsForSameRuleAllowed: boolean\n ) {}\n\n getFeedbackRules(): FeedbackRule[] {\n return this.feedbackRules;\n }\n\n getNumberOfSubmitsLeft(submitCounter: number): number {\n return this.maxSubmitCount - submitCounter;\n }\n\n hasMaxSubmitCount(): boolean {\n return this.maxSubmitCount != null;\n }\n\n hasMaxSubmitCountAndUsedAllSubmits(submitCounter: number): boolean {\n return this.hasMaxSubmitCount() && submitCounter >= this.maxSubmitCount;\n }\n\n isMultipleFeedbackTextsForSameRuleAllowed(): boolean {\n return this.multipleFeedbackTextsForSameRuleAllowed;\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "feedbackRules", + "type": "FeedbackRule[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "maxSubmitCount", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "multipleFeedbackTextsForSameRuleAllowed", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 3, + "jsdoctags": [ + { + "name": "feedbackRules", + "type": "FeedbackRule[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "maxSubmitCount", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "multipleFeedbackTextsForSameRuleAllowed", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [], + "methods": [ + { + "name": "getFeedbackRules", + "args": [], + "optional": false, + "returnType": "FeedbackRule[]", + "typeParameters": [], + "line": 10, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getNumberOfSubmitsLeft", + "args": [ + { + "name": "submitCounter", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 14, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "submitCounter", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "hasMaxSubmitCount", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 18, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "hasMaxSubmitCountAndUsedAllSubmits", + "args": [ + { + "name": "submitCounter", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "submitCounter", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isMultipleFeedbackTextsForSameRuleAllowed", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "" + } + ], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "FeedbackRuleEvaluator", + "id": "class-FeedbackRuleEvaluator-c1a8d55e9e99a6346f24e218340a14cdf53edb19a1aeb34cdab33604f9cef2a732d68ed8df3864fd4552706c7c8a9619e0ec4ecb010a1557c2a9e7446bf9cdfa", + "file": "src/assets/wise5/components/common/feedbackRule/FeedbackRuleEvaluator.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { Component } from '../../../common/Component';\nimport { ConfigService } from '../../../services/configService';\nimport { ConstraintService } from '../../../services/constraintService';\nimport { FeedbackRuleComponent } from '../../feedbackRule/FeedbackRuleComponent';\nimport { PeerGroup } from '../../peerChat/PeerGroup';\nimport { CRaterResponse } from '../cRater/CRaterResponse';\nimport { FeedbackRule } from './FeedbackRule';\nimport { FeedbackRuleExpression } from './FeedbackRuleExpression';\nimport { Response } from './Response';\nimport { TermEvaluator } from './TermEvaluator/TermEvaluator';\nimport { TermEvaluatorFactory } from './TermEvaluator/TermEvaluatorFactory';\n\nexport class FeedbackRuleEvaluator {\n defaultFeedback = $localize`Thanks for submitting your response.`;\n protected factory;\n protected referenceComponent: Component;\n protected peerGroup: PeerGroup;\n\n constructor(\n protected component: FeedbackRuleComponent,\n protected configService: ConfigService,\n protected constraintService: ConstraintService\n ) {\n this.factory = new TermEvaluatorFactory(configService, constraintService);\n }\n\n getFeedbackRule(responses: T): FeedbackRule {\n return (\n this.component\n .getFeedbackRules()\n .find((rule) => this.satisfiesRule(responses, Object.assign(new FeedbackRule(), rule))) ??\n this.getDefaultRule(this.component.getFeedbackRules())\n );\n }\n\n protected satisfiesRule(responses: T, rule: FeedbackRule): boolean {\n return FeedbackRule.isSpecialRule(rule)\n ? this.satisfiesSpecialRule(responses, rule)\n : this.satisfiesSpecificRule(responses, rule);\n }\n\n private satisfiesSpecialRule(responses: T, rule: FeedbackRule): boolean {\n return (\n this.satisfiesNonScorableRule(responses, rule) ||\n this.satisfiesFinalSubmitRule(responses, rule) ||\n this.satisfiesSecondToLastSubmitRule(responses, rule)\n );\n }\n\n protected satisfiesFinalSubmitRule(responses: T, rule: FeedbackRule): boolean {\n return (\n this.hasMaxSubmitAndIsFinalSubmitRule(rule) &&\n this.component.hasMaxSubmitCountAndUsedAllSubmits(\n responses[responses.length - 1].submitCounter\n )\n );\n }\n\n protected hasMaxSubmitAndIsFinalSubmitRule(rule: FeedbackRule): boolean {\n return this.component.hasMaxSubmitCount() && FeedbackRule.isFinalSubmitRule(rule);\n }\n\n protected satisfiesSecondToLastSubmitRule(responses: T, rule: FeedbackRule): boolean {\n return (\n this.hasMaxSubmitAndIsSecondToLastSubmitRule(rule) &&\n this.isSecondToLastSubmit(responses[responses.length - 1].submitCounter)\n );\n }\n\n protected hasMaxSubmitAndIsSecondToLastSubmitRule(rule: FeedbackRule): boolean {\n return this.component.hasMaxSubmitCount() && FeedbackRule.isSecondToLastSubmitRule(rule);\n }\n\n protected isSecondToLastSubmit(submitCounter: number): boolean {\n return this.component.getNumberOfSubmitsLeft(submitCounter) === 1;\n }\n\n protected satisfiesNonScorableRule(responses: T, rule: FeedbackRule): boolean {\n return (\n rule.expression === 'isNonScorable' &&\n (responses[responses.length - 1] as CRaterResponse).isNonScorable()\n );\n }\n\n private satisfiesSpecificRule(responses: T, rule: FeedbackRule): boolean {\n const termStack = [];\n for (const term of rule.getPostfixExpression()) {\n if (FeedbackRuleExpression.isOperand(term)) {\n termStack.push(term);\n } else {\n this.evaluateOperator(term, termStack, responses);\n }\n }\n if (termStack.length === 1) {\n return this.evaluateTerm(termStack.pop(), responses);\n }\n return true;\n }\n\n private evaluateOperator(operator: string, termStack: string[], responses: T) {\n if (this.evaluateOperatorExpression(operator, termStack, responses)) {\n termStack.push('true');\n } else {\n termStack.push('false');\n }\n }\n\n private evaluateOperatorExpression(operator: string, termStack: string[], responses: T): boolean {\n if (['&&', '||'].includes(operator)) {\n return this.evaluateAndOrExpression(operator, termStack, responses);\n } else {\n return this.evaluateNotExpression(termStack, responses);\n }\n }\n\n private evaluateAndOrExpression(operator: string, termStack: string[], responses: T): boolean {\n const term1 = termStack.pop();\n const term2 = termStack.pop();\n return operator === '&&'\n ? this.evaluateTerm(term1, responses) && this.evaluateTerm(term2, responses)\n : this.evaluateTerm(term1, responses) || this.evaluateTerm(term2, responses);\n }\n\n private evaluateNotExpression(termStack: string[], responses: T): boolean {\n return !this.evaluateTerm(termStack.pop(), responses);\n }\n\n protected evaluateTerm(term: string, responses: T): boolean {\n const evaluator: TermEvaluator = this.factory.getTermEvaluator(term);\n evaluator.setReferenceComponent(this.referenceComponent);\n return TermEvaluator.requiresAllResponses(term)\n ? evaluator.evaluate(responses)\n : evaluator.evaluate(responses[responses.length - 1]);\n }\n\n protected getDefaultRule(rules: FeedbackRule[]): FeedbackRule {\n return (\n rules.find((rule) => FeedbackRule.isDefaultRule(rule)) ||\n Object.assign(new FeedbackRule(), {\n id: 'default',\n expression: 'isDefault',\n feedback: this.component.isMultipleFeedbackTextsForSameRuleAllowed()\n ? [this.defaultFeedback]\n : this.defaultFeedback\n })\n );\n }\n\n setPeerGroup(peerGroup: PeerGroup): void {\n this.peerGroup = peerGroup;\n }\n\n setReferenceComponent(referenceComponent: Component): void {\n this.referenceComponent = referenceComponent;\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "component", + "type": "FeedbackRuleComponent", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "constraintService", + "type": "ConstraintService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 17, + "jsdoctags": [ + { + "name": "component", + "type": "FeedbackRuleComponent", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "constraintService", + "type": "ConstraintService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "defaultFeedback", + "defaultValue": "$localize`Thanks for submitting your response.`", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 14 + }, + { + "name": "factory", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 124 + ] + }, + { + "name": "peerGroup", + "deprecated": false, + "deprecationMessage": "", + "type": "PeerGroup", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "modifierKind": [ + 124 + ] + }, + { + "name": "referenceComponent", + "deprecated": false, + "deprecationMessage": "", + "type": "Component", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "modifierKind": [ + 124 + ] + } + ], + "methods": [ + { + "name": "evaluateAndOrExpression", + "args": [ + { + "name": "operator", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "termStack", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "responses", + "type": "T", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 116, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "operator", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "termStack", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "responses", + "type": "T", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "evaluateNotExpression", + "args": [ + { + "name": "termStack", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "responses", + "type": "T", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 124, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "termStack", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "responses", + "type": "T", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "evaluateOperator", + "args": [ + { + "name": "operator", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "termStack", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "responses", + "type": "T", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 100, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "operator", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "termStack", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "responses", + "type": "T", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "evaluateOperatorExpression", + "args": [ + { + "name": "operator", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "termStack", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "responses", + "type": "T", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 108, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "operator", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "termStack", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "responses", + "type": "T", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "evaluateTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "responses", + "type": "T", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 128, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "responses", + "type": "T", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getDefaultRule", + "args": [ + { + "name": "rules", + "type": "FeedbackRule[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "FeedbackRule", + "typeParameters": [], + "line": 136, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "rules", + "type": "FeedbackRule[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getFeedbackRule", + "args": [ + { + "name": "responses", + "type": "T", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "FeedbackRule", + "typeParameters": [], + "line": 27, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "responses", + "type": "T", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "hasMaxSubmitAndIsFinalSubmitRule", + "args": [ + { + "name": "rule", + "type": "FeedbackRule", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 59, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "rule", + "type": "FeedbackRule", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "hasMaxSubmitAndIsSecondToLastSubmitRule", + "args": [ + { + "name": "rule", + "type": "FeedbackRule", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 70, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "rule", + "type": "FeedbackRule", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isSecondToLastSubmit", + "args": [ + { + "name": "submitCounter", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 74, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "submitCounter", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "satisfiesFinalSubmitRule", + "args": [ + { + "name": "responses", + "type": "T", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "rule", + "type": "FeedbackRule", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 50, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "responses", + "type": "T", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "rule", + "type": "FeedbackRule", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "satisfiesNonScorableRule", + "args": [ + { + "name": "responses", + "type": "T", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "rule", + "type": "FeedbackRule", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 78, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "responses", + "type": "T", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "rule", + "type": "FeedbackRule", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "satisfiesRule", + "args": [ + { + "name": "responses", + "type": "T", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "rule", + "type": "FeedbackRule", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 36, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "responses", + "type": "T", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "rule", + "type": "FeedbackRule", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "satisfiesSecondToLastSubmitRule", + "args": [ + { + "name": "responses", + "type": "T", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "rule", + "type": "FeedbackRule", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 63, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "responses", + "type": "T", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "rule", + "type": "FeedbackRule", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "satisfiesSpecialRule", + "args": [ + { + "name": "responses", + "type": "T", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "rule", + "type": "FeedbackRule", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 42, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "responses", + "type": "T", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "rule", + "type": "FeedbackRule", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "satisfiesSpecificRule", + "args": [ + { + "name": "responses", + "type": "T", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "rule", + "type": "FeedbackRule", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 85, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "responses", + "type": "T", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "rule", + "type": "FeedbackRule", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setPeerGroup", + "args": [ + { + "name": "peerGroup", + "type": "PeerGroup", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 149, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "peerGroup", + "type": "PeerGroup", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setReferenceComponent", + "args": [ + { + "name": "referenceComponent", + "type": "Component", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 153, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "referenceComponent", + "type": "Component", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "FeedbackRuleEvaluatorMultipleStudents", + "id": "class-FeedbackRuleEvaluatorMultipleStudents-24740b6a42099a67d5bee8c6b8ce5551537af2152a65f1cc2f7640bc668c44841779a4afdf91bae5df9aa1b765f88d1af63566a7cdb58c6cfb3fc7c8aeac17b0", + "file": "src/assets/wise5/components/common/feedbackRule/FeedbackRuleEvaluatorMultipleStudents.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { CRaterResponse } from '../cRater/CRaterResponse';\nimport { FeedbackRule } from './FeedbackRule';\nimport { FeedbackRuleEvaluator } from './FeedbackRuleEvaluator';\nimport { Response } from './Response';\nimport { TermEvaluator } from './TermEvaluator/TermEvaluator';\n\nexport class FeedbackRuleEvaluatorMultipleStudents extends FeedbackRuleEvaluator {\n getFeedbackRules(responses: Response[]): FeedbackRule[] {\n const matchedRules = this.component\n .getFeedbackRules()\n .filter((rule) => this.satisfiesRule(responses, Object.assign(new FeedbackRule(), rule)));\n return matchedRules.length > 0\n ? matchedRules\n : [this.getDefaultRule(this.component.getFeedbackRules())];\n }\n\n protected satisfiesFinalSubmitRule(responses: Response[], feedbackRule: FeedbackRule): boolean {\n return (\n this.hasMaxSubmitAndIsFinalSubmitRule(feedbackRule) &&\n responses.some((response: CRaterResponse) => {\n return this.component.hasMaxSubmitCountAndUsedAllSubmits(response.submitCounter);\n })\n );\n }\n\n protected satisfiesSecondToLastSubmitRule(\n responses: Response[],\n feedbackRule: FeedbackRule\n ): boolean {\n return (\n this.hasMaxSubmitAndIsSecondToLastSubmitRule(feedbackRule) &&\n responses.some((response: Response) => {\n return this.isSecondToLastSubmit(response.submitCounter);\n })\n );\n }\n\n protected satisfiesNonScorableRule(\n responses: CRaterResponse[],\n feedbackRule: FeedbackRule\n ): boolean {\n return (\n feedbackRule.expression === 'isNonScorable' &&\n responses.some((response: CRaterResponse) => {\n return response.isNonScorable();\n })\n );\n }\n\n protected evaluateTerm(term: string, responses: Response[]): boolean {\n const evaluator: TermEvaluator = this.factory.getTermEvaluator(term);\n evaluator.setPeerGroup(this.peerGroup);\n evaluator.setReferenceComponent(this.referenceComponent);\n return responses.some((response: Response) => {\n return evaluator.evaluate(response);\n });\n }\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "defaultFeedback", + "defaultValue": "$localize`Thanks for submitting your response.`", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "inheritance": { + "file": "FeedbackRuleEvaluator" + } + }, + { + "name": "factory", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "FeedbackRuleEvaluator" + } + }, + { + "name": "peerGroup", + "deprecated": false, + "deprecationMessage": "", + "type": "PeerGroup", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "FeedbackRuleEvaluator" + } + }, + { + "name": "referenceComponent", + "deprecated": false, + "deprecationMessage": "", + "type": "Component", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "FeedbackRuleEvaluator" + } + } + ], + "methods": [ + { + "name": "evaluateTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "responses", + "type": "Response[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 50, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "responses", + "type": "Response[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "FeedbackRuleEvaluator" + } + }, + { + "name": "getFeedbackRules", + "args": [ + { + "name": "responses", + "type": "Response[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "FeedbackRule[]", + "typeParameters": [], + "line": 8, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "responses", + "type": "Response[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "satisfiesFinalSubmitRule", + "args": [ + { + "name": "responses", + "type": "Response[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "feedbackRule", + "type": "FeedbackRule", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 17, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "responses", + "type": "Response[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "feedbackRule", + "type": "FeedbackRule", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "FeedbackRuleEvaluator" + } + }, + { + "name": "satisfiesNonScorableRule", + "args": [ + { + "name": "responses", + "type": "CRaterResponse[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "feedbackRule", + "type": "FeedbackRule", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 38, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "responses", + "type": "CRaterResponse[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "feedbackRule", + "type": "FeedbackRule", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "FeedbackRuleEvaluator" + } + }, + { + "name": "satisfiesSecondToLastSubmitRule", + "args": [ + { + "name": "responses", + "type": "Response[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "feedbackRule", + "type": "FeedbackRule", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "responses", + "type": "Response[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "feedbackRule", + "type": "FeedbackRule", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "FeedbackRuleEvaluator" + } + }, + { + "name": "evaluateAndOrExpression", + "args": [ + { + "name": "operator", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "termStack", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "responses", + "type": "T", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 116, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "operator", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "termStack", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "responses", + "type": "T", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "FeedbackRuleEvaluator" + } + }, + { + "name": "evaluateNotExpression", + "args": [ + { + "name": "termStack", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "responses", + "type": "T", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 124, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "termStack", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "responses", + "type": "T", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "FeedbackRuleEvaluator" + } + }, + { + "name": "evaluateOperator", + "args": [ + { + "name": "operator", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "termStack", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "responses", + "type": "T", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 100, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "operator", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "termStack", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "responses", + "type": "T", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "FeedbackRuleEvaluator" + } + }, + { + "name": "evaluateOperatorExpression", + "args": [ + { + "name": "operator", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "termStack", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "responses", + "type": "T", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 108, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "operator", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "termStack", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "responses", + "type": "T", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "FeedbackRuleEvaluator" + } + }, + { + "name": "getDefaultRule", + "args": [ + { + "name": "rules", + "type": "FeedbackRule[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "FeedbackRule", + "typeParameters": [], + "line": 136, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "rules", + "type": "FeedbackRule[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "FeedbackRuleEvaluator" + } + }, + { + "name": "getFeedbackRule", + "args": [ + { + "name": "responses", + "type": "T", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "FeedbackRule", + "typeParameters": [], + "line": 27, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "responses", + "type": "T", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "FeedbackRuleEvaluator" + } + }, + { + "name": "hasMaxSubmitAndIsFinalSubmitRule", + "args": [ + { + "name": "rule", + "type": "FeedbackRule", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 59, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "rule", + "type": "FeedbackRule", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "FeedbackRuleEvaluator" + } + }, + { + "name": "hasMaxSubmitAndIsSecondToLastSubmitRule", + "args": [ + { + "name": "rule", + "type": "FeedbackRule", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 70, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "rule", + "type": "FeedbackRule", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "FeedbackRuleEvaluator" + } + }, + { + "name": "isSecondToLastSubmit", + "args": [ + { + "name": "submitCounter", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 74, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "submitCounter", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "FeedbackRuleEvaluator" + } + }, + { + "name": "satisfiesRule", + "args": [ + { + "name": "responses", + "type": "T", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "rule", + "type": "FeedbackRule", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 36, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "responses", + "type": "T", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "rule", + "type": "FeedbackRule", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "FeedbackRuleEvaluator" + } + }, + { + "name": "satisfiesSpecialRule", + "args": [ + { + "name": "responses", + "type": "T", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "rule", + "type": "FeedbackRule", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 42, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "responses", + "type": "T", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "rule", + "type": "FeedbackRule", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "FeedbackRuleEvaluator" + } + }, + { + "name": "satisfiesSpecificRule", + "args": [ + { + "name": "responses", + "type": "T", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "rule", + "type": "FeedbackRule", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 85, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "responses", + "type": "T", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "rule", + "type": "FeedbackRule", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "FeedbackRuleEvaluator" + } + }, + { + "name": "setPeerGroup", + "args": [ + { + "name": "peerGroup", + "type": "PeerGroup", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 149, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "peerGroup", + "type": "PeerGroup", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "FeedbackRuleEvaluator" + } + }, + { + "name": "setReferenceComponent", + "args": [ + { + "name": "referenceComponent", + "type": "Component", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 153, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "referenceComponent", + "type": "Component", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "FeedbackRuleEvaluator" + } + } + ], + "indexSignatures": [], + "extends": [ + "FeedbackRuleEvaluator" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "FeedbackRuleExpression", + "id": "class-FeedbackRuleExpression-34f1c698f830ec1702b1e8d73ccd35dc5f5b4f1e841f27f99ecd287b793a038023964676c831f528094fabce965f4d38a262415715013c3472a8abc526386957", + "file": "src/assets/wise5/components/common/feedbackRule/FeedbackRuleExpression.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "export class FeedbackRuleExpression {\n static operatorPrecedences = { '!': 2, '&&': 1, '||': 1 };\n\n constructor(private text: string) {}\n\n // uses shunting-yard algorithm to get expression in postfix (reverse-polish) notation\n getPostfix(): string[] {\n const result = [];\n const operatorStack = [];\n for (const symbol of this.getExpressionAsArray()) {\n if (FeedbackRuleExpression.isOperator(symbol)) {\n this.processOperator(symbol, operatorStack, result);\n } else if (FeedbackRuleExpression.isLeftParenthesis(symbol)) {\n operatorStack.push(symbol);\n } else if (FeedbackRuleExpression.isRightParenthesis(symbol)) {\n this.processRightParenthesis(operatorStack, result);\n } else {\n result.push(symbol);\n }\n }\n while (operatorStack.length > 0) {\n result.push(operatorStack.pop());\n }\n return result;\n }\n\n private getExpressionAsArray(): string[] {\n return this.text\n .replace(/ /g, '')\n .split(\n /(hasKIScore\\(\\d\\)|accumulatedIdeaCountEquals\\(\\d\\)|accumulatedIdeaCountLessThan\\(\\d\\)|accumulatedIdeaCountMoreThan\\(\\d\\)|ideaCountEquals\\(\\S+\\)|ideaCountLessThan\\(\\S+\\)|ideaCountMoreThan\\(\\S+\\)|myChoiceChosen\\(\\S+?\\)|isSubmitNumber\\(\\d+\\)|&&|\\|\\||!|\\(|\\))/g\n )\n .filter((el) => el !== '');\n }\n\n private processOperator(symbol: string, operatorStack: string[], result: string[]): void {\n while (operatorStack.length > 0) {\n const topOperatorOnStack = operatorStack[operatorStack.length - 1];\n if (\n FeedbackRuleExpression.hasGreaterPrecedence(topOperatorOnStack, symbol) ||\n FeedbackRuleExpression.hasSamePrecedence(topOperatorOnStack, symbol)\n ) {\n result.push(operatorStack.pop());\n } else {\n break;\n }\n }\n operatorStack.push(symbol);\n }\n\n private processRightParenthesis(operatorStack: string[], result: string[]): void {\n let topOperatorOnStack = operatorStack[operatorStack.length - 1];\n while (!FeedbackRuleExpression.isLeftParenthesis(topOperatorOnStack)) {\n result.push(operatorStack.pop());\n topOperatorOnStack = operatorStack[operatorStack.length - 1];\n }\n operatorStack.pop(); // discard left parenthesis\n }\n\n static isLeftParenthesis(symbol: string): boolean {\n return symbol === '(';\n }\n\n static isRightParenthesis(symbol: string): boolean {\n return symbol === ')';\n }\n\n static isOperator(symbol: string): boolean {\n return ['&&', '||', '!'].includes(symbol);\n }\n\n static isOperand(symbol: string): boolean {\n return !this.isOperator(symbol);\n }\n\n static hasGreaterPrecedence(symbol1: string, symbol2: string): boolean {\n return this.getPrecedence(symbol1) > this.getPrecedence(symbol2);\n }\n\n static hasSamePrecedence(symbol1: string, symbol2: string): boolean {\n return this.getPrecedence(symbol1) === this.getPrecedence(symbol2);\n }\n\n static getPrecedence(symbol: string): number {\n return this.operatorPrecedences[symbol] ?? 0;\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 2, + "jsdoctags": [ + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "operatorPrecedences", + "defaultValue": "{ '!': 2, '&&': 1, '||': 1 }", + "deprecated": false, + "deprecationMessage": "", + "type": "object", + "indexKey": "", + "optional": false, + "description": "", + "line": 2, + "modifierKind": [ + 126 + ] + } + ], + "methods": [ + { + "name": "getExpressionAsArray", + "args": [], + "optional": false, + "returnType": "string[]", + "typeParameters": [], + "line": 27, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "getPostfix", + "args": [], + "optional": false, + "returnType": "string[]", + "typeParameters": [], + "line": 7, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getPrecedence", + "args": [ + { + "name": "symbol", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 84, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "symbol", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "hasGreaterPrecedence", + "args": [ + { + "name": "symbol1", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "symbol2", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 76, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "symbol1", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "symbol2", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "hasSamePrecedence", + "args": [ + { + "name": "symbol1", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "symbol2", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 80, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "symbol1", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "symbol2", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isLeftParenthesis", + "args": [ + { + "name": "symbol", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 60, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "symbol", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isOperand", + "args": [ + { + "name": "symbol", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 72, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "symbol", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isOperator", + "args": [ + { + "name": "symbol", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 68, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "symbol", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isRightParenthesis", + "args": [ + { + "name": "symbol", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 64, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "symbol", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "processOperator", + "args": [ + { + "name": "symbol", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "operatorStack", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "result", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 36, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "symbol", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "operatorStack", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "result", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "processRightParenthesis", + "args": [ + { + "name": "operatorStack", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "result", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 51, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "operatorStack", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "result", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "FillXNumberOfRowsConstraintStrategy", + "id": "class-FillXNumberOfRowsConstraintStrategy-f59068c20615069a9dc22eb181af1f4e5a56e5360bfb940896eefbb0f775ca0d20ec041619f0afc0d929abd40575ae78b09353ba9e493a228a44b03f67d65482", + "file": "src/assets/wise5/common/constraint/strategies/FillXNumberOfRowsConstraintStrategy.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { AbstractConstraintStrategy } from './AbstractConstraintStrategy';\n\nexport class FillXNumberOfRowsConstraintStrategy extends AbstractConstraintStrategy {\n evaluate(criteria: any): boolean {\n const componentState = this.dataService.getLatestComponentStateByNodeIdAndComponentId(\n criteria.params.nodeId,\n criteria.params.componentId\n );\n const tableService = this.componentServiceLookupService.getService('Table');\n return (\n componentState != null &&\n tableService.hasRequiredNumberOfFilledRows(\n componentState,\n criteria.params.requiredNumberOfFilledRows,\n criteria.params.tableHasHeaderRow,\n criteria.params.requireAllCellsInARowToBeFilled\n )\n );\n }\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "annotationService", + "deprecated": false, + "deprecationMessage": "", + "type": "AnnotationService", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "completionService", + "deprecated": false, + "deprecationMessage": "", + "type": "CompletionService", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "componentServiceLookupService", + "deprecated": false, + "deprecationMessage": "", + "type": "ComponentServiceLookupService", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "configService", + "deprecated": false, + "deprecationMessage": "", + "type": "ConfigService", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "context", + "deprecated": false, + "deprecationMessage": "", + "type": "EvaluateConstraintContext", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "dataService", + "deprecated": false, + "deprecationMessage": "", + "type": "StudentDataService", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "notebookService", + "deprecated": false, + "deprecationMessage": "", + "type": "NotebookService", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "tagService", + "deprecated": false, + "deprecationMessage": "", + "type": "TagService", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + } + ], + "methods": [ + { + "name": "evaluate", + "args": [ + { + "name": "criteria", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 4, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "criteria", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "setContext", + "args": [ + { + "name": "context", + "type": "EvaluateConstraintContext", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 21, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "context", + "type": "EvaluateConstraintContext", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractConstraintStrategy" + } + } + ], + "indexSignatures": [], + "extends": [ + "AbstractConstraintStrategy" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "GradeLevel", + "id": "class-GradeLevel-7c33868982fe62746befd7b21df1057e1c08f9031c3a96499a4b02d4ed1ec1424e7c8b6be691e7e0ae28b332bad8d2df1fd334bd89ff101151156a18332d8076", + "file": "src/app/modules/library/GradeLevel.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "export enum Grade {\n Six = 6,\n Seven = 7,\n Eight = 8,\n Nine = 9,\n Ten = 10,\n Eleven = 11,\n Twelve = 12\n}\n\nexport class GradeLevel {\n id: Grade;\n grade: Grade;\n\n constructor(grade: Grade) {\n this.id = grade;\n this.grade = grade;\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "grade", + "type": "Grade", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 13, + "jsdoctags": [ + { + "name": "grade", + "type": "Grade", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "grade", + "deprecated": false, + "deprecationMessage": "", + "type": "Grade", + "indexKey": "", + "optional": false, + "description": "", + "line": 13 + }, + { + "name": "id", + "deprecated": false, + "deprecationMessage": "", + "type": "Grade", + "indexKey": "", + "optional": false, + "description": "", + "line": 12 + } + ], + "methods": [], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "GraphConnectedComponentManager", + "id": "class-GraphConnectedComponentManager-b855d0b8ee54b6e3b553737558f2306eac8666f28e885fe09fa49250d2b08b63a9ac6f6a101e003083c2852be549bd70250bab2f089bfc10e2a92f563b02143b", + "file": "src/assets/wise5/components/graph/graph-connected-component-manager.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { GraphService } from './graphService';\nimport { ProjectService } from '../../services/projectService';\nimport { generateRandomKey } from '../../common/string/string';\nimport { copy } from '../../common/object/object';\n\nexport class GraphConnectedComponentManager {\n constructor(\n private graphService: GraphService,\n private projectService: ProjectService\n ) {}\n\n /**\n * Get the trials from classmates\n * @param nodeId the node id\n * @param componentId the component id\n * @param showClassmateWorkSource Whether to get the work only from the\n * period the student is in or from all the periods. The possible values\n * are \"period\" or \"class\".\n * @return a promise that will return all the trials from the classmates\n */\n getTrialsFromClassmates(\n nodeId: string,\n componentId: string,\n periodId: number,\n showWorkNodeId: string,\n showWorkComponentId: string,\n showClassmateWorkSource: 'period' | 'class'\n ): Promise {\n return new Promise((resolve, reject) => {\n this.graphService\n .getClassmateStudentWork(\n nodeId,\n componentId,\n periodId,\n showWorkNodeId,\n showWorkComponentId,\n showClassmateWorkSource\n )\n .subscribe((componentStates: any[]) => {\n const promises = [];\n for (const componentState of componentStates) {\n promises.push(this.getTrialsFromComponentState(nodeId, componentId, componentState));\n }\n Promise.all(promises).then((promiseResults) => {\n const mergedTrials = [];\n for (const trials of promiseResults) {\n for (const trial of trials) {\n mergedTrials.push(trial);\n }\n }\n resolve(mergedTrials);\n });\n });\n });\n }\n\n /**\n * Get the trials from a component state.\n * Note: The code in this function doesn't actually require usage of a\n * promise. It's just the code that calls this function that utilizes\n * promise functionality. It's possible to refactor the code so that this\n * function doesn't need to return a promise.\n * @param nodeId the node id\n * @param componentId the component id\n * @param componentState the component state\n * @return a promise that will return the trials from the component state\n */\n getTrialsFromComponentState(\n nodeId: string,\n componentId: string,\n componentState: any\n ): Promise {\n const mergedTrials = [];\n const nodePositionAndTitle = this.projectService.getNodePositionAndTitle(nodeId);\n const studentData = componentState.studentData;\n if (studentData.version == null || studentData.version === 1) {\n const series = studentData.series;\n const newTrial = {\n id: generateRandomKey(),\n name: nodePositionAndTitle,\n show: true,\n series: series\n };\n mergedTrials.push(newTrial);\n } else {\n const trials = studentData.trials;\n if (trials != null) {\n for (const trial of trials) {\n const newTrial = copy(trial);\n newTrial.name = nodePositionAndTitle;\n newTrial.show = true;\n mergedTrials.push(newTrial);\n }\n }\n }\n return Promise.resolve(mergedTrials);\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "graphService", + "type": "GraphService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 6, + "jsdoctags": [ + { + "name": "graphService", + "type": "GraphService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [], + "methods": [ + { + "name": "getTrialsFromClassmates", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "showWorkNodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "showWorkComponentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "showClassmateWorkSource", + "type": "\"period\" | \"class\"", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 21, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the trials from classmates\nperiod the student is in or from all the periods. The possible values\nare \"period\" or \"class\".\n", + "description": "

Get the trials from classmates\nperiod the student is in or from all the periods. The possible values\nare "period" or "class".

\n", + "jsdoctags": [ + { + "name": { + "pos": 433, + "end": 439, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 427, + "end": 432, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id

\n" + }, + { + "name": { + "pos": 464, + "end": 475, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 458, + "end": 463, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component id

\n" + }, + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "showWorkNodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "showWorkComponentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": { + "pos": 505, + "end": 528, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "showClassmateWorkSource" + }, + "type": "\"period\" | \"class\"", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 499, + "end": 504, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

Whether to get the work only from the\nperiod the student is in or from all the periods. The possible values\nare "period" or "class".

\n" + }, + { + "tagName": { + "pos": 678, + "end": 684, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

a promise that will return all the trials from the classmates

\n" + } + ] + }, + { + "name": "getTrialsFromComponentState", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 68, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the trials from a component state.\nNote: The code in this function doesn't actually require usage of a\npromise. It's just the code that calls this function that utilizes\npromise functionality. It's possible to refactor the code so that this\nfunction doesn't need to return a promise.\n", + "description": "

Get the trials from a component state.\nNote: The code in this function doesn't actually require usage of a\npromise. It's just the code that calls this function that utilizes\npromise functionality. It's possible to refactor the code so that this\nfunction doesn't need to return a promise.

\n", + "jsdoctags": [ + { + "name": { + "pos": 2158, + "end": 2164, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2152, + "end": 2157, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id

\n" + }, + { + "name": { + "pos": 2189, + "end": 2200, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2183, + "end": 2188, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component id

\n" + }, + { + "name": { + "pos": 2230, + "end": 2244, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2224, + "end": 2229, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component state

\n" + }, + { + "tagName": { + "pos": 2271, + "end": 2277, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

a promise that will return the trials from the component state

\n" + } + ] + } + ], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "GraphCustomLegend", + "id": "class-GraphCustomLegend-37f8585bc8030f648548e46d3350a802977d540dd1aeb8bc60005edcbf014c9c238cc7f806df8a9931a13fed7d71c528608e1d5dc573abc8af14461649955603", + "file": "src/assets/wise5/components/graph/GraphCustomLegend.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "export class GraphCustomLegend {\n static readonly HIGHCHARTS_LEGEND_CLASS: string = 'highcharts-legend';\n static readonly TRANSFORM_ATTRIBUTE_NAME: string = 'transform';\n\n customLegend: string;\n highchartsDivId: string;\n legendElementSelector: string;\n\n constructor(highchartsDivId: string, customLegend: string) {\n this.highchartsDivId = highchartsDivId;\n this.customLegend = customLegend;\n this.legendElementSelector = `#${this.highchartsDivId} .${GraphCustomLegend.HIGHCHARTS_LEGEND_CLASS}`;\n }\n\n render(): void {\n this.moveLegendToVeryLeft();\n $(this.legendElementSelector).html(this.customLegend);\n }\n\n private moveLegendToVeryLeft(): void {\n if (navigator.userAgent.includes('Firefox')) {\n this.moveLegendInFirefox();\n } else {\n this.moveLegendInOtherBrowsers();\n }\n }\n\n private moveLegendInFirefox(): void {\n /*\n * Regex to split the transform string into three groups. We will use this to replace the x\n * value of the translate.\n * Example\n * \"translate(227, 294)\"\n * The regex will create three groups\n * group 1 = \"translate(\"\n * group 2 = \"227\"\n * group 3 = \", 294)\"\n * The x value of the translate is captured in group 2.\n */\n const translateRegEx = /(translate\\()(\\d*)(,\\s*\\d*\\))/;\n const currentTransform = $(this.legendElementSelector).attr(\n GraphCustomLegend.TRANSFORM_ATTRIBUTE_NAME\n );\n const newTransform = this.setXtoZero(currentTransform, translateRegEx);\n $(this.legendElementSelector).attr(GraphCustomLegend.TRANSFORM_ATTRIBUTE_NAME, newTransform);\n }\n\n private moveLegendInOtherBrowsers(): void {\n /*\n * Regex to split the transform string into three groups. We will use this to replace the x\n * value of the matrix.\n * Example\n * \"matrix(1, 0, 0, 1, 227, 294)\"\n * The regex will create three groups\n * group 1 = \"matrix(1, 0, 0, 1, \"\n * group 2 = \"227\"\n * group 3 = \", 294)\"\n * The x value of the matrix is captured in group 2.\n */\n const matrixRegEx = /(matrix\\(\\d*,\\s*\\d*,\\s*\\d*,\\s*\\d*,\\s*)(\\d*)(,\\s*\\d*\\))/;\n const currentTransform = $(this.legendElementSelector).css(\n GraphCustomLegend.TRANSFORM_ATTRIBUTE_NAME\n );\n const newTransform = this.setXtoZero(currentTransform, matrixRegEx);\n $(this.legendElementSelector).css(GraphCustomLegend.TRANSFORM_ATTRIBUTE_NAME, newTransform);\n }\n\n private setXtoZero(transform: string, regEx: RegExp): string {\n // replace the second group with 0\n return transform.replace(regEx, '$10$3');\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "highchartsDivId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "customLegend", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 7, + "jsdoctags": [ + { + "name": "highchartsDivId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "customLegend", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "customLegend", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 5 + }, + { + "name": "HIGHCHARTS_LEGEND_CLASS", + "defaultValue": "'highcharts-legend'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 2, + "modifierKind": [ + 126, + 148 + ] + }, + { + "name": "highchartsDivId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 6 + }, + { + "name": "legendElementSelector", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 7 + }, + { + "name": "TRANSFORM_ATTRIBUTE_NAME", + "defaultValue": "'transform'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 3, + "modifierKind": [ + 126, + 148 + ] + } + ], + "methods": [ + { + "name": "moveLegendInFirefox", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 28, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "moveLegendInOtherBrowsers", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 48, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "moveLegendToVeryLeft", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 20, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "render", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 15, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "setXtoZero", + "args": [ + { + "name": "transform", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "regEx", + "type": "RegExp", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 68, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "transform", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "regEx", + "type": "RegExp", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "GraphInfo", + "id": "class-GraphInfo-e1de8837c29ee6897fd6c868bb94314fcd307d80233e86025e1734c468b0c8b2600d5897b92549ed3000258f469e1a6c46c375107718fbd4887e080e16295bb5", + "file": "src/assets/wise5/components/graph/GraphInfo.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { ComponentInfo } from '../ComponentInfo';\n\nexport class GraphInfo extends ComponentInfo {\n protected description: string = $localize`Students view graph data or add points to a graph.`;\n protected label: string = $localize`Graph`;\n protected previewExamples: any[] = [\n {\n label: $localize`Graph`,\n content: {\n id: 'abcde12345',\n type: 'Graph',\n prompt:\n 'Draw a line that shows the position graph of a person that starts at position 0 meters and then takes 50 seconds to walk 50 meters and then comes back to their start position while moving at a constant speed.',\n showSaveButton: false,\n showSubmitButton: false,\n showAddToNotebookButton: false,\n title: '',\n width: 800,\n height: 500,\n enableTrials: false,\n canCreateNewTrials: false,\n canDeleteTrials: false,\n hideAllTrialsOnNewTrial: false,\n canStudentHideSeriesOnLegendClick: false,\n roundValuesTo: 'integer',\n graphType: 'line',\n xAxis: {\n title: {\n text: 'Time (seconds)',\n useHTML: true\n },\n min: 0,\n max: 100,\n units: 's',\n locked: true,\n type: 'limits',\n allowDecimals: false\n },\n yAxis: {\n title: {\n text: 'Position (meters)',\n useHTML: true,\n style: {\n color: ''\n }\n },\n labels: {\n style: {\n color: ''\n }\n },\n min: 0,\n max: 100,\n units: 'm',\n locked: true,\n allowDecimals: false,\n opposite: false\n },\n series: [\n {\n name: 'Prediction',\n data: [],\n color: 'blue',\n dashStyle: 'Solid',\n marker: {\n symbol: 'circle'\n },\n canEdit: true,\n type: 'line'\n }\n ],\n constraints: []\n }\n }\n ];\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "description", + "defaultValue": "$localize`Students view graph data or add points to a graph.`", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 4, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentInfo" + } + }, + { + "name": "label", + "defaultValue": "$localize`Graph`", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 5, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentInfo" + } + }, + { + "name": "previewExamples", + "defaultValue": "[\n {\n label: $localize`Graph`,\n content: {\n id: 'abcde12345',\n type: 'Graph',\n prompt:\n 'Draw a line that shows the position graph of a person that starts at position 0 meters and then takes 50 seconds to walk 50 meters and then comes back to their start position while moving at a constant speed.',\n showSaveButton: false,\n showSubmitButton: false,\n showAddToNotebookButton: false,\n title: '',\n width: 800,\n height: 500,\n enableTrials: false,\n canCreateNewTrials: false,\n canDeleteTrials: false,\n hideAllTrialsOnNewTrial: false,\n canStudentHideSeriesOnLegendClick: false,\n roundValuesTo: 'integer',\n graphType: 'line',\n xAxis: {\n title: {\n text: 'Time (seconds)',\n useHTML: true\n },\n min: 0,\n max: 100,\n units: 's',\n locked: true,\n type: 'limits',\n allowDecimals: false\n },\n yAxis: {\n title: {\n text: 'Position (meters)',\n useHTML: true,\n style: {\n color: ''\n }\n },\n labels: {\n style: {\n color: ''\n }\n },\n min: 0,\n max: 100,\n units: 'm',\n locked: true,\n allowDecimals: false,\n opposite: false\n },\n series: [\n {\n name: 'Prediction',\n data: [],\n color: 'blue',\n dashStyle: 'Solid',\n marker: {\n symbol: 'circle'\n },\n canEdit: true,\n type: 'line'\n }\n ],\n constraints: []\n }\n }\n ]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 6, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentInfo" + } + } + ], + "methods": [ + { + "name": "getDescription", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 6, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentInfo" + } + }, + { + "name": "getLabel", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 10, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentInfo" + } + }, + { + "name": "getPreviewExamples", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 14, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentInfo" + } + } + ], + "indexSignatures": [], + "extends": [ + "ComponentInfo" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "GroupNode", + "id": "class-GroupNode-b7b67c1eadcfc067b165a07aae8346799c67be7ec85c376b968ad51006ba2e67bfe9108857ee6dc82f13471ba189c6da635c6c84006a551c1fce0d436471e735", + "file": "src/assets/wise5/directives/group-tabs/group-tabs.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { Component, OnInit } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { NodeStatusService } from '../../services/nodeStatusService';\nimport { StudentDataService } from '../../services/studentDataService';\nimport { VLEProjectService } from '../../vle/vleProjectService';\nimport { NodeService } from '../../services/nodeService';\nimport { MatTabsModule } from '@angular/material/tabs';\n\nclass GroupNode {\n id: string;\n disabled: boolean;\n startId: string;\n title: string;\n}\n\n@Component({\n imports: [MatTabsModule],\n selector: 'group-tabs',\n templateUrl: './group-tabs.component.html'\n})\nexport class GroupTabsComponent implements OnInit {\n protected groupNodes: GroupNode[] = [];\n protected selectedTabIndex: number;\n private subscriptions: Subscription = new Subscription();\n\n constructor(\n private nodeService: NodeService,\n private nodeStatusService: NodeStatusService,\n private projectService: VLEProjectService,\n private studentDataService: StudentDataService\n ) {}\n\n ngOnInit(): void {\n this.setGroupNodes();\n this.selectCurrentGroupTab();\n this.subscriptions.add(\n this.studentDataService.nodeStatusesChanged$.subscribe(() => {\n this.setGroupNodes();\n })\n );\n this.subscriptions.add(\n this.studentDataService.currentNodeChanged$.subscribe(() => {\n this.selectCurrentGroupTab();\n })\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n private setGroupNodes(): void {\n this.groupNodes = this.projectService.rootNode.ids.map((id: string) => {\n const node: GroupNode = this.projectService.getNodeById(id);\n node.disabled = !this.nodeStatusService.canVisitNode(node.id);\n return node;\n });\n }\n\n private selectCurrentGroupTab(): void {\n const currentNode = this.studentDataService.getCurrentNode();\n this.selectedTabIndex = this.groupNodes.indexOf(\n this.projectService.getParentGroup(currentNode.id)\n );\n }\n\n protected goToGroupTab(groupTabIndex: number): void {\n const groupStartNodeId = this.groupNodes[groupTabIndex].startId;\n this.nodeService.setCurrentNode(groupStartNodeId);\n }\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "disabled", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 11 + }, + { + "name": "id", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 10 + }, + { + "name": "startId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 12 + }, + { + "name": "title", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 13 + } + ], + "methods": [], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "HasKIScoreTermEvaluator", + "id": "class-HasKIScoreTermEvaluator-e346d39602c6bcc4cf9ed54399abb17ac33efbea8374c2793ccd168d3b9ac1a8f804f5fabceb7d5b71b07cf162aa50458283c72ee7bba8de8da4fde53a6e3793", + "file": "src/assets/wise5/components/common/feedbackRule/TermEvaluator/HasKIScoreTermEvaluator.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { CRaterResponse } from '../../cRater/CRaterResponse';\nimport { TermEvaluator } from './TermEvaluator';\n\nexport class HasKIScoreTermEvaluator extends TermEvaluator {\n expectedKIScore: number;\n\n constructor(term: string) {\n super(term);\n this.expectedKIScore = parseInt(term.match(/hasKIScore\\((.*)\\)/)[1]);\n }\n\n evaluate(response: CRaterResponse): boolean {\n return response.getKIScore() === this.expectedKIScore;\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 5, + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "expectedKIScore", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 5 + }, + { + "name": "configService", + "deprecated": false, + "deprecationMessage": "", + "type": "ConfigService", + "indexKey": "", + "optional": false, + "description": "", + "line": 8, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "constraintService", + "deprecated": false, + "deprecationMessage": "", + "type": "ConstraintService", + "indexKey": "", + "optional": false, + "description": "", + "line": 9, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "peerGroup", + "deprecated": false, + "deprecationMessage": "", + "type": "PeerGroup", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "referenceComponent", + "deprecated": false, + "deprecationMessage": "", + "type": "Component", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "TermEvaluator" + } + } + ], + "methods": [ + { + "name": "evaluate", + "args": [ + { + "name": "response", + "type": "CRaterResponse", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 12, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "response", + "type": "CRaterResponse", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "isAccumulatedIdeaCountTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 16, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "isBooleanTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 20, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "isHasKIScoreTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 32, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "isIdeaCountTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 36, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "isIdeaCountWithResponseIndexTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 40, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "isLowestWorkgroupIdInPeerGroupTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 24, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "isMyChoiceChosenTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 28, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "isSubmitNumberTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 44, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "requiresAllResponses", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 48, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "setConfigService", + "args": [ + { + "name": "service", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 55, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "service", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "setConstraintService", + "args": [ + { + "name": "service", + "type": "ConstraintService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 59, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "service", + "type": "ConstraintService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "setPeerGroup", + "args": [ + { + "name": "peerGroup", + "type": "PeerGroup", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 63, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "peerGroup", + "type": "PeerGroup", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "setReferenceComponent", + "args": [ + { + "name": "referenceComponent", + "type": "Component", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 67, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "referenceComponent", + "type": "Component", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + } + ], + "indexSignatures": [], + "extends": [ + "TermEvaluator" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "HasTagConstraintStrategy", + "id": "class-HasTagConstraintStrategy-9fa7a0291cf23648007be1a3985000fb0d97dbf7635bd7d7422eb94068ec283a71e8dab25e2fbcdc1f6415b6551dfd3e28cc23ab98ce54294a157a866d6514bc", + "file": "src/assets/wise5/common/constraint/strategies/HasTagConstraintStrategy.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { AbstractConstraintStrategy } from './AbstractConstraintStrategy';\n\nexport class HasTagConstraintStrategy extends AbstractConstraintStrategy {\n evaluate(criteria: any): boolean {\n return this.tagService.hasTagName(criteria.params.tag);\n }\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "annotationService", + "deprecated": false, + "deprecationMessage": "", + "type": "AnnotationService", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "completionService", + "deprecated": false, + "deprecationMessage": "", + "type": "CompletionService", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "componentServiceLookupService", + "deprecated": false, + "deprecationMessage": "", + "type": "ComponentServiceLookupService", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "configService", + "deprecated": false, + "deprecationMessage": "", + "type": "ConfigService", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "context", + "deprecated": false, + "deprecationMessage": "", + "type": "EvaluateConstraintContext", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "dataService", + "deprecated": false, + "deprecationMessage": "", + "type": "StudentDataService", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "notebookService", + "deprecated": false, + "deprecationMessage": "", + "type": "NotebookService", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "tagService", + "deprecated": false, + "deprecationMessage": "", + "type": "TagService", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + } + ], + "methods": [ + { + "name": "evaluate", + "args": [ + { + "name": "criteria", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 4, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "criteria", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "setContext", + "args": [ + { + "name": "context", + "type": "EvaluateConstraintContext", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 21, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "context", + "type": "EvaluateConstraintContext", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractConstraintStrategy" + } + } + ], + "indexSignatures": [], + "extends": [ + "AbstractConstraintStrategy" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "HtmlInfo", + "id": "class-HtmlInfo-917bbb37d54033bd0623aefe2779225fa7c5e4092a611a55c280634c64ee064de2ba7caae1d971399bf2d655c561f3ca632a9d642fb4679db9f2fa1a1aa25bc9", + "file": "src/assets/wise5/components/html/HtmlInfo.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { ComponentInfo } from '../ComponentInfo';\n\nexport class HtmlInfo extends ComponentInfo {\n protected description: string = $localize`Students view rich text (HTML) content.`;\n protected label: string = $localize`Rich Text (HTML)`;\n protected previewExamples: any[] = [\n {\n label: $localize`Rich Text (HTML)`,\n content: {\n id: 'abcde12345',\n type: 'HTML',\n prompt: '',\n showSaveButton: false,\n showSubmitButton: false,\n html: `

How does the Sun warm the Earth?

\n

\"sun\"

\n

You probably know that the Sun keeps us warm on Earth. But do you know how the Sun does that?

\n

In this lesson, you'll explore the following questions:

\n
    \n
  • How does the Sun's energy travel to the Earth?
  • \n
  • What happens to the Sun's energy when it reaches the Earth?
  • \n
  • How does the Sun's energy warm the Earth?
  • \n
`,\n constraints: []\n }\n }\n ];\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "description", + "defaultValue": "$localize`Students view rich text (HTML) content.`", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 4, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentInfo" + } + }, + { + "name": "label", + "defaultValue": "$localize`Rich Text (HTML)`", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 5, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentInfo" + } + }, + { + "name": "previewExamples", + "defaultValue": "[\n {\n label: $localize`Rich Text (HTML)`,\n content: {\n id: 'abcde12345',\n type: 'HTML',\n prompt: '',\n showSaveButton: false,\n showSubmitButton: false,\n html: `

How does the Sun warm the Earth?

\n

\"sun\"

\n

You probably know that the Sun keeps us warm on Earth. But do you know how the Sun does that?

\n

In this lesson, you'll explore the following questions:

\n
    \n
  • How does the Sun's energy travel to the Earth?
  • \n
  • What happens to the Sun's energy when it reaches the Earth?
  • \n
  • How does the Sun's energy warm the Earth?
  • \n
`,\n constraints: []\n }\n }\n ]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 6, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentInfo" + } + } + ], + "methods": [ + { + "name": "getDescription", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 6, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentInfo" + } + }, + { + "name": "getLabel", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 10, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentInfo" + } + }, + { + "name": "getPreviewExamples", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 14, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentInfo" + } + } + ], + "indexSignatures": [], + "extends": [ + "ComponentInfo" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "IdeaCountTermEvaluator", + "id": "class-IdeaCountTermEvaluator-ce7c8e1b2bb4518bde8074c81399b6ae1cce5923c6a47a32475d1932ae8a4898ab6dd622b031e8015ff5f73c9aac3232784bd671382477059bbeb35af9beff4e", + "file": "src/assets/wise5/components/common/feedbackRule/TermEvaluator/IdeaCountTermEvaluator.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { CRaterResponse } from '../../cRater/CRaterResponse';\nimport { AbstractIdeaCountTermEvaluator } from './AbstractIdeaCountTermEvaluator';\n\nexport class IdeaCountTermEvaluator extends AbstractIdeaCountTermEvaluator {\n constructor(term: string) {\n super(term, /ideaCount(.*)\\((.*)\\)/);\n }\n\n protected getDetectedIdeaCount(response: CRaterResponse): number {\n return response.getDetectedIdeaCount();\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 4, + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "comparer", + "deprecated": false, + "deprecationMessage": "", + "type": "\"MoreThan\" | \"Equals\" | \"LessThan\"", + "indexKey": "", + "optional": false, + "description": "", + "line": 5, + "inheritance": { + "file": "AbstractIdeaCountTermEvaluator" + } + }, + { + "name": "expectedIdeaCount", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 6, + "inheritance": { + "file": "AbstractIdeaCountTermEvaluator" + } + }, + { + "name": "matches", + "deprecated": false, + "deprecationMessage": "", + "type": "RegExpMatchArray", + "indexKey": "", + "optional": false, + "description": "", + "line": 7, + "inheritance": { + "file": "AbstractIdeaCountTermEvaluator" + } + }, + { + "name": "configService", + "deprecated": false, + "deprecationMessage": "", + "type": "ConfigService", + "indexKey": "", + "optional": false, + "description": "", + "line": 8, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "constraintService", + "deprecated": false, + "deprecationMessage": "", + "type": "ConstraintService", + "indexKey": "", + "optional": false, + "description": "", + "line": 9, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "peerGroup", + "deprecated": false, + "deprecationMessage": "", + "type": "PeerGroup", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "referenceComponent", + "deprecated": false, + "deprecationMessage": "", + "type": "Component", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "TermEvaluator" + } + } + ], + "methods": [ + { + "name": "getDetectedIdeaCount", + "args": [ + { + "name": "response", + "type": "CRaterResponse", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 9, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "response", + "type": "CRaterResponse", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractIdeaCountTermEvaluator" + } + }, + { + "name": "evaluate", + "args": [ + { + "name": "response", + "type": "CRaterResponse | CRaterResponse[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 16, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "response", + "type": "CRaterResponse | CRaterResponse[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "isAccumulatedIdeaCountTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 16, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "isBooleanTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 20, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "isHasKIScoreTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 32, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "isIdeaCountTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 36, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "isIdeaCountWithResponseIndexTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 40, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "isLowestWorkgroupIdInPeerGroupTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 24, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "isMyChoiceChosenTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 28, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "isSubmitNumberTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 44, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "requiresAllResponses", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 48, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "setConfigService", + "args": [ + { + "name": "service", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 55, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "service", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "setConstraintService", + "args": [ + { + "name": "service", + "type": "ConstraintService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 59, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "service", + "type": "ConstraintService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "setPeerGroup", + "args": [ + { + "name": "peerGroup", + "type": "PeerGroup", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 63, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "peerGroup", + "type": "PeerGroup", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "setReferenceComponent", + "args": [ + { + "name": "referenceComponent", + "type": "Component", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 67, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "referenceComponent", + "type": "Component", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + } + ], + "indexSignatures": [], + "extends": [ + "AbstractIdeaCountTermEvaluator" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "IdeaCountTermEvaluatorTester", + "id": "class-IdeaCountTermEvaluatorTester-cae4fd4e26f211e5b43d7a5b4d7ffe24383477b4d1aecf99a5ac1dca4abaa4c7899d80e2de7c3ac978795fa5c03faaedae34a6fd19c58d9063af22327847428e", + "file": "src/assets/wise5/components/common/feedbackRule/TermEvaluator/test-utils.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { CRaterIdea } from '../../cRater/CRaterIdea';\nimport { CRaterResponse } from '../../cRater/CRaterResponse';\nimport { AbstractIdeaCountTermEvaluator } from './AbstractIdeaCountTermEvaluator';\n\nconst idea1 = new CRaterIdea('1', true);\nconst idea2 = new CRaterIdea('2', true);\nconst idea3 = new CRaterIdea('3', true);\nconst response_with_idea_1 = new CRaterResponse({ ideas: [idea1] });\nconst response_with_idea_2 = new CRaterResponse({ ideas: [idea2] });\nconst response_with_ideas_1_2 = new CRaterResponse({ ideas: [idea1, idea2] });\nconst response_with_ideas_1_2_3 = new CRaterResponse({ ideas: [idea1, idea2, idea3] });\n\nexport {\n response_with_idea_1,\n response_with_idea_2,\n response_with_ideas_1_2,\n response_with_ideas_1_2_3\n};\n\nexport class IdeaCountTermEvaluatorTester {\n constructor(private evaluators: AbstractIdeaCountTermEvaluator[]) {}\n\n expectEvaluations(response: CRaterResponse | CRaterResponse[], expectedValues: boolean[]) {\n this.evaluators.forEach((evaluator, index) => {\n expect(evaluator.evaluate(response)).toBe(expectedValues[index]);\n });\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "evaluators", + "type": "AbstractIdeaCountTermEvaluator[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 20, + "jsdoctags": [ + { + "name": "evaluators", + "type": "AbstractIdeaCountTermEvaluator[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [], + "methods": [ + { + "name": "expectEvaluations", + "args": [ + { + "name": "response", + "type": "CRaterResponse | CRaterResponse[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "expectedValues", + "type": "boolean[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 23, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "response", + "type": "CRaterResponse | CRaterResponse[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "expectedValues", + "type": "boolean[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "IdeaCountWithResponseIndexTermEvaluator", + "id": "class-IdeaCountWithResponseIndexTermEvaluator-a24a8031619a70d79f0378a6345450e0edf5533a1a98fe87e8b318b9f70ec7bd71c8512b9b7f179145dcb40008e5727f924777d818bf318e290c768b84ae411d", + "file": "src/assets/wise5/components/common/feedbackRule/TermEvaluator/IdeaCountWithResponseIndexTermEvaluator.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { CRaterResponse } from '../../cRater/CRaterResponse';\nimport { AbstractIdeaCountTermEvaluator } from './AbstractIdeaCountTermEvaluator';\n\nexport class IdeaCountWithResponseIndexTermEvaluator extends AbstractIdeaCountTermEvaluator {\n responseIndex: number;\n\n constructor(term: string) {\n super(term, /ideaCount(.*)\\((\\d+),\\s*(\\d+)\\)/);\n this.responseIndex = parseInt(this.matches[3]) - 1; // authored index starts at 1\n }\n\n evaluate(responses: CRaterResponse[]): boolean {\n return responses.length <= this.responseIndex ? false : super.evaluate(responses);\n }\n\n protected getDetectedIdeaCount(responses: CRaterResponse[]): number {\n return responses[this.responseIndex].getDetectedIdeaCount();\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 5, + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "responseIndex", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 5 + }, + { + "name": "comparer", + "deprecated": false, + "deprecationMessage": "", + "type": "\"MoreThan\" | \"Equals\" | \"LessThan\"", + "indexKey": "", + "optional": false, + "description": "", + "line": 5, + "inheritance": { + "file": "AbstractIdeaCountTermEvaluator" + } + }, + { + "name": "expectedIdeaCount", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 6, + "inheritance": { + "file": "AbstractIdeaCountTermEvaluator" + } + }, + { + "name": "matches", + "deprecated": false, + "deprecationMessage": "", + "type": "RegExpMatchArray", + "indexKey": "", + "optional": false, + "description": "", + "line": 7, + "inheritance": { + "file": "AbstractIdeaCountTermEvaluator" + } + }, + { + "name": "configService", + "deprecated": false, + "deprecationMessage": "", + "type": "ConfigService", + "indexKey": "", + "optional": false, + "description": "", + "line": 8, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "constraintService", + "deprecated": false, + "deprecationMessage": "", + "type": "ConstraintService", + "indexKey": "", + "optional": false, + "description": "", + "line": 9, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "peerGroup", + "deprecated": false, + "deprecationMessage": "", + "type": "PeerGroup", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "referenceComponent", + "deprecated": false, + "deprecationMessage": "", + "type": "Component", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "TermEvaluator" + } + } + ], + "methods": [ + { + "name": "evaluate", + "args": [ + { + "name": "responses", + "type": "CRaterResponse[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 12, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "responses", + "type": "CRaterResponse[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "getDetectedIdeaCount", + "args": [ + { + "name": "responses", + "type": "CRaterResponse[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 16, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "responses", + "type": "CRaterResponse[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractIdeaCountTermEvaluator" + } + }, + { + "name": "isAccumulatedIdeaCountTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 16, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "isBooleanTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 20, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "isHasKIScoreTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 32, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "isIdeaCountTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 36, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "isIdeaCountWithResponseIndexTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 40, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "isLowestWorkgroupIdInPeerGroupTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 24, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "isMyChoiceChosenTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 28, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "isSubmitNumberTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 44, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "requiresAllResponses", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 48, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "setConfigService", + "args": [ + { + "name": "service", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 55, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "service", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "setConstraintService", + "args": [ + { + "name": "service", + "type": "ConstraintService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 59, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "service", + "type": "ConstraintService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "setPeerGroup", + "args": [ + { + "name": "peerGroup", + "type": "PeerGroup", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 63, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "peerGroup", + "type": "PeerGroup", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "setReferenceComponent", + "args": [ + { + "name": "referenceComponent", + "type": "Component", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 67, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "referenceComponent", + "type": "Component", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + } + ], + "indexSignatures": [], + "extends": [ + "AbstractIdeaCountTermEvaluator" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "IdeasSummaryData", + "id": "class-IdeasSummaryData-c94d4cb08d206adb5981647fef4e5590534352b2a97a4efa72c5db68f860d79cf62a0910c2bee5c2258b04f670922e8c8ae3228e768e00ae27a0ba2b75c0a3e4", + "file": "src/assets/wise5/directives/teacher-summary-display/summary-data/IdeasSummaryData.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { IdeasSummaryDataPoint } from './IdeasSummaryDataPoint';\n\nexport abstract class IdeasSummaryData {\n protected dataPoints: IdeasSummaryDataPoint[];\n\n constructor() {\n this.dataPoints = [];\n }\n\n getIdeaCountMap(): Map {\n const ideaCountMap = new Map();\n this.dataPoints.forEach((dataPoint) => {\n dataPoint.getDetectedIdeaIds().forEach((ideaId) => {\n if (ideaCountMap.has(ideaId)) {\n ideaCountMap.set(ideaId, ideaCountMap.get(ideaId) + 1);\n } else {\n ideaCountMap.set(ideaId, 1);\n }\n });\n dataPoint.getAllIdeaIds().forEach((ideaId) => {\n if (!ideaCountMap.has(ideaId)) {\n ideaCountMap.set(ideaId, 0);\n }\n });\n });\n return ideaCountMap;\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [], + "line": 4 + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "dataPoints", + "deprecated": false, + "deprecationMessage": "", + "type": "IdeasSummaryDataPoint[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 4, + "modifierKind": [ + 124 + ] + } + ], + "methods": [ + { + "name": "getIdeaCountMap", + "args": [], + "optional": false, + "returnType": "Map", + "typeParameters": [], + "line": 10, + "deprecated": false, + "deprecationMessage": "" + } + ], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "IdeasSummaryDataPoint", + "id": "class-IdeasSummaryDataPoint-b880bd05a8743bb83d212a1fa08a5d2f449f08cdbc88316aaf162b819b16168fa7212ec7781d7a89fda935ff02d8ad6c7a9a76f8eb4d2e619d8c036cc33b7f29", + "file": "src/assets/wise5/directives/teacher-summary-display/summary-data/IdeasSummaryDataPoint.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "export abstract class IdeasSummaryDataPoint {\n protected allIdeaIds: Set;\n protected detectedIdeaIds: Set;\n\n constructor() {\n this.allIdeaIds = new Set();\n this.detectedIdeaIds = new Set();\n }\n\n protected processIdea(idea: { name: string; detected: boolean }): void {\n this.allIdeaIds.add(idea.name);\n if (idea.detected) {\n this.detectedIdeaIds.add(idea.name);\n }\n }\n\n getAllIdeaIds(): Set {\n return this.allIdeaIds;\n }\n\n getDetectedIdeaIds(): Set {\n return this.detectedIdeaIds;\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [], + "line": 3 + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "allIdeaIds", + "deprecated": false, + "deprecationMessage": "", + "type": "Set", + "indexKey": "", + "optional": false, + "description": "", + "line": 2, + "modifierKind": [ + 124 + ] + }, + { + "name": "detectedIdeaIds", + "deprecated": false, + "deprecationMessage": "", + "type": "Set", + "indexKey": "", + "optional": false, + "description": "", + "line": 3, + "modifierKind": [ + 124 + ] + } + ], + "methods": [ + { + "name": "getAllIdeaIds", + "args": [], + "optional": false, + "returnType": "Set", + "typeParameters": [], + "line": 17, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getDetectedIdeaIds", + "args": [], + "optional": false, + "returnType": "Set", + "typeParameters": [], + "line": 21, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "processIdea", + "args": [ + { + "name": "idea", + "type": "literal type", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 10, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "idea", + "type": "literal type", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "IdeaTermEvaluator", + "id": "class-IdeaTermEvaluator-86afce8cc2c219f0658a931b7239dc895e134ab4350f5d23545e7954e96f39787f1a47cd20decb779e28955e08e17c5cc691048b4e70f2f275953d36be30f7f4", + "file": "src/assets/wise5/components/common/feedbackRule/TermEvaluator/IdeaTermEvaluator.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { CRaterResponse } from '../../cRater/CRaterResponse';\nimport { TermEvaluator } from './TermEvaluator';\n\nexport class IdeaTermEvaluator extends TermEvaluator {\n constructor(protected term: string) {\n super(term);\n }\n\n evaluate(response: CRaterResponse): boolean {\n return response.getDetectedIdeaNames().includes(this.term);\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 4, + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "configService", + "deprecated": false, + "deprecationMessage": "", + "type": "ConfigService", + "indexKey": "", + "optional": false, + "description": "", + "line": 8, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "constraintService", + "deprecated": false, + "deprecationMessage": "", + "type": "ConstraintService", + "indexKey": "", + "optional": false, + "description": "", + "line": 9, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "peerGroup", + "deprecated": false, + "deprecationMessage": "", + "type": "PeerGroup", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "referenceComponent", + "deprecated": false, + "deprecationMessage": "", + "type": "Component", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "TermEvaluator" + } + } + ], + "methods": [ + { + "name": "evaluate", + "args": [ + { + "name": "response", + "type": "CRaterResponse", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 9, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "response", + "type": "CRaterResponse", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "isAccumulatedIdeaCountTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 16, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "isBooleanTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 20, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "isHasKIScoreTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 32, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "isIdeaCountTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 36, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "isIdeaCountWithResponseIndexTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 40, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "isLowestWorkgroupIdInPeerGroupTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 24, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "isMyChoiceChosenTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 28, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "isSubmitNumberTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 44, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "requiresAllResponses", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 48, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "setConfigService", + "args": [ + { + "name": "service", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 55, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "service", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "setConstraintService", + "args": [ + { + "name": "service", + "type": "ConstraintService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 59, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "service", + "type": "ConstraintService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "setPeerGroup", + "args": [ + { + "name": "peerGroup", + "type": "PeerGroup", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 63, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "peerGroup", + "type": "PeerGroup", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "setReferenceComponent", + "args": [ + { + "name": "referenceComponent", + "type": "Component", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 67, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "referenceComponent", + "type": "Component", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + } + ], + "indexSignatures": [], + "extends": [ + "TermEvaluator" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "IsCompletedConstraintStrategy", + "id": "class-IsCompletedConstraintStrategy-cd1bba9615bece766a4c377fc40b94c80e1a9f8cf54a9ccd4f5566706d119667cc10c7c2691e206257a39ffd66c40feb86a85b5c3c9acab9289a95fa232c07f7", + "file": "src/assets/wise5/common/constraint/strategies/IsCompletedConstraintStrategy.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { AbstractConstraintStrategy } from './AbstractConstraintStrategy';\n\nexport class IsCompletedConstraintStrategy extends AbstractConstraintStrategy {\n evaluate(criteria: any): boolean {\n return this.completionService.isCompleted(criteria.params.nodeId, criteria.params.componentId);\n }\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "annotationService", + "deprecated": false, + "deprecationMessage": "", + "type": "AnnotationService", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "completionService", + "deprecated": false, + "deprecationMessage": "", + "type": "CompletionService", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "componentServiceLookupService", + "deprecated": false, + "deprecationMessage": "", + "type": "ComponentServiceLookupService", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "configService", + "deprecated": false, + "deprecationMessage": "", + "type": "ConfigService", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "context", + "deprecated": false, + "deprecationMessage": "", + "type": "EvaluateConstraintContext", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "dataService", + "deprecated": false, + "deprecationMessage": "", + "type": "StudentDataService", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "notebookService", + "deprecated": false, + "deprecationMessage": "", + "type": "NotebookService", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "tagService", + "deprecated": false, + "deprecationMessage": "", + "type": "TagService", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + } + ], + "methods": [ + { + "name": "evaluate", + "args": [ + { + "name": "criteria", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 4, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "criteria", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "setContext", + "args": [ + { + "name": "context", + "type": "EvaluateConstraintContext", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 21, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "context", + "type": "EvaluateConstraintContext", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractConstraintStrategy" + } + } + ], + "indexSignatures": [], + "extends": [ + "AbstractConstraintStrategy" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "IsCorrectConstraintStrategy", + "id": "class-IsCorrectConstraintStrategy-f1c5020bd63634785bf710a92b33da90f78caffd0ab2dc6399c263b32afa21f398d7e5122b2c7e03902d5535fa8d76a3d75bd80215bfcc2ccef6ca370c036a8f", + "file": "src/assets/wise5/common/constraint/strategies/IsCorrectConstraintStrategy.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { AbstractConstraintStrategy } from './AbstractConstraintStrategy';\n\nexport class IsCorrectConstraintStrategy extends AbstractConstraintStrategy {\n evaluate(criteria: any): boolean {\n const componentStates = this.dataService.getComponentStatesByNodeIdAndComponentId(\n criteria.params.nodeId,\n criteria.params.componentId\n );\n return componentStates.some((componentState) => componentState.studentData.isCorrect);\n }\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "annotationService", + "deprecated": false, + "deprecationMessage": "", + "type": "AnnotationService", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "completionService", + "deprecated": false, + "deprecationMessage": "", + "type": "CompletionService", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "componentServiceLookupService", + "deprecated": false, + "deprecationMessage": "", + "type": "ComponentServiceLookupService", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "configService", + "deprecated": false, + "deprecationMessage": "", + "type": "ConfigService", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "context", + "deprecated": false, + "deprecationMessage": "", + "type": "EvaluateConstraintContext", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "dataService", + "deprecated": false, + "deprecationMessage": "", + "type": "StudentDataService", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "notebookService", + "deprecated": false, + "deprecationMessage": "", + "type": "NotebookService", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "tagService", + "deprecated": false, + "deprecationMessage": "", + "type": "TagService", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + } + ], + "methods": [ + { + "name": "evaluate", + "args": [ + { + "name": "criteria", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 4, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "criteria", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "setContext", + "args": [ + { + "name": "context", + "type": "EvaluateConstraintContext", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 21, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "context", + "type": "EvaluateConstraintContext", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractConstraintStrategy" + } + } + ], + "indexSignatures": [], + "extends": [ + "AbstractConstraintStrategy" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "IsLowestWorkgroupIdInPeerGroupTermEvaluator", + "id": "class-IsLowestWorkgroupIdInPeerGroupTermEvaluator-4af37ab26bcd1013d8b570e27e33a7118caa4028676ecc1445a4b6ac53fa983e62aa4b313ba2c83e02fd1cdc80a4b4cd71aba1dbcb4cd2694105e0f9828fb803", + "file": "src/assets/wise5/components/common/feedbackRule/TermEvaluator/IsLowestWorkgroupIdInPeerGroupTermEvaluator.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { Response } from '../Response';\nimport { TermEvaluator } from './TermEvaluator';\n\nexport class IsLowestWorkgroupIdInPeerGroupTermEvaluator extends TermEvaluator {\n evaluate(response: Response | Response[]): boolean {\n return this.peerGroup.getWorkgroupIds().sort().at(0) === this.configService.getWorkgroupId();\n }\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "configService", + "deprecated": false, + "deprecationMessage": "", + "type": "ConfigService", + "indexKey": "", + "optional": false, + "description": "", + "line": 8, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "constraintService", + "deprecated": false, + "deprecationMessage": "", + "type": "ConstraintService", + "indexKey": "", + "optional": false, + "description": "", + "line": 9, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "peerGroup", + "deprecated": false, + "deprecationMessage": "", + "type": "PeerGroup", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "referenceComponent", + "deprecated": false, + "deprecationMessage": "", + "type": "Component", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "TermEvaluator" + } + } + ], + "methods": [ + { + "name": "evaluate", + "args": [ + { + "name": "response", + "type": "Response | Response[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 5, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "response", + "type": "Response | Response[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "isAccumulatedIdeaCountTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 16, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "isBooleanTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 20, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "isHasKIScoreTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 32, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "isIdeaCountTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 36, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "isIdeaCountWithResponseIndexTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 40, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "isLowestWorkgroupIdInPeerGroupTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 24, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "isMyChoiceChosenTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 28, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "isSubmitNumberTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 44, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "requiresAllResponses", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 48, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "setConfigService", + "args": [ + { + "name": "service", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 55, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "service", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "setConstraintService", + "args": [ + { + "name": "service", + "type": "ConstraintService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 59, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "service", + "type": "ConstraintService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "setPeerGroup", + "args": [ + { + "name": "peerGroup", + "type": "PeerGroup", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 63, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "peerGroup", + "type": "PeerGroup", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "setReferenceComponent", + "args": [ + { + "name": "referenceComponent", + "type": "Component", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 67, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "referenceComponent", + "type": "Component", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + } + ], + "indexSignatures": [], + "extends": [ + "TermEvaluator" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "IsRevisedAfterConstraintStrategy", + "id": "class-IsRevisedAfterConstraintStrategy-2c7659d53aa998cc9cd7fea1534e4d580152fd7816411ea893f400997507b4558badb7e6cf0b0ac0b98d38b9cab973ad4ba055bfde18be7bd4849d3ea5ad37eb", + "file": "src/assets/wise5/common/constraint/strategies/IsRevisedAfterConstraintStrategy.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { AbstractConstraintStrategy } from './AbstractConstraintStrategy';\n\nexport class IsRevisedAfterConstraintStrategy extends AbstractConstraintStrategy {\n evaluate(criteria: any): boolean {\n const latestComponentStateForComponent = this.dataService.getLatestComponentStateByNodeIdAndComponentId(\n criteria.params.isRevisedAfterNodeId,\n criteria.params.isRevisedAfterComponentId\n );\n return (\n latestComponentStateForComponent != null &&\n latestComponentStateForComponent.clientSaveTime > criteria.params.criteriaCreatedTimestamp\n );\n }\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "annotationService", + "deprecated": false, + "deprecationMessage": "", + "type": "AnnotationService", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "completionService", + "deprecated": false, + "deprecationMessage": "", + "type": "CompletionService", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "componentServiceLookupService", + "deprecated": false, + "deprecationMessage": "", + "type": "ComponentServiceLookupService", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "configService", + "deprecated": false, + "deprecationMessage": "", + "type": "ConfigService", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "context", + "deprecated": false, + "deprecationMessage": "", + "type": "EvaluateConstraintContext", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "dataService", + "deprecated": false, + "deprecationMessage": "", + "type": "StudentDataService", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "notebookService", + "deprecated": false, + "deprecationMessage": "", + "type": "NotebookService", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "tagService", + "deprecated": false, + "deprecationMessage": "", + "type": "TagService", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + } + ], + "methods": [ + { + "name": "evaluate", + "args": [ + { + "name": "criteria", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 4, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "criteria", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "setContext", + "args": [ + { + "name": "context", + "type": "EvaluateConstraintContext", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 21, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "context", + "type": "EvaluateConstraintContext", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractConstraintStrategy" + } + } + ], + "indexSignatures": [], + "extends": [ + "AbstractConstraintStrategy" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "IsSubmitNumberEvaluator", + "id": "class-IsSubmitNumberEvaluator-eec9bbfb464ddaeb4cd872ddc619032f4530807cd044f0d29a0db915c58cb56a1a0f41cc9607b6c22ccbd6e688c1b64dc4aa62c6d0d3508c3a2c7b1b6f004c97", + "file": "src/assets/wise5/components/common/feedbackRule/TermEvaluator/IsSubmitNumberEvaluator.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { CRaterResponse } from '../../cRater/CRaterResponse';\nimport { TermEvaluator } from './TermEvaluator';\n\nexport class IsSubmitNumberEvaluator extends TermEvaluator {\n expectedSubmitNumber: number;\n constructor(term: string) {\n super(term);\n this.expectedSubmitNumber = parseInt(term.match(/isSubmitNumber\\((.*)\\)/)[1]);\n }\n\n evaluate(response: CRaterResponse): boolean {\n return response.submitCounter === this.expectedSubmitNumber;\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 5, + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "expectedSubmitNumber", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 5 + }, + { + "name": "configService", + "deprecated": false, + "deprecationMessage": "", + "type": "ConfigService", + "indexKey": "", + "optional": false, + "description": "", + "line": 8, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "constraintService", + "deprecated": false, + "deprecationMessage": "", + "type": "ConstraintService", + "indexKey": "", + "optional": false, + "description": "", + "line": 9, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "peerGroup", + "deprecated": false, + "deprecationMessage": "", + "type": "PeerGroup", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "referenceComponent", + "deprecated": false, + "deprecationMessage": "", + "type": "Component", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "TermEvaluator" + } + } + ], + "methods": [ + { + "name": "evaluate", + "args": [ + { + "name": "response", + "type": "CRaterResponse", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 11, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "response", + "type": "CRaterResponse", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "isAccumulatedIdeaCountTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 16, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "isBooleanTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 20, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "isHasKIScoreTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 32, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "isIdeaCountTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 36, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "isIdeaCountWithResponseIndexTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 40, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "isLowestWorkgroupIdInPeerGroupTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 24, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "isMyChoiceChosenTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 28, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "isSubmitNumberTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 44, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "requiresAllResponses", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 48, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "setConfigService", + "args": [ + { + "name": "service", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 55, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "service", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "setConstraintService", + "args": [ + { + "name": "service", + "type": "ConstraintService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 59, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "service", + "type": "ConstraintService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "setPeerGroup", + "args": [ + { + "name": "peerGroup", + "type": "PeerGroup", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 63, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "peerGroup", + "type": "PeerGroup", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "setReferenceComponent", + "args": [ + { + "name": "referenceComponent", + "type": "Component", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 67, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "referenceComponent", + "type": "Component", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + } + ], + "indexSignatures": [], + "extends": [ + "TermEvaluator" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "IsVisibleConstraintStrategy", + "id": "class-IsVisibleConstraintStrategy-b6b386bfda398e0c309cdbd13c045fd3d7c96fc1f186afd5db41ec41a6472a7a6487c6a42a1923a799afd6c2d0eb593b20ad86620dd8e0cf976474c0513d3d79", + "file": "src/assets/wise5/common/constraint/strategies/IsVisibleConstraintStrategy.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { AbstractConstraintStrategy } from './AbstractConstraintStrategy';\n\nexport class IsVisibleConstraintStrategy extends AbstractConstraintStrategy {\n evaluate(criteria: any): boolean {\n const nodeStatus = this.dataService.getNodeStatusByNodeId(criteria.params.nodeId);\n return nodeStatus.isVisible;\n }\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "annotationService", + "deprecated": false, + "deprecationMessage": "", + "type": "AnnotationService", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "completionService", + "deprecated": false, + "deprecationMessage": "", + "type": "CompletionService", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "componentServiceLookupService", + "deprecated": false, + "deprecationMessage": "", + "type": "ComponentServiceLookupService", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "configService", + "deprecated": false, + "deprecationMessage": "", + "type": "ConfigService", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "context", + "deprecated": false, + "deprecationMessage": "", + "type": "EvaluateConstraintContext", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "dataService", + "deprecated": false, + "deprecationMessage": "", + "type": "StudentDataService", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "notebookService", + "deprecated": false, + "deprecationMessage": "", + "type": "NotebookService", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "tagService", + "deprecated": false, + "deprecationMessage": "", + "type": "TagService", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + } + ], + "methods": [ + { + "name": "evaluate", + "args": [ + { + "name": "criteria", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 4, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "criteria", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "setContext", + "args": [ + { + "name": "context", + "type": "EvaluateConstraintContext", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 21, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "context", + "type": "EvaluateConstraintContext", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractConstraintStrategy" + } + } + ], + "indexSignatures": [], + "extends": [ + "AbstractConstraintStrategy" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "IsVisitableConstraintStrategy", + "id": "class-IsVisitableConstraintStrategy-3c16027340caf36a57205e93019d479f1f01dca808ab4bcb720eaaf17b21e7e2a3a4886701e853335ba1789ae355d9b39470b113336b2b78d1630ace7e8bee06", + "file": "src/assets/wise5/common/constraint/strategies/IsVisitableContraintStrategy.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { AbstractConstraintStrategy } from './AbstractConstraintStrategy';\n\nexport class IsVisitableConstraintStrategy extends AbstractConstraintStrategy {\n evaluate(criteria: any): boolean {\n const nodeStatus = this.dataService.getNodeStatusByNodeId(criteria.params.nodeId);\n return nodeStatus.isVisitable;\n }\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "annotationService", + "deprecated": false, + "deprecationMessage": "", + "type": "AnnotationService", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "completionService", + "deprecated": false, + "deprecationMessage": "", + "type": "CompletionService", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "componentServiceLookupService", + "deprecated": false, + "deprecationMessage": "", + "type": "ComponentServiceLookupService", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "configService", + "deprecated": false, + "deprecationMessage": "", + "type": "ConfigService", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "context", + "deprecated": false, + "deprecationMessage": "", + "type": "EvaluateConstraintContext", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "dataService", + "deprecated": false, + "deprecationMessage": "", + "type": "StudentDataService", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "notebookService", + "deprecated": false, + "deprecationMessage": "", + "type": "NotebookService", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "tagService", + "deprecated": false, + "deprecationMessage": "", + "type": "TagService", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + } + ], + "methods": [ + { + "name": "evaluate", + "args": [ + { + "name": "criteria", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 4, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "criteria", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "setContext", + "args": [ + { + "name": "context", + "type": "EvaluateConstraintContext", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 21, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "context", + "type": "EvaluateConstraintContext", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractConstraintStrategy" + } + } + ], + "indexSignatures": [], + "extends": [ + "AbstractConstraintStrategy" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "IsVisitedAfterConstraintStrategy", + "id": "class-IsVisitedAfterConstraintStrategy-74f365f677880ff7720fa05ebbf30e0239d0ee8ceaf62a202c1dc0d924e146cb99e39393acc45adc1ed9f7e70bb6dd679bef9b7f3ed53f49f3e962249141b463", + "file": "src/assets/wise5/common/constraint/strategies/IsVisitedAfterConstraintStrategy.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { AbstractConstraintStrategy } from './AbstractConstraintStrategy';\n\nexport class IsVisitedAfterConstraintStrategy extends AbstractConstraintStrategy {\n evaluate(criteria: any): boolean {\n const isVisitedAfterNodeId = criteria.params.isVisitedAfterNodeId;\n const criteriaCreatedTimestamp = criteria.params.criteriaCreatedTimestamp;\n return this.dataService\n .getEvents()\n .some(\n (event) =>\n event.nodeId === isVisitedAfterNodeId &&\n event.event === 'nodeEntered' &&\n event.clientSaveTime > criteriaCreatedTimestamp\n );\n }\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "annotationService", + "deprecated": false, + "deprecationMessage": "", + "type": "AnnotationService", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "completionService", + "deprecated": false, + "deprecationMessage": "", + "type": "CompletionService", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "componentServiceLookupService", + "deprecated": false, + "deprecationMessage": "", + "type": "ComponentServiceLookupService", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "configService", + "deprecated": false, + "deprecationMessage": "", + "type": "ConfigService", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "context", + "deprecated": false, + "deprecationMessage": "", + "type": "EvaluateConstraintContext", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "dataService", + "deprecated": false, + "deprecationMessage": "", + "type": "StudentDataService", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "notebookService", + "deprecated": false, + "deprecationMessage": "", + "type": "NotebookService", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "tagService", + "deprecated": false, + "deprecationMessage": "", + "type": "TagService", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + } + ], + "methods": [ + { + "name": "evaluate", + "args": [ + { + "name": "criteria", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 4, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "criteria", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "setContext", + "args": [ + { + "name": "context", + "type": "EvaluateConstraintContext", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 21, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "context", + "type": "EvaluateConstraintContext", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractConstraintStrategy" + } + } + ], + "indexSignatures": [], + "extends": [ + "AbstractConstraintStrategy" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "IsVisitedAndRevisedAfterConstraintStrategy", + "id": "class-IsVisitedAndRevisedAfterConstraintStrategy-b2db04c088d84064e851593a40b846869e8a5532eb853811c4bf06b15f916c345cdf43a9f6b2f63c289ebe97e28dddfd4ff6af25df818595b857e5702270a496", + "file": "src/assets/wise5/common/constraint/strategies/IsVisitedAndRevisedAfterConstraintStrategy.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { AbstractConstraintStrategy } from './AbstractConstraintStrategy';\n\nexport class IsVisitedAndRevisedAfterConstraintStrategy extends AbstractConstraintStrategy {\n evaluate(criteria: any): boolean {\n const isVisitedAfterNodeId = criteria.params.isVisitedAfterNodeId;\n const isRevisedAfterNodeId = criteria.params.isRevisedAfterNodeId;\n const isRevisedAfterComponentId = criteria.params.isRevisedAfterComponentId;\n const criteriaCreatedTimestamp = criteria.params.criteriaCreatedTimestamp;\n return this.dataService\n .getEvents()\n .some((event) =>\n this.isVisitedAndRevisedAfter(\n isVisitedAfterNodeId,\n isRevisedAfterNodeId,\n isRevisedAfterComponentId,\n event,\n criteriaCreatedTimestamp\n )\n );\n }\n\n private isVisitedAndRevisedAfter(\n visitNodeId: string,\n reviseNodeId: string,\n reviseComponentId: string,\n event: any,\n timestamp: any\n ): boolean {\n return (\n this.dataService.isNodeVisitedAfterTimestamp(event, visitNodeId, timestamp) &&\n this.dataService.hasWorkCreatedAfterTimestamp(\n reviseNodeId,\n reviseComponentId,\n event.clientSaveTime\n )\n );\n }\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "annotationService", + "deprecated": false, + "deprecationMessage": "", + "type": "AnnotationService", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "completionService", + "deprecated": false, + "deprecationMessage": "", + "type": "CompletionService", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "componentServiceLookupService", + "deprecated": false, + "deprecationMessage": "", + "type": "ComponentServiceLookupService", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "configService", + "deprecated": false, + "deprecationMessage": "", + "type": "ConfigService", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "context", + "deprecated": false, + "deprecationMessage": "", + "type": "EvaluateConstraintContext", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "dataService", + "deprecated": false, + "deprecationMessage": "", + "type": "StudentDataService", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "notebookService", + "deprecated": false, + "deprecationMessage": "", + "type": "NotebookService", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "tagService", + "deprecated": false, + "deprecationMessage": "", + "type": "TagService", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + } + ], + "methods": [ + { + "name": "evaluate", + "args": [ + { + "name": "criteria", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 4, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "criteria", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "isVisitedAndRevisedAfter", + "args": [ + { + "name": "visitNodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "reviseNodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "reviseComponentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "timestamp", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "visitNodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "reviseNodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "reviseComponentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "timestamp", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setContext", + "args": [ + { + "name": "context", + "type": "EvaluateConstraintContext", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 21, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "context", + "type": "EvaluateConstraintContext", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractConstraintStrategy" + } + } + ], + "indexSignatures": [], + "extends": [ + "AbstractConstraintStrategy" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "IsVisitedConstraintStrategy", + "id": "class-IsVisitedConstraintStrategy-193b429921b94babb2a697248d52b454de0eeecb48afa26d9788e1392b0d6ea7b45227b12bf4b2c0c5ebdb042b8a69457a2a67f15caeaffbf5890368ffa14f18", + "file": "src/assets/wise5/common/constraint/strategies/IsVisitedConstraintStrategy.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { AbstractConstraintStrategy } from './AbstractConstraintStrategy';\n\nexport class IsVisitedConstraintStrategy extends AbstractConstraintStrategy {\n evaluate(criteria: any): boolean {\n return this.dataService\n .getEvents()\n .some((event) => event.nodeId === criteria.params.nodeId && event.event === 'nodeEntered');\n }\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "annotationService", + "deprecated": false, + "deprecationMessage": "", + "type": "AnnotationService", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "completionService", + "deprecated": false, + "deprecationMessage": "", + "type": "CompletionService", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "componentServiceLookupService", + "deprecated": false, + "deprecationMessage": "", + "type": "ComponentServiceLookupService", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "configService", + "deprecated": false, + "deprecationMessage": "", + "type": "ConfigService", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "context", + "deprecated": false, + "deprecationMessage": "", + "type": "EvaluateConstraintContext", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "dataService", + "deprecated": false, + "deprecationMessage": "", + "type": "StudentDataService", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "notebookService", + "deprecated": false, + "deprecationMessage": "", + "type": "NotebookService", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "tagService", + "deprecated": false, + "deprecationMessage": "", + "type": "TagService", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + } + ], + "methods": [ + { + "name": "evaluate", + "args": [ + { + "name": "criteria", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 4, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "criteria", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "setContext", + "args": [ + { + "name": "context", + "type": "EvaluateConstraintContext", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 21, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "context", + "type": "EvaluateConstraintContext", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractConstraintStrategy" + } + } + ], + "indexSignatures": [], + "extends": [ + "AbstractConstraintStrategy" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "Item", + "id": "class-Item-e30cda7e9ea40df3bcf1e74b7946abf67189b05229ad724255956398216e593afba54c25c14d596ef3908460081cb30e77d316a23c005f459351772762e52693", + "file": "src/assets/wise5/components/match/match-student/item.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { Choice } from '../choice';\n\nexport class Item {\n item: Choice;\n position: number;\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "item", + "deprecated": false, + "deprecationMessage": "", + "type": "Choice", + "indexKey": "", + "optional": false, + "description": "", + "line": 4 + }, + { + "name": "position", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 5 + } + ], + "methods": [], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "LabelComponentDataExportStrategy", + "id": "class-LabelComponentDataExportStrategy-112fd6a05f00e6acc03d1fa0b0bbdd7469ee216742ef135b28a2ba152b1952e37fc7bf76c393838d9176fa7da5e468e8a35a2fdc80e98840fe11831bb43ca06b", + "file": "src/assets/wise5/classroomMonitor/dataExport/strategies/LabelComponentDataExportStrategy.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { ComponentDataExportParams } from '../ComponentDataExportParams';\nimport { AbstractComponentDataExportStrategy } from './AbstractComponentDataExportStrategy';\n\nexport class LabelComponentDataExportStrategy extends AbstractComponentDataExportStrategy {\n constructor(\n protected nodeId: string,\n protected component: any,\n additionalParams: ComponentDataExportParams,\n protected allOrLatest: 'all' | 'latest'\n ) {\n super(nodeId, component, additionalParams);\n }\n\n protected generateComponentHeaderRow(component: any): string[] {\n const headerRow = [...this.defaultColumnNames];\n const componentStates = this.dataService.getComponentStatesByComponentId(component.id);\n const maxCountLabel = this.getMaxLabelCount(componentStates);\n for (let i = 1; i <= maxCountLabel; i++) {\n headerRow.push(`Label ${i}`);\n }\n return headerRow;\n }\n\n private getMaxLabelCount(componentStates: any[]): number {\n let maxLabelCount = 0;\n for (const componentState of componentStates) {\n const labelCount = componentState.studentData.labels.length;\n if (labelCount > maxLabelCount) {\n maxLabelCount = labelCount;\n }\n }\n return maxLabelCount;\n }\n\n protected generateComponentWorkRows(\n component: any,\n columnNames: string[],\n columnNameToNumber: any,\n nodeId: string\n ): string[] {\n const componentStates = this.getComponentStates(component);\n const workRows = [];\n for (let r = 0; r < componentStates.length; r++) {\n const componentState = componentStates[r];\n const row = new Array(columnNames.length).fill('');\n this.setColumnValue(row, columnNameToNumber, '#', r + 1);\n this.setStudentInfo(row, columnNameToNumber, componentState);\n this.setRunInfo(row, columnNameToNumber, componentState);\n this.setComponentInfo(row, columnNameToNumber, nodeId, component);\n this.setStudentWork(row, columnNameToNumber, component, componentState);\n workRows.push(row);\n }\n return workRows;\n }\n\n protected setStudentWork(\n row: any[],\n columnNameToNumber: any,\n component: any,\n componentState: any\n ): void {\n super.setStudentWork(row, columnNameToNumber, component, componentState);\n componentState.studentData.labels.forEach((label: any, index: number) => {\n this.setColumnValue(row, columnNameToNumber, `Label ${index + 1}`, label.text);\n });\n }\n\n protected getComponentTypeWithUnderscore(): string {\n return 'label';\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "additionalParams", + "type": "ComponentDataExportParams", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "allOrLatest", + "type": "\"all\" | \"latest\"", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 4, + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "additionalParams", + "type": "ComponentDataExportParams", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "allOrLatest", + "type": "\"all\" | \"latest\"", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "allOrLatest", + "deprecated": false, + "deprecationMessage": "", + "type": "\"all\" | \"latest\"", + "indexKey": "", + "optional": false, + "description": "", + "line": 8, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "componentStateIdToRevisionNumber", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "object", + "indexKey": "", + "optional": false, + "description": "", + "line": 9, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "defaultColumnNames", + "defaultValue": "[\n '#',\n 'Workgroup ID',\n 'User ID 1',\n 'Student Name 1',\n 'User ID 2',\n 'Student Name 2',\n 'User ID 3',\n 'Student Name 3',\n 'Class Period',\n 'Project ID',\n 'Project Name',\n 'Run ID',\n 'Start Date',\n 'End Date',\n 'Student Work ID',\n 'Server Timestamp',\n 'Client Timestamp',\n 'Node ID',\n 'Component ID',\n 'Component Part Number',\n 'Step Title',\n 'Component Type',\n 'Component Prompt',\n 'Student Data',\n 'Component Revision Counter',\n 'Is Submit',\n 'Submit Count'\n ]", + "deprecated": false, + "deprecationMessage": "", + "type": "[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "includeOnlySubmits", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 39, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "includeStudentNames", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 40, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "revisionCounter", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 41, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "annotationService", + "deprecated": false, + "deprecationMessage": "", + "type": "AnnotationService", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "configService", + "deprecated": false, + "deprecationMessage": "", + "type": "ConfigService", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "context", + "deprecated": false, + "deprecationMessage": "", + "type": "DataExportContext", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "controller", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "dataExportService", + "deprecated": false, + "deprecationMessage": "", + "type": "DataExportService", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "dataService", + "deprecated": false, + "deprecationMessage": "", + "type": "TeacherDataService", + "indexKey": "", + "optional": false, + "description": "", + "line": 20, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "projectService", + "deprecated": false, + "deprecationMessage": "", + "type": "TeacherProjectService", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + } + ], + "methods": [ + { + "name": "generateComponentHeaderRow", + "args": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string[]", + "typeParameters": [], + "line": 14, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "generateComponentWorkRows", + "args": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNames", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string[]", + "typeParameters": [], + "line": 35, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNames", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "getComponentTypeWithUnderscore", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 68, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "getMaxLabelCount", + "args": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 24, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setStudentWork", + "args": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 56, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "calculateRevisionNumbers", + "args": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 130, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "export", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 53, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "getComponentStates", + "args": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "calculateRevisions", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "true" + } + ], + "optional": false, + "returnType": "ComponentState[]", + "typeParameters": [], + "line": 104, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "calculateRevisions", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "true", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "getLatestRevisions", + "args": [ + { + "name": "componentStates", + "type": "ComponentState[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "ComponentState[]", + "typeParameters": [], + "line": 169, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "componentStates", + "type": "ComponentState[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "getPrompt", + "args": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 206, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "getRevisionCounter", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 165, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "getRevisionCounterKey", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 157, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "incrementRevisionCounter", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 144, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "setAllOrLatest", + "args": [ + { + "name": "allOrLatest", + "type": "\"all\" | \"latest\"", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 98, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "allOrLatest", + "type": "\"all\" | \"latest\"", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "setComponentInfo", + "args": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 182, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "setStudentInfo", + "args": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 81, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "sortByWorkgroupIdAndTimestamp", + "args": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 122, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "generateCSVFile", + "args": [ + { + "name": "rows", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "fileName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 194, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "rows", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "fileName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "generateExportFileName", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentTypeWithUnderscore", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 179, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentTypeWithUnderscore", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "getColumnValue", + "args": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 113, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "getSelectedNodesMap", + "args": [ + { + "name": "selectedNodes", + "type": "[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]" + } + ], + "optional": false, + "returnType": "{}", + "typeParameters": [], + "line": 62, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet a mapping of node/component id strings to true.\nexample if\nselectedNodes = [\n {\n nodeId: \"node1\",\n componentId: \"343b8aesf7\"\n },\n {\n nodeId: \"node2\",\n componentId: \"b34gaf0ug2\"\n },\n {\n nodeId: \"node3\"\n }\n]\n\nthis function will return\n{\n \"node1-343b8aesf7\": true,\n \"node2-b34gaf0ug2\": true,\n \"node3\": true\n}\n\na componentId field\n", + "description": "

Get a mapping of node/component id strings to true.\nexample if\nselectedNodes = [\n {\n nodeId: "node1",\n componentId: "343b8aesf7"\n },\n {\n nodeId: "node2",\n componentId: "b34gaf0ug2"\n },\n {\n nodeId: "node3"\n }\n]

\n

this function will return\n{\n "node1-343b8aesf7": true,\n "node2-b34gaf0ug2": true,\n "node3": true\n}

\n

a componentId field

\n", + "jsdoctags": [ + { + "name": { + "pos": 1979, + "end": 1992, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "selectedNodes" + }, + "type": "[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]", + "tagName": { + "pos": 1973, + "end": 1978, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

an array of objects that contain a nodeId field and maybe also\na componentId field

\n" + }, + { + "tagName": { + "pos": 2087, + "end": 2093, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

a mapping of node/component id strings to true

\n" + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "getStudentDataString", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 157, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the plain text representation of the student work.\n", + "description": "

Get the plain text representation of the student work.

\n", + "jsdoctags": [ + { + "name": { + "pos": 5328, + "end": 5342, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 5322, + "end": 5327, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

A component state that contains the student work.

\n", + "typeExpression": { + "pos": 5343, + "end": 5351, + "kind": 310, + "id": 0, + "flags": 16842752, + "modifierFlagsCache": 0, + "transformFlags": 0, + "type": { + "pos": 5344, + "end": 5350, + "kind": 151, + "id": 0, + "flags": 16777216, + "transformFlags": 1 + } + } + }, + { + "tagName": { + "pos": 5408, + "end": 5415, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

A string that can be placed in a csv cell.

\n", + "returnType": "string" + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "insertColumnAtEnd", + "args": [ + { + "name": "headerRow", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 121, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "headerRow", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "insertColumnBeforeResponseColumn", + "args": [ + { + "name": "headerRow", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 117, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "headerRow", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "isComponentSelected", + "args": [ + { + "name": "selectedNodesMap", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 138, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if a component is selected\nto true\nexample\n{\n \"node1-38fj20egrj\": true,\n \"node1-20dbj2e0sf\": true\n}\n", + "description": "

Check if a component is selected\nto true\nexample\n{\n "node1-38fj20egrj": true,\n "node1-20dbj2e0sf": true\n}

\n", + "jsdoctags": [ + { + "name": { + "pos": 4590, + "end": 4606, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "selectedNodesMap" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4584, + "end": 4589, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

a map of node id and component id strings\nto true\nexample\n{\n"node1-38fj20egrj": true,\n"node1-20dbj2e0sf": true\n}

\n" + }, + { + "name": { + "pos": 4766, + "end": 4772, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4760, + "end": 4765, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id to check

\n" + }, + { + "name": { + "pos": 4806, + "end": 4817, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4800, + "end": 4805, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component id to check

\n" + }, + { + "tagName": { + "pos": 4850, + "end": 4856, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether the component is selected

\n" + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "populateColumnNameMappings", + "args": [ + { + "name": "columnNames", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 103, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "columnNames", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "setColumnValue", + "args": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "value", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 109, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "value", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "setDataExportContext", + "args": [ + { + "name": "context", + "type": "DataExportContext", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "context", + "type": "DataExportContext", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "setRunInfo", + "args": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + } + ], + "indexSignatures": [], + "extends": [ + "AbstractComponentDataExportStrategy" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "LabelInfo", + "id": "class-LabelInfo-ff3ead23bcfdc320904548bd05d6ea1cf6f506329a07f4d2365cc9779c31071c5ee0f02a8b157e7986a0c777a471bad6cb0f5e915afa94122bffc78f3d1c1808", + "file": "src/assets/wise5/components/label/LabelInfo.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { ComponentInfo } from '../ComponentInfo';\n\nexport class LabelInfo extends ComponentInfo {\n protected description: string = $localize`Students add labels to a canvas.`;\n protected label: string = $localize`Label`;\n protected previewExamples: any[] = [\n {\n label: $localize`Label`,\n content: {\n id: 'abcde12345',\n type: 'Label',\n prompt: 'Label the layers of the Earth by moving the labels to the correct location.',\n showSaveButton: false,\n showSubmitButton: false,\n showAddToNotebookButton: false,\n backgroundImage: '/assets/img/component-preview/earth-layers.jpg',\n canCreateLabels: true,\n canEditLabels: true,\n canDeleteLabels: true,\n enableCircles: true,\n width: 800,\n height: 600,\n pointSize: 5,\n fontSize: 20,\n labelWidth: 20,\n labels: [\n {\n pointX: 453,\n pointY: 50,\n textX: 648,\n textY: 50,\n text: 'Crust',\n color: 'black',\n canEdit: false,\n canDelete: false,\n timestamp: 1697647088109,\n isStarterLabel: true\n },\n {\n pointX: 449,\n pointY: 155,\n textX: 644,\n textY: 156,\n text: 'Mantle',\n color: 'black',\n canEdit: false,\n canDelete: false,\n timestamp: 1697647088112,\n isStarterLabel: true\n },\n {\n pointX: 445,\n pointY: 250,\n textX: 646,\n textY: 249,\n text: 'Outer Core',\n color: 'black',\n canEdit: false,\n canDelete: false,\n timestamp: 1697647088114,\n isStarterLabel: true\n },\n {\n pointX: 443,\n pointY: 344,\n textX: 639,\n textY: 344,\n text: 'Inner Core',\n color: 'black',\n canEdit: false,\n canDelete: false,\n timestamp: 1697647088117,\n isStarterLabel: true\n }\n ],\n constraints: []\n }\n }\n ];\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "description", + "defaultValue": "$localize`Students add labels to a canvas.`", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 4, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentInfo" + } + }, + { + "name": "label", + "defaultValue": "$localize`Label`", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 5, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentInfo" + } + }, + { + "name": "previewExamples", + "defaultValue": "[\n {\n label: $localize`Label`,\n content: {\n id: 'abcde12345',\n type: 'Label',\n prompt: 'Label the layers of the Earth by moving the labels to the correct location.',\n showSaveButton: false,\n showSubmitButton: false,\n showAddToNotebookButton: false,\n backgroundImage: '/assets/img/component-preview/earth-layers.jpg',\n canCreateLabels: true,\n canEditLabels: true,\n canDeleteLabels: true,\n enableCircles: true,\n width: 800,\n height: 600,\n pointSize: 5,\n fontSize: 20,\n labelWidth: 20,\n labels: [\n {\n pointX: 453,\n pointY: 50,\n textX: 648,\n textY: 50,\n text: 'Crust',\n color: 'black',\n canEdit: false,\n canDelete: false,\n timestamp: 1697647088109,\n isStarterLabel: true\n },\n {\n pointX: 449,\n pointY: 155,\n textX: 644,\n textY: 156,\n text: 'Mantle',\n color: 'black',\n canEdit: false,\n canDelete: false,\n timestamp: 1697647088112,\n isStarterLabel: true\n },\n {\n pointX: 445,\n pointY: 250,\n textX: 646,\n textY: 249,\n text: 'Outer Core',\n color: 'black',\n canEdit: false,\n canDelete: false,\n timestamp: 1697647088114,\n isStarterLabel: true\n },\n {\n pointX: 443,\n pointY: 344,\n textX: 639,\n textY: 344,\n text: 'Inner Core',\n color: 'black',\n canEdit: false,\n canDelete: false,\n timestamp: 1697647088117,\n isStarterLabel: true\n }\n ],\n constraints: []\n }\n }\n ]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 6, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentInfo" + } + } + ], + "methods": [ + { + "name": "getDescription", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 6, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentInfo" + } + }, + { + "name": "getLabel", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 10, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentInfo" + } + }, + { + "name": "getPreviewExamples", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 14, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentInfo" + } + } + ], + "indexSignatures": [], + "extends": [ + "ComponentInfo" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "LabelStudentData", + "id": "class-LabelStudentData-2c72e1a20eff2a9a7eea38f58bd9a0b36c97c31e55c88bef78f6c665f5498d37642cf2ff24c9ffd1e4977a21873b176ed1688b01e5270883af67467bdf39c21e", + "file": "src/assets/wise5/components/label/LabelStudentData.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "export class LabelStudentData {\n backgroundImage: string = null;\n labels: any[] = [];\n submitCounter: number = 0;\n version: number = 2;\n\n constructor(\n labels: any[] = [],\n backgroundImage: string = null,\n submitCounter: number = 0,\n version: number = 2\n ) {\n this.labels = labels;\n this.backgroundImage = backgroundImage;\n this.submitCounter = submitCounter;\n this.version = version;\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "labels", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]" + }, + { + "name": "backgroundImage", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + }, + { + "name": "submitCounter", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "0" + }, + { + "name": "version", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "2" + } + ], + "line": 5, + "jsdoctags": [ + { + "name": "labels", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]", + "tagName": { + "text": "param" + } + }, + { + "name": "backgroundImage", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + }, + { + "name": "submitCounter", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "0", + "tagName": { + "text": "param" + } + }, + { + "name": "version", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "2", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "backgroundImage", + "defaultValue": "null", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 2 + }, + { + "name": "labels", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 3 + }, + { + "name": "submitCounter", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 4 + }, + { + "name": "version", + "defaultValue": "2", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 5 + } + ], + "methods": [], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "LibraryGroup", + "id": "class-LibraryGroup-a33073faa9b73186c00b2af3f48801634319a457321bcf37d64250aafc5fa84347d1b17f46e53083b0e20dfb2cd1d83038f45784cf02cb4bebe9019b8748eb10", + "file": "src/app/modules/library/libraryGroup.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "export class LibraryGroup {\n type: string;\n id: string;\n name: string;\n children: {}[];\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "children", + "deprecated": false, + "deprecationMessage": "", + "type": "literal type[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 5 + }, + { + "name": "id", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 3 + }, + { + "name": "name", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 4 + }, + { + "name": "type", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 2 + } + ], + "methods": [], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "LibraryProject", + "id": "class-LibraryProject-589fefe383ab8f9de11f82913ea4564b941d89e63f46809ef0e42b64a8c6a0a249be1684aaf54ddb463ae8fee7db1c59298a0959a85fbaef6daf403a74806a67", + "file": "src/app/modules/library/libraryProject.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { Project } from '../../domain/project';\n\nexport class LibraryProject extends Project {\n notes: string;\n type: string;\n visible: boolean = true;\n shared: boolean = false;\n\n constructor(jsonObject: any = {}) {\n super();\n for (let key of Object.keys(jsonObject)) {\n const value = jsonObject[key];\n this[key] = value;\n }\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "jsonObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "{}" + } + ], + "line": 7, + "jsdoctags": [ + { + "name": "jsonObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "{}", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "notes", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 4 + }, + { + "name": "shared", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 7 + }, + { + "name": "type", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 5 + }, + { + "name": "visible", + "defaultValue": "true", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 6 + }, + { + "name": "archived", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 6, + "inheritance": { + "file": "Project" + } + }, + { + "name": "dateArchived", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 7, + "inheritance": { + "file": "Project" + } + }, + { + "name": "dateCreated", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 8, + "inheritance": { + "file": "Project" + } + }, + { + "name": "EDIT_PERMISSION", + "defaultValue": "2", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 27, + "modifierKind": [ + 126, + 148 + ], + "inheritance": { + "file": "Project" + } + }, + { + "name": "id", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 9, + "inheritance": { + "file": "Project" + } + }, + { + "name": "isHighlighted", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "inheritance": { + "file": "Project" + } + }, + { + "name": "lastEdited", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "inheritance": { + "file": "Project" + } + }, + { + "name": "license", + "deprecated": false, + "deprecationMessage": "", + "type": "String", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "inheritance": { + "file": "Project" + } + }, + { + "name": "metadata", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "inheritance": { + "file": "Project" + } + }, + { + "name": "name", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "inheritance": { + "file": "Project" + } + }, + { + "name": "owner", + "deprecated": false, + "deprecationMessage": "", + "type": "User", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "inheritance": { + "file": "Project" + } + }, + { + "name": "parentId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "inheritance": { + "file": "Project" + } + }, + { + "name": "projectThumb", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "inheritance": { + "file": "Project" + } + }, + { + "name": "run", + "deprecated": false, + "deprecationMessage": "", + "type": "Run", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "inheritance": { + "file": "Project" + } + }, + { + "name": "selected", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 20, + "inheritance": { + "file": "Project" + } + }, + { + "name": "sharedOwners", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "User[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "inheritance": { + "file": "Project" + } + }, + { + "name": "tags", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "Tag[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 21, + "inheritance": { + "file": "Project" + } + }, + { + "name": "thumbStyle", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 22, + "inheritance": { + "file": "Project" + } + }, + { + "name": "uri", + "deprecated": false, + "deprecationMessage": "", + "type": "String", + "indexKey": "", + "optional": false, + "description": "", + "line": 23, + "inheritance": { + "file": "Project" + } + }, + { + "name": "VIEW_PERMISSION", + "defaultValue": "1", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 26, + "modifierKind": [ + 126, + 148 + ], + "inheritance": { + "file": "Project" + } + }, + { + "name": "wiseVersion", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 24, + "inheritance": { + "file": "Project" + } + } + ], + "methods": [ + { + "name": "addTag", + "args": [ + { + "name": "tag", + "type": "Tag", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 110, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "tag", + "type": "Tag", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "Project" + } + }, + { + "name": "canEdit", + "args": [ + { + "name": "userId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 54, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 125 + ], + "jsdoctags": [ + { + "name": "userId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "Project" + } + }, + { + "name": "canView", + "args": [ + { + "name": "userId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 48, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 125 + ], + "jsdoctags": [ + { + "name": "userId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "Project" + } + }, + { + "name": "hasTag", + "args": [ + { + "name": "tag", + "type": "Tag", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 101, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "tag", + "type": "Tag", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "Project" + } + }, + { + "name": "hasTagWithText", + "args": [ + { + "name": "tagText", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 97, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "tagText", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "Project" + } + }, + { + "name": "isChild", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 60, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "Project" + } + }, + { + "name": "isOwner", + "args": [ + { + "name": "userId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 64, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "userId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "Project" + } + }, + { + "name": "isSharedOwnerWithPermission", + "args": [ + { + "name": "userId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "permissionId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 68, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "userId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "permissionId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "Project" + } + }, + { + "name": "parseMetadata", + "args": [ + { + "name": "metadata", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 81, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "metadata", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "Project" + } + }, + { + "name": "removeTag", + "args": [ + { + "name": "tag", + "type": "Tag", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 115, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "tag", + "type": "Tag", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "Project" + } + }, + { + "name": "updateArchivedStatus", + "args": [ + { + "name": "archived", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "tag", + "type": "Tag", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 105, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "archived", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "tag", + "type": "Tag", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "Project" + } + }, + { + "name": "userHasPermission", + "args": [ + { + "name": "user", + "type": "User", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "permission", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 77, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "user", + "type": "User", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "permission", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "Project" + } + } + ], + "indexSignatures": [], + "extends": [ + "Project" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "LibraryProjectHarness", + "id": "class-LibraryProjectHarness-2f8be0ac85e43305eeb6b27cafa314de9518c63a31afa31bd1df5c06ddcf0886961830f7432e2af3e074ac710e8393d31b8c0a348ba04f5d9e1a6b8049bbe448", + "file": "src/app/modules/library/library-project/library-project.harness.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { ComponentHarness } from '@angular/cdk/testing';\nimport { MatCheckboxHarness } from '@angular/material/checkbox/testing';\n\nexport class LibraryProjectHarness extends ComponentHarness {\n static hostSelector = 'app-library-project';\n\n async getCheckbox(): Promise {\n const getCheckbox = this.locatorFor(MatCheckboxHarness);\n return await getCheckbox();\n }\n\n async getProjectId(): Promise {\n const getProjectCaption = this.locatorFor('.mat-caption');\n const caption = await getProjectCaption();\n const text = await caption.text();\n return this.extractIdNumber(text);\n }\n\n private extractIdNumber(captionText: string): number {\n const result = captionText.match(/\\(ID: (\\d*)\\)/);\n return parseInt(result[1]);\n }\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "hostSelector", + "defaultValue": "'app-library-project'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 5, + "modifierKind": [ + 126 + ] + } + ], + "methods": [ + { + "name": "extractIdNumber", + "args": [ + { + "name": "captionText", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 19, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "captionText", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getCheckbox", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 7, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ] + }, + { + "name": "getProjectId", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 12, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ] + } + ], + "indexSignatures": [], + "extends": [ + "ComponentHarness" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "LibraryProjectMenuHarness", + "id": "class-LibraryProjectMenuHarness-2d2ad8c0afbade5436907b6fd15b6653d5ea3c70c181a2a3fa4fb0424169136fac1567a7fb101c6d03722541eea89056cdbe5f44b3eecd03aca15a3080990b2d", + "file": "src/app/modules/library/library-project-menu/library-project-menu.harness.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { ComponentHarness } from '@angular/cdk/testing';\nimport { MatMenuHarness } from '@angular/material/menu/testing';\n\nexport class LibraryProjectMenuHarness extends ComponentHarness {\n static hostSelector = 'app-library-project-menu';\n private ARCHIVE_MENU_BUTTON_TEXT = 'archiveArchive';\n private RESTORE_MENU_BUTTON_TEXT = 'unarchiveRestore';\n\n async hasArchiveMenuButton(): Promise {\n return this.hasMenuButton(this.ARCHIVE_MENU_BUTTON_TEXT);\n }\n\n async hasRestoreMenuButton(): Promise {\n return this.hasMenuButton(this.RESTORE_MENU_BUTTON_TEXT);\n }\n\n async hasMenuButton(text: string): Promise {\n const getMenu = this.locatorFor(MatMenuHarness);\n const menu = await getMenu();\n await menu.open();\n let foundArchiveMenuButton = false;\n for (const item of await menu.getItems()) {\n if ((await item.getText()) === text) {\n foundArchiveMenuButton = true;\n }\n }\n return foundArchiveMenuButton;\n }\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "ARCHIVE_MENU_BUTTON_TEXT", + "defaultValue": "'archiveArchive'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 6, + "modifierKind": [ + 123 + ] + }, + { + "name": "hostSelector", + "defaultValue": "'app-library-project-menu'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 5, + "modifierKind": [ + 126 + ] + }, + { + "name": "RESTORE_MENU_BUTTON_TEXT", + "defaultValue": "'unarchiveRestore'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 7, + "modifierKind": [ + 123 + ] + } + ], + "methods": [ + { + "name": "hasArchiveMenuButton", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 9, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ] + }, + { + "name": "hasMenuButton", + "args": [ + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 17, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ], + "jsdoctags": [ + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "hasRestoreMenuButton", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 13, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ] + } + ], + "indexSignatures": [], + "extends": [ + "ComponentHarness" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "Location", + "id": "class-Location-e40959c52bd669bb8545937e341fd40b077cfe97435b3706b6822d41cc9ffa03f4a5e090d354779593f2bc76ab74767760d0a2d9a345b954cbc7f0755d70ba21", + "file": "src/app/modules/library/Location.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "export type LocationType = 'level1' | 'level2' | 'level3';\n\nexport const locationTypeToLabel: { [key in LocationType]: string } = {\n level3: $localize`Locale`,\n level2: $localize`State`,\n level1: $localize`Country`\n};\n\nexport class LocationOption {\n name: string;\n type: LocationType;\n constructor(type: LocationType, name: string) {\n this.type = type;\n this.name = name;\n }\n}\n\n// Represents a geographical location associated with a project\nexport class Location {\n id: string = '';\n level1: string = ''; // country\n level2: string = ''; // state\n level3: string = ''; // city, county, or other locale\n\n getLocationOptions(): LocationOption[] {\n const options = [];\n if (this.level1) {\n options.push(new LocationOption('level1', this.level1));\n }\n if (this.level2) {\n options.push(new LocationOption('level2', `${this.level2}, ${this.level1}`));\n }\n if (this.level3) {\n options.push(new LocationOption('level3', `${this.level3}, ${this.level2}, ${this.level1}`));\n }\n return options;\n }\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "id", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 20 + }, + { + "name": "level1", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 21 + }, + { + "name": "level2", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 22 + }, + { + "name": "level3", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 23 + } + ], + "methods": [ + { + "name": "getLocationOptions", + "args": [], + "optional": false, + "returnType": "LocationOption[]", + "typeParameters": [], + "line": 25, + "deprecated": false, + "deprecationMessage": "" + } + ], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "LocationOption", + "id": "class-LocationOption-e40959c52bd669bb8545937e341fd40b077cfe97435b3706b6822d41cc9ffa03f4a5e090d354779593f2bc76ab74767760d0a2d9a345b954cbc7f0755d70ba21", + "file": "src/app/modules/library/Location.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "export type LocationType = 'level1' | 'level2' | 'level3';\n\nexport const locationTypeToLabel: { [key in LocationType]: string } = {\n level3: $localize`Locale`,\n level2: $localize`State`,\n level1: $localize`Country`\n};\n\nexport class LocationOption {\n name: string;\n type: LocationType;\n constructor(type: LocationType, name: string) {\n this.type = type;\n this.name = name;\n }\n}\n\n// Represents a geographical location associated with a project\nexport class Location {\n id: string = '';\n level1: string = ''; // country\n level2: string = ''; // state\n level3: string = ''; // city, county, or other locale\n\n getLocationOptions(): LocationOption[] {\n const options = [];\n if (this.level1) {\n options.push(new LocationOption('level1', this.level1));\n }\n if (this.level2) {\n options.push(new LocationOption('level2', `${this.level2}, ${this.level1}`));\n }\n if (this.level3) {\n options.push(new LocationOption('level3', `${this.level3}, ${this.level2}, ${this.level1}`));\n }\n return options;\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "type", + "type": "LocationType", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "name", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 11, + "jsdoctags": [ + { + "name": "type", + "type": "LocationType", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "name", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "name", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 10 + }, + { + "name": "type", + "deprecated": false, + "deprecationMessage": "", + "type": "LocationType", + "indexKey": "", + "optional": false, + "description": "", + "line": 11 + } + ], + "methods": [], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "ManageTeamHarness", + "id": "class-ManageTeamHarness-608a8e1faad52053da3fb412edfc5ae6dc9265b86005f709d85d39e7c8159bb33f38afc9719b56b5e976f3967fc763b0364d9c759d2ec777c5df386559baf94c", + "file": "src/assets/wise5/classroomMonitor/classroomMonitorComponents/manageStudents/manage-team/manage-team.harness.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { ComponentHarness } from '@angular/cdk/testing';\nimport { ManageUserHarness } from '../manage-user/manage-user.harness';\n\nexport class ManageTeamHarness extends ComponentHarness {\n static hostSelector = 'manage-team';\n protected getChangePeriodLink = this.locatorForOptional('.change-period');\n protected getMembers = this.locatorForAll(ManageUserHarness);\n\n async isChangePeriodLinkVisible(): Promise {\n return (await this.getChangePeriodLink()) != null;\n }\n\n async getMember(username: string): Promise {\n for (const member of await this.getMembers()) {\n if ((await member.getUsername()) === username) {\n return member;\n }\n }\n return null;\n }\n\n async clickRemoveUser(username: string): Promise {\n const member = await this.getMember(username);\n await member.clickRemoveUserButton();\n }\n\n async getMemberCount(): Promise {\n return (await this.getMembers()).length;\n }\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "getChangePeriodLink", + "defaultValue": "this.locatorForOptional('.change-period')", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 6, + "modifierKind": [ + 124 + ] + }, + { + "name": "getMembers", + "defaultValue": "this.locatorForAll(ManageUserHarness)", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 7, + "modifierKind": [ + 124 + ] + }, + { + "name": "hostSelector", + "defaultValue": "'manage-team'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 5, + "modifierKind": [ + 126 + ] + } + ], + "methods": [ + { + "name": "clickRemoveUser", + "args": [ + { + "name": "username", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ], + "jsdoctags": [ + { + "name": "username", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getMember", + "args": [ + { + "name": "username", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 13, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ], + "jsdoctags": [ + { + "name": "username", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getMemberCount", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 27, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ] + }, + { + "name": "isChangePeriodLinkVisible", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 9, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ] + } + ], + "indexSignatures": [], + "extends": [ + "ComponentHarness" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "ManageUserHarness", + "id": "class-ManageUserHarness-c6f90d415e365d1fff30e54c9abb0a6a51b573151dd0a1ed3f959495320597ee0aa8cb6ec0e5c3bde5037c707a8b2c174b774300fd266527ded36708eab36dc1", + "file": "src/assets/wise5/classroomMonitor/classroomMonitorComponents/manageStudents/manage-user/manage-user.harness.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { ComponentHarness } from '@angular/cdk/testing';\nimport { MatButtonHarness } from '@angular/material/button/testing';\nimport { ShowStudentInfoHarness } from '../show-student-info/show-student-info.harness';\n\nexport class ManageUserHarness extends ComponentHarness {\n static hostSelector = 'manage-user';\n protected getStudentInfo = this.locatorForOptional(ShowStudentInfoHarness);\n protected getRemoveUserButton = this.locatorFor(\n MatButtonHarness.with({ selector: '[aria-label=\"Remove student\"]' })\n );\n\n async clickRemoveUserButton(): Promise {\n (await this.getRemoveUserButton()).click();\n }\n\n async getUsername(): Promise {\n return await (await this.getStudentInfo()).getUsernameText();\n }\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "getRemoveUserButton", + "defaultValue": "this.locatorFor(\n MatButtonHarness.with({ selector: '[aria-label=\"Remove student\"]' })\n )", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 8, + "modifierKind": [ + 124 + ] + }, + { + "name": "getStudentInfo", + "defaultValue": "this.locatorForOptional(ShowStudentInfoHarness)", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 7, + "modifierKind": [ + 124 + ] + }, + { + "name": "hostSelector", + "defaultValue": "'manage-user'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 6, + "modifierKind": [ + 126 + ] + } + ], + "methods": [ + { + "name": "clickRemoveUserButton", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 12, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ] + }, + { + "name": "getUsername", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 16, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ] + } + ], + "indexSignatures": [], + "extends": [ + "ComponentHarness" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "MatchComponentDataExportStrategy", + "id": "class-MatchComponentDataExportStrategy-c53e1ac165400415ce36ce8a103dd4a41c8198d0a9b051873609be5c4c2db5f2fd3be3544e511af03f21ccb777f6e4c85f1cbcff8ae3fcca21e05348ba75e386", + "file": "src/assets/wise5/classroomMonitor/dataExport/strategies/MatchComponentDataExportStrategy.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { AbstractComponentDataExportStrategy } from './AbstractComponentDataExportStrategy';\nimport { ComponentDataExportParams } from '../ComponentDataExportParams';\nimport { MatchContent } from '../../../components/match/MatchContent';\nimport { Bucket } from '../../../components/match/bucket';\nimport { Choice } from '../../../components/match/choice';\n\nexport class MatchComponentDataExportStrategy extends AbstractComponentDataExportStrategy {\n private correctnessLabel = 'Correctness';\n private isCorrectLabel = 'Is Correct';\n\n constructor(\n protected nodeId: string,\n protected component: any,\n additionalParams: ComponentDataExportParams,\n protected allOrLatest: 'all' | 'latest'\n ) {\n super(nodeId, component, additionalParams);\n }\n\n protected generateComponentHeaderRow(component: any): string[] {\n const headerRow = [...this.defaultColumnNames];\n this.addAdditionalMatchHeaderColumns(component, headerRow);\n return headerRow;\n }\n\n private addAdditionalMatchHeaderColumns(component: any, headerRow: string[]): void {\n for (const choice of component.choices) {\n headerRow.push(choice.value);\n }\n headerRow = this.addCRaterChoices(component, headerRow);\n if (this.componentHasCorrectAnswer(component)) {\n for (const choice of component.choices) {\n headerRow.push(`${choice.value} ${this.correctnessLabel}`);\n }\n headerRow.push(this.isCorrectLabel);\n }\n }\n\n private addCRaterChoices(component: any, headerRow: string[]): string[] {\n this.getComponentStates(component, false).forEach((componentState: any) =>\n componentState.studentData.buckets.forEach((bucket: Bucket) =>\n bucket.items\n .filter((item) => !item.studentCreated && !headerRow.includes(item.value))\n .forEach((item: Choice) => headerRow.push(item.value))\n )\n );\n return headerRow;\n }\n\n private componentHasCorrectAnswer(component: MatchContent): boolean {\n return component.feedback.some((feedback: any) =>\n feedback.choices.some((choice: any) => choice.isCorrect)\n );\n }\n\n protected generateComponentWorkRows(\n component: any,\n columnNames: string[],\n columnNameToNumber: any,\n nodeId: string\n ): string[] {\n const componentStates = this.getComponentStates(component);\n const workRows = [];\n for (let r = 0; r < componentStates.length; r++) {\n const componentState = componentStates[r];\n const row = new Array(columnNames.length).fill('');\n this.setColumnValue(row, columnNameToNumber, '#', r + 1);\n this.setStudentInfo(row, columnNameToNumber, componentState);\n this.setRunInfo(row, columnNameToNumber, componentState);\n this.setComponentInfo(row, columnNameToNumber, nodeId, component);\n this.setStudentWork(row, columnNameToNumber, component, componentState);\n workRows.push(row);\n }\n return workRows;\n }\n\n protected setStudentWork(\n row: any[],\n columnNameToNumber: any,\n component: any,\n componentState: any\n ): void {\n super.setStudentWork(row, columnNameToNumber, component, componentState);\n if (component.choiceReuseEnabled) {\n this.insertMatchChoiceReuseValues(row, columnNameToNumber, component, componentState);\n } else {\n this.insertMatchDefaultValues(row, columnNameToNumber, component, componentState);\n }\n if (this.componentHasCorrectAnswer(component)) {\n this.setColumnValue(\n row,\n columnNameToNumber,\n this.isCorrectLabel,\n componentState.studentData.isCorrect ? 1 : 0\n );\n }\n }\n\n private insertMatchDefaultValues(\n row: string[],\n columnNameToNumber: any,\n component: any,\n matchComponentState: any\n ): void {\n matchComponentState.studentData.buckets.forEach((bucket: Bucket) => {\n bucket.items.forEach((item: Choice) => {\n this.setColumnValue(\n row,\n columnNameToNumber,\n item.value,\n this.getBucketValueById(component, bucket.id)\n );\n if (this.componentHasCorrectAnswer(component)) {\n this.setCorrectnessValue(row, columnNameToNumber, item);\n }\n });\n });\n }\n\n private insertMatchChoiceReuseValues(\n row: string[],\n columnNameToNumber: any,\n component: any,\n matchComponentState: any\n ): void {\n matchComponentState.studentData.buckets.forEach((bucket: Bucket) => {\n bucket.items.forEach((item: Choice) => {\n this.setBucketValue(row, columnNameToNumber, component, bucket, item);\n if (this.componentHasCorrectAnswer(component)) {\n this.setCorrectnessValueForChoiceReuse(row, columnNameToNumber, item);\n }\n });\n });\n }\n\n private setBucketValue(\n row: string[],\n columnNameToNumber: any,\n component: any,\n bucket: Bucket,\n item: Choice\n ): void {\n const previousValue = this.getColumnValue(row, columnNameToNumber, item.value);\n const bucketValue = this.getBucketValueById(component, bucket.id);\n this.setColumnValue(\n row,\n columnNameToNumber,\n item.value,\n previousValue === '' ? bucketValue : `${previousValue}, ${bucketValue}`\n );\n }\n\n private setCorrectnessValueForChoiceReuse(\n row: any[],\n columnNameToNumber: any,\n item: Choice\n ): void {\n const columnName = `${item.value} ${this.correctnessLabel}`;\n if (item.isCorrect == null) {\n // The item does not have an isCorrect field so we will not show anything in the cell.\n } else if (item.isCorrect) {\n this.mergeCorrectnessValue(row, columnNameToNumber, columnName, 1);\n } else {\n if (item.isIncorrectPosition) {\n this.mergeCorrectnessValue(row, columnNameToNumber, columnName, 2);\n } else {\n this.mergeCorrectnessValue(row, columnNameToNumber, columnName, 0);\n }\n }\n }\n\n /**\n * Matrix to determine the merged correctness value.\n * Legend\n * e = empty\n * 0 = incorrect\n * 1 = correct\n * 2 = correct bucket but incorrect position\n * previous\n * e 0 1 2\n * --------\n * n 0 | 0 0 0 0\n * e 1 | 1 0 1 2\n * w 2 | 2 0 2 2\n * @param row: any[]\n * @param columnNameToNumber: any\n * @param columnName: string\n * @param newValue: number\n */\n private mergeCorrectnessValue(\n row: any,\n columnNameToNumber: any,\n columnName: string,\n newValue: number\n ): void {\n const previousValue = this.getColumnValue(row, columnNameToNumber, columnName);\n if (previousValue === '') {\n this.setColumnValue(row, columnNameToNumber, columnName, newValue);\n } else if (this.bothValuesAreCorrect(previousValue, newValue)) {\n this.setColumnValue(row, columnNameToNumber, columnName, 1);\n } else if (this.eitherValuesAreIncorrect(previousValue, newValue)) {\n this.setColumnValue(row, columnNameToNumber, columnName, 0);\n } else if (this.eitherValuesAreIncorrectPosition(previousValue, newValue)) {\n this.setColumnValue(row, columnNameToNumber, columnName, 2);\n }\n }\n\n private bothValuesAreCorrect(value1: number, value2: number): boolean {\n return value1 === 1 && value2 === 1;\n }\n\n private eitherValuesAreIncorrect(value1: number, value2: number): boolean {\n return value1 === 0 || value2 === 0;\n }\n\n private eitherValuesAreIncorrectPosition(value1: number, value2: number): boolean {\n return value1 === 2 || value2 === 2;\n }\n\n private getBucketValueById(component: any, id: string): string {\n if (id === '0') {\n return component.choicesLabel ? component.choicesLabel : 'Choices';\n }\n const bucket = component.buckets.find((bucket: any) => {\n return bucket.id === id;\n });\n return bucket ? bucket.value : '';\n }\n\n /**\n * Set the correctness boolean value into the cell.\n * @param row The row we are working on.\n * @param columnNameToNumber The mapping from column name to column number.\n * @param item The choice object.\n */\n private setCorrectnessValue(row: any[], columnNameToNumber: any, item: any): void {\n const columnName = `${item.value} ${this.correctnessLabel}`;\n if (item.isCorrect == null) {\n /*\n * The item does not have an isCorrect field so we will not show\n * anything in the cell.\n */\n } else if (item.isCorrect) {\n this.setColumnValue(row, columnNameToNumber, columnName, 1);\n } else {\n if (item.isIncorrectPosition) {\n this.setColumnValue(row, columnNameToNumber, columnName, 2);\n } else {\n this.setColumnValue(row, columnNameToNumber, columnName, 0);\n }\n }\n }\n\n protected getComponentTypeWithUnderscore(): string {\n return 'match';\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "additionalParams", + "type": "ComponentDataExportParams", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "allOrLatest", + "type": "\"all\" | \"latest\"", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 9, + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "additionalParams", + "type": "ComponentDataExportParams", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "allOrLatest", + "type": "\"all\" | \"latest\"", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "correctnessLabel", + "defaultValue": "'Correctness'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 8, + "modifierKind": [ + 123 + ] + }, + { + "name": "isCorrectLabel", + "defaultValue": "'Is Correct'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 9, + "modifierKind": [ + 123 + ] + }, + { + "name": "allOrLatest", + "deprecated": false, + "deprecationMessage": "", + "type": "\"all\" | \"latest\"", + "indexKey": "", + "optional": false, + "description": "", + "line": 8, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "componentStateIdToRevisionNumber", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "object", + "indexKey": "", + "optional": false, + "description": "", + "line": 9, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "defaultColumnNames", + "defaultValue": "[\n '#',\n 'Workgroup ID',\n 'User ID 1',\n 'Student Name 1',\n 'User ID 2',\n 'Student Name 2',\n 'User ID 3',\n 'Student Name 3',\n 'Class Period',\n 'Project ID',\n 'Project Name',\n 'Run ID',\n 'Start Date',\n 'End Date',\n 'Student Work ID',\n 'Server Timestamp',\n 'Client Timestamp',\n 'Node ID',\n 'Component ID',\n 'Component Part Number',\n 'Step Title',\n 'Component Type',\n 'Component Prompt',\n 'Student Data',\n 'Component Revision Counter',\n 'Is Submit',\n 'Submit Count'\n ]", + "deprecated": false, + "deprecationMessage": "", + "type": "[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "includeOnlySubmits", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 39, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "includeStudentNames", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 40, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "revisionCounter", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 41, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "annotationService", + "deprecated": false, + "deprecationMessage": "", + "type": "AnnotationService", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "configService", + "deprecated": false, + "deprecationMessage": "", + "type": "ConfigService", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "context", + "deprecated": false, + "deprecationMessage": "", + "type": "DataExportContext", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "controller", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "dataExportService", + "deprecated": false, + "deprecationMessage": "", + "type": "DataExportService", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "dataService", + "deprecated": false, + "deprecationMessage": "", + "type": "TeacherDataService", + "indexKey": "", + "optional": false, + "description": "", + "line": 20, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "projectService", + "deprecated": false, + "deprecationMessage": "", + "type": "TeacherProjectService", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + } + ], + "methods": [ + { + "name": "addAdditionalMatchHeaderColumns", + "args": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "headerRow", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "headerRow", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addCRaterChoices", + "args": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "headerRow", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string[]", + "typeParameters": [], + "line": 39, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "headerRow", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "bothValuesAreCorrect", + "args": [ + { + "name": "value1", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "value2", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 208, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "value1", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "value2", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "componentHasCorrectAnswer", + "args": [ + { + "name": "component", + "type": "MatchContent", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 50, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "component", + "type": "MatchContent", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "eitherValuesAreIncorrect", + "args": [ + { + "name": "value1", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "value2", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 212, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "value1", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "value2", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "eitherValuesAreIncorrectPosition", + "args": [ + { + "name": "value1", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "value2", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 216, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "value1", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "value2", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "generateComponentHeaderRow", + "args": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string[]", + "typeParameters": [], + "line": 20, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "generateComponentWorkRows", + "args": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNames", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string[]", + "typeParameters": [], + "line": 56, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNames", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "getBucketValueById", + "args": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 220, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getComponentTypeWithUnderscore", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 254, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "insertMatchChoiceReuseValues", + "args": [ + { + "name": "row", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "matchComponentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 120, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "row", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "matchComponentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "insertMatchDefaultValues", + "args": [ + { + "name": "row", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "matchComponentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 99, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "row", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "matchComponentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "mergeCorrectnessValue", + "args": [ + { + "name": "row", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "newValue", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 190, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nMatrix to determine the merged correctness value.\nLegend\ne = empty\n0 = incorrect\n1 = correct\n2 = correct bucket but incorrect position\n previous\n e 0 1 2\n --------\nn 0 | 0 0 0 0\ne 1 | 1 0 1 2\nw 2 | 2 0 2 2\n", + "description": "

Matrix to determine the merged correctness value.\nLegend\ne = empty\n0 = incorrect\n1 = correct\n2 = correct bucket but incorrect position\n previous\n e 0 1 2\n --------\nn 0 | 0 0 0 0\ne 1 | 1 0 1 2\nw 2 | 2 0 2 2

\n", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": { + "pos": 6088, + "end": 6091, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "row" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 6082, + "end": 6087, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

: any[]

\n" + }, + { + "name": { + "pos": 6111, + "end": 6129, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "columnNameToNumber" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 6105, + "end": 6110, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

: any

\n" + }, + { + "name": { + "pos": 6147, + "end": 6157, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "columnName" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 6141, + "end": 6146, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

: string

\n" + }, + { + "name": { + "pos": 6178, + "end": 6186, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "newValue" + }, + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 6172, + "end": 6177, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

: number

\n" + } + ] + }, + { + "name": "setBucketValue", + "args": [ + { + "name": "row", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "bucket", + "type": "Bucket", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "item", + "type": "Choice", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 136, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "row", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "bucket", + "type": "Bucket", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "item", + "type": "Choice", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setCorrectnessValue", + "args": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "item", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 236, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nSet the correctness boolean value into the cell.\n", + "description": "

Set the correctness boolean value into the cell.

\n", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": { + "pos": 7720, + "end": 7723, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "row" + }, + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 7714, + "end": 7719, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The row we are working on.

\n" + }, + { + "name": { + "pos": 7763, + "end": 7781, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "columnNameToNumber" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 7757, + "end": 7762, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The mapping from column name to column number.

\n" + }, + { + "name": { + "pos": 7841, + "end": 7845, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "item" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 7835, + "end": 7840, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The choice object.

\n" + } + ] + }, + { + "name": "setCorrectnessValueForChoiceReuse", + "args": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "item", + "type": "Choice", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 153, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "item", + "type": "Choice", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setStudentWork", + "args": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 77, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "calculateRevisionNumbers", + "args": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 130, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "export", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 53, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "getComponentStates", + "args": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "calculateRevisions", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "true" + } + ], + "optional": false, + "returnType": "ComponentState[]", + "typeParameters": [], + "line": 104, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "calculateRevisions", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "true", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "getLatestRevisions", + "args": [ + { + "name": "componentStates", + "type": "ComponentState[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "ComponentState[]", + "typeParameters": [], + "line": 169, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "componentStates", + "type": "ComponentState[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "getPrompt", + "args": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 206, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "getRevisionCounter", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 165, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "getRevisionCounterKey", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 157, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "incrementRevisionCounter", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 144, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "setAllOrLatest", + "args": [ + { + "name": "allOrLatest", + "type": "\"all\" | \"latest\"", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 98, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "allOrLatest", + "type": "\"all\" | \"latest\"", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "setComponentInfo", + "args": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 182, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "setStudentInfo", + "args": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 81, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "sortByWorkgroupIdAndTimestamp", + "args": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 122, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "generateCSVFile", + "args": [ + { + "name": "rows", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "fileName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 194, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "rows", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "fileName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "generateExportFileName", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentTypeWithUnderscore", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 179, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentTypeWithUnderscore", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "getColumnValue", + "args": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 113, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "getSelectedNodesMap", + "args": [ + { + "name": "selectedNodes", + "type": "[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]" + } + ], + "optional": false, + "returnType": "{}", + "typeParameters": [], + "line": 62, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet a mapping of node/component id strings to true.\nexample if\nselectedNodes = [\n {\n nodeId: \"node1\",\n componentId: \"343b8aesf7\"\n },\n {\n nodeId: \"node2\",\n componentId: \"b34gaf0ug2\"\n },\n {\n nodeId: \"node3\"\n }\n]\n\nthis function will return\n{\n \"node1-343b8aesf7\": true,\n \"node2-b34gaf0ug2\": true,\n \"node3\": true\n}\n\na componentId field\n", + "description": "

Get a mapping of node/component id strings to true.\nexample if\nselectedNodes = [\n {\n nodeId: "node1",\n componentId: "343b8aesf7"\n },\n {\n nodeId: "node2",\n componentId: "b34gaf0ug2"\n },\n {\n nodeId: "node3"\n }\n]

\n

this function will return\n{\n "node1-343b8aesf7": true,\n "node2-b34gaf0ug2": true,\n "node3": true\n}

\n

a componentId field

\n", + "jsdoctags": [ + { + "name": { + "pos": 1979, + "end": 1992, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "selectedNodes" + }, + "type": "[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]", + "tagName": { + "pos": 1973, + "end": 1978, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

an array of objects that contain a nodeId field and maybe also\na componentId field

\n" + }, + { + "tagName": { + "pos": 2087, + "end": 2093, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

a mapping of node/component id strings to true

\n" + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "getStudentDataString", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 157, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the plain text representation of the student work.\n", + "description": "

Get the plain text representation of the student work.

\n", + "jsdoctags": [ + { + "name": { + "pos": 5328, + "end": 5342, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 5322, + "end": 5327, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

A component state that contains the student work.

\n", + "typeExpression": { + "pos": 5343, + "end": 5351, + "kind": 310, + "id": 0, + "flags": 16842752, + "modifierFlagsCache": 0, + "transformFlags": 0, + "type": { + "pos": 5344, + "end": 5350, + "kind": 151, + "id": 0, + "flags": 16777216, + "transformFlags": 1 + } + } + }, + { + "tagName": { + "pos": 5408, + "end": 5415, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

A string that can be placed in a csv cell.

\n", + "returnType": "string" + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "insertColumnAtEnd", + "args": [ + { + "name": "headerRow", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 121, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "headerRow", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "insertColumnBeforeResponseColumn", + "args": [ + { + "name": "headerRow", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 117, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "headerRow", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "isComponentSelected", + "args": [ + { + "name": "selectedNodesMap", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 138, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if a component is selected\nto true\nexample\n{\n \"node1-38fj20egrj\": true,\n \"node1-20dbj2e0sf\": true\n}\n", + "description": "

Check if a component is selected\nto true\nexample\n{\n "node1-38fj20egrj": true,\n "node1-20dbj2e0sf": true\n}

\n", + "jsdoctags": [ + { + "name": { + "pos": 4590, + "end": 4606, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "selectedNodesMap" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4584, + "end": 4589, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

a map of node id and component id strings\nto true\nexample\n{\n"node1-38fj20egrj": true,\n"node1-20dbj2e0sf": true\n}

\n" + }, + { + "name": { + "pos": 4766, + "end": 4772, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4760, + "end": 4765, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id to check

\n" + }, + { + "name": { + "pos": 4806, + "end": 4817, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4800, + "end": 4805, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component id to check

\n" + }, + { + "tagName": { + "pos": 4850, + "end": 4856, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether the component is selected

\n" + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "populateColumnNameMappings", + "args": [ + { + "name": "columnNames", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 103, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "columnNames", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "setColumnValue", + "args": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "value", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 109, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "value", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "setDataExportContext", + "args": [ + { + "name": "context", + "type": "DataExportContext", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "context", + "type": "DataExportContext", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "setRunInfo", + "args": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + } + ], + "indexSignatures": [], + "extends": [ + "AbstractComponentDataExportStrategy" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "MatchInfo", + "id": "class-MatchInfo-d3a61938ed241f04c1c1c92f27fb14b07119cac03cc7da753e4915a73503003d5fc7c0418d7c46eb3edd71ba019a009ef4a718d41bf225b342c42fc7583b0cf7", + "file": "src/assets/wise5/components/match/MatchInfo.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { ComponentInfo } from '../ComponentInfo';\n\nexport class MatchInfo extends ComponentInfo {\n protected description: string = $localize`Students sort items into different buckets.`;\n protected label: string = $localize`Match`;\n protected previewExamples: any[] = [\n {\n label: $localize`Match`,\n content: {\n id: 'abcde12345',\n type: 'Match',\n prompt:\n 'Sort the different environmental pressures that organisms can face into biotic and abiotic pressures.',\n showSaveButton: false,\n showSubmitButton: true,\n choices: [\n {\n id: 'evhs07qtqu',\n type: 'choice',\n value: 'Predators'\n },\n {\n id: 'sa5w70scaw',\n type: 'choice',\n value: 'Dangerous viruses'\n },\n {\n id: 'ofm2mo5mgy',\n type: 'choice',\n value: 'High temperatures'\n },\n {\n id: '3unza7haw1',\n type: 'choice',\n value: 'Lack of water'\n },\n {\n id: '21noaztqyb',\n type: 'choice',\n value: 'Siblings competing for territory'\n },\n {\n id: 'i5n25oq6qy',\n type: 'choice',\n value: 'Air pollution'\n },\n {\n id: '6vbjwoo64q',\n type: 'choice',\n value: 'Not enough food (prey)'\n },\n {\n id: 'b8lhey6tgp',\n type: 'choice',\n value: 'Strong sun light'\n },\n {\n id: 'ocm53nhs1f',\n type: 'choice',\n value: 'Parasites'\n },\n {\n id: 'rzas42rtvc',\n type: 'choice',\n value: 'Sand storms'\n }\n ],\n choiceReuseEnabled: false,\n buckets: [\n {\n id: 'k7zphrnrym',\n type: 'bucket',\n value: 'Biotic pressures'\n },\n {\n id: 't7ij83fu78',\n type: 'bucket',\n value: 'Abiotic pressures'\n }\n ],\n choicesLabel: 'Environmental pressures',\n feedback: [\n {\n bucketId: '0',\n choices: [\n {\n choiceId: 'evhs07qtqu',\n feedback: '',\n isCorrect: false\n },\n {\n choiceId: 'sa5w70scaw',\n feedback: '',\n isCorrect: false\n },\n {\n choiceId: 'ofm2mo5mgy',\n feedback: '',\n isCorrect: false\n },\n {\n choiceId: '3unza7haw1',\n feedback: '',\n isCorrect: false\n },\n {\n choiceId: '21noaztqyb',\n feedback: '',\n isCorrect: false\n },\n {\n choiceId: 'i5n25oq6qy',\n feedback: '',\n isCorrect: false\n },\n {\n choiceId: '6vbjwoo64q',\n feedback: '',\n isCorrect: false\n },\n {\n choiceId: 'b8lhey6tgp',\n feedback: '',\n isCorrect: false\n },\n {\n choiceId: 'ocm53nhs1f',\n feedback: '',\n isCorrect: false\n },\n {\n choiceId: 'rzas42rtvc',\n feedback: '',\n isCorrect: false\n }\n ]\n },\n {\n bucketId: 'k7zphrnrym',\n choices: [\n {\n choiceId: 'evhs07qtqu',\n feedback: '',\n isCorrect: true\n },\n {\n choiceId: 'sa5w70scaw',\n feedback: '',\n isCorrect: true\n },\n {\n choiceId: 'ofm2mo5mgy',\n feedback: '',\n isCorrect: false\n },\n {\n choiceId: '3unza7haw1',\n feedback: '',\n isCorrect: false\n },\n {\n choiceId: '21noaztqyb',\n feedback: '',\n isCorrect: true\n },\n {\n choiceId: 'i5n25oq6qy',\n feedback: '',\n isCorrect: false\n },\n {\n choiceId: '6vbjwoo64q',\n feedback: '',\n isCorrect: true\n },\n {\n choiceId: 'b8lhey6tgp',\n feedback: '',\n isCorrect: false\n },\n {\n choiceId: 'ocm53nhs1f',\n feedback: '',\n isCorrect: true\n },\n {\n choiceId: 'rzas42rtvc',\n feedback: '',\n isCorrect: false\n }\n ]\n },\n {\n bucketId: 't7ij83fu78',\n choices: [\n {\n choiceId: 'evhs07qtqu',\n feedback: '',\n isCorrect: false\n },\n {\n choiceId: 'sa5w70scaw',\n feedback: '',\n isCorrect: false\n },\n {\n choiceId: 'ofm2mo5mgy',\n feedback: '',\n isCorrect: true\n },\n {\n choiceId: '3unza7haw1',\n feedback: '',\n isCorrect: true\n },\n {\n choiceId: '21noaztqyb',\n feedback: '',\n isCorrect: false\n },\n {\n choiceId: 'i5n25oq6qy',\n feedback: '',\n isCorrect: true\n },\n {\n choiceId: '6vbjwoo64q',\n feedback: 'Think - what do animals usually eat?',\n isCorrect: false\n },\n {\n choiceId: 'b8lhey6tgp',\n feedback: '',\n isCorrect: true\n },\n {\n choiceId: 'ocm53nhs1f',\n feedback: '',\n isCorrect: false\n },\n {\n choiceId: 'rzas42rtvc',\n feedback: '',\n isCorrect: true\n }\n ]\n }\n ],\n ordered: false,\n constraints: []\n }\n }\n ];\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "description", + "defaultValue": "$localize`Students sort items into different buckets.`", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 4, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentInfo" + } + }, + { + "name": "label", + "defaultValue": "$localize`Match`", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 5, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentInfo" + } + }, + { + "name": "previewExamples", + "defaultValue": "[\n {\n label: $localize`Match`,\n content: {\n id: 'abcde12345',\n type: 'Match',\n prompt:\n 'Sort the different environmental pressures that organisms can face into biotic and abiotic pressures.',\n showSaveButton: false,\n showSubmitButton: true,\n choices: [\n {\n id: 'evhs07qtqu',\n type: 'choice',\n value: 'Predators'\n },\n {\n id: 'sa5w70scaw',\n type: 'choice',\n value: 'Dangerous viruses'\n },\n {\n id: 'ofm2mo5mgy',\n type: 'choice',\n value: 'High temperatures'\n },\n {\n id: '3unza7haw1',\n type: 'choice',\n value: 'Lack of water'\n },\n {\n id: '21noaztqyb',\n type: 'choice',\n value: 'Siblings competing for territory'\n },\n {\n id: 'i5n25oq6qy',\n type: 'choice',\n value: 'Air pollution'\n },\n {\n id: '6vbjwoo64q',\n type: 'choice',\n value: 'Not enough food (prey)'\n },\n {\n id: 'b8lhey6tgp',\n type: 'choice',\n value: 'Strong sun light'\n },\n {\n id: 'ocm53nhs1f',\n type: 'choice',\n value: 'Parasites'\n },\n {\n id: 'rzas42rtvc',\n type: 'choice',\n value: 'Sand storms'\n }\n ],\n choiceReuseEnabled: false,\n buckets: [\n {\n id: 'k7zphrnrym',\n type: 'bucket',\n value: 'Biotic pressures'\n },\n {\n id: 't7ij83fu78',\n type: 'bucket',\n value: 'Abiotic pressures'\n }\n ],\n choicesLabel: 'Environmental pressures',\n feedback: [\n {\n bucketId: '0',\n choices: [\n {\n choiceId: 'evhs07qtqu',\n feedback: '',\n isCorrect: false\n },\n {\n choiceId: 'sa5w70scaw',\n feedback: '',\n isCorrect: false\n },\n {\n choiceId: 'ofm2mo5mgy',\n feedback: '',\n isCorrect: false\n },\n {\n choiceId: '3unza7haw1',\n feedback: '',\n isCorrect: false\n },\n {\n choiceId: '21noaztqyb',\n feedback: '',\n isCorrect: false\n },\n {\n choiceId: 'i5n25oq6qy',\n feedback: '',\n isCorrect: false\n },\n {\n choiceId: '6vbjwoo64q',\n feedback: '',\n isCorrect: false\n },\n {\n choiceId: 'b8lhey6tgp',\n feedback: '',\n isCorrect: false\n },\n {\n choiceId: 'ocm53nhs1f',\n feedback: '',\n isCorrect: false\n },\n {\n choiceId: 'rzas42rtvc',\n feedback: '',\n isCorrect: false\n }\n ]\n },\n {\n bucketId: 'k7zphrnrym',\n choices: [\n {\n choiceId: 'evhs07qtqu',\n feedback: '',\n isCorrect: true\n },\n {\n choiceId: 'sa5w70scaw',\n feedback: '',\n isCorrect: true\n },\n {\n choiceId: 'ofm2mo5mgy',\n feedback: '',\n isCorrect: false\n },\n {\n choiceId: '3unza7haw1',\n feedback: '',\n isCorrect: false\n },\n {\n choiceId: '21noaztqyb',\n feedback: '',\n isCorrect: true\n },\n {\n choiceId: 'i5n25oq6qy',\n feedback: '',\n isCorrect: false\n },\n {\n choiceId: '6vbjwoo64q',\n feedback: '',\n isCorrect: true\n },\n {\n choiceId: 'b8lhey6tgp',\n feedback: '',\n isCorrect: false\n },\n {\n choiceId: 'ocm53nhs1f',\n feedback: '',\n isCorrect: true\n },\n {\n choiceId: 'rzas42rtvc',\n feedback: '',\n isCorrect: false\n }\n ]\n },\n {\n bucketId: 't7ij83fu78',\n choices: [\n {\n choiceId: 'evhs07qtqu',\n feedback: '',\n isCorrect: false\n },\n {\n choiceId: 'sa5w70scaw',\n feedback: '',\n isCorrect: false\n },\n {\n choiceId: 'ofm2mo5mgy',\n feedback: '',\n isCorrect: true\n },\n {\n choiceId: '3unza7haw1',\n feedback: '',\n isCorrect: true\n },\n {\n choiceId: '21noaztqyb',\n feedback: '',\n isCorrect: false\n },\n {\n choiceId: 'i5n25oq6qy',\n feedback: '',\n isCorrect: true\n },\n {\n choiceId: '6vbjwoo64q',\n feedback: 'Think - what do animals usually eat?',\n isCorrect: false\n },\n {\n choiceId: 'b8lhey6tgp',\n feedback: '',\n isCorrect: true\n },\n {\n choiceId: 'ocm53nhs1f',\n feedback: '',\n isCorrect: false\n },\n {\n choiceId: 'rzas42rtvc',\n feedback: '',\n isCorrect: true\n }\n ]\n }\n ],\n ordered: false,\n constraints: []\n }\n }\n ]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 6, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentInfo" + } + } + ], + "methods": [ + { + "name": "getDescription", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 6, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentInfo" + } + }, + { + "name": "getLabel", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 10, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentInfo" + } + }, + { + "name": "getPreviewExamples", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 14, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentInfo" + } + } + ], + "indexSignatures": [], + "extends": [ + "ComponentInfo" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "MatchSummaryData", + "id": "class-MatchSummaryData-426dc73a216365988bf23581bc57aaa90c5c94f4665caee24a6ebaa7822a1846268e97d1e4257fa57c449d652d8f34f8f26738a57e92f84f310caa6e2b5f31e3", + "file": "src/assets/wise5/directives/teacher-summary-display/summary-data/MatchSummaryData.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { ComponentState } from '../../../../../app/domain/componentState';\nimport { MatchSummaryDataPoint } from './MatchSummaryDataPoint';\nimport { SummaryData } from '../../summary-display/summary-data/SummaryData';\n\ntype BucketData = { bucketValue: string; bucketDataPoints: MatchSummaryDataPoint[] };\n\n/**\n * Summary data for all choices in all buckets\n */\nexport class MatchSummaryData extends SummaryData {\n private isOrderedMatch: boolean;\n protected bucketsData: BucketData[] = [];\n\n constructor(componentStates: ComponentState[]) {\n super();\n this.extractBucketData(componentStates);\n }\n\n getBucketsData(): BucketData[] {\n return this.bucketsData;\n }\n\n private extractBucketData(componentStates: ComponentState[]): void {\n componentStates.forEach((componentState) => {\n componentState.studentData.buckets.forEach((bucketStudentData) => {\n const newBucketData = { bucketValue: bucketStudentData.value, bucketDataPoints: [] };\n bucketStudentData.items.forEach((item) => {\n this.extractChoiceDataPerBucket(item.value, bucketStudentData.value, newBucketData);\n this.checkIsOrderedMatch(item.isIncorrectPosition);\n });\n this.addNewBucketDataToSummaryData(newBucketData);\n });\n });\n }\n\n private extractChoiceDataPerBucket(\n itemValue: string,\n bucketValue: string,\n bucketData: BucketData\n ): void {\n const summaryDataPoint = this.findSummaryDataPoint(itemValue, bucketValue);\n if (summaryDataPoint) {\n summaryDataPoint.incrementCount(1);\n } else {\n const newDataPoint = new MatchSummaryDataPoint(itemValue, 1, bucketValue);\n this.summaryDataPoints.push(newDataPoint);\n bucketData.bucketDataPoints.push(newDataPoint);\n }\n }\n\n private addNewBucketDataToSummaryData(newBucketData: BucketData): void {\n const bucketMatch = this.findBucketByValue(newBucketData.bucketValue);\n if (bucketMatch) {\n bucketMatch.bucketDataPoints = bucketMatch.bucketDataPoints.concat(\n newBucketData.bucketDataPoints\n );\n } else {\n this.bucketsData.push(newBucketData);\n }\n }\n\n private findBucketByValue(bucketValue: string): BucketData {\n return this.bucketsData.find((bucketData) => bucketData.bucketValue === bucketValue);\n }\n\n private findSummaryDataPoint(itemValue: string, bucketValue: string): MatchSummaryDataPoint {\n return this.bucketsData\n .find((bucket) => bucket.bucketValue === bucketValue)\n ?.bucketDataPoints.find((dataPoint) => dataPoint.getId() === itemValue);\n }\n\n private checkIsOrderedMatch(isIncorrectPosition: boolean): void {\n if (!this.isOrderedMatch) {\n this.isOrderedMatch = [true, false].includes(isIncorrectPosition);\n }\n }\n\n protected generateNewDataPoint(id: string | number): MatchSummaryDataPoint {\n return new MatchSummaryDataPoint(id);\n }\n\n getIsOrderedMatch(): boolean {\n return this.isOrderedMatch;\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "componentStates", + "type": "ComponentState[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 12, + "jsdoctags": [ + { + "name": "componentStates", + "type": "ComponentState[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "bucketsData", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "BucketData[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "modifierKind": [ + 124 + ] + }, + { + "name": "isOrderedMatch", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "modifierKind": [ + 123 + ] + }, + { + "name": "summaryDataPoints", + "deprecated": false, + "deprecationMessage": "", + "type": "SummaryDataPoint[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 4, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "SummaryData" + } + } + ], + "description": "

Summary data for all choices in all buckets

\n", + "rawdescription": "\n\nSummary data for all choices in all buckets\n", + "methods": [ + { + "name": "addNewBucketDataToSummaryData", + "args": [ + { + "name": "newBucketData", + "type": "BucketData", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 51, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "newBucketData", + "type": "BucketData", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "checkIsOrderedMatch", + "args": [ + { + "name": "isIncorrectPosition", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 72, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "isIncorrectPosition", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "extractBucketData", + "args": [ + { + "name": "componentStates", + "type": "ComponentState[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 23, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentStates", + "type": "ComponentState[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "extractChoiceDataPerBucket", + "args": [ + { + "name": "itemValue", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "bucketValue", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "bucketData", + "type": "BucketData", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 36, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "itemValue", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "bucketValue", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "bucketData", + "type": "BucketData", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "findBucketByValue", + "args": [ + { + "name": "bucketValue", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "BucketData", + "typeParameters": [], + "line": 62, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "bucketValue", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "findSummaryDataPoint", + "args": [ + { + "name": "itemValue", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "bucketValue", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "MatchSummaryDataPoint", + "typeParameters": [], + "line": 66, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "itemValue", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "bucketValue", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "generateNewDataPoint", + "args": [ + { + "name": "id", + "type": "string | number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "MatchSummaryDataPoint", + "typeParameters": [], + "line": 78, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "id", + "type": "string | number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryData" + } + }, + { + "name": "getBucketsData", + "args": [], + "optional": false, + "returnType": "BucketData[]", + "typeParameters": [], + "line": 19, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getIsOrderedMatch", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 82, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getDataPointById", + "args": [ + { + "name": "id", + "type": "string | number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "SummaryDataPoint", + "typeParameters": [], + "line": 13, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "id", + "type": "string | number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryData" + } + }, + { + "name": "getDataPointCountById", + "args": [ + { + "name": "id", + "type": "string | number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 32, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "id", + "type": "string | number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryData" + } + }, + { + "name": "getDataPoints", + "args": [], + "optional": false, + "returnType": "SummaryDataPoint[]", + "typeParameters": [], + "line": 17, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "SummaryData" + } + }, + { + "name": "incrementSummaryData", + "args": [ + { + "name": "id", + "type": "string | number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "incrementBy", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 21, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "id", + "type": "string | number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "incrementBy", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryData" + } + } + ], + "indexSignatures": [], + "extends": [ + "SummaryData" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "MatchSummaryDataPoint", + "id": "class-MatchSummaryDataPoint-87c9aeea815e83e35edbad77e2f9cf0b66335d62af1a7dddda5e068432b43729fef90c9ef73f0a3b026b3b4eb8766e22f75516296d1f8c01df393cf74d2c365a", + "file": "src/assets/wise5/directives/teacher-summary-display/summary-data/MatchSummaryDataPoint.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { SummaryDataPoint } from '../../summary-display/summary-data/SummaryDataPoint';\n\n/**\n * Summary data for one choice in one bucket\n */\nexport class MatchSummaryDataPoint extends SummaryDataPoint {\n private bucketValue: string;\n\n constructor(id: number | string, count?: number, bucketValue?: string) {\n super(id, count);\n this.bucketValue = bucketValue;\n }\n\n getBucketValue(): string {\n return this.bucketValue;\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "id", + "type": "number | string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "count", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "optional": true + }, + { + "name": "bucketValue", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "optional": true + } + ], + "line": 7, + "jsdoctags": [ + { + "name": "id", + "type": "number | string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "count", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "optional": true, + "tagName": { + "text": "param" + } + }, + { + "name": "bucketValue", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "optional": true, + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "bucketValue", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 7, + "modifierKind": [ + 123 + ] + }, + { + "name": "count", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 3, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "SummaryDataPoint" + } + }, + { + "name": "id", + "deprecated": false, + "deprecationMessage": "", + "type": "number | string", + "indexKey": "", + "optional": false, + "description": "", + "line": 2, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "SummaryDataPoint" + } + } + ], + "description": "

Summary data for one choice in one bucket

\n", + "rawdescription": "\n\nSummary data for one choice in one bucket\n", + "methods": [ + { + "name": "getBucketValue", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 14, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getCount", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 14, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "SummaryDataPoint" + } + }, + { + "name": "getId", + "args": [], + "optional": false, + "returnType": "number | string", + "typeParameters": [], + "line": 10, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "SummaryDataPoint" + } + }, + { + "name": "incrementCount", + "args": [ + { + "name": "incrementBy", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 18, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "incrementBy", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDataPoint" + } + } + ], + "indexSignatures": [], + "extends": [ + "SummaryDataPoint" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "MilestoneCriteriaEvaluator", + "id": "class-MilestoneCriteriaEvaluator-17c65a2a801501e01716c124c702cfd246ec293220aee23f0e9df2746123d3feb99da7e59cf6a20b31da4abc1bf2eaf625cb9e43af60d2756fdac114f2c02865", + "file": "src/assets/wise5/classroomMonitor/milestones/milestoneCriteriaEvaluator.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "export class MilestoneCriteriaEvaluator {\n isSatisfied(satisfyCriterion: any, aggregateAutoScores: any[]): boolean {\n return (\n satisfyCriterion.function === 'default' ||\n this.satisfyCriteriaFuncNameToFunc[satisfyCriterion.function](\n satisfyCriterion,\n aggregateAutoScores\n )\n );\n }\n\n private satisfyCriteriaFuncNameToFunc = {\n percentOfScoresGreaterThan: (satisfyCriterion: any, aggregateAutoScores: any[]) => {\n return this.isPercentOfScoresSatisfiesComparator(\n satisfyCriterion,\n aggregateAutoScores,\n this.greaterThan\n );\n },\n percentOfScoresGreaterThanOrEqualTo: (satisfyCriterion: any, aggregateAutoScores: any[]) => {\n return this.isPercentOfScoresSatisfiesComparator(\n satisfyCriterion,\n aggregateAutoScores,\n this.greaterThanEqualTo\n );\n },\n percentOfScoresLessThan: (satisfyCriterion: any, aggregateAutoScores: any[]) => {\n return this.isPercentOfScoresSatisfiesComparator(\n satisfyCriterion,\n aggregateAutoScores,\n this.lessThan\n );\n },\n percentOfScoresLessThanOrEqualTo: (satisfyCriterion: any, aggregateAutoScores: any[]) => {\n return this.isPercentOfScoresSatisfiesComparator(\n satisfyCriterion,\n aggregateAutoScores,\n this.lessThanEqualTo\n );\n },\n percentOfScoresEqualTo: (satisfyCriterion: any, aggregateAutoScores: any[]) => {\n return this.isPercentOfScoresSatisfiesComparator(\n satisfyCriterion,\n aggregateAutoScores,\n this.equalTo\n );\n },\n percentOfScoresNotEqualTo: (satisfyCriterion: any, aggregateAutoScores: any[]) => {\n return this.isPercentOfScoresSatisfiesComparator(\n satisfyCriterion,\n aggregateAutoScores,\n this.notEqualTo\n );\n }\n };\n\n private isPercentOfScoresSatisfiesComparator(\n satisfyCriterion: any,\n aggregateAutoScores: any[],\n comparator: any\n ): boolean {\n const aggregateData = this.getAggregateData(satisfyCriterion, aggregateAutoScores);\n const possibleScores = this.getPossibleScores(aggregateData);\n const sum = this.getComparatorSum(satisfyCriterion, aggregateData, possibleScores, comparator);\n return this.isPercentThresholdSatisfied(satisfyCriterion, aggregateData, sum);\n }\n\n private getAggregateData(satisfyCriterion: any, aggregateAutoScores: any[]) {\n for (const aggregateAutoScore of aggregateAutoScores) {\n if (aggregateAutoScore.componentId === satisfyCriterion.componentId) {\n return aggregateAutoScore.aggregateAutoScore[satisfyCriterion.targetVariable];\n }\n }\n throw new Error(`Aggregate data not found for component ${satisfyCriterion.componentId}`);\n }\n\n private getPossibleScores(aggregateData: any) {\n return Object.keys(aggregateData.counts).map(Number).sort();\n }\n\n private getComparatorSum(\n satisfyCriterion: any,\n aggregateData: any,\n possibleScores: number[],\n comparator: any\n ): number {\n let sum = 0;\n for (const possibleScore of possibleScores) {\n if (comparator(possibleScore, satisfyCriterion.value)) {\n sum += aggregateData.counts[possibleScore];\n }\n }\n return sum;\n }\n\n private isPercentThresholdSatisfied(\n satisfyCriterion: any,\n aggregateData: any,\n sum: number\n ): boolean {\n const percentOfScores = (100 * sum) / aggregateData.scoreCount;\n return percentOfScores >= satisfyCriterion.percentThreshold;\n }\n\n private greaterThanEqualTo(a: number, b: number): boolean {\n return a >= b;\n }\n\n private greaterThan(a: number, b: number): boolean {\n return a > b;\n }\n\n private lessThanEqualTo(a: number, b: number): boolean {\n return a <= b;\n }\n\n private lessThan(a: number, b: number): boolean {\n return a < b;\n }\n\n private equalTo(a: number, b: number): boolean {\n return a === b;\n }\n\n private notEqualTo(a: number, b: number): boolean {\n return a !== b;\n }\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "satisfyCriteriaFuncNameToFunc", + "defaultValue": "{\n percentOfScoresGreaterThan: (satisfyCriterion: any, aggregateAutoScores: any[]) => {\n return this.isPercentOfScoresSatisfiesComparator(\n satisfyCriterion,\n aggregateAutoScores,\n this.greaterThan\n );\n },\n percentOfScoresGreaterThanOrEqualTo: (satisfyCriterion: any, aggregateAutoScores: any[]) => {\n return this.isPercentOfScoresSatisfiesComparator(\n satisfyCriterion,\n aggregateAutoScores,\n this.greaterThanEqualTo\n );\n },\n percentOfScoresLessThan: (satisfyCriterion: any, aggregateAutoScores: any[]) => {\n return this.isPercentOfScoresSatisfiesComparator(\n satisfyCriterion,\n aggregateAutoScores,\n this.lessThan\n );\n },\n percentOfScoresLessThanOrEqualTo: (satisfyCriterion: any, aggregateAutoScores: any[]) => {\n return this.isPercentOfScoresSatisfiesComparator(\n satisfyCriterion,\n aggregateAutoScores,\n this.lessThanEqualTo\n );\n },\n percentOfScoresEqualTo: (satisfyCriterion: any, aggregateAutoScores: any[]) => {\n return this.isPercentOfScoresSatisfiesComparator(\n satisfyCriterion,\n aggregateAutoScores,\n this.equalTo\n );\n },\n percentOfScoresNotEqualTo: (satisfyCriterion: any, aggregateAutoScores: any[]) => {\n return this.isPercentOfScoresSatisfiesComparator(\n satisfyCriterion,\n aggregateAutoScores,\n this.notEqualTo\n );\n }\n }", + "deprecated": false, + "deprecationMessage": "", + "type": "object", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "modifierKind": [ + 123 + ] + } + ], + "methods": [ + { + "name": "equalTo", + "args": [ + { + "name": "a", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "b", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 121, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "a", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "b", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getAggregateData", + "args": [ + { + "name": "satisfyCriterion", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "aggregateAutoScores", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 68, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "satisfyCriterion", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "aggregateAutoScores", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getComparatorSum", + "args": [ + { + "name": "satisfyCriterion", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "aggregateData", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "possibleScores", + "type": "number[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "comparator", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 81, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "satisfyCriterion", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "aggregateData", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "possibleScores", + "type": "number[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "comparator", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getPossibleScores", + "args": [ + { + "name": "aggregateData", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 77, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "aggregateData", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "greaterThan", + "args": [ + { + "name": "a", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "b", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 109, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "a", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "b", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "greaterThanEqualTo", + "args": [ + { + "name": "a", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "b", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 105, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "a", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "b", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isPercentOfScoresSatisfiesComparator", + "args": [ + { + "name": "satisfyCriterion", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "aggregateAutoScores", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "comparator", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 57, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "satisfyCriterion", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "aggregateAutoScores", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "comparator", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isPercentThresholdSatisfied", + "args": [ + { + "name": "satisfyCriterion", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "aggregateData", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "sum", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 96, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "satisfyCriterion", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "aggregateData", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "sum", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isSatisfied", + "args": [ + { + "name": "satisfyCriterion", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "aggregateAutoScores", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 2, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "satisfyCriterion", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "aggregateAutoScores", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "lessThan", + "args": [ + { + "name": "a", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "b", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 117, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "a", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "b", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "lessThanEqualTo", + "args": [ + { + "name": "a", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "b", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 113, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "a", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "b", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "notEqualTo", + "args": [ + { + "name": "a", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "b", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 125, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "a", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "b", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "MockNodeService", + "id": "class-MockNodeService-c40edd63a02baf312e650422c1afd07ed0c2a939f011fb8066b0d31e202409fcc56abb861986dd0951656a5d491f1615665552e1e075a3c9639cfc99daceba39", + "file": "src/assets/wise5/components/common/MockNodeService.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { Observable, Subject } from 'rxjs';\n\nexport class MockNodeService {\n private starterStateResponseSource: Subject = new Subject();\n public starterStateResponse$: Observable = this.starterStateResponseSource.asObservable();\n private deleteStarterStateSource: Subject = new Subject();\n public deleteStarterState$: Observable = this.deleteStarterStateSource.asObservable();\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "deleteStarterState$", + "defaultValue": "this.deleteStarterStateSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "Observable", + "indexKey": "", + "optional": false, + "description": "", + "line": 7, + "modifierKind": [ + 125 + ] + }, + { + "name": "deleteStarterStateSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 6, + "modifierKind": [ + 123 + ] + }, + { + "name": "starterStateResponse$", + "defaultValue": "this.starterStateResponseSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "Observable", + "indexKey": "", + "optional": false, + "description": "", + "line": 5, + "modifierKind": [ + 125 + ] + }, + { + "name": "starterStateResponseSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 4, + "modifierKind": [ + 123 + ] + } + ], + "methods": [], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "MultipleChoiceAuthoringHarness", + "id": "class-MultipleChoiceAuthoringHarness-5a56bc9cca33375536edb8ae7e75f9165c6bedc5f7635a6a05d01de56f2156b9e720ef816a93a7d373ebc7477811875ab60002dcf41d5a2551b6335314f863e4", + "file": "src/assets/wise5/components/multipleChoice/multiple-choice-authoring/multiple-choice-authoring.harness.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { ComponentHarness } from '@angular/cdk/testing';\nimport { MatButtonHarness } from '@angular/material/button/testing';\nimport { MatRadioButtonHarness } from '@angular/material/radio/testing';\n\nexport class MultipleChoiceAuthoringHarness extends ComponentHarness {\n static hostSelector = 'multiple-choice-authoring';\n getAddChoiceButton = this.locatorFor(MatButtonHarness.with({ selector: '.add-choice-button' }));\n getChoices = this.locatorForAll('.choice-container');\n getDeleteChoiceButtons = this.locatorForAll(\n MatButtonHarness.with({ selector: '[mattooltip=\"Delete\"]' })\n );\n getMoveDownButtons = this.locatorForAll(\n MatButtonHarness.with({ selector: '[mattooltip=\"Move Down\"]' })\n );\n getMoveUpButtons = this.locatorForAll(\n MatButtonHarness.with({ selector: '[mattooltip=\"Move Up\"]' })\n );\n getMultipleAnswerRadioChoice = this.locatorFor(\n MatRadioButtonHarness.with({ label: 'Multiple Answer' })\n );\n getSingleAnswerRadioChoice = this.locatorFor(\n MatRadioButtonHarness.with({ label: 'Single Answer' })\n );\n\n async getDeleteChoiceButton(index: number): Promise {\n return (await this.getDeleteChoiceButtons())[index];\n }\n\n async getMoveChoiceDownButton(index: number): Promise {\n return (await this.getMoveDownButtons())[index];\n }\n\n async getMoveChoiceUpButton(index: number): Promise {\n return (await this.getMoveUpButtons())[index];\n }\n\n async getNumChoices(): Promise {\n return (await this.getChoices()).length;\n }\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "getAddChoiceButton", + "defaultValue": "this.locatorFor(MatButtonHarness.with({ selector: '.add-choice-button' }))", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 7 + }, + { + "name": "getChoices", + "defaultValue": "this.locatorForAll('.choice-container')", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 8 + }, + { + "name": "getDeleteChoiceButtons", + "defaultValue": "this.locatorForAll(\n MatButtonHarness.with({ selector: '[mattooltip=\"Delete\"]' })\n )", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 9 + }, + { + "name": "getMoveDownButtons", + "defaultValue": "this.locatorForAll(\n MatButtonHarness.with({ selector: '[mattooltip=\"Move Down\"]' })\n )", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 12 + }, + { + "name": "getMoveUpButtons", + "defaultValue": "this.locatorForAll(\n MatButtonHarness.with({ selector: '[mattooltip=\"Move Up\"]' })\n )", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 15 + }, + { + "name": "getMultipleAnswerRadioChoice", + "defaultValue": "this.locatorFor(\n MatRadioButtonHarness.with({ label: 'Multiple Answer' })\n )", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 18 + }, + { + "name": "getSingleAnswerRadioChoice", + "defaultValue": "this.locatorFor(\n MatRadioButtonHarness.with({ label: 'Single Answer' })\n )", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 21 + }, + { + "name": "hostSelector", + "defaultValue": "'multiple-choice-authoring'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 6, + "modifierKind": [ + 126 + ] + } + ], + "methods": [ + { + "name": "getDeleteChoiceButton", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 25, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ], + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getMoveChoiceDownButton", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 29, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ], + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getMoveChoiceUpButton", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 33, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ], + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getNumChoices", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 37, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ] + } + ], + "indexSignatures": [], + "extends": [ + "ComponentHarness" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "MultipleChoiceComponent", + "id": "class-MultipleChoiceComponent-76099c8938cfd1bdad582b443e66037aeea4998b8dcea8a08a9abbd3109d809a9dbb308502079afc9783282825759ac334096a83421f64cf960da018f407b81c", + "file": "src/assets/wise5/components/multipleChoice/MultipleChoiceComponent.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { arraysContainSameValues } from '../../common/array/array';\nimport { Component } from '../../common/Component';\nimport { Choice } from './Choice';\nimport { MultipleChoiceContent } from './MultipleChoiceContent';\n\nexport class MultipleChoiceComponent extends Component {\n content: MultipleChoiceContent;\n\n calculateIsCorrect(componentState: any): boolean {\n return this.isRadio()\n ? this.isRadioCorrect(componentState)\n : this.isCheckboxCorrect(componentState);\n }\n\n getChoices(): Choice[] {\n return this.content.choices;\n }\n\n getChoiceType(): 'radio' | 'checkbox' {\n return this.content.choiceType;\n }\n\n isCheckbox(): boolean {\n return this.content.choiceType === 'checkbox';\n }\n\n isRadio(): boolean {\n return this.content.choiceType === 'radio';\n }\n\n private isCheckboxCorrect(componentState: any): boolean {\n return arraysContainSameValues(\n this.getCorrectChoiceIdsForCheckbox(),\n this.getChoicesIdsStudentChose(componentState.studentData.studentChoices)\n );\n }\n\n private getCorrectChoiceIdsForCheckbox(): string[] {\n const correctChoiceIds: string[] = [];\n for (const choice of this.content.choices) {\n if (choice.isCorrect) {\n correctChoiceIds.push(choice.id);\n }\n }\n return correctChoiceIds;\n }\n\n private getChoicesIdsStudentChose(studentChoices: any[]): string[] {\n return studentChoices.map((studentChoice) => studentChoice.id);\n }\n\n private isRadioCorrect(componentState: any): boolean {\n const correctChoiceId = this.getCorrectChoiceIdForRadio();\n return componentState.studentData.studentChoices[0].id === correctChoiceId;\n }\n\n private getCorrectChoiceIdForRadio(): string {\n for (const choice of this.content.choices) {\n if (choice.isCorrect) {\n return choice.id;\n }\n }\n return null;\n }\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "content", + "deprecated": false, + "deprecationMessage": "", + "type": "MultipleChoiceContent", + "indexKey": "", + "optional": false, + "description": "", + "line": 7, + "inheritance": { + "file": "Component" + } + }, + { + "name": "id", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 5, + "inheritance": { + "file": "Component" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 6, + "inheritance": { + "file": "Component" + } + } + ], + "methods": [ + { + "name": "calculateIsCorrect", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 9, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getChoices", + "args": [], + "optional": false, + "returnType": "Choice[]", + "typeParameters": [], + "line": 15, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getChoicesIdsStudentChose", + "args": [ + { + "name": "studentChoices", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string[]", + "typeParameters": [], + "line": 48, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "studentChoices", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getChoiceType", + "args": [], + "optional": false, + "returnType": "\"radio\" | \"checkbox\"", + "typeParameters": [], + "line": 19, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getCorrectChoiceIdForRadio", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 57, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "getCorrectChoiceIdsForCheckbox", + "args": [], + "optional": false, + "returnType": "string[]", + "typeParameters": [], + "line": 38, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "isCheckbox", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 23, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isCheckboxCorrect", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 31, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isRadio", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 27, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isRadioCorrect", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 52, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getConnectedComponent", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 43, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "Component" + } + }, + { + "name": "hasConnectedComponent", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 14, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "Component" + } + }, + { + "name": "hasConnectedComponentAlwaysField", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 18, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "Component" + } + }, + { + "name": "isAcceptsAssets", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 34, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "Component" + } + }, + { + "name": "isGradable", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 39, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "Component" + } + } + ], + "indexSignatures": [], + "extends": [ + "Component" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "MultipleChoiceInfo", + "id": "class-MultipleChoiceInfo-581494c90ae5ff6403f47a7d05cd8a0916cc094ec24e936f61ed3732a11bb8b229911c22fab7fcbc3d12054d6b5f78a6126404290131084fb37123d63d74ac5f", + "file": "src/assets/wise5/components/multipleChoice/MultipleChoiceInfo.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { ComponentInfo } from '../ComponentInfo';\n\nexport class MultipleChoiceInfo extends ComponentInfo {\n protected description: string = $localize`Students select one or more choices.`;\n protected label: string = $localize`Multiple Choice`;\n protected previewExamples: any[] = [\n {\n label: $localize`Single Answer`,\n content: {\n id: 'abcde12345',\n type: 'MultipleChoice',\n prompt:\n 'When touching a hot METAL bowl and a hot WOODEN bowl that have the same temperature:',\n showSaveButton: false,\n showSubmitButton: true,\n choiceType: 'radio',\n choices: [\n {\n feedback: '',\n id: '1jmi01ht6t',\n text: 'The metal bowl will feel hotter.'\n },\n {\n feedback: '',\n id: '46r96bhek5',\n text: 'The wooden bowl will feel hotter.'\n },\n {\n feedback: '',\n id: 'xuikkjc99u',\n text: 'The bowls will feel the same.'\n }\n ],\n showFeedback: true,\n constraints: []\n }\n },\n {\n label: $localize`Multiple Answer`,\n content: {\n id: 'abcde12345',\n type: 'MultipleChoice',\n prompt:\n 'PREDICT: Which materials do you think it will be useful to test for your investigation? (Keeping a cold beverage cold.)',\n showSaveButton: false,\n showSubmitButton: true,\n choiceType: 'checkbox',\n choices: [\n {\n feedback: '',\n id: 'pi76wjaknm',\n text: 'Aluminum',\n isCorrect: false\n },\n {\n feedback: '',\n id: 'btaf2hw3tg',\n text: 'Clay',\n isCorrect: false\n },\n {\n feedback: '',\n id: 'yzz3hpsfaw',\n text: 'Glass',\n isCorrect: false\n },\n {\n feedback: '',\n id: 'r3hm2iz5l5',\n text: 'Plastic',\n isCorrect: false\n },\n {\n feedback: '',\n id: '1ifd6pbeqb',\n text: 'Styrofoam',\n isCorrect: false\n },\n {\n feedback: '',\n id: '544sy1ytam',\n text: 'Wood',\n isCorrect: false\n }\n ],\n showFeedback: true,\n constraints: []\n }\n }\n ];\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "description", + "defaultValue": "$localize`Students select one or more choices.`", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 4, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentInfo" + } + }, + { + "name": "label", + "defaultValue": "$localize`Multiple Choice`", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 5, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentInfo" + } + }, + { + "name": "previewExamples", + "defaultValue": "[\n {\n label: $localize`Single Answer`,\n content: {\n id: 'abcde12345',\n type: 'MultipleChoice',\n prompt:\n 'When touching a hot METAL bowl and a hot WOODEN bowl that have the same temperature:',\n showSaveButton: false,\n showSubmitButton: true,\n choiceType: 'radio',\n choices: [\n {\n feedback: '',\n id: '1jmi01ht6t',\n text: 'The metal bowl will feel hotter.'\n },\n {\n feedback: '',\n id: '46r96bhek5',\n text: 'The wooden bowl will feel hotter.'\n },\n {\n feedback: '',\n id: 'xuikkjc99u',\n text: 'The bowls will feel the same.'\n }\n ],\n showFeedback: true,\n constraints: []\n }\n },\n {\n label: $localize`Multiple Answer`,\n content: {\n id: 'abcde12345',\n type: 'MultipleChoice',\n prompt:\n 'PREDICT: Which materials do you think it will be useful to test for your investigation? (Keeping a cold beverage cold.)',\n showSaveButton: false,\n showSubmitButton: true,\n choiceType: 'checkbox',\n choices: [\n {\n feedback: '',\n id: 'pi76wjaknm',\n text: 'Aluminum',\n isCorrect: false\n },\n {\n feedback: '',\n id: 'btaf2hw3tg',\n text: 'Clay',\n isCorrect: false\n },\n {\n feedback: '',\n id: 'yzz3hpsfaw',\n text: 'Glass',\n isCorrect: false\n },\n {\n feedback: '',\n id: 'r3hm2iz5l5',\n text: 'Plastic',\n isCorrect: false\n },\n {\n feedback: '',\n id: '1ifd6pbeqb',\n text: 'Styrofoam',\n isCorrect: false\n },\n {\n feedback: '',\n id: '544sy1ytam',\n text: 'Wood',\n isCorrect: false\n }\n ],\n showFeedback: true,\n constraints: []\n }\n }\n ]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 6, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentInfo" + } + } + ], + "methods": [ + { + "name": "getDescription", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 6, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentInfo" + } + }, + { + "name": "getLabel", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 10, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentInfo" + } + }, + { + "name": "getPreviewExamples", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 14, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentInfo" + } + } + ], + "indexSignatures": [], + "extends": [ + "ComponentInfo" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "MultipleChoiceSummaryData", + "id": "class-MultipleChoiceSummaryData-b1b7c9bb4cb0b4f6643d76d83448cdd44e385146baa010373f2f49850f0e493d9d891a790948e968219554e45fb7c807a782e5ecb922b6ed927b3f491fbd25fc", + "file": "src/assets/wise5/directives/summary-display/summary-data/MultipleChoiceSummaryData.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { ComponentState } from '../../../../../app/domain/componentState';\nimport { MultipleChoiceContent } from '../../../components/multipleChoice/MultipleChoiceContent';\nimport { MultipleChoiceSummaryDataPoint } from './MultipleChoiceSummaryDataPoint';\nimport { SummaryData } from './SummaryData';\n\nexport class MultipleChoiceSummaryData extends SummaryData {\n protected summaryDataPoints: MultipleChoiceSummaryDataPoint[];\n\n constructor(\n componentState: MultipleChoiceContent,\n componentStates: ComponentState[],\n dataPoints?: MultipleChoiceSummaryDataPoint[]\n ) {\n if (dataPoints) {\n super(dataPoints);\n } else {\n super();\n this.summaryDataPoints = [];\n this.createChoicesSummaryData(componentState, componentStates);\n }\n }\n\n private createChoicesSummaryData(\n componentState: MultipleChoiceContent,\n componentStates: ComponentState[]\n ): void {\n for (const choice of componentState.choices) {\n this.summaryDataPoints.push(new MultipleChoiceSummaryDataPoint(choice.id));\n }\n for (const componentState of componentStates) {\n this.addComponentStateDataToSummaryData(componentState);\n }\n }\n\n private addComponentStateDataToSummaryData(componentState: ComponentState): void {\n for (const choice of componentState.studentData.studentChoices) {\n this.incrementSummaryData(choice.id, 1);\n }\n }\n\n protected generateNewDataPoint(id: string | number): MultipleChoiceSummaryDataPoint {\n return new MultipleChoiceSummaryDataPoint(id);\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "componentState", + "type": "MultipleChoiceContent", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentStates", + "type": "ComponentState[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dataPoints", + "type": "MultipleChoiceSummaryDataPoint[]", + "deprecated": false, + "deprecationMessage": "", + "optional": true + } + ], + "line": 7, + "jsdoctags": [ + { + "name": "componentState", + "type": "MultipleChoiceContent", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentStates", + "type": "ComponentState[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dataPoints", + "type": "MultipleChoiceSummaryDataPoint[]", + "deprecated": false, + "deprecationMessage": "", + "optional": true, + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "summaryDataPoints", + "deprecated": false, + "deprecationMessage": "", + "type": "MultipleChoiceSummaryDataPoint[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 7, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "SummaryData" + } + } + ], + "methods": [ + { + "name": "addComponentStateDataToSummaryData", + "args": [ + { + "name": "componentState", + "type": "ComponentState", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 35, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentState", + "type": "ComponentState", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createChoicesSummaryData", + "args": [ + { + "name": "componentState", + "type": "MultipleChoiceContent", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentStates", + "type": "ComponentState[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 23, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentState", + "type": "MultipleChoiceContent", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentStates", + "type": "ComponentState[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "generateNewDataPoint", + "args": [ + { + "name": "id", + "type": "string | number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "MultipleChoiceSummaryDataPoint", + "typeParameters": [], + "line": 41, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "id", + "type": "string | number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryData" + } + }, + { + "name": "getDataPointById", + "args": [ + { + "name": "id", + "type": "string | number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "SummaryDataPoint", + "typeParameters": [], + "line": 13, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "id", + "type": "string | number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryData" + } + }, + { + "name": "getDataPointCountById", + "args": [ + { + "name": "id", + "type": "string | number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 32, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "id", + "type": "string | number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryData" + } + }, + { + "name": "getDataPoints", + "args": [], + "optional": false, + "returnType": "SummaryDataPoint[]", + "typeParameters": [], + "line": 17, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "SummaryData" + } + }, + { + "name": "incrementSummaryData", + "args": [ + { + "name": "id", + "type": "string | number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "incrementBy", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 21, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "id", + "type": "string | number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "incrementBy", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryData" + } + } + ], + "indexSignatures": [], + "extends": [ + "SummaryData" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "MultipleChoiceSummaryDataPoint", + "id": "class-MultipleChoiceSummaryDataPoint-2338af5f96d389632e287039fe09d669a66f3627585b2ba10ea9bf6b73059cfa0eaa20c9ac87ef5d56b7d4badbed824611225c2b323b68af7f57b5c17f355ab5", + "file": "src/assets/wise5/directives/summary-display/summary-data/MultipleChoiceSummaryDataPoint.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { SummaryDataPoint } from './SummaryDataPoint';\n\nexport class MultipleChoiceSummaryDataPoint extends SummaryDataPoint {}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "count", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 3, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "SummaryDataPoint" + } + }, + { + "name": "id", + "deprecated": false, + "deprecationMessage": "", + "type": "number | string", + "indexKey": "", + "optional": false, + "description": "", + "line": 2, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "SummaryDataPoint" + } + } + ], + "methods": [ + { + "name": "getCount", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 14, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "SummaryDataPoint" + } + }, + { + "name": "getId", + "args": [], + "optional": false, + "returnType": "number | string", + "typeParameters": [], + "line": 10, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "SummaryDataPoint" + } + }, + { + "name": "incrementCount", + "args": [ + { + "name": "incrementBy", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 18, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "incrementBy", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDataPoint" + } + } + ], + "indexSignatures": [], + "extends": [ + "SummaryDataPoint" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "MyChoiceChosenTermEvaluator", + "id": "class-MyChoiceChosenTermEvaluator-6de8858c1bfdf740ed4b3ed8dd7fd414d5011cef09dee3f8f77b825736d556d7a7e7c97f2a255370eafae83862412eac7f298578b46bcf3112acf86e34c32b7c", + "file": "src/assets/wise5/components/common/feedbackRule/TermEvaluator/MyChoiceChosenTermEvaluator.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { Response } from '../Response';\nimport { TermEvaluator } from './TermEvaluator';\n\nexport class MyChoiceChosenTermEvaluator extends TermEvaluator {\n private choiceId: string;\n\n constructor(term: string) {\n super(term);\n this.choiceId = term.match(/myChoiceChosen\\(\"(\\w+)\"\\)/)[1];\n }\n\n evaluate(response: Response | Response[]): boolean {\n return this.constraintService.evaluateCriteria({\n name: 'choiceChosen',\n params: {\n nodeId: this.referenceComponent.nodeId,\n componentId: this.referenceComponent.id,\n choiceIds: this.choiceId\n }\n });\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 5, + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "choiceId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 5, + "modifierKind": [ + 123 + ] + }, + { + "name": "configService", + "deprecated": false, + "deprecationMessage": "", + "type": "ConfigService", + "indexKey": "", + "optional": false, + "description": "", + "line": 8, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "constraintService", + "deprecated": false, + "deprecationMessage": "", + "type": "ConstraintService", + "indexKey": "", + "optional": false, + "description": "", + "line": 9, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "peerGroup", + "deprecated": false, + "deprecationMessage": "", + "type": "PeerGroup", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "referenceComponent", + "deprecated": false, + "deprecationMessage": "", + "type": "Component", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "TermEvaluator" + } + } + ], + "methods": [ + { + "name": "evaluate", + "args": [ + { + "name": "response", + "type": "Response | Response[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 12, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "response", + "type": "Response | Response[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "isAccumulatedIdeaCountTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 16, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "isBooleanTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 20, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "isHasKIScoreTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 32, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "isIdeaCountTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 36, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "isIdeaCountWithResponseIndexTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 40, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "isLowestWorkgroupIdInPeerGroupTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 24, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "isMyChoiceChosenTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 28, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "isSubmitNumberTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 44, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "requiresAllResponses", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 48, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "setConfigService", + "args": [ + { + "name": "service", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 55, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "service", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "setConstraintService", + "args": [ + { + "name": "service", + "type": "ConstraintService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 59, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "service", + "type": "ConstraintService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "setPeerGroup", + "args": [ + { + "name": "peerGroup", + "type": "PeerGroup", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 63, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "peerGroup", + "type": "PeerGroup", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + }, + { + "name": "setReferenceComponent", + "args": [ + { + "name": "referenceComponent", + "type": "Component", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 67, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "referenceComponent", + "type": "Component", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "TermEvaluator" + } + } + ], + "indexSignatures": [], + "extends": [ + "TermEvaluator" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "NewPasswordAndConfirmHarness", + "id": "class-NewPasswordAndConfirmHarness-344406672b7949c8d6314f65fb100358dcfd324175916adc5cdbc1f073a1b0489f6eb5f7c94e6960c0178cb611fa77dd6a6ca2b4ecdf6125b6e224ff5a674405", + "file": "src/app/password/new-password-and-confirm/new-password-and-confirm.harness.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { ComponentHarness, HarnessLoader } from '@angular/cdk/testing';\nimport { MatInputHarness } from '@angular/material/input/testing';\nimport { MatErrorHarness } from '@angular/material/form-field/testing';\nimport { PasswordRequirementHarness } from '../password-requirement/password-requirement.harness';\n\nexport class NewPasswordAndConfirmHarness extends ComponentHarness {\n static hostSelector = 'new-password-and-confirm';\n\n getNewPasswordInput = this.locatorFor(\n MatInputHarness.with({ selector: 'input[name=\"newPassword\"]' })\n );\n getConfirmNewPasswordInput = this.locatorFor(\n MatInputHarness.with({ selector: 'input[name=\"confirmNewPassword\"]' })\n );\n getNewPasswordRequiredError = this.locatorForOptional(\n MatErrorHarness.with({ selector: '.new-password-required-error' })\n );\n getConfirmNewPasswordRequiredError = this.locatorForOptional(\n MatErrorHarness.with({ selector: '.confirm-new-password-required-error' })\n );\n getConfirmNewPasswordDoesNotMatchError = this.locatorForOptional(\n MatErrorHarness.with({ selector: '.confirm-new-password-does-not-match-error' })\n );\n getPasswordRequirements = this.locatorForAll(PasswordRequirementHarness);\n\n async isMissingLetter(rootLoader: HarnessLoader): Promise {\n return this.isMissingRequirement(rootLoader, 'include a letter');\n }\n\n async isMissingNumber(rootLoader: HarnessLoader): Promise {\n return this.isMissingRequirement(rootLoader, 'include a number');\n }\n\n async isTooShort(rootLoader: HarnessLoader): Promise {\n return this.isMissingRequirement(rootLoader, 'be at least 8 characters long');\n }\n\n private async isMissingRequirement(\n rootLoader: HarnessLoader,\n requirement: string\n ): Promise {\n const passwordRequirement = await rootLoader.getHarness(\n PasswordRequirementHarness.with({ text: requirement })\n );\n return await passwordRequirement.isFail();\n }\n\n async setNewPassword(value: string): Promise {\n await this.setPassword(value, false);\n }\n\n async setConfirmNewPassword(value: string): Promise {\n await this.setPassword(value, true);\n }\n\n async setPassword(value: string, isConfirm: boolean): Promise {\n await this.setInputValue(\n await (isConfirm ? this.getConfirmNewPasswordInput() : this.getNewPasswordInput()),\n value\n );\n }\n\n private async setInputValue(input: MatInputHarness, value: string): Promise {\n await input.setValue(value);\n await input.blur();\n }\n\n async isNewPasswordRequiredErrorDisplayed(): Promise {\n return (await this.getNewPasswordRequiredError()) != null;\n }\n\n async isConfirmNewPasswordDoesNotMatchErrorDisplayed(): Promise {\n return (await this.getConfirmNewPasswordDoesNotMatchError()) != null;\n }\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "getConfirmNewPasswordDoesNotMatchError", + "defaultValue": "this.locatorForOptional(\n MatErrorHarness.with({ selector: '.confirm-new-password-does-not-match-error' })\n )", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 21 + }, + { + "name": "getConfirmNewPasswordInput", + "defaultValue": "this.locatorFor(\n MatInputHarness.with({ selector: 'input[name=\"confirmNewPassword\"]' })\n )", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 12 + }, + { + "name": "getConfirmNewPasswordRequiredError", + "defaultValue": "this.locatorForOptional(\n MatErrorHarness.with({ selector: '.confirm-new-password-required-error' })\n )", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 18 + }, + { + "name": "getNewPasswordInput", + "defaultValue": "this.locatorFor(\n MatInputHarness.with({ selector: 'input[name=\"newPassword\"]' })\n )", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 9 + }, + { + "name": "getNewPasswordRequiredError", + "defaultValue": "this.locatorForOptional(\n MatErrorHarness.with({ selector: '.new-password-required-error' })\n )", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 15 + }, + { + "name": "getPasswordRequirements", + "defaultValue": "this.locatorForAll(PasswordRequirementHarness)", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 24 + }, + { + "name": "hostSelector", + "defaultValue": "'new-password-and-confirm'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 7, + "modifierKind": [ + 126 + ] + } + ], + "methods": [ + { + "name": "isConfirmNewPasswordDoesNotMatchErrorDisplayed", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 72, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ] + }, + { + "name": "isMissingLetter", + "args": [ + { + "name": "rootLoader", + "type": "HarnessLoader", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ], + "jsdoctags": [ + { + "name": "rootLoader", + "type": "HarnessLoader", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isMissingNumber", + "args": [ + { + "name": "rootLoader", + "type": "HarnessLoader", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 30, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ], + "jsdoctags": [ + { + "name": "rootLoader", + "type": "HarnessLoader", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isMissingRequirement", + "args": [ + { + "name": "rootLoader", + "type": "HarnessLoader", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "requirement", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 38, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123, + 134 + ], + "jsdoctags": [ + { + "name": "rootLoader", + "type": "HarnessLoader", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "requirement", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isNewPasswordRequiredErrorDisplayed", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 68, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ] + }, + { + "name": "isTooShort", + "args": [ + { + "name": "rootLoader", + "type": "HarnessLoader", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 34, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ], + "jsdoctags": [ + { + "name": "rootLoader", + "type": "HarnessLoader", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setConfirmNewPassword", + "args": [ + { + "name": "value", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 52, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ], + "jsdoctags": [ + { + "name": "value", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setInputValue", + "args": [ + { + "name": "input", + "type": "MatInputHarness", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "value", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 63, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123, + 134 + ], + "jsdoctags": [ + { + "name": "input", + "type": "MatInputHarness", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "value", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setNewPassword", + "args": [ + { + "name": "value", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 48, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ], + "jsdoctags": [ + { + "name": "value", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setPassword", + "args": [ + { + "name": "value", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isConfirm", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 56, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ], + "jsdoctags": [ + { + "name": "value", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "isConfirm", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "indexSignatures": [], + "extends": [ + "ComponentHarness" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "News", + "id": "class-News-29c9678f727ec3bea60c7085daf473fd64cf02059d94a124982c74b27d70ffc5cbb75fcf4bbc7fef016cb0ebac2944e7a0e9c786014221b2f25ce67d864b7648", + "file": "src/app/domain/news.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { User } from './user';\n\nexport class News {\n id: number;\n date: any;\n type: string;\n title: string;\n news: string;\n owner: User;\n\n constructor(jsonObject: any = {}) {\n for (let key of Object.keys(jsonObject)) {\n if (key == 'owner') {\n this[key] = new User(jsonObject[key]);\n } else {\n this[key] = jsonObject[key];\n }\n }\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "jsonObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "{}" + } + ], + "line": 9, + "jsdoctags": [ + { + "name": "jsonObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "{}", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "date", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 5 + }, + { + "name": "id", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 4 + }, + { + "name": "news", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 8 + }, + { + "name": "owner", + "deprecated": false, + "deprecationMessage": "", + "type": "User", + "indexKey": "", + "optional": false, + "description": "", + "line": 9 + }, + { + "name": "title", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 7 + }, + { + "name": "type", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 6 + } + ], + "methods": [], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "Node", + "id": "class-Node-1b7008309b506c1c0db784ab99abfe588fcd04937f6e5e8899f7856f85e0dccd84e63f0be12fa610e1fa18c0ad2607fc2448b20d93d1fc82a3f3ac8c79ff7384", + "file": "src/assets/wise5/common/Node.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { ComponentContent } from './ComponentContent';\nimport { TransitionLogic } from './TransitionLogic';\nimport { copy, extend } from './object/object';\nimport { generateRandomKey } from './string/string';\n\nexport class Node {\n components: any[] = [];\n constraints: any[] = [];\n icons: any;\n icon: any;\n id: string;\n rubric: any;\n showSaveButton: boolean;\n showSubmitButton: boolean;\n title: string;\n transitionLogic?: TransitionLogic;\n type: string;\n\n getIcon(): any {\n if (this.icon == null) {\n this.setIcon();\n }\n return this.icon;\n }\n\n private setIcon(): void {\n const defaultIcon = {\n color: '#757575',\n type: 'font',\n fontSet: 'material-icons',\n fontName: this.type === 'group' ? 'explore' : 'school',\n imgSrc: ''\n };\n let icon;\n if (this.icons != null && this.icons.default != null) {\n icon = extend({}, defaultIcon, this.icons.default);\n } else {\n icon = defaultIcon;\n }\n if (!icon.imgSrc) {\n icon.type = 'font';\n }\n this.icon = icon;\n }\n\n isGroup(): boolean {\n return this.type === 'group';\n }\n\n isEvaluateTransitionLogicOn(event: string): boolean {\n return this.getTransitionLogic().whenToChoosePath === event;\n }\n\n getNodeIdComponentIds(): any {\n return this.components.map((component) => {\n return { nodeId: this.id, componentId: component.id };\n });\n }\n\n getComponent(componentId: string): any {\n return this.components.find((component) => component.id === componentId);\n }\n\n hasComponent(componentId: string): boolean {\n return this.components.some((component) => component.id === componentId);\n }\n\n getTransitionLogic(): TransitionLogic {\n if (this.transitionLogic == null) {\n this.transitionLogic = {\n transitions: []\n };\n }\n return this.transitionLogic;\n }\n\n /**\n * Move the component(s) within this node\n * @param componentIds the id(s) of the component(s) to move\n * @param insertAfterComponentId insert the component(s) after this component id.\n * If this argument is null, place the new component(s) in the first position.\n */\n moveComponents(componentIds: string[], insertAfterComponentId: string = null): void {\n const components = this.extractComponents(componentIds);\n if (insertAfterComponentId == null) {\n this.components.unshift(...components);\n } else {\n this.insertComponentsAfter(components, insertAfterComponentId);\n }\n }\n\n private extractComponents(componentIds: string[]): any[] {\n const components = [];\n for (let i = 0; i < this.components.length; i++) {\n if (componentIds.includes(this.components[i].id)) {\n components.push(this.components.splice(i--, 1)[0]);\n }\n }\n return components;\n }\n\n private insertComponentsAfter(components: any[], insertAfterComponentId: string): void {\n const insertAfterComponentIndex = this.components.findIndex(\n (component) => component.id === insertAfterComponentId\n );\n this.components.splice(insertAfterComponentIndex + 1, 0, ...components);\n }\n\n copyComponents(componentIds: string[], insertAfterComponentId: string = null): any[] {\n const newComponents = [];\n const newComponentIds = [];\n for (const componentId of componentIds) {\n const newComponent = this.copyComponent(componentId, newComponentIds);\n newComponents.push(newComponent);\n newComponentIds.push(newComponent.id);\n }\n this.insertComponents(newComponents, insertAfterComponentId);\n return newComponents;\n }\n\n private copyComponent(componentId: string, componentIdsToSkip: string[]): any {\n const component = this.getComponent(componentId);\n const newComponent = copy(component);\n newComponent.id = this.getUnusedComponentId(componentIdsToSkip);\n return newComponent;\n }\n\n private getUnusedComponentId(componentIdsToSkip: string[]): string {\n let newComponentId = generateRandomKey();\n while (this.isComponentIdInUse(newComponentId) || componentIdsToSkip.includes(newComponentId)) {\n newComponentId = generateRandomKey();\n }\n return newComponentId;\n }\n\n private isComponentIdInUse(componentId: string): boolean {\n return this.components.some((component) => component.id === componentId);\n }\n\n private insertComponents(components: any[], insertAfterComponentId: string): void {\n const insertPosition = this.getInitialInsertPosition(insertAfterComponentId);\n this.components.splice(insertPosition, 0, ...components);\n }\n\n private getInitialInsertPosition(insertAfterComponentId: string): number {\n return insertAfterComponentId == null\n ? 0\n : this.components.findIndex((component) => component.id === insertAfterComponentId) + 1;\n }\n\n deleteComponent(componentId: string): ComponentContent {\n return this.components.splice(this.getComponentIndex(componentId), 1)[0];\n }\n\n replaceComponent(componentId: string, component: ComponentContent): void {\n this.components[this.getComponentIndex(componentId)] = component;\n }\n\n private getComponentIndex(componentId: string): number {\n return this.components.findIndex((component) => component.id === componentId);\n }\n\n getAllRelatedComponents(): any {\n const components = this.getNodeIdComponentIds();\n return [\n ...components,\n ...this.getShowMyWorkStudentData(),\n ...this.getConnectedComponentsWithRequiredStudentData()\n ];\n }\n\n private getShowMyWorkStudentData(): any[] {\n return this.components\n .filter((component: any) => component.type === 'ShowMyWork')\n .map((component: any) => {\n return { nodeId: component.showWorkNodeId, componentId: component.showWorkComponentId };\n });\n }\n\n private getConnectedComponentsWithRequiredStudentData(): any[] {\n const connectedComponents = [];\n for (const component of this.components) {\n if (this.isConnectedComponentStudentDataRequired(component)) {\n for (const connectedComponent of component.connectedComponents) {\n connectedComponents.push(connectedComponent);\n }\n }\n }\n return connectedComponents;\n }\n\n private isConnectedComponentStudentDataRequired(componentContent: any): boolean {\n return (\n componentContent.type === 'Discussion' &&\n componentContent.connectedComponents != null &&\n componentContent.connectedComponents.length !== 0\n );\n }\n\n addConstraint(constraint: any): void {\n this.constraints.push(constraint);\n }\n\n getConstraints(): any[] {\n return this.constraints;\n }\n\n deleteTransition(transition: any): void {\n const transitions = this.transitionLogic.transitions;\n const index = transitions.indexOf(transition);\n if (index > -1) {\n transitions.splice(index, 1);\n }\n if (transitions.length <= 1) {\n // these settings only apply when there are multiple transitions\n this.transitionLogic.howToChooseAmongAvailablePaths = null;\n this.transitionLogic.whenToChoosePath = null;\n this.transitionLogic.canChangePath = null;\n this.transitionLogic.maxPathsVisitable = null;\n }\n }\n\n getNumRubrics(): number {\n let numRubrics = 0;\n if (this.rubric != null && this.rubric != '') {\n numRubrics++;\n }\n numRubrics += this.components.filter(\n (component) => component.rubric != null && component.rubric != ''\n ).length;\n return numRubrics;\n }\n\n getComponentPosition(componentId: string): number {\n return this.components.findIndex((component) => component.id === componentId);\n }\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "components", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 7 + }, + { + "name": "constraints", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 8 + }, + { + "name": "icon", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 10 + }, + { + "name": "icons", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 9 + }, + { + "name": "id", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 11 + }, + { + "name": "rubric", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 12 + }, + { + "name": "showSaveButton", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 13 + }, + { + "name": "showSubmitButton", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 14 + }, + { + "name": "title", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 15 + }, + { + "name": "transitionLogic", + "deprecated": false, + "deprecationMessage": "", + "type": "TransitionLogic", + "indexKey": "", + "optional": true, + "description": "", + "line": 16 + }, + { + "name": "type", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 17 + } + ], + "methods": [ + { + "name": "addConstraint", + "args": [ + { + "name": "constraint", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 200, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "constraint", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "copyComponent", + "args": [ + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentIdsToSkip", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 121, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentIdsToSkip", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "copyComponents", + "args": [ + { + "name": "componentIds", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "insertAfterComponentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 109, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentIds", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "insertAfterComponentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "deleteComponent", + "args": [ + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "ComponentContent", + "typeParameters": [], + "line": 151, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "deleteTransition", + "args": [ + { + "name": "transition", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 208, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "transition", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "extractComponents", + "args": [ + { + "name": "componentIds", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 92, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentIds", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getAllRelatedComponents", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 163, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getComponent", + "args": [ + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 60, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getComponentIndex", + "args": [ + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 159, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getComponentPosition", + "args": [ + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 234, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getConnectedComponentsWithRequiredStudentData", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 180, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "getConstraints", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 204, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getIcon", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 19, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getInitialInsertPosition", + "args": [ + { + "name": "insertAfterComponentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 145, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "insertAfterComponentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getNodeIdComponentIds", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 54, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getNumRubrics", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 223, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getShowMyWorkStudentData", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 172, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "getTransitionLogic", + "args": [], + "optional": false, + "returnType": "TransitionLogic", + "typeParameters": [], + "line": 68, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getUnusedComponentId", + "args": [ + { + "name": "componentIdsToSkip", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 128, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentIdsToSkip", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "hasComponent", + "args": [ + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 64, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "insertComponents", + "args": [ + { + "name": "components", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "insertAfterComponentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 140, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "components", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "insertAfterComponentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "insertComponentsAfter", + "args": [ + { + "name": "components", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "insertAfterComponentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 102, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "components", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "insertAfterComponentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isComponentIdInUse", + "args": [ + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 136, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isConnectedComponentStudentDataRequired", + "args": [ + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 192, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isEvaluateTransitionLogicOn", + "args": [ + { + "name": "event", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 50, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "event", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isGroup", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 46, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "moveComponents", + "args": [ + { + "name": "componentIds", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "insertAfterComponentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nMove the component(s) within this node\nIf this argument is null, place the new component(s) in the first position.\n", + "description": "

Move the component(s) within this node\nIf this argument is null, place the new component(s) in the first position.

\n", + "jsdoctags": [ + { + "name": { + "pos": 1897, + "end": 1909, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentIds" + }, + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 1891, + "end": 1896, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the id(s) of the component(s) to move

\n" + }, + { + "name": { + "pos": 1960, + "end": 1982, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "insertAfterComponentId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "pos": 1954, + "end": 1959, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

insert the component(s) after this component id.\nIf this argument is null, place the new component(s) in the first position.

\n" + } + ] + }, + { + "name": "replaceComponent", + "args": [ + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "component", + "type": "ComponentContent", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 155, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "component", + "type": "ComponentContent", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setIcon", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + } + ], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "NodeGradingViewComponentTestHelper", + "id": "class-NodeGradingViewComponentTestHelper-1ca7e18d5c7448e763570ad086885d4b34e83cb82fbc9b09245a249b698ab7d20d277cecd8f72e71fc1f072fa2a3493e4fb9ee45b63b1c69dfc503ae734c074b", + "file": "src/assets/wise5/classroomMonitor/classroomMonitorComponents/nodeGrading/node-grading-view/node-grading-view.component.test.helper.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { ClassroomMonitorTestHelper } from '../../shared/testing/ClassroomMonitorTestHelper';\n\nexport class NodeGradingViewComponentTestHelper extends ClassroomMonitorTestHelper {\n statusNoWork: number = 0;\n statusPartiallyCompleted: number = 1;\n statusCompleted: number = 2;\n notVisible: number = 0;\n visible: number = 1;\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "notVisible", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 7 + }, + { + "name": "statusCompleted", + "defaultValue": "2", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 6 + }, + { + "name": "statusNoWork", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 4 + }, + { + "name": "statusPartiallyCompleted", + "defaultValue": "1", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 5 + }, + { + "name": "visible", + "defaultValue": "1", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 8 + }, + { + "name": "students", + "defaultValue": "[\n new StudentProgress({\n location: '1.2: Open Response',\n order: 2,\n workgroupId: this.workgroupId1,\n username: 'Spongebob Squarepants',\n firstName: 'Spongebob',\n lastName: 'Squarepants',\n completionPct: 30,\n scorePct: 0.8\n }),\n new StudentProgress({\n location: '1.1: Open Response',\n order: 1,\n workgroupId: this.workgroupId5,\n username: 'Patrick Star',\n firstName: 'Patrick',\n lastName: 'Star',\n completionPct: 10,\n scorePct: 0.6\n }),\n new StudentProgress({\n location: '1.5: Open Response',\n order: 5,\n workgroupId: this.workgroupId3,\n username: 'Squidward Tentacles',\n firstName: 'Squidward',\n lastName: 'Tentacles',\n completionPct: 20,\n scorePct: 0.4\n }),\n new StudentProgress({\n location: '1.11: Open Response',\n order: 11,\n workgroupId: this.workgroupId2,\n username: 'Sandy Cheeks',\n firstName: 'Sandy',\n lastName: 'Cheeks',\n completionPct: 50,\n scorePct: 0.8\n }),\n new StudentProgress({\n location: '1.5: Open Response',\n order: 5,\n workgroupId: this.workgroupId4,\n username: 'Sheldon Plankton',\n firstName: 'Sheldon',\n lastName: 'Plankton',\n completionPct: 20,\n scorePct: 0.8\n })\n ]", + "deprecated": false, + "deprecationMessage": "", + "type": "StudentProgress[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "inheritance": { + "file": "ClassroomMonitorTestHelper" + } + }, + { + "name": "workgroupId1", + "defaultValue": "1", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 4, + "inheritance": { + "file": "ClassroomMonitorTestHelper" + } + }, + { + "name": "workgroupId2", + "defaultValue": "2", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 5, + "inheritance": { + "file": "ClassroomMonitorTestHelper" + } + }, + { + "name": "workgroupId3", + "defaultValue": "3", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 6, + "inheritance": { + "file": "ClassroomMonitorTestHelper" + } + }, + { + "name": "workgroupId4", + "defaultValue": "4", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 7, + "inheritance": { + "file": "ClassroomMonitorTestHelper" + } + }, + { + "name": "workgroupId5", + "defaultValue": "5", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 8, + "inheritance": { + "file": "ClassroomMonitorTestHelper" + } + } + ], + "methods": [ + { + "name": "expectWorkgroupOrder", + "args": [ + { + "name": "workgroups", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "expectedWorkgroupIdOrder", + "type": "number[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 63, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "workgroups", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "expectedWorkgroupIdOrder", + "type": "number[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ClassroomMonitorTestHelper" + } + } + ], + "indexSignatures": [], + "extends": [ + "ClassroomMonitorTestHelper" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "NodeIconAndTitleHarness", + "id": "class-NodeIconAndTitleHarness-18db7f2f8bf0458d9f68d30f58925fe490a7d2bdcd0adac279868aea842f7b754ed3b4b7b6d44240a9eb2bf2405fc3815c980a7cad8184140ba953666891d9e7", + "file": "src/assets/wise5/authoringTool/choose-node-location/node-icon-and-title/node-icon-and-title.harness.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { ComponentHarness } from '@angular/cdk/testing';\n\nexport class NodeIconAndTitleHarness extends ComponentHarness {\n static hostSelector = 'node-icon-and-title';\n\n getStepPosition = this.locatorForOptional('.step-number');\n getStepTitle = this.locatorFor('.step-title');\n\n async getPositionAndTitle(): Promise {\n const position = await (await this.getStepPosition())?.text();\n const title = await (await this.getStepTitle()).text();\n return position == null ? title : `${position} ${title}`;\n }\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "getStepPosition", + "defaultValue": "this.locatorForOptional('.step-number')", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 6 + }, + { + "name": "getStepTitle", + "defaultValue": "this.locatorFor('.step-title')", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 7 + }, + { + "name": "hostSelector", + "defaultValue": "'node-icon-and-title'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 4, + "modifierKind": [ + 126 + ] + } + ], + "methods": [ + { + "name": "getPositionAndTitle", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 9, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ] + } + ], + "indexSignatures": [], + "extends": [ + "ComponentHarness" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "NodeProgress", + "id": "class-NodeProgress-0a209547b6c2960eb6b1718e41ed37e83b1f709720136ce64b1a07a078588246515104f332baf1dd3c191c678dc0f2bda81da0ada9dfa02e5696fc6e0f842e51", + "file": "src/assets/wise5/common/NodeProgress.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "export class NodeProgress {\n completedItems: number;\n completedItemsWithWork: number;\n completionPct?: number;\n completionPctWithWork?: number;\n totalItems: number;\n totalItemsWithWork: number;\n\n constructor(\n completedItems: number,\n completedItemsWithWork: number,\n completionPct: number,\n completionPctWithWork: number,\n totalItems: number,\n totalItemsWithWork: number\n ) {\n this.completedItems = completedItems;\n this.completedItemsWithWork = completedItemsWithWork;\n this.completionPct = completionPct;\n this.completionPctWithWork = completionPctWithWork;\n this.totalItems = totalItems;\n this.totalItemsWithWork = totalItemsWithWork;\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "completedItems", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "completedItemsWithWork", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "completionPct", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "completionPctWithWork", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "totalItems", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "totalItemsWithWork", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 7, + "jsdoctags": [ + { + "name": "completedItems", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "completedItemsWithWork", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "completionPct", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "completionPctWithWork", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "totalItems", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "totalItemsWithWork", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "completedItems", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 2 + }, + { + "name": "completedItemsWithWork", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 3 + }, + { + "name": "completionPct", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": true, + "description": "", + "line": 4 + }, + { + "name": "completionPctWithWork", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": true, + "description": "", + "line": 5 + }, + { + "name": "totalItems", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 6 + }, + { + "name": "totalItemsWithWork", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 7 + } + ], + "methods": [], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "NodeRecoveryAnalysis", + "id": "class-NodeRecoveryAnalysis-ba41fd7729d428bbaceeb55e225a6076373d2b3fdcdd8fa9dfabf82b4282ef6b559fbf5adabccd4d907e007f618352d1cb2ed574dfbd1043883aaf969fa8d0d7", + "file": "src/app/domain/nodeRecoveryAnalysis.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "export class NodeRecoveryAnalysis {\n hasTransitionToNull: boolean = false;\n nodeId: string;\n referencedIdsThatAreDuplicated: string[] = [];\n referencedIdsThatDoNotExist: string[] = [];\n\n constructor(nodeId: string) {\n this.nodeId = nodeId;\n }\n\n addReferencedIdThatIsDuplicated(nodeId: string): void {\n this.referencedIdsThatAreDuplicated.push(nodeId);\n }\n\n addReferencedIdThatDoesNotExist(nodeId: string): void {\n this.referencedIdsThatDoNotExist.push(nodeId);\n }\n\n setHasTransitionToNull(value: boolean): void {\n this.hasTransitionToNull = value;\n }\n\n hasProblem(): boolean {\n return (\n this.referencedIdsThatAreDuplicated.length > 0 ||\n this.referencedIdsThatDoNotExist.length > 0 ||\n this.hasTransitionToNull\n );\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 5, + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "hasTransitionToNull", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 2 + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 3 + }, + { + "name": "referencedIdsThatAreDuplicated", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 4 + }, + { + "name": "referencedIdsThatDoNotExist", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 5 + } + ], + "methods": [ + { + "name": "addReferencedIdThatDoesNotExist", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 15, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addReferencedIdThatIsDuplicated", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 11, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "hasProblem", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 23, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "setHasTransitionToNull", + "args": [ + { + "name": "value", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 19, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "value", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "NodeStatus", + "id": "class-NodeStatus-5cdd7ae4fd1bc2bd48837fa4a989b8485041f9cc12eecc6ce64e0415dd0baa8f25534dec4ff8449d93cf74579b90f85653f62c5165caeda87e7f5bc174df9a27", + "file": "src/assets/wise5/common/NodeStatus.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { ComponentStatus } from './ComponentStatus';\nimport { NodeProgress } from './NodeProgress';\n\nexport class NodeStatus {\n componentStatuses: { [componentId: string]: ComponentStatus };\n isCompleted: boolean;\n isVisible: boolean;\n isVisitable: boolean;\n isVisited: boolean;\n nodeId: string;\n progress?: NodeProgress;\n\n constructor(nodeId: string) {\n this.isCompleted = true;\n this.isVisible = true;\n this.isVisitable = true;\n this.nodeId = nodeId;\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 11, + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "componentStatuses", + "deprecated": false, + "deprecationMessage": "", + "type": "literal type", + "indexKey": "", + "optional": false, + "description": "", + "line": 5 + }, + { + "name": "isCompleted", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 6 + }, + { + "name": "isVisible", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 7 + }, + { + "name": "isVisitable", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 8 + }, + { + "name": "isVisited", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 9 + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 10 + }, + { + "name": "progress", + "deprecated": false, + "deprecationMessage": "", + "type": "NodeProgress", + "indexKey": "", + "optional": true, + "description": "", + "line": 11 + } + ], + "methods": [], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "NotebookDataExportStrategy", + "id": "class-NotebookDataExportStrategy-3b3e60e604fd59c36209fc48b7092bbf5960f2178af5acffc66fff98330563f52e97efbb909ca4fc5334bc292a061e9e27153622b9eeb886fe20367157a75800", + "file": "src/assets/wise5/classroomMonitor/dataExport/strategies/NotebookDataExportStrategy.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { removeHTMLTags } from '../../../common/string/string';\nimport { AbstractDataExportStrategy } from './AbstractDataExportStrategy';\nimport { millisecondsToDateTime } from '../../../common/datetime/datetime';\n\nexport class NotebookDataExportStrategy extends AbstractDataExportStrategy {\n constructor(private exportType: string) {\n super();\n }\n\n export() {\n this.controller.showDownloadingExportMessage();\n this.dataExportService.retrieveNotebookExport(this.exportType).subscribe((result) => {\n const notebookItems = result;\n const columnNames = [\n 'ID',\n 'Teacher Username',\n 'Run ID',\n 'Period ID',\n 'Period Name',\n 'Project ID',\n 'Node ID',\n 'Component ID',\n 'Step Number',\n 'Step Title',\n 'Component Part Number',\n 'Component Type',\n 'Client Save Time',\n 'Server Save Time',\n 'Workgroup ID',\n 'User ID 1',\n 'User ID 2',\n 'User ID 3',\n 'Content',\n 'Note Item ID',\n 'Type',\n 'Response'\n ];\n const columnNameToNumber = {};\n const headerRow = [];\n for (let c = 0; c < columnNames.length; c++) {\n const columnName = columnNames[c];\n columnNameToNumber[columnName] = c;\n headerRow.push(columnName);\n }\n const rows = [];\n rows.push(headerRow);\n for (const notebookItem of notebookItems) {\n const userInfo = this.configService.getUserInfoByWorkgroupId(notebookItem.workgroupId);\n if (userInfo != null) {\n rows.push(\n this.createExportNotebookItemRow(columnNames, columnNameToNumber, notebookItem)\n );\n }\n }\n const runId = this.configService.getRunId();\n let fileName = '';\n if (this.exportType === 'latestNotebookItems') {\n fileName = `${runId}_latest_notebook_items.csv`;\n } else if (this.exportType === 'allNotebookItems') {\n fileName = `${runId}_all_notebook_items.csv`;\n }\n this.controller.generateCSVFile(rows, fileName);\n this.controller.hideDownloadingExportMessage();\n });\n }\n\n private createExportNotebookItemRow(columnNames, columnNameToNumber, notebookItem) {\n const row = new Array(columnNames.length);\n row.fill(' ');\n row[columnNameToNumber['ID']] = notebookItem.id;\n row[columnNameToNumber['Note Item ID']] = notebookItem.localNotebookItemId;\n row[columnNameToNumber['Node ID']] = notebookItem.nodeId;\n row[columnNameToNumber['Component ID']] = notebookItem.componentId;\n const component = this.projectService.getComponent(\n notebookItem.nodeId,\n notebookItem.componentId\n );\n if (component != null) {\n row[columnNameToNumber['Component Type']] = component.type;\n }\n row[columnNameToNumber['Step Number']] = this.controller.getNodePositionById(\n notebookItem.nodeId\n );\n row[columnNameToNumber['Step Title']] = this.controller.getNodeTitleByNodeId(\n notebookItem.nodeId\n );\n const position = this.projectService\n .getNode(notebookItem.nodeId)\n .getComponentPosition(notebookItem.componentId);\n if (position != -1) {\n row[columnNameToNumber['Component Part Number']] = position + 1;\n }\n row[columnNameToNumber['Client Save Time']] = millisecondsToDateTime(\n notebookItem.clientSaveTime\n );\n row[columnNameToNumber['Server Save Time']] = millisecondsToDateTime(\n notebookItem.serverSaveTime\n );\n row[columnNameToNumber['Type']] = notebookItem.type;\n row[columnNameToNumber['Content']] = JSON.parse(notebookItem.content);\n row[columnNameToNumber['Run ID']] = notebookItem.runId;\n row[columnNameToNumber['Workgroup ID']] = notebookItem.workgroupId;\n const userInfo = this.configService.getUserInfoByWorkgroupId(notebookItem.workgroupId);\n if (notebookItem.localNotebookItemId !== 'teacherReport') {\n row[columnNameToNumber['Period ID']] = notebookItem.periodId;\n row[columnNameToNumber['Period Name']] = userInfo.periodName;\n }\n row[columnNameToNumber['Teacher Username']] = this.configService.getTeacherUserInfo().username;\n row[columnNameToNumber['Project ID']] = this.configService.getProjectId();\n if (notebookItem.localNotebookItemId !== 'teacherReport') {\n const student1 = userInfo.users[0];\n const student2 = userInfo.users[1];\n const student3 = userInfo.users[2];\n if (student1 != null) {\n row[columnNameToNumber['User ID 1']] = student1.id;\n }\n if (student2 != null) {\n row[columnNameToNumber['User ID 2']] = student2.id;\n }\n if (student3 != null) {\n row[columnNameToNumber['User ID 3']] = student3.id;\n }\n }\n const responseJSON = JSON.parse(notebookItem.content);\n if (notebookItem.type === 'report') {\n row[columnNameToNumber['Response']] = removeHTMLTags(responseJSON.content);\n } else {\n row[columnNameToNumber['Response']] = responseJSON.text;\n }\n return row;\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "exportType", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 5, + "jsdoctags": [ + { + "name": "exportType", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "allOrLatest", + "defaultValue": "'all'", + "deprecated": false, + "deprecationMessage": "", + "type": "\"all\" | \"latest\"", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "annotationService", + "deprecated": false, + "deprecationMessage": "", + "type": "AnnotationService", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "configService", + "deprecated": false, + "deprecationMessage": "", + "type": "ConfigService", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "context", + "deprecated": false, + "deprecationMessage": "", + "type": "DataExportContext", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "controller", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "dataExportService", + "deprecated": false, + "deprecationMessage": "", + "type": "DataExportService", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "dataService", + "deprecated": false, + "deprecationMessage": "", + "type": "TeacherDataService", + "indexKey": "", + "optional": false, + "description": "", + "line": 20, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "projectService", + "deprecated": false, + "deprecationMessage": "", + "type": "TeacherProjectService", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + } + ], + "methods": [ + { + "name": "createExportNotebookItemRow", + "args": [ + { + "name": "columnNames", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "notebookItem", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 67, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "columnNames", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "notebookItem", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "export", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 10, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "generateCSVFile", + "args": [ + { + "name": "rows", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "fileName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 194, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "rows", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "fileName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "generateExportFileName", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentTypeWithUnderscore", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 179, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentTypeWithUnderscore", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "getColumnValue", + "args": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 113, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "getSelectedNodesMap", + "args": [ + { + "name": "selectedNodes", + "type": "[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]" + } + ], + "optional": false, + "returnType": "{}", + "typeParameters": [], + "line": 62, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet a mapping of node/component id strings to true.\nexample if\nselectedNodes = [\n {\n nodeId: \"node1\",\n componentId: \"343b8aesf7\"\n },\n {\n nodeId: \"node2\",\n componentId: \"b34gaf0ug2\"\n },\n {\n nodeId: \"node3\"\n }\n]\n\nthis function will return\n{\n \"node1-343b8aesf7\": true,\n \"node2-b34gaf0ug2\": true,\n \"node3\": true\n}\n\na componentId field\n", + "description": "

Get a mapping of node/component id strings to true.\nexample if\nselectedNodes = [\n {\n nodeId: "node1",\n componentId: "343b8aesf7"\n },\n {\n nodeId: "node2",\n componentId: "b34gaf0ug2"\n },\n {\n nodeId: "node3"\n }\n]

\n

this function will return\n{\n "node1-343b8aesf7": true,\n "node2-b34gaf0ug2": true,\n "node3": true\n}

\n

a componentId field

\n", + "jsdoctags": [ + { + "name": { + "pos": 1979, + "end": 1992, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "selectedNodes" + }, + "type": "[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]", + "tagName": { + "pos": 1973, + "end": 1978, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

an array of objects that contain a nodeId field and maybe also\na componentId field

\n" + }, + { + "tagName": { + "pos": 2087, + "end": 2093, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

a mapping of node/component id strings to true

\n" + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "getStudentDataString", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 157, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the plain text representation of the student work.\n", + "description": "

Get the plain text representation of the student work.

\n", + "jsdoctags": [ + { + "name": { + "pos": 5328, + "end": 5342, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 5322, + "end": 5327, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

A component state that contains the student work.

\n", + "typeExpression": { + "pos": 5343, + "end": 5351, + "kind": 310, + "id": 0, + "flags": 16842752, + "modifierFlagsCache": 0, + "transformFlags": 0, + "type": { + "pos": 5344, + "end": 5350, + "kind": 151, + "id": 0, + "flags": 16777216, + "transformFlags": 1 + } + } + }, + { + "tagName": { + "pos": 5408, + "end": 5415, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

A string that can be placed in a csv cell.

\n", + "returnType": "string" + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "insertColumnAtEnd", + "args": [ + { + "name": "headerRow", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 121, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "headerRow", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "insertColumnBeforeResponseColumn", + "args": [ + { + "name": "headerRow", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 117, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "headerRow", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "isComponentSelected", + "args": [ + { + "name": "selectedNodesMap", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 138, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if a component is selected\nto true\nexample\n{\n \"node1-38fj20egrj\": true,\n \"node1-20dbj2e0sf\": true\n}\n", + "description": "

Check if a component is selected\nto true\nexample\n{\n "node1-38fj20egrj": true,\n "node1-20dbj2e0sf": true\n}

\n", + "jsdoctags": [ + { + "name": { + "pos": 4590, + "end": 4606, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "selectedNodesMap" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4584, + "end": 4589, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

a map of node id and component id strings\nto true\nexample\n{\n"node1-38fj20egrj": true,\n"node1-20dbj2e0sf": true\n}

\n" + }, + { + "name": { + "pos": 4766, + "end": 4772, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4760, + "end": 4765, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id to check

\n" + }, + { + "name": { + "pos": 4806, + "end": 4817, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4800, + "end": 4805, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component id to check

\n" + }, + { + "tagName": { + "pos": 4850, + "end": 4856, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether the component is selected

\n" + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "populateColumnNameMappings", + "args": [ + { + "name": "columnNames", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 103, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "columnNames", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "setColumnValue", + "args": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "value", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 109, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "value", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "setDataExportContext", + "args": [ + { + "name": "context", + "type": "DataExportContext", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "context", + "type": "DataExportContext", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "setRunInfo", + "args": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + } + ], + "indexSignatures": [], + "extends": [ + "AbstractDataExportStrategy" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "NotebookItem", + "id": "class-NotebookItem-11cbe359fcfa2c79b639090f93c5928c2c0214746e9140446ff5bb1e98da6097152eabdd0f3a1509c27e1468c07d88adbba0a9d6be8f96be9ef355e9454d1164", + "file": "src/assets/wise5/common/notebook/notebookItem.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "export class NotebookItem {\n content: {\n text: string;\n attachments: any[];\n };\n localNotebookItemId: string;\n serverDeleteTime: number;\n type: 'note' | 'report';\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "content", + "deprecated": false, + "deprecationMessage": "", + "type": "literal type", + "indexKey": "", + "optional": false, + "description": "", + "line": 2 + }, + { + "name": "localNotebookItemId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 6 + }, + { + "name": "serverDeleteTime", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 7 + }, + { + "name": "type", + "deprecated": false, + "deprecationMessage": "", + "type": "\"note\" | \"report\"", + "indexKey": "", + "optional": false, + "description": "", + "line": 8 + } + ], + "methods": [], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "Notification", + "id": "class-Notification-faa40023f7d14df8e1af2d4361f7157fcc7595446810fff2e37e249e204040dbae45532624c47cd0fe628eab1038a31f25c938e7bbd9b13cd7841da196e10679", + "file": "src/app/domain/notification.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "export class Notification {\n componentId: string;\n componentType: string;\n data: any;\n fromWorkgroupId: number;\n groupId: string;\n id: number;\n message: string;\n nodeId: string;\n nodePosition: string;\n nodePositionAndTitle: string;\n periodId: number;\n runId: number;\n serverSaveTime: number;\n timeDismissed?: number;\n timeGenerated: number;\n toWorkgroupId: number;\n type: string;\n constructor(jsonObject: any = {}) {\n for (const key of Object.keys(jsonObject)) {\n if (jsonObject[key] != null) {\n this[key] = jsonObject[key];\n }\n }\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "jsonObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "{}" + } + ], + "line": 18, + "jsdoctags": [ + { + "name": "jsonObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "{}", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 2 + }, + { + "name": "componentType", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 3 + }, + { + "name": "data", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 4 + }, + { + "name": "fromWorkgroupId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 5 + }, + { + "name": "groupId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 6 + }, + { + "name": "id", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 7 + }, + { + "name": "message", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 8 + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 9 + }, + { + "name": "nodePosition", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 10 + }, + { + "name": "nodePositionAndTitle", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 11 + }, + { + "name": "periodId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 12 + }, + { + "name": "runId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 13 + }, + { + "name": "serverSaveTime", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 14 + }, + { + "name": "timeDismissed", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": true, + "description": "", + "line": 15 + }, + { + "name": "timeGenerated", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 16 + }, + { + "name": "toWorkgroupId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 17 + }, + { + "name": "type", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 18 + } + ], + "methods": [], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "NotificationDataExportStrategy", + "id": "class-NotificationDataExportStrategy-d33dd9e7baa301c2fbedca3ea0f076d5f90b9b040f6858697aa3c32cd9d37a2fbf5c5f7beb8542715c3627ed26dfcac00a35ff461d5603e85cb70f900c54a33c", + "file": "src/assets/wise5/classroomMonitor/dataExport/strategies/NotificationDataExportStrategy.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { AbstractDataExportStrategy } from './AbstractDataExportStrategy';\nimport { millisecondsToDateTime } from '../../../common/datetime/datetime';\n\nexport class NotificationDataExportStrategy extends AbstractDataExportStrategy {\n export() {\n this.controller.showDownloadingExportMessage();\n this.dataExportService.retrieveNotificationsExport().subscribe((result) => {\n const notifications = result;\n const columnNames = [\n 'ID',\n 'Teacher Username',\n 'Run ID',\n 'Period ID',\n 'Period Name',\n 'Project ID',\n 'Node ID',\n 'Component ID',\n 'Step Number',\n 'Step Title',\n 'Component Part Number',\n 'Component Type',\n 'Server Save Time',\n 'Time Generated',\n 'Time Dismissed',\n 'From Workgroup ID',\n 'To Workgroup ID',\n 'User ID 1',\n 'User ID 2',\n 'User ID 3',\n 'Data',\n 'Group ID',\n 'Type',\n 'Message'\n ];\n const columnNameToNumber = {};\n const headerRow = [];\n for (let c = 0; c < columnNames.length; c++) {\n const columnName = columnNames[c];\n columnNameToNumber[columnName] = c;\n headerRow.push(columnName);\n }\n const rows = [];\n rows.push(headerRow);\n for (const notification of notifications) {\n rows.push(this.createExportNotificationRow(columnNames, columnNameToNumber, notification));\n }\n const runId = this.configService.getRunId();\n const fileName = `${runId}_notifications.csv`;\n this.controller.generateCSVFile(rows, fileName);\n this.controller.hideDownloadingExportMessage();\n });\n }\n\n private createExportNotificationRow(columnNames, columnNameToNumber, notification) {\n const row = new Array(columnNames.length);\n row.fill(' ');\n row[columnNameToNumber['ID']] = notification.id;\n row[columnNameToNumber['Node ID']] = notification.nodeId;\n row[columnNameToNumber['Component ID']] = notification.componentId;\n const component = this.projectService.getComponent(\n notification.nodeId,\n notification.componentId\n );\n if (component != null) {\n row[columnNameToNumber['Component Type']] = component.type;\n }\n row[columnNameToNumber['Step Number']] = this.controller.getNodePositionById(\n notification.nodeId\n );\n row[columnNameToNumber['Step Title']] = this.controller.getNodeTitleByNodeId(\n notification.nodeId\n );\n const componentPosition = this.projectService\n .getNode(notification.nodeId)\n .getComponentPosition(notification.componentId);\n if (componentPosition != -1) {\n row[columnNameToNumber['Component Part Number']] = componentPosition + 1;\n }\n row[columnNameToNumber['Server Save Time']] = millisecondsToDateTime(\n notification.serverSaveTime\n );\n row[columnNameToNumber['Time Generated']] = millisecondsToDateTime(notification.timeGenerated);\n if (notification.timeDismissed != null) {\n row[columnNameToNumber['Time Dismissed']] = millisecondsToDateTime(\n notification.timeDismissed\n );\n }\n row[columnNameToNumber['Type']] = notification.type;\n if (notification.groupId != null) {\n row[columnNameToNumber['Group ID']] = notification.groupId;\n }\n row[columnNameToNumber['Message']] = notification.message;\n row[columnNameToNumber['Data']] = notification.data;\n row[columnNameToNumber['Period ID']] = notification.periodId;\n row[columnNameToNumber['Run ID']] = notification.runId;\n row[columnNameToNumber['From Workgroup ID']] = notification.fromWorkgroupId;\n row[columnNameToNumber['To Workgroup ID']] = notification.toWorkgroupId;\n const userInfo = this.configService.getUserInfoByWorkgroupId(notification.toWorkgroupId);\n row[columnNameToNumber['Period Name']] = userInfo.periodName;\n row[columnNameToNumber['Teacher Username']] = this.configService.getTeacherUserInfo().username;\n row[columnNameToNumber['Project ID']] = this.configService.getProjectId();\n if (userInfo.users != null) {\n this.addStudentUserIDsToNotificationRow(row, columnNameToNumber, userInfo);\n }\n return row;\n }\n\n private addStudentUserIDsToNotificationRow(row: any, columnNameToNumber: any, userInfo: any) {\n for (let i = 0; i <= 2; i++) {\n const student = userInfo.users[i];\n if (student != null) {\n row[columnNameToNumber[`User ID ${i + 1}`]] = student.id;\n }\n }\n return row;\n }\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "allOrLatest", + "defaultValue": "'all'", + "deprecated": false, + "deprecationMessage": "", + "type": "\"all\" | \"latest\"", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "annotationService", + "deprecated": false, + "deprecationMessage": "", + "type": "AnnotationService", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "configService", + "deprecated": false, + "deprecationMessage": "", + "type": "ConfigService", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "context", + "deprecated": false, + "deprecationMessage": "", + "type": "DataExportContext", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "controller", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "dataExportService", + "deprecated": false, + "deprecationMessage": "", + "type": "DataExportService", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "dataService", + "deprecated": false, + "deprecationMessage": "", + "type": "TeacherDataService", + "indexKey": "", + "optional": false, + "description": "", + "line": 20, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "projectService", + "deprecated": false, + "deprecationMessage": "", + "type": "TeacherProjectService", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + } + ], + "methods": [ + { + "name": "addStudentUserIDsToNotificationRow", + "args": [ + { + "name": "row", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "userInfo", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 108, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "row", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "userInfo", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createExportNotificationRow", + "args": [ + { + "name": "columnNames", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "notification", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 54, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "columnNames", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "notification", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "export", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 5, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "generateCSVFile", + "args": [ + { + "name": "rows", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "fileName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 194, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "rows", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "fileName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "generateExportFileName", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentTypeWithUnderscore", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 179, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentTypeWithUnderscore", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "getColumnValue", + "args": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 113, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "getSelectedNodesMap", + "args": [ + { + "name": "selectedNodes", + "type": "[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]" + } + ], + "optional": false, + "returnType": "{}", + "typeParameters": [], + "line": 62, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet a mapping of node/component id strings to true.\nexample if\nselectedNodes = [\n {\n nodeId: \"node1\",\n componentId: \"343b8aesf7\"\n },\n {\n nodeId: \"node2\",\n componentId: \"b34gaf0ug2\"\n },\n {\n nodeId: \"node3\"\n }\n]\n\nthis function will return\n{\n \"node1-343b8aesf7\": true,\n \"node2-b34gaf0ug2\": true,\n \"node3\": true\n}\n\na componentId field\n", + "description": "

Get a mapping of node/component id strings to true.\nexample if\nselectedNodes = [\n {\n nodeId: "node1",\n componentId: "343b8aesf7"\n },\n {\n nodeId: "node2",\n componentId: "b34gaf0ug2"\n },\n {\n nodeId: "node3"\n }\n]

\n

this function will return\n{\n "node1-343b8aesf7": true,\n "node2-b34gaf0ug2": true,\n "node3": true\n}

\n

a componentId field

\n", + "jsdoctags": [ + { + "name": { + "pos": 1979, + "end": 1992, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "selectedNodes" + }, + "type": "[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]", + "tagName": { + "pos": 1973, + "end": 1978, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

an array of objects that contain a nodeId field and maybe also\na componentId field

\n" + }, + { + "tagName": { + "pos": 2087, + "end": 2093, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

a mapping of node/component id strings to true

\n" + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "getStudentDataString", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 157, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the plain text representation of the student work.\n", + "description": "

Get the plain text representation of the student work.

\n", + "jsdoctags": [ + { + "name": { + "pos": 5328, + "end": 5342, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 5322, + "end": 5327, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

A component state that contains the student work.

\n", + "typeExpression": { + "pos": 5343, + "end": 5351, + "kind": 310, + "id": 0, + "flags": 16842752, + "modifierFlagsCache": 0, + "transformFlags": 0, + "type": { + "pos": 5344, + "end": 5350, + "kind": 151, + "id": 0, + "flags": 16777216, + "transformFlags": 1 + } + } + }, + { + "tagName": { + "pos": 5408, + "end": 5415, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

A string that can be placed in a csv cell.

\n", + "returnType": "string" + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "insertColumnAtEnd", + "args": [ + { + "name": "headerRow", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 121, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "headerRow", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "insertColumnBeforeResponseColumn", + "args": [ + { + "name": "headerRow", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 117, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "headerRow", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "isComponentSelected", + "args": [ + { + "name": "selectedNodesMap", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 138, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if a component is selected\nto true\nexample\n{\n \"node1-38fj20egrj\": true,\n \"node1-20dbj2e0sf\": true\n}\n", + "description": "

Check if a component is selected\nto true\nexample\n{\n "node1-38fj20egrj": true,\n "node1-20dbj2e0sf": true\n}

\n", + "jsdoctags": [ + { + "name": { + "pos": 4590, + "end": 4606, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "selectedNodesMap" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4584, + "end": 4589, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

a map of node id and component id strings\nto true\nexample\n{\n"node1-38fj20egrj": true,\n"node1-20dbj2e0sf": true\n}

\n" + }, + { + "name": { + "pos": 4766, + "end": 4772, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4760, + "end": 4765, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id to check

\n" + }, + { + "name": { + "pos": 4806, + "end": 4817, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4800, + "end": 4805, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component id to check

\n" + }, + { + "tagName": { + "pos": 4850, + "end": 4856, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether the component is selected

\n" + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "populateColumnNameMappings", + "args": [ + { + "name": "columnNames", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 103, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "columnNames", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "setColumnValue", + "args": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "value", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 109, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "value", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "setDataExportContext", + "args": [ + { + "name": "context", + "type": "DataExportContext", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "context", + "type": "DataExportContext", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "setRunInfo", + "args": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + } + ], + "indexSignatures": [], + "extends": [ + "AbstractDataExportStrategy" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "OneWorkgroupPerRowDataExportStrategy", + "id": "class-OneWorkgroupPerRowDataExportStrategy-8f071b81e2022fa2fd3d96eafc9835e2dbccb9bbfa5227a4b40e6b0c9e20aee10b634e2e19f9d24fb5eb3d03c1ab4eafc196b1b23145afd5e09dbaab769b68be", + "file": "src/assets/wise5/classroomMonitor/dataExport/strategies/OneWorkgroupPerRowDataExportStrategy.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { removeHTMLTags } from '../../../common/string/string';\nimport { AbstractDataExportStrategy } from './AbstractDataExportStrategy';\nimport { millisecondsToDateTime } from '../../../common/datetime/datetime';\n\nexport class OneWorkgroupPerRowDataExportStrategy extends AbstractDataExportStrategy {\n /**\n * Create a csv export file with one workgroup per row\n */\n export() {\n this.controller.showDownloadingExportMessage();\n var selectedNodes = [];\n\n /*\n * holds the mappings from nodeid or nodeid-componentid to a boolean\n * value of whether the node was selected\n * example\n * selectedNodesMap[\"node3\"] = true\n * selectedNodesMap[\"node4-wt38sdf1d3\"] = true\n */\n var selectedNodesMap = null;\n if (this.controller.exportStepSelectionType === 'exportSelectSteps') {\n selectedNodes = this.controller.getSelectedNodesToExport();\n if (selectedNodes == null || selectedNodes.length == 0) {\n alert('Please select a step to export.');\n this.controller.hideDownloadingExportMessage();\n return;\n } else {\n selectedNodesMap = this.getSelectedNodesMap(selectedNodes);\n }\n }\n\n this.dataExportService.retrieveStudentData(selectedNodes, true, true, true).subscribe(() => {\n var rows = [];\n var projectId = this.configService.getProjectId();\n var projectTitle = this.projectService.getProjectTitle();\n var runId = this.configService.getRunId();\n var startDate = '';\n var endDate = '';\n var columnIds = this.getColumnIdsForOneWorkgroupPerRow(selectedNodesMap);\n var nodeIds = this.projectService.getFlattenedProjectAsNodeIds();\n var descriptionRowHeaders = [\n 'Workgroup ID',\n 'User ID 1',\n 'Student Name 1',\n 'User ID 2',\n 'Student Name 2',\n 'User ID 3',\n 'Student Name 3',\n 'Class Period',\n 'Project ID',\n 'Project Name',\n 'Run ID',\n 'Start Date',\n 'End Date'\n ];\n var columnIdToColumnIndex = this.getColumnIdToColumnIndex(columnIds, descriptionRowHeaders);\n var topRows = this.getOneWorkgroupPerRowTopRows(\n columnIds,\n columnIdToColumnIndex,\n descriptionRowHeaders\n );\n rows = rows.concat(topRows);\n for (const workgroupId of this.configService.getClassmateWorkgroupIds()) {\n /*\n * Create the row for the workgroup and fill each cell with\n * a space \" \".\n * The array length will be equal to the number of\n * description header columns plus a column for the vertical\n * headers plus all the columns for the steps/components.\n */\n var workgroupRow = new Array(descriptionRowHeaders.length + 1 + columnIds.length);\n workgroupRow.fill(' ');\n var userInfo = this.configService.getUserInfoByWorkgroupId(workgroupId);\n workgroupRow[columnIdToColumnIndex['Workgroup ID']] = workgroupId;\n var extractedUserIDsAndStudentNames = this.controller.extractUserIDsAndStudentNames(\n userInfo.users\n );\n var userId1 = extractedUserIDsAndStudentNames['userId1'];\n var userId2 = extractedUserIDsAndStudentNames['userId2'];\n var userId3 = extractedUserIDsAndStudentNames['userId3'];\n var studentName1 = extractedUserIDsAndStudentNames['studentName1'];\n var studentName2 = extractedUserIDsAndStudentNames['studentName2'];\n var studentName3 = extractedUserIDsAndStudentNames['studentName3'];\n if (userId1 != null) {\n workgroupRow[columnIdToColumnIndex['User ID 1']] = userId1;\n }\n if (studentName1 != null && this.controller.includeStudentNames) {\n workgroupRow[columnIdToColumnIndex['Student Name 1']] = studentName1;\n }\n if (userId2 != null) {\n workgroupRow[columnIdToColumnIndex['User ID 2']] = userId2;\n }\n if (studentName2 != null && this.controller.includeStudentNames) {\n workgroupRow[columnIdToColumnIndex['Student Name 2']] = studentName2;\n }\n if (userId3 != null) {\n workgroupRow[columnIdToColumnIndex['User ID 3']] = userId3;\n }\n if (studentName3 != null && this.controller.includeStudentNames) {\n workgroupRow[columnIdToColumnIndex['Student Name 3']] = studentName3;\n }\n workgroupRow[columnIdToColumnIndex['Class Period']] = userInfo.periodName;\n workgroupRow[columnIdToColumnIndex['Project ID']] = projectId;\n workgroupRow[columnIdToColumnIndex['Project Name']] = projectTitle;\n workgroupRow[columnIdToColumnIndex['Run ID']] = runId;\n workgroupRow[columnIdToColumnIndex['Start Date']] = startDate;\n workgroupRow[columnIdToColumnIndex['End Date']] = endDate;\n for (var n = 0; n < nodeIds.length; n++) {\n var nodeId = nodeIds[n];\n var components = this.projectService.getComponents(nodeId);\n if (components != null) {\n for (var c = 0; c < components.length; c++) {\n var component = components[c];\n if (component != null) {\n var componentId = component.id;\n if (this.exportComponent(selectedNodesMap, nodeId, componentId)) {\n var columnIdPrefix = nodeId + '-' + componentId;\n var componentState =\n this.dataService.getLatestComponentStateByWorkgroupIdNodeIdAndComponentId(\n workgroupId,\n nodeId,\n componentId\n );\n if (componentState != null) {\n if (this.controller.includeStudentWorkIds) {\n workgroupRow[columnIdToColumnIndex[columnIdPrefix + '-studentWorkId']] =\n componentState.id;\n }\n if (this.controller.includeStudentWorkTimestamps) {\n if (componentState.serverSaveTime != null) {\n var formattedDateTime = millisecondsToDateTime(\n componentState.serverSaveTime\n );\n workgroupRow[\n columnIdToColumnIndex[columnIdPrefix + '-studentWorkTimestamp']\n ] = formattedDateTime;\n }\n }\n workgroupRow[columnIdToColumnIndex[columnIdPrefix + '-studentWork']] =\n this.getStudentDataString(componentState);\n if (this.controller.includeScores || this.controller.includeComments) {\n var latestComponentAnnotations =\n this.annotationService.getLatestComponentAnnotations(\n nodeId,\n componentId,\n workgroupId\n );\n if (latestComponentAnnotations != null) {\n var scoreAnnotation = latestComponentAnnotations.score;\n var commentAnnotation = latestComponentAnnotations.comment;\n if (scoreAnnotation != null) {\n if (this.controller.includeScoreTimestamps) {\n var scoreTimestamp = millisecondsToDateTime(\n scoreAnnotation.serverSaveTime\n );\n workgroupRow[\n columnIdToColumnIndex[columnIdPrefix + '-scoreTimestamp']\n ] = scoreTimestamp;\n }\n if (this.controller.includeScores) {\n if (\n scoreAnnotation.data != null &&\n scoreAnnotation.data.value != null\n ) {\n var scoreValue = scoreAnnotation.data.value;\n workgroupRow[columnIdToColumnIndex[columnIdPrefix + '-score']] =\n scoreValue;\n }\n }\n }\n if (commentAnnotation != null) {\n if (this.controller.includeCommentTimestamps) {\n var commentTimestamp = millisecondsToDateTime(\n commentAnnotation.serverSaveTime\n );\n workgroupRow[\n columnIdToColumnIndex[columnIdPrefix + '-commentTimestamp']\n ] = commentTimestamp;\n }\n if (this.controller.includeComments) {\n if (\n commentAnnotation.data != null &&\n commentAnnotation.data.value != null\n ) {\n var commentValue = commentAnnotation.data.value;\n workgroupRow[columnIdToColumnIndex[columnIdPrefix + '-comment']] =\n commentValue;\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n if (this.exportNode(selectedNodesMap, nodeId)) {\n if (this.projectService.isBranchPoint(nodeId)) {\n var toNodeId = null;\n var stepTitle = null;\n const latestBranchPathTakenEvent = this.getLatestBranchPathTakenEvent(\n workgroupId,\n nodeId\n );\n if (\n latestBranchPathTakenEvent != null &&\n latestBranchPathTakenEvent.data != null &&\n latestBranchPathTakenEvent.data.toNodeId != null\n ) {\n toNodeId = latestBranchPathTakenEvent.data.toNodeId;\n stepTitle = this.projectService.getNodePositionAndTitle(toNodeId);\n }\n if (this.controller.includeBranchPathTakenNodeId) {\n if (toNodeId != null) {\n workgroupRow[columnIdToColumnIndex[nodeId + '-branchPathTakenNodeId']] = toNodeId;\n } else {\n workgroupRow[columnIdToColumnIndex[nodeId + '-branchPathTakenNodeId']] = ' ';\n }\n }\n if (this.controller.includeBranchPathTaken) {\n var branchLetter = this.projectService.getBranchLetter(toNodeId);\n if (stepTitle != null) {\n workgroupRow[columnIdToColumnIndex[nodeId + '-branchPathTaken']] = branchLetter;\n } else {\n workgroupRow[columnIdToColumnIndex[nodeId + '-branchPathTaken']] = ' ';\n }\n }\n if (this.controller.includeBranchPathTakenStepTitle) {\n if (stepTitle != null) {\n workgroupRow[columnIdToColumnIndex[nodeId + '-branchPathTakenStepTitle']] =\n stepTitle;\n } else {\n workgroupRow[columnIdToColumnIndex[nodeId + '-branchPathTakenStepTitle']] = ' ';\n }\n }\n }\n }\n }\n rows.push(workgroupRow);\n }\n var fileName = runId + '_one_workgroup_per_row.csv';\n this.generateCSVFile(rows, fileName);\n this.controller.hideDownloadingExportMessage();\n });\n }\n\n private getLatestBranchPathTakenEvent(workgroupId: number, nodeId: string): any {\n return (\n this.dataService\n .getEventsByWorkgroupId(workgroupId)\n .findLast((event) => event.nodeId === nodeId && event.event === 'branchPathTaken') ?? null\n );\n }\n\n /**\n * Check if we want to export this component\n * @param selectedNodesMap a mapping of node id to boolean value of whether\n * the researcher has checked the node\n * @param nodeId the node id\n * @param componentId the component id\n * @return whether the component was checked\n */\n private exportComponent(selectedNodesMap, nodeId, componentId) {\n return (\n selectedNodesMap == null || this.isComponentSelected(selectedNodesMap, nodeId, componentId)\n );\n }\n\n /**\n * Get the column ids for the One Workgroup Per Row export\n * @param selectedNodesMap the nodes that were selected\n * @return an array of column ids. the column ids will be in the format\n * nodeId-componentId-studentWork\n * nodeId-componentId-score\n * nodeId-componentId-comment\n */\n private getColumnIdsForOneWorkgroupPerRow(selectedNodesMap) {\n var columnIds = [];\n var nodeIds = this.projectService.getFlattenedProjectAsNodeIds();\n if (nodeIds != null) {\n for (var n = 0; n < nodeIds.length; n++) {\n var nodeId = nodeIds[n];\n var components = this.projectService.getComponents(nodeId);\n if (components != null) {\n for (var c = 0; c < components.length; c++) {\n var component = components[c];\n if (component != null) {\n var componentId = component.id;\n if (this.exportComponent(selectedNodesMap, nodeId, componentId)) {\n var columnIdPrefix = nodeId + '-' + componentId;\n if (this.controller.includeStudentWorkIds) {\n columnIds.push(columnIdPrefix + '-studentWorkId');\n }\n if (this.controller.includeStudentWorkTimestamps) {\n columnIds.push(columnIdPrefix + '-studentWorkTimestamp');\n }\n if (this.controller.includeStudentWork) {\n columnIds.push(columnIdPrefix + '-studentWork');\n }\n if (this.controller.includeScoreTimestamps) {\n columnIds.push(columnIdPrefix + '-scoreTimestamp');\n }\n if (this.controller.includeScores) {\n columnIds.push(columnIdPrefix + '-score');\n }\n if (this.controller.includeCommentTimestamps) {\n columnIds.push(columnIdPrefix + '-commentTimestamp');\n }\n if (this.controller.includeComments) {\n columnIds.push(columnIdPrefix + '-comment');\n }\n }\n }\n }\n }\n if (this.exportNode(selectedNodesMap, nodeId)) {\n if (this.projectService.isBranchPoint(nodeId)) {\n if (this.controller.includeBranchPathTakenNodeId) {\n columnIds.push(nodeId + '-branchPathTakenNodeId');\n }\n if (this.controller.includeBranchPathTaken) {\n columnIds.push(nodeId + '-branchPathTaken');\n }\n if (this.controller.includeBranchPathTakenStepTitle) {\n columnIds.push(nodeId + '-branchPathTakenStepTitle');\n }\n }\n }\n }\n }\n return columnIds;\n }\n\n /**\n * Check if we want to export this node\n * @param selectedNodesMap a mapping of node id to boolean value of whether\n * the researcher has checked the node\n * @param nodeId the node id\n * @return whether the node was checked\n */\n exportNode(selectedNodesMap: any, nodeId: string): boolean {\n if (selectedNodesMap == null || this.isNodeSelected(selectedNodesMap, nodeId)) {\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * Check if a component is selected\n * @param selectedNodesMap a map of node id to true\n * example\n * {\n * \"node1\": true,\n * \"node2\": true\n * }\n * @param nodeId the node id to check\n * @param componentId the component id to check\n * @return whether the node is selected\n */\n isNodeSelected(selectedNodesMap: any, nodeId: string): boolean {\n var result = false;\n if (selectedNodesMap != null) {\n if (nodeId != null && selectedNodesMap[nodeId] == true) {\n result = true;\n }\n }\n return result;\n }\n\n /**\n * Get the top rows in the One Workgroup Per Row export\n * @param columnIds an array of column ids\n * @param columnIdToColumnIndex an object containing mappings from column id\n * to column index\n * @param descriptionRowHeaders an array containing the description row\n * headers\n * @return an array of of the top rows. each top row is also an array\n */\n private getOneWorkgroupPerRowTopRows(columnIds, columnIdToColumnIndex, descriptionRowHeaders) {\n var numColumns = descriptionRowHeaders.length + 1 + columnIds.length;\n var stepTitleRow = new Array(numColumns);\n var componentPartNumberRow = new Array(numColumns);\n var componentTypeRow = new Array(numColumns);\n var componentPromptRow = new Array(numColumns);\n var nodeIdRow = new Array(numColumns);\n var componentIdRow = new Array(numColumns);\n var columnIdRow = new Array(numColumns);\n var descriptionRow = new Array(numColumns);\n\n /*\n * populate the top rows with a space. we do this so that it makes it\n * easier to view in the export. for example if there is a cell with\n * text in it and a blank cell to the right of it, excel will display\n * the text overflow into the blank cell. if we have cells with \" \"\n * instead of \"\", this overflow will not occur.\n */\n stepTitleRow.fill(' ');\n componentPartNumberRow.fill(' ');\n componentTypeRow.fill(' ');\n componentPromptRow.fill(' ');\n nodeIdRow.fill(' ');\n componentIdRow.fill(' ');\n columnIdRow.fill(' ');\n descriptionRow.fill(' ');\n stepTitleRow[descriptionRowHeaders.length] = 'Step Title';\n componentPartNumberRow[descriptionRowHeaders.length] = 'Component Part Number';\n componentTypeRow[descriptionRowHeaders.length] = 'Component Type';\n componentPromptRow[descriptionRowHeaders.length] = 'Prompt';\n nodeIdRow[descriptionRowHeaders.length] = 'Node ID';\n componentIdRow[descriptionRowHeaders.length] = 'Component ID';\n columnIdRow[descriptionRowHeaders.length] = 'Column ID';\n descriptionRow[descriptionRowHeaders.length] = 'Description';\n for (var d = 0; d < descriptionRowHeaders.length; d++) {\n descriptionRow[d] = descriptionRowHeaders[d];\n }\n var nodeIds = this.projectService.getFlattenedProjectAsNodeIds();\n if (nodeIds != null) {\n for (var n = 0; n < nodeIds.length; n++) {\n var nodeId = nodeIds[n];\n var stepTitle = this.projectService.getNodePositionAndTitle(nodeId);\n var components = this.projectService.getComponents(nodeId);\n if (components != null) {\n for (var c = 0; c < components.length; c++) {\n var component = components[c];\n if (component != null) {\n var componentId = component.id;\n var columnIdPrefix = nodeId + '-' + componentId;\n var prompt = removeHTMLTags(component.prompt);\n prompt = prompt.replace(/\"/g, '\"\"');\n if (prompt == '') {\n prompt = ' ';\n }\n if (this.controller.includeStudentWorkIds) {\n stepTitleRow[columnIdToColumnIndex[columnIdPrefix + '-studentWorkId']] = stepTitle;\n componentPartNumberRow[columnIdToColumnIndex[columnIdPrefix + '-studentWorkId']] =\n c + 1;\n componentTypeRow[columnIdToColumnIndex[columnIdPrefix + '-studentWorkId']] =\n component.type;\n componentPromptRow[columnIdToColumnIndex[columnIdPrefix + '-studentWorkId']] =\n prompt;\n nodeIdRow[columnIdToColumnIndex[columnIdPrefix + '-studentWorkId']] = nodeId;\n componentIdRow[columnIdToColumnIndex[columnIdPrefix + '-studentWorkId']] =\n componentId;\n columnIdRow[columnIdToColumnIndex[columnIdPrefix + '-studentWorkId']] =\n columnIdPrefix + '-studentWorkId';\n descriptionRow[columnIdToColumnIndex[columnIdPrefix + '-studentWorkId']] =\n 'Student Work ID';\n }\n if (this.controller.includeStudentWorkTimestamps) {\n stepTitleRow[columnIdToColumnIndex[columnIdPrefix + '-studentWorkTimestamp']] =\n stepTitle;\n componentPartNumberRow[\n columnIdToColumnIndex[columnIdPrefix + '-studentWorkTimestamp']\n ] = c + 1;\n componentTypeRow[columnIdToColumnIndex[columnIdPrefix + '-studentWorkTimestamp']] =\n component.type;\n componentPromptRow[\n columnIdToColumnIndex[columnIdPrefix + '-studentWorkTimestamp']\n ] = prompt;\n nodeIdRow[columnIdToColumnIndex[columnIdPrefix + '-studentWorkTimestamp']] = nodeId;\n componentIdRow[columnIdToColumnIndex[columnIdPrefix + '-studentWorkTimestamp']] =\n componentId;\n columnIdRow[columnIdToColumnIndex[columnIdPrefix + '-studentWorkTimestamp']] =\n columnIdPrefix + '-studentWorkTimestamp';\n descriptionRow[columnIdToColumnIndex[columnIdPrefix + '-studentWorkTimestamp']] =\n 'Student Work Timestamp';\n }\n if (this.controller.includeStudentWork) {\n stepTitleRow[columnIdToColumnIndex[columnIdPrefix + '-studentWork']] = stepTitle;\n componentPartNumberRow[columnIdToColumnIndex[columnIdPrefix + '-studentWork']] =\n c + 1;\n componentTypeRow[columnIdToColumnIndex[columnIdPrefix + '-studentWork']] =\n component.type;\n componentPromptRow[columnIdToColumnIndex[columnIdPrefix + '-studentWork']] = prompt;\n nodeIdRow[columnIdToColumnIndex[columnIdPrefix + '-studentWork']] = nodeId;\n componentIdRow[columnIdToColumnIndex[columnIdPrefix + '-studentWork']] =\n componentId;\n columnIdRow[columnIdToColumnIndex[columnIdPrefix + '-studentWork']] =\n columnIdPrefix + '-studentWork';\n descriptionRow[columnIdToColumnIndex[columnIdPrefix + '-studentWork']] =\n 'Student Work';\n }\n\n if (this.controller.includeScoreTimestamps) {\n stepTitleRow[columnIdToColumnIndex[columnIdPrefix + '-scoreTimestamp']] = stepTitle;\n componentPartNumberRow[columnIdToColumnIndex[columnIdPrefix + '-scoreTimestamp']] =\n c + 1;\n componentTypeRow[columnIdToColumnIndex[columnIdPrefix + '-scoreTimestamp']] =\n component.type;\n componentPromptRow[columnIdToColumnIndex[columnIdPrefix + '-scoreTimestamp']] =\n prompt;\n nodeIdRow[columnIdToColumnIndex[columnIdPrefix + '-scoreTimestamp']] = nodeId;\n componentIdRow[columnIdToColumnIndex[columnIdPrefix + '-scoreTimestamp']] =\n componentId;\n columnIdRow[columnIdToColumnIndex[columnIdPrefix + '-scoreTimestamp']] =\n columnIdPrefix + '-scoreTimestamp';\n descriptionRow[columnIdToColumnIndex[columnIdPrefix + '-scoreTimestamp']] =\n 'Score Timestamp';\n }\n if (this.controller.includeScores) {\n stepTitleRow[columnIdToColumnIndex[columnIdPrefix + '-score']] = stepTitle;\n componentPartNumberRow[columnIdToColumnIndex[columnIdPrefix + '-score']] = c + 1;\n componentTypeRow[columnIdToColumnIndex[columnIdPrefix + '-score']] = component.type;\n componentPromptRow[columnIdToColumnIndex[columnIdPrefix + '-score']] = prompt;\n nodeIdRow[columnIdToColumnIndex[columnIdPrefix + '-score']] = nodeId;\n componentIdRow[columnIdToColumnIndex[columnIdPrefix + '-score']] = componentId;\n columnIdRow[columnIdToColumnIndex[columnIdPrefix + '-score']] =\n columnIdPrefix + '-score';\n descriptionRow[columnIdToColumnIndex[columnIdPrefix + '-score']] = 'Score';\n }\n if (this.controller.includeCommentTimestamps) {\n stepTitleRow[columnIdToColumnIndex[columnIdPrefix + '-commentTimestamp']] =\n stepTitle;\n componentPartNumberRow[\n columnIdToColumnIndex[columnIdPrefix + '-commentTimestamp']\n ] = c + 1;\n componentTypeRow[columnIdToColumnIndex[columnIdPrefix + '-commentTimestamp']] =\n component.type;\n componentPromptRow[columnIdToColumnIndex[columnIdPrefix + '-commentTimestamp']] =\n prompt;\n nodeIdRow[columnIdToColumnIndex[columnIdPrefix + '-commentTimestamp']] = nodeId;\n componentIdRow[columnIdToColumnIndex[columnIdPrefix + '-commentTimestamp']] =\n componentId;\n columnIdRow[columnIdToColumnIndex[columnIdPrefix + '-commentTimestamp']] =\n columnIdPrefix + '-commentTimestamp';\n descriptionRow[columnIdToColumnIndex[columnIdPrefix + '-commentTimestamp']] =\n 'Comment Timestamp';\n }\n if (this.controller.includeComments) {\n stepTitleRow[columnIdToColumnIndex[columnIdPrefix + '-comment']] = stepTitle;\n componentPartNumberRow[columnIdToColumnIndex[columnIdPrefix + '-comment']] = c + 1;\n componentTypeRow[columnIdToColumnIndex[columnIdPrefix + '-comment']] =\n component.type;\n componentPromptRow[columnIdToColumnIndex[columnIdPrefix + '-comment']] = prompt;\n nodeIdRow[columnIdToColumnIndex[columnIdPrefix + '-comment']] = nodeId;\n componentIdRow[columnIdToColumnIndex[columnIdPrefix + '-comment']] = componentId;\n columnIdRow[columnIdToColumnIndex[columnIdPrefix + '-comment']] =\n columnIdPrefix + '-comment';\n descriptionRow[columnIdToColumnIndex[columnIdPrefix + '-comment']] = 'Comment';\n }\n }\n }\n }\n if (this.controller.includeBranchPathTakenNodeId) {\n if (this.projectService.isBranchPoint(nodeId)) {\n stepTitleRow[columnIdToColumnIndex[nodeId + '-branchPathTakenNodeId']] = stepTitle;\n componentPartNumberRow[columnIdToColumnIndex[nodeId + '-branchPathTakenNodeId']] = ' ';\n componentTypeRow[columnIdToColumnIndex[nodeId + '-branchPathTakenNodeId']] = ' ';\n componentPromptRow[columnIdToColumnIndex[nodeId + '-branchPathTakenNodeId']] = ' ';\n nodeIdRow[columnIdToColumnIndex[nodeId + '-branchPathTakenNodeId']] = nodeId;\n componentIdRow[columnIdToColumnIndex[nodeId + '-branchPathTakenNodeId']] = ' ';\n columnIdRow[columnIdToColumnIndex[nodeId + '-branchPathTakenNodeId']] =\n nodeId + '-branchPathTakenNodeId';\n descriptionRow[columnIdToColumnIndex[nodeId + '-branchPathTakenNodeId']] =\n 'Branch Path Taken Node ID';\n }\n }\n if (this.controller.includeBranchPathTaken) {\n if (this.projectService.isBranchPoint(nodeId)) {\n stepTitleRow[columnIdToColumnIndex[nodeId + '-branchPathTaken']] = stepTitle;\n componentPartNumberRow[columnIdToColumnIndex[nodeId + '-branchPathTaken']] = ' ';\n componentTypeRow[columnIdToColumnIndex[nodeId + '-branchPathTaken']] = ' ';\n componentPromptRow[columnIdToColumnIndex[nodeId + '-branchPathTaken']] = ' ';\n nodeIdRow[columnIdToColumnIndex[nodeId + '-branchPathTaken']] = nodeId;\n componentIdRow[columnIdToColumnIndex[nodeId + '-branchPathTaken']] = ' ';\n columnIdRow[columnIdToColumnIndex[nodeId + '-branchPathTaken']] =\n nodeId + '-branchPathTaken';\n descriptionRow[columnIdToColumnIndex[nodeId + '-branchPathTaken']] =\n 'Branch Path Taken';\n }\n }\n if (this.controller.includeBranchPathTakenStepTitle) {\n if (this.projectService.isBranchPoint(nodeId)) {\n stepTitleRow[columnIdToColumnIndex[nodeId + '-branchPathTakenStepTitle']] = stepTitle;\n componentPartNumberRow[columnIdToColumnIndex[nodeId + '-branchPathTakenStepTitle']] =\n ' ';\n componentTypeRow[columnIdToColumnIndex[nodeId + '-branchPathTakenStepTitle']] = ' ';\n componentPromptRow[columnIdToColumnIndex[nodeId + '-branchPathTakenStepTitle']] = ' ';\n nodeIdRow[columnIdToColumnIndex[nodeId + '-branchPathTakenStepTitle']] = nodeId;\n componentIdRow[columnIdToColumnIndex[nodeId + '-branchPathTakenStepTitle']] = ' ';\n columnIdRow[columnIdToColumnIndex[nodeId + '-branchPathTakenStepTitle']] =\n nodeId + '-branchPathTakenStepTitle';\n descriptionRow[columnIdToColumnIndex[nodeId + '-branchPathTakenStepTitle']] =\n 'Branch Path Taken Step Title';\n }\n }\n }\n }\n const topRows = [];\n topRows.push(stepTitleRow);\n topRows.push(componentPartNumberRow);\n topRows.push(componentTypeRow);\n topRows.push(componentPromptRow);\n topRows.push(nodeIdRow);\n topRows.push(componentIdRow);\n topRows.push(columnIdRow);\n topRows.push(descriptionRow);\n return topRows;\n }\n\n /**\n * Create mappings from column id to column index so that we can easily\n * insert cell values into the correct column when we fill in the row\n * for a workgroup\n * @param columnIds an array of column ids in the order that the\n * associated columns will appear in the export\n * @param descriptionRowHeaders an array of headers in the description row\n * @return an object that contains mappings from column id to column index\n */\n private getColumnIdToColumnIndex(columnIds, descriptionRowHeaders) {\n /*\n * the student work columns will start after the description header\n * columns and vertical headers column\n */\n var numberOfColumnsToShift = descriptionRowHeaders.length + 1;\n var columnIdToColumnIndex = {};\n\n /*\n * loop through all the description columns\n * Workgroup ID\n * User ID 1\n * User ID 2\n * User ID 3\n * Class Period\n * Project ID\n * Project Name\n * Run ID\n * Start Date\n * End Date\n */\n for (var d = 0; d < descriptionRowHeaders.length; d++) {\n var descriptionRowHeader = descriptionRowHeaders[d];\n columnIdToColumnIndex[descriptionRowHeader] = d;\n }\n\n // generate the header row by looping through all the column names\n for (var c = 0; c < columnIds.length; c++) {\n var columnId = columnIds[c];\n if (columnId != null) {\n /*\n * Add a mapping from column name to column index. The columns\n * for the components will start after the blank columns and\n * after the column that contains the vertical headers for the\n * top rows. We need to add +1 for the vertical headers column\n * which contains the values Step Title, Component Part Number,\n * Component Type, Prompt, Node ID, Component ID, Description.\n */\n columnIdToColumnIndex[columnId] = numberOfColumnsToShift + c;\n }\n }\n return columnIdToColumnIndex;\n }\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "allOrLatest", + "defaultValue": "'all'", + "deprecated": false, + "deprecationMessage": "", + "type": "\"all\" | \"latest\"", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "annotationService", + "deprecated": false, + "deprecationMessage": "", + "type": "AnnotationService", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "configService", + "deprecated": false, + "deprecationMessage": "", + "type": "ConfigService", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "context", + "deprecated": false, + "deprecationMessage": "", + "type": "DataExportContext", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "controller", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "dataExportService", + "deprecated": false, + "deprecationMessage": "", + "type": "DataExportService", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "dataService", + "deprecated": false, + "deprecationMessage": "", + "type": "TeacherDataService", + "indexKey": "", + "optional": false, + "description": "", + "line": 20, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "projectService", + "deprecated": false, + "deprecationMessage": "", + "type": "TeacherProjectService", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + } + ], + "methods": [ + { + "name": "export", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 9, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCreate a csv export file with one workgroup per row\n", + "description": "

Create a csv export file with one workgroup per row

\n", + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "exportComponent", + "args": [ + { + "name": "selectedNodesMap", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 264, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if we want to export this component\nthe researcher has checked the node\n", + "description": "

Check if we want to export this component\nthe researcher has checked the node

\n", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": { + "pos": 11834, + "end": 11850, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "selectedNodesMap" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 11828, + "end": 11833, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

a mapping of node id to boolean value of whether\nthe researcher has checked the node

\n" + }, + { + "name": { + "pos": 11953, + "end": 11959, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 11947, + "end": 11952, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id

\n" + }, + { + "name": { + "pos": 11984, + "end": 11995, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 11978, + "end": 11983, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component id

\n" + }, + { + "tagName": { + "pos": 12019, + "end": 12025, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether the component was checked

\n" + } + ] + }, + { + "name": "exportNode", + "args": [ + { + "name": "selectedNodesMap", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 342, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if we want to export this node\nthe researcher has checked the node\n", + "description": "

Check if we want to export this node\nthe researcher has checked the node

\n", + "jsdoctags": [ + { + "name": { + "pos": 14995, + "end": 15011, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "selectedNodesMap" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 14989, + "end": 14994, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

a mapping of node id to boolean value of whether\nthe researcher has checked the node

\n" + }, + { + "name": { + "pos": 15114, + "end": 15120, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 15108, + "end": 15113, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id

\n" + }, + { + "tagName": { + "pos": 15139, + "end": 15145, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether the node was checked

\n" + } + ] + }, + { + "name": "getColumnIdsForOneWorkgroupPerRow", + "args": [ + { + "name": "selectedNodesMap", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "{}", + "typeParameters": [], + "line": 278, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the column ids for the One Workgroup Per Row export\nnodeId-componentId-studentWork\nnodeId-componentId-score\nnodeId-componentId-comment\n", + "description": "

Get the column ids for the One Workgroup Per Row export\nnodeId-componentId-studentWork\nnodeId-componentId-score\nnodeId-componentId-comment

\n", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": { + "pos": 12335, + "end": 12351, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "selectedNodesMap" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 12329, + "end": 12334, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the nodes that were selected

\n" + }, + { + "tagName": { + "pos": 12387, + "end": 12393, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

an array of column ids. the column ids will be in the format\nnodeId-componentId-studentWork\nnodeId-componentId-score\nnodeId-componentId-comment

\n" + } + ] + }, + { + "name": "getColumnIdToColumnIndex", + "args": [ + { + "name": "columnIds", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "descriptionRowHeaders", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "{}", + "typeParameters": [], + "line": 612, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCreate mappings from column id to column index so that we can easily\ninsert cell values into the correct column when we fill in the row\nfor a workgroup\nassociated columns will appear in the export\n", + "description": "

Create mappings from column id to column index so that we can easily\ninsert cell values into the correct column when we fill in the row\nfor a workgroup\nassociated columns will appear in the export

\n", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": { + "pos": 29464, + "end": 29473, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "columnIds" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 29458, + "end": 29463, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

an array of column ids in the order that the\nassociated columns will appear in the export

\n" + }, + { + "name": { + "pos": 29581, + "end": 29602, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "descriptionRowHeaders" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 29575, + "end": 29580, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

an array of headers in the description row

\n" + }, + { + "tagName": { + "pos": 29652, + "end": 29658, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

an object that contains mappings from column id to column index

\n" + } + ] + }, + { + "name": "getLatestBranchPathTakenEvent", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 248, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getOneWorkgroupPerRowTopRows", + "args": [ + { + "name": "columnIds", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnIdToColumnIndex", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "descriptionRowHeaders", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "{}", + "typeParameters": [], + "line": 381, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the top rows in the One Workgroup Per Row export\nto column index\nheaders\n", + "description": "

Get the top rows in the One Workgroup Per Row export\nto column index\nheaders

\n", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": { + "pos": 16026, + "end": 16035, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "columnIds" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 16020, + "end": 16025, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

an array of column ids

\n" + }, + { + "name": { + "pos": 16071, + "end": 16092, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "columnIdToColumnIndex" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 16065, + "end": 16070, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

an object containing mappings from column id\nto column index

\n" + }, + { + "name": { + "pos": 16171, + "end": 16192, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "descriptionRowHeaders" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 16165, + "end": 16170, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

an array containing the description row\nheaders

\n" + }, + { + "tagName": { + "pos": 16252, + "end": 16258, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

an array of of the top rows. each top row is also an array

\n" + } + ] + }, + { + "name": "isNodeSelected", + "args": [ + { + "name": "selectedNodesMap", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 362, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if a component is selected\nexample\n{\n \"node1\": true,\n \"node2\": true\n}\n", + "description": "

Check if a component is selected\nexample\n{\n "node1": true,\n "node2": true\n}

\n", + "jsdoctags": [ + { + "name": { + "pos": 15448, + "end": 15464, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "selectedNodesMap" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 15442, + "end": 15447, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

a map of node id to true\nexample\n{\n"node1": true,\n"node2": true\n}

\n" + }, + { + "name": { + "pos": 15572, + "end": 15578, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 15566, + "end": 15571, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id to check

\n" + }, + { + "tagName": { + "pos": 15656, + "end": 15662, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether the node is selected

\n" + } + ] + }, + { + "name": "generateCSVFile", + "args": [ + { + "name": "rows", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "fileName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 194, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "rows", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "fileName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "generateExportFileName", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentTypeWithUnderscore", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 179, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentTypeWithUnderscore", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "getColumnValue", + "args": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 113, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "getSelectedNodesMap", + "args": [ + { + "name": "selectedNodes", + "type": "[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]" + } + ], + "optional": false, + "returnType": "{}", + "typeParameters": [], + "line": 62, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet a mapping of node/component id strings to true.\nexample if\nselectedNodes = [\n {\n nodeId: \"node1\",\n componentId: \"343b8aesf7\"\n },\n {\n nodeId: \"node2\",\n componentId: \"b34gaf0ug2\"\n },\n {\n nodeId: \"node3\"\n }\n]\n\nthis function will return\n{\n \"node1-343b8aesf7\": true,\n \"node2-b34gaf0ug2\": true,\n \"node3\": true\n}\n\na componentId field\n", + "description": "

Get a mapping of node/component id strings to true.\nexample if\nselectedNodes = [\n {\n nodeId: "node1",\n componentId: "343b8aesf7"\n },\n {\n nodeId: "node2",\n componentId: "b34gaf0ug2"\n },\n {\n nodeId: "node3"\n }\n]

\n

this function will return\n{\n "node1-343b8aesf7": true,\n "node2-b34gaf0ug2": true,\n "node3": true\n}

\n

a componentId field

\n", + "jsdoctags": [ + { + "name": { + "pos": 1979, + "end": 1992, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "selectedNodes" + }, + "type": "[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]", + "tagName": { + "pos": 1973, + "end": 1978, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

an array of objects that contain a nodeId field and maybe also\na componentId field

\n" + }, + { + "tagName": { + "pos": 2087, + "end": 2093, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

a mapping of node/component id strings to true

\n" + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "getStudentDataString", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 157, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the plain text representation of the student work.\n", + "description": "

Get the plain text representation of the student work.

\n", + "jsdoctags": [ + { + "name": { + "pos": 5328, + "end": 5342, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 5322, + "end": 5327, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

A component state that contains the student work.

\n", + "typeExpression": { + "pos": 5343, + "end": 5351, + "kind": 310, + "id": 0, + "flags": 16842752, + "modifierFlagsCache": 0, + "transformFlags": 0, + "type": { + "pos": 5344, + "end": 5350, + "kind": 151, + "id": 0, + "flags": 16777216, + "transformFlags": 1 + } + } + }, + { + "tagName": { + "pos": 5408, + "end": 5415, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

A string that can be placed in a csv cell.

\n", + "returnType": "string" + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "insertColumnAtEnd", + "args": [ + { + "name": "headerRow", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 121, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "headerRow", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "insertColumnBeforeResponseColumn", + "args": [ + { + "name": "headerRow", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 117, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "headerRow", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "isComponentSelected", + "args": [ + { + "name": "selectedNodesMap", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 138, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if a component is selected\nto true\nexample\n{\n \"node1-38fj20egrj\": true,\n \"node1-20dbj2e0sf\": true\n}\n", + "description": "

Check if a component is selected\nto true\nexample\n{\n "node1-38fj20egrj": true,\n "node1-20dbj2e0sf": true\n}

\n", + "jsdoctags": [ + { + "name": { + "pos": 4590, + "end": 4606, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "selectedNodesMap" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4584, + "end": 4589, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

a map of node id and component id strings\nto true\nexample\n{\n"node1-38fj20egrj": true,\n"node1-20dbj2e0sf": true\n}

\n" + }, + { + "name": { + "pos": 4766, + "end": 4772, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4760, + "end": 4765, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id to check

\n" + }, + { + "name": { + "pos": 4806, + "end": 4817, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4800, + "end": 4805, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component id to check

\n" + }, + { + "tagName": { + "pos": 4850, + "end": 4856, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether the component is selected

\n" + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "populateColumnNameMappings", + "args": [ + { + "name": "columnNames", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 103, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "columnNames", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "setColumnValue", + "args": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "value", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 109, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "value", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "setDataExportContext", + "args": [ + { + "name": "context", + "type": "DataExportContext", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "context", + "type": "DataExportContext", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "setRunInfo", + "args": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + } + ], + "indexSignatures": [], + "extends": [ + "AbstractDataExportStrategy" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "OpenResponseComponentDataExportStrategy", + "id": "class-OpenResponseComponentDataExportStrategy-867f1c0e5b5e5e07d694b85b92391a3431bb7a35e50e2f7d36b4d10222df0c116f2c232211d3a9724e6a86ada9c6b702a646e4aef1ab5f897b766f5b75504c53", + "file": "src/assets/wise5/classroomMonitor/dataExport/strategies/OpenResponseComponentExportStrategy.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { ComponentDataExportParams } from '../ComponentDataExportParams';\nimport { AbstractComponentDataExportStrategy } from './AbstractComponentDataExportStrategy';\n\nexport class OpenResponseComponentDataExportStrategy extends AbstractComponentDataExportStrategy {\n protected autoScoreLabel: string = 'Auto Score';\n protected ideaLabel: string = 'Idea';\n protected scoreLabel: string = 'Score';\n\n constructor(\n protected nodeId: string,\n protected component: any,\n additionalParams: ComponentDataExportParams,\n protected allOrLatest: 'all' | 'latest'\n ) {\n super(nodeId, component, additionalParams);\n }\n\n protected generateComponentHeaderRow(component: any): string[] {\n const headerRow = [...this.defaultColumnNames];\n headerRow.push('Item ID');\n headerRow.push('Response');\n if (this.isCRaterEnabled(component)) {\n const annotations = this.annotationService.getAnnotationsByNodeIdComponentId(\n this.nodeId,\n component.id\n );\n this.tryToAddIdeaColumnNames(headerRow, annotations);\n this.tryToAddScoreColumnNames(headerRow, annotations);\n }\n return headerRow;\n }\n\n private isCRaterEnabled(component: any): boolean {\n return component.enableCRater && component.cRater.itemId !== '';\n }\n\n private tryToAddIdeaColumnNames(columnNames: string[], annotations: any[]): void {\n const ideaNames = this.getIdeaNamesFromAnnotations(annotations);\n for (const ideaName of ideaNames) {\n columnNames.push(`${this.ideaLabel} ${ideaName}`);\n }\n }\n\n private getIdeaNamesFromAnnotations(annotations: any[]): string[] {\n const ideaNames = new Set();\n for (const annotation of annotations) {\n const ideaNamesFromAnnotation = this.getIdeaNamesFromAnnotation(annotation);\n for (const ideaName of ideaNamesFromAnnotation) {\n ideaNames.add(ideaName);\n }\n }\n return Array.from(ideaNames).sort(this.sortIdeaNames) as string[];\n }\n\n private sortIdeaNames(a: any, b: any): number {\n const aInt = parseInt(a);\n const bInt = parseInt(b);\n // if a and b are the same number but one of them contains a letter, we will sort alphabetically\n // when a string like \"5a\" is given to parseInt(), it will return 5 therefore if we are\n // comparing \"5\" and \"5a\" we will sort alphabetically because we want 5 to show up before 5a\n if (!isNaN(aInt) && !isNaN(bInt) && aInt !== bInt) {\n // sort numerically\n return aInt - bInt;\n } else {\n // sort alphabetically\n return a.localeCompare(b);\n }\n }\n\n private getIdeaNamesFromAnnotation(annotation: any): string[] {\n const ideaNames = [];\n if (annotation.data.ideas != null) {\n for (const idea of annotation.data.ideas) {\n ideaNames.push(idea.name);\n }\n }\n return ideaNames;\n }\n\n private tryToAddScoreColumnNames(columnNames: string[], annotations: any[]): void {\n const scoreNames = this.getScoreNamesFromAnnotations(annotations);\n if (scoreNames.length === 0) {\n this.insertColumnAtEnd(columnNames, this.autoScoreLabel);\n } else {\n for (const scoreName of scoreNames) {\n this.insertColumnAtEnd(columnNames, `${this.scoreLabel} ${scoreName}`);\n }\n }\n }\n\n private getScoreNamesFromAnnotations(annotations: any[]): string[] {\n const scoreNames = new Set();\n for (const annotation of annotations) {\n const scoreNamesFromAnnotation = this.getScoreNamesFromAnnotation(annotation);\n for (const scoreName of scoreNamesFromAnnotation) {\n scoreNames.add(scoreName);\n }\n }\n return Array.from(scoreNames).sort() as string[];\n }\n\n private getScoreNamesFromAnnotation(annotation: any): string[] {\n const scoreNames = [];\n if (annotation.data.scores != null) {\n for (const score of annotation.data.scores) {\n scoreNames.push(score.id);\n }\n }\n return scoreNames.sort();\n }\n\n protected generateComponentWorkRows(\n component: any,\n columnNames: string[],\n columnNameToNumber: any,\n nodeId: string\n ): any[] {\n const componentStates = this.getComponentStates(component);\n const workRows = [];\n for (let r = 0; r < componentStates.length; r++) {\n const componentState = componentStates[r];\n const row = new Array(columnNames.length).fill('');\n this.setColumnValue(row, columnNameToNumber, '#', r + 1);\n this.setStudentInfo(row, columnNameToNumber, componentState);\n this.setRunInfo(row, columnNameToNumber, componentState);\n this.setComponentInfo(row, columnNameToNumber, nodeId, component);\n this.setStudentWork(row, columnNameToNumber, component, componentState);\n workRows.push(row);\n }\n return workRows;\n }\n\n protected setComponentInfo(\n row: any[],\n columnNameToNumber: any,\n nodeId: string,\n component: any\n ): void {\n super.setComponentInfo(row, columnNameToNumber, nodeId, component);\n if (this.isCRaterEnabled(component)) {\n this.setColumnValue(row, columnNameToNumber, 'Item ID', component.cRater.itemId);\n }\n }\n\n protected setStudentWork(\n row: any[],\n columnNameToNumber: any,\n component: any,\n componentState: any\n ): void {\n super.setStudentWork(row, columnNameToNumber, component, componentState);\n this.setColumnValue(row, columnNameToNumber, 'Response', componentState.studentData.response);\n this.setAnnotationData(row, columnNameToNumber, componentState);\n }\n\n private setAnnotationData(row: any[], columnNameToNumber: any, componentState: any): void {\n const annotation = this.annotationService.getLatestAnnotationByStudentWorkIdAndType(\n componentState.id,\n 'autoScore'\n );\n if (annotation != null) {\n this.tryToAddOpenResponseAnnotationIdeas(row, columnNameToNumber, annotation);\n this.tryToAddOpenResponseAnnotationScores(row, columnNameToNumber, annotation);\n }\n }\n\n private tryToAddOpenResponseAnnotationIdeas(\n row: any[],\n columnNameToNumber: any,\n annotation: any\n ): void {\n if (annotation.data.ideas != null) {\n for (const idea of annotation.data.ideas) {\n row[columnNameToNumber[`${this.ideaLabel} ${idea.name}`]] = idea.detected ? 1 : 0;\n }\n }\n }\n\n private tryToAddOpenResponseAnnotationScores(\n row: any[],\n columnNameToNumber: any,\n annotation: any\n ): void {\n if (annotation.data.scores != null) {\n for (const score of annotation.data.scores) {\n row[columnNameToNumber[`${this.scoreLabel} ${score.id}`]] = score.score;\n }\n } else if (annotation.data.value != null) {\n row[columnNameToNumber[`${this.autoScoreLabel}`]] = annotation.data.value;\n }\n }\n\n protected getComponentTypeWithUnderscore(): string {\n return 'open_response';\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "additionalParams", + "type": "ComponentDataExportParams", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "allOrLatest", + "type": "\"all\" | \"latest\"", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 7, + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "additionalParams", + "type": "ComponentDataExportParams", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "allOrLatest", + "type": "\"all\" | \"latest\"", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "autoScoreLabel", + "defaultValue": "'Auto Score'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 5, + "modifierKind": [ + 124 + ] + }, + { + "name": "ideaLabel", + "defaultValue": "'Idea'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 6, + "modifierKind": [ + 124 + ] + }, + { + "name": "scoreLabel", + "defaultValue": "'Score'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 7, + "modifierKind": [ + 124 + ] + }, + { + "name": "allOrLatest", + "deprecated": false, + "deprecationMessage": "", + "type": "\"all\" | \"latest\"", + "indexKey": "", + "optional": false, + "description": "", + "line": 8, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "componentStateIdToRevisionNumber", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "object", + "indexKey": "", + "optional": false, + "description": "", + "line": 9, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "defaultColumnNames", + "defaultValue": "[\n '#',\n 'Workgroup ID',\n 'User ID 1',\n 'Student Name 1',\n 'User ID 2',\n 'Student Name 2',\n 'User ID 3',\n 'Student Name 3',\n 'Class Period',\n 'Project ID',\n 'Project Name',\n 'Run ID',\n 'Start Date',\n 'End Date',\n 'Student Work ID',\n 'Server Timestamp',\n 'Client Timestamp',\n 'Node ID',\n 'Component ID',\n 'Component Part Number',\n 'Step Title',\n 'Component Type',\n 'Component Prompt',\n 'Student Data',\n 'Component Revision Counter',\n 'Is Submit',\n 'Submit Count'\n ]", + "deprecated": false, + "deprecationMessage": "", + "type": "[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "includeOnlySubmits", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 39, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "includeStudentNames", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 40, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "revisionCounter", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 41, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "annotationService", + "deprecated": false, + "deprecationMessage": "", + "type": "AnnotationService", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "configService", + "deprecated": false, + "deprecationMessage": "", + "type": "ConfigService", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "context", + "deprecated": false, + "deprecationMessage": "", + "type": "DataExportContext", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "controller", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "dataExportService", + "deprecated": false, + "deprecationMessage": "", + "type": "DataExportService", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "dataService", + "deprecated": false, + "deprecationMessage": "", + "type": "TeacherDataService", + "indexKey": "", + "optional": false, + "description": "", + "line": 20, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "projectService", + "deprecated": false, + "deprecationMessage": "", + "type": "TeacherProjectService", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + } + ], + "methods": [ + { + "name": "generateComponentHeaderRow", + "args": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string[]", + "typeParameters": [], + "line": 18, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "generateComponentWorkRows", + "args": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNames", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 112, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNames", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "getComponentTypeWithUnderscore", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 193, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "getIdeaNamesFromAnnotation", + "args": [ + { + "name": "annotation", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string[]", + "typeParameters": [], + "line": 70, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "annotation", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getIdeaNamesFromAnnotations", + "args": [ + { + "name": "annotations", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string[]", + "typeParameters": [], + "line": 44, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "annotations", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getScoreNamesFromAnnotation", + "args": [ + { + "name": "annotation", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string[]", + "typeParameters": [], + "line": 102, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "annotation", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getScoreNamesFromAnnotations", + "args": [ + { + "name": "annotations", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string[]", + "typeParameters": [], + "line": 91, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "annotations", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isCRaterEnabled", + "args": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 33, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setAnnotationData", + "args": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 156, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setComponentInfo", + "args": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 133, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "setStudentWork", + "args": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 145, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "sortIdeaNames", + "args": [ + { + "name": "a", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "b", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 55, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "a", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "b", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "tryToAddIdeaColumnNames", + "args": [ + { + "name": "columnNames", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "annotations", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 37, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "columnNames", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "annotations", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "tryToAddOpenResponseAnnotationIdeas", + "args": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "annotation", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 167, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "annotation", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "tryToAddOpenResponseAnnotationScores", + "args": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "annotation", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 179, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "annotation", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "tryToAddScoreColumnNames", + "args": [ + { + "name": "columnNames", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "annotations", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 80, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "columnNames", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "annotations", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "calculateRevisionNumbers", + "args": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 130, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "export", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 53, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "getComponentStates", + "args": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "calculateRevisions", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "true" + } + ], + "optional": false, + "returnType": "ComponentState[]", + "typeParameters": [], + "line": 104, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "calculateRevisions", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "true", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "getLatestRevisions", + "args": [ + { + "name": "componentStates", + "type": "ComponentState[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "ComponentState[]", + "typeParameters": [], + "line": 169, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "componentStates", + "type": "ComponentState[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "getPrompt", + "args": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 206, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "getRevisionCounter", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 165, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "getRevisionCounterKey", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 157, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "incrementRevisionCounter", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 144, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "setAllOrLatest", + "args": [ + { + "name": "allOrLatest", + "type": "\"all\" | \"latest\"", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 98, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "allOrLatest", + "type": "\"all\" | \"latest\"", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "setStudentInfo", + "args": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 81, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "sortByWorkgroupIdAndTimestamp", + "args": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 122, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "generateCSVFile", + "args": [ + { + "name": "rows", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "fileName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 194, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "rows", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "fileName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "generateExportFileName", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentTypeWithUnderscore", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 179, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentTypeWithUnderscore", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "getColumnValue", + "args": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 113, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "getSelectedNodesMap", + "args": [ + { + "name": "selectedNodes", + "type": "[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]" + } + ], + "optional": false, + "returnType": "{}", + "typeParameters": [], + "line": 62, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet a mapping of node/component id strings to true.\nexample if\nselectedNodes = [\n {\n nodeId: \"node1\",\n componentId: \"343b8aesf7\"\n },\n {\n nodeId: \"node2\",\n componentId: \"b34gaf0ug2\"\n },\n {\n nodeId: \"node3\"\n }\n]\n\nthis function will return\n{\n \"node1-343b8aesf7\": true,\n \"node2-b34gaf0ug2\": true,\n \"node3\": true\n}\n\na componentId field\n", + "description": "

Get a mapping of node/component id strings to true.\nexample if\nselectedNodes = [\n {\n nodeId: "node1",\n componentId: "343b8aesf7"\n },\n {\n nodeId: "node2",\n componentId: "b34gaf0ug2"\n },\n {\n nodeId: "node3"\n }\n]

\n

this function will return\n{\n "node1-343b8aesf7": true,\n "node2-b34gaf0ug2": true,\n "node3": true\n}

\n

a componentId field

\n", + "jsdoctags": [ + { + "name": { + "pos": 1979, + "end": 1992, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "selectedNodes" + }, + "type": "[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]", + "tagName": { + "pos": 1973, + "end": 1978, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

an array of objects that contain a nodeId field and maybe also\na componentId field

\n" + }, + { + "tagName": { + "pos": 2087, + "end": 2093, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

a mapping of node/component id strings to true

\n" + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "getStudentDataString", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 157, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the plain text representation of the student work.\n", + "description": "

Get the plain text representation of the student work.

\n", + "jsdoctags": [ + { + "name": { + "pos": 5328, + "end": 5342, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 5322, + "end": 5327, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

A component state that contains the student work.

\n", + "typeExpression": { + "pos": 5343, + "end": 5351, + "kind": 310, + "id": 0, + "flags": 16842752, + "modifierFlagsCache": 0, + "transformFlags": 0, + "type": { + "pos": 5344, + "end": 5350, + "kind": 151, + "id": 0, + "flags": 16777216, + "transformFlags": 1 + } + } + }, + { + "tagName": { + "pos": 5408, + "end": 5415, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

A string that can be placed in a csv cell.

\n", + "returnType": "string" + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "insertColumnAtEnd", + "args": [ + { + "name": "headerRow", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 121, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "headerRow", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "insertColumnBeforeResponseColumn", + "args": [ + { + "name": "headerRow", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 117, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "headerRow", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "isComponentSelected", + "args": [ + { + "name": "selectedNodesMap", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 138, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if a component is selected\nto true\nexample\n{\n \"node1-38fj20egrj\": true,\n \"node1-20dbj2e0sf\": true\n}\n", + "description": "

Check if a component is selected\nto true\nexample\n{\n "node1-38fj20egrj": true,\n "node1-20dbj2e0sf": true\n}

\n", + "jsdoctags": [ + { + "name": { + "pos": 4590, + "end": 4606, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "selectedNodesMap" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4584, + "end": 4589, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

a map of node id and component id strings\nto true\nexample\n{\n"node1-38fj20egrj": true,\n"node1-20dbj2e0sf": true\n}

\n" + }, + { + "name": { + "pos": 4766, + "end": 4772, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4760, + "end": 4765, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id to check

\n" + }, + { + "name": { + "pos": 4806, + "end": 4817, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4800, + "end": 4805, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component id to check

\n" + }, + { + "tagName": { + "pos": 4850, + "end": 4856, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether the component is selected

\n" + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "populateColumnNameMappings", + "args": [ + { + "name": "columnNames", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 103, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "columnNames", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "setColumnValue", + "args": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "value", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 109, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "value", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "setDataExportContext", + "args": [ + { + "name": "context", + "type": "DataExportContext", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "context", + "type": "DataExportContext", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "setRunInfo", + "args": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + } + ], + "indexSignatures": [], + "extends": [ + "AbstractComponentDataExportStrategy" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "OpenResponseInfo", + "id": "class-OpenResponseInfo-63d3d53cbce1f5281b430a686a92cd1eff1bb39f43686e13909c32bb6ab763739a0263ae28eaf8beb0380d52191911789f0368fb592fabd7c0c296f86f4f0381", + "file": "src/assets/wise5/components/openResponse/OpenResponseInfo.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { ComponentInfo } from '../ComponentInfo';\n\nexport class OpenResponseInfo extends ComponentInfo {\n protected description: string = $localize`Students type a response to a question or prompt.`;\n protected label: string = $localize`Open Response`;\n protected previewExamples: any[] = [\n {\n label: $localize`Open Response`,\n content: {\n id: 'abcde12345',\n type: 'OpenResponse',\n prompt: 'In your own words, explain what an insulator does and what a conductor does.',\n showSaveButton: false,\n showSubmitButton: true,\n showAddToNotebookButton: false,\n starterSentence: null,\n isStudentAttachmentEnabled: false,\n constraints: []\n }\n }\n ];\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "description", + "defaultValue": "$localize`Students type a response to a question or prompt.`", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 4, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentInfo" + } + }, + { + "name": "label", + "defaultValue": "$localize`Open Response`", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 5, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentInfo" + } + }, + { + "name": "previewExamples", + "defaultValue": "[\n {\n label: $localize`Open Response`,\n content: {\n id: 'abcde12345',\n type: 'OpenResponse',\n prompt: 'In your own words, explain what an insulator does and what a conductor does.',\n showSaveButton: false,\n showSubmitButton: true,\n showAddToNotebookButton: false,\n starterSentence: null,\n isStudentAttachmentEnabled: false,\n constraints: []\n }\n }\n ]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 6, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentInfo" + } + } + ], + "methods": [ + { + "name": "getDescription", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 6, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentInfo" + } + }, + { + "name": "getLabel", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 10, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentInfo" + } + }, + { + "name": "getPreviewExamples", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 14, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentInfo" + } + } + ], + "indexSignatures": [], + "extends": [ + "ComponentInfo" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "OpenResponseSummaryData", + "id": "class-OpenResponseSummaryData-8ba329e9931915ec5f41864cbcfef3bfa875c4d0c8f36f619d8761ac7775f7e5711561b5316922f64040d2634bf29b7fee0485226cee1da64f0dfb6f1f3ac18b", + "file": "src/assets/wise5/directives/teacher-summary-display/summary-data/OpenResponseSummaryData.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { Annotation } from '../../../common/Annotation';\nimport { IdeasSummaryData } from './IdeasSummaryData';\nimport { OpenResponseSummaryDataPoint } from './OpenResponseSummaryDataPoint';\n\nexport class OpenResponseSummaryData extends IdeasSummaryData {\n constructor(annotations: Annotation[]) {\n super();\n annotations.forEach((annotation) =>\n this.dataPoints.push(new OpenResponseSummaryDataPoint(annotation))\n );\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "annotations", + "type": "Annotation[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 5, + "jsdoctags": [ + { + "name": "annotations", + "type": "Annotation[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "dataPoints", + "deprecated": false, + "deprecationMessage": "", + "type": "IdeasSummaryDataPoint[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 4, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "IdeasSummaryData" + } + } + ], + "methods": [ + { + "name": "getIdeaCountMap", + "args": [], + "optional": false, + "returnType": "Map", + "typeParameters": [], + "line": 10, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "IdeasSummaryData" + } + } + ], + "indexSignatures": [], + "extends": [ + "IdeasSummaryData" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "OpenResponseSummaryDataPoint", + "id": "class-OpenResponseSummaryDataPoint-5b476d4adb39bf7741258478cf554e4ec6ffb6a7c54a8d02ebdf86fb795f93a30f4176fc8727fabe96b6e3af0622d51b5eddb3ed7685d734390c5642054099ad", + "file": "src/assets/wise5/directives/teacher-summary-display/summary-data/OpenResponseSummaryDataPoint.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { Annotation } from '../../../common/Annotation';\nimport { IdeasSummaryDataPoint } from './IdeasSummaryDataPoint';\n\nexport class OpenResponseSummaryDataPoint extends IdeasSummaryDataPoint {\n constructor(annotation: Annotation) {\n super();\n annotation.data.ideas?.forEach((idea) => this.processIdea(idea));\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "annotation", + "type": "Annotation", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 4, + "jsdoctags": [ + { + "name": "annotation", + "type": "Annotation", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "allIdeaIds", + "deprecated": false, + "deprecationMessage": "", + "type": "Set", + "indexKey": "", + "optional": false, + "description": "", + "line": 2, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "IdeasSummaryDataPoint" + } + }, + { + "name": "detectedIdeaIds", + "deprecated": false, + "deprecationMessage": "", + "type": "Set", + "indexKey": "", + "optional": false, + "description": "", + "line": 3, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "IdeasSummaryDataPoint" + } + } + ], + "methods": [ + { + "name": "getAllIdeaIds", + "args": [], + "optional": false, + "returnType": "Set", + "typeParameters": [], + "line": 17, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "IdeasSummaryDataPoint" + } + }, + { + "name": "getDetectedIdeaIds", + "args": [], + "optional": false, + "returnType": "Set", + "typeParameters": [], + "line": 21, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "IdeasSummaryDataPoint" + } + }, + { + "name": "processIdea", + "args": [ + { + "name": "idea", + "type": "literal type", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 10, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "idea", + "type": "literal type", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "IdeasSummaryDataPoint" + } + } + ], + "indexSignatures": [], + "extends": [ + "IdeasSummaryDataPoint" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "OutsideUrlInfo", + "id": "class-OutsideUrlInfo-5d56152a38fb24c96204d9e1216abced1683f46649f8105f9e09dfe8c8ffb62990b0cad80e6ab5f05df2b0c8c933dbacad046e23aefad195052eada1d9634507", + "file": "src/assets/wise5/components/outsideURL/OutsideUrlInfo.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { ComponentInfo } from '../ComponentInfo';\n\nexport class OutsideUrlInfo extends ComponentInfo {\n protected description: string = $localize`Students view an external website.`;\n protected label: string = $localize`Outside Resource`;\n protected previewExamples: any[] = [\n {\n label: $localize`Outside Resource`,\n content: {\n id: 'abcde12345',\n type: 'OutsideURL',\n prompt: 'Play with the model.',\n showSaveButton: false,\n showSubmitButton: false,\n url:\n 'https://lab.concord.org/embeddable.html#interactives/air-pollution/air-pollution-master.json',\n height: 600,\n info: 'https://learn.concord.org/resources/855/air-pollution-model-cross-section',\n constraints: []\n }\n }\n ];\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "description", + "defaultValue": "$localize`Students view an external website.`", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 4, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentInfo" + } + }, + { + "name": "label", + "defaultValue": "$localize`Outside Resource`", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 5, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentInfo" + } + }, + { + "name": "previewExamples", + "defaultValue": "[\n {\n label: $localize`Outside Resource`,\n content: {\n id: 'abcde12345',\n type: 'OutsideURL',\n prompt: 'Play with the model.',\n showSaveButton: false,\n showSubmitButton: false,\n url:\n 'https://lab.concord.org/embeddable.html#interactives/air-pollution/air-pollution-master.json',\n height: 600,\n info: 'https://learn.concord.org/resources/855/air-pollution-model-cross-section',\n constraints: []\n }\n }\n ]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 6, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentInfo" + } + } + ], + "methods": [ + { + "name": "getDescription", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 6, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentInfo" + } + }, + { + "name": "getLabel", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 10, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentInfo" + } + }, + { + "name": "getPreviewExamples", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 14, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentInfo" + } + } + ], + "indexSignatures": [], + "extends": [ + "ComponentInfo" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "ParentProject", + "id": "class-ParentProject-06267d4292323a892206a130696b1b38e5530674a03aea77129d22b0e085e5fea9cf3563676da64d747b676969a451a795dbb159babe19088285059c798ced67", + "file": "src/app/domain/parentProject.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "export class ParentProject {\n id: number;\n title: string;\n authors: any[];\n uri: String;\n\n constructor(jsonObject: any = {}) {\n for (const key of Object.keys(jsonObject)) {\n this[key] = jsonObject[key];\n }\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "jsonObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "{}" + } + ], + "line": 5, + "jsdoctags": [ + { + "name": "jsonObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "{}", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "authors", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 4 + }, + { + "name": "id", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 2 + }, + { + "name": "title", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 3 + }, + { + "name": "uri", + "deprecated": false, + "deprecationMessage": "", + "type": "String", + "indexKey": "", + "optional": false, + "description": "", + "line": 5 + } + ], + "methods": [], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "PasswordErrors", + "id": "class-PasswordErrors-1601955369647c6c96d0f1c101d8f975c90f9b83a05798e37115a52e0c6b183baccb36b2c2efdb78f13e857638a9d5a03a0524909777445a8ee5f4a57760b2df", + "file": "src/app/domain/password/password-errors.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "export class PasswordErrors {\n messageCode: string = 'invalidPassword';\n missingLetter: boolean;\n missingNumber: boolean;\n tooShort: boolean;\n\n constructor(missingLetter: boolean, missingNumber: boolean, tooShort: boolean) {\n this.missingLetter = missingLetter;\n this.missingNumber = missingNumber;\n this.tooShort = tooShort;\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "missingLetter", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "missingNumber", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "tooShort", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 5, + "jsdoctags": [ + { + "name": "missingLetter", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "missingNumber", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "tooShort", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "messageCode", + "defaultValue": "'invalidPassword'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 2 + }, + { + "name": "missingLetter", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 3 + }, + { + "name": "missingNumber", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 4 + }, + { + "name": "tooShort", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 5 + } + ], + "methods": [], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "PasswordRequirementHarness", + "id": "class-PasswordRequirementHarness-974269e92af75a86ac46a9f3edf9791797806732920536df67093f8a7de689e133fab94777c60fa41e696c468f1a5c0e89090ce2a978160266e4794c3cd2a416", + "file": "src/app/password/password-requirement/password-requirement.harness.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import {\n BaseHarnessFilters,\n ComponentHarness,\n HarnessPredicate,\n TestElement\n} from '@angular/cdk/testing';\n\ninterface PasswordRequirementHarnessFilters extends BaseHarnessFilters {\n text?: string | RegExp;\n}\n\nexport class PasswordRequirementHarness extends ComponentHarness {\n static hostSelector = 'password-requirement';\n\n static with(\n options: PasswordRequirementHarnessFilters\n ): HarnessPredicate {\n return new HarnessPredicate(PasswordRequirementHarness, options).addOption(\n 'text',\n options.text,\n (harness, text) => {\n return HarnessPredicate.stringMatches(harness.getText(), text);\n }\n );\n }\n\n async getText(): Promise {\n const text = await this.locatorFor('.requirement-text')();\n return text.text();\n }\n\n async isPristine(): Promise {\n const icon = await this.getIcon();\n return icon == null;\n }\n\n async isFail(): Promise {\n return this.iconHasText('close');\n }\n\n async isPass(): Promise {\n return this.iconHasText('done');\n }\n\n private async iconHasText(text: string): Promise {\n const icon = await this.getIcon();\n return (await icon.text()) === text;\n }\n\n private async getIcon(): Promise {\n return await this.locatorForOptional('.mat-icon')();\n }\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "hostSelector", + "defaultValue": "'password-requirement'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "modifierKind": [ + 126 + ] + } + ], + "methods": [ + { + "name": "getIcon", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 50, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123, + 134 + ] + }, + { + "name": "getText", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 27, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ] + }, + { + "name": "iconHasText", + "args": [ + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 45, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123, + 134 + ], + "jsdoctags": [ + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isFail", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 37, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ] + }, + { + "name": "isPass", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 41, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ] + }, + { + "name": "isPristine", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 32, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ] + }, + { + "name": "with", + "args": [ + { + "name": "options", + "type": "PasswordRequirementHarnessFilters", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "HarnessPredicate", + "typeParameters": [], + "line": 15, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "options", + "type": "PasswordRequirementHarnessFilters", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "indexSignatures": [], + "extends": [ + "ComponentHarness" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "PeerChatComponent", + "id": "class-PeerChatComponent-285f20df1bd07128d5c1573e1f4342f367a050736a93094648d5353869b1c7cc8b5fefa2ccaa1339f422dd62a9047c6dc47ece65d4576111fa5587b20f53d2e6", + "file": "src/assets/wise5/components/peerChat/PeerChatComponent.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { Component } from '../../common/Component';\nimport { QuestionBank } from './peer-chat-question-bank/QuestionBank';\nimport { QuestionBankContent } from './peer-chat-question-bank/QuestionBankContent';\nimport { PeerChatContent } from './PeerChatContent';\n\nexport class PeerChatComponent extends Component {\n content: PeerChatContent;\n\n getPeerGroupingTag(): string {\n return this.content.peerGroupingTag;\n }\n\n getQuestionBankContent(): QuestionBankContent {\n return this.content.questionBank != null\n ? new QuestionBankContent(this.nodeId, this.id, new QuestionBank(this.content.questionBank))\n : null;\n }\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "content", + "deprecated": false, + "deprecationMessage": "", + "type": "PeerChatContent", + "indexKey": "", + "optional": false, + "description": "", + "line": 7, + "inheritance": { + "file": "Component" + } + }, + { + "name": "id", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 5, + "inheritance": { + "file": "Component" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 6, + "inheritance": { + "file": "Component" + } + } + ], + "methods": [ + { + "name": "getPeerGroupingTag", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 9, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getQuestionBankContent", + "args": [], + "optional": false, + "returnType": "QuestionBankContent", + "typeParameters": [], + "line": 13, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getConnectedComponent", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 43, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "Component" + } + }, + { + "name": "hasConnectedComponent", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 14, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "Component" + } + }, + { + "name": "hasConnectedComponentAlwaysField", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 18, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "Component" + } + }, + { + "name": "isAcceptsAssets", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 34, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "Component" + } + }, + { + "name": "isGradable", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 39, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "Component" + } + } + ], + "indexSignatures": [], + "extends": [ + "Component" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "PeerChatComponentDataExportStrategy", + "id": "class-PeerChatComponentDataExportStrategy-84479d593a3b18206c9ed33aca2396b8ce56a0bb8088de04fb062cca01a24748e1c40e8e05bda60269f1c106c7b66a47f3fc57dfdfe74e9a200d52d3262d9e7d", + "file": "src/assets/wise5/classroomMonitor/dataExport/strategies/PeerChatComponentDataExportStrategy.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { millisecondsToDateTime } from '../../../common/datetime/datetime';\nimport { AbstractComponentDataExportStrategy } from './AbstractComponentDataExportStrategy';\n\nexport class PeerChatComponentDataExportStrategy extends AbstractComponentDataExportStrategy {\n protected defaultColumnNames = [\n '#',\n 'Peer Group ID',\n 'Workgroup ID',\n 'User ID 1',\n 'Student Name 1',\n 'User ID 2',\n 'Student Name 2',\n 'User ID 3',\n 'Student Name 3',\n 'Class Period',\n 'Project ID',\n 'Project Name',\n 'Run ID',\n 'Start Date',\n 'End Date',\n 'Server Timestamp',\n 'Client Timestamp',\n 'Node ID',\n 'Component ID',\n 'Component Part Number',\n 'Step Title',\n 'Component Type',\n 'Response'\n ];\n\n protected generateComponentHeaderRow(component: any): string[] {\n const headerRow = [...this.defaultColumnNames];\n const componentStates = this.dataService.getComponentStatesByComponentId(component.id);\n this.insertPromptColumns(headerRow, component);\n this.insertQuestionColumns(headerRow, component, componentStates);\n return headerRow;\n }\n\n private insertPromptColumns(headerRow: string[], component: any): void {\n if (!this.hasDynamicPrompt(component)) {\n this.insertColumnBeforeResponseColumn(headerRow, 'Prompt');\n }\n if (this.hasPrePrompt(component)) {\n this.insertColumnBeforeResponseColumn(headerRow, 'Pre Prompt');\n }\n if (this.hasDynamicPrompt(component)) {\n this.insertColumnBeforeResponseColumn(headerRow, 'Dynamic Prompt');\n }\n if (this.hasPostPrompt(component)) {\n this.insertColumnBeforeResponseColumn(headerRow, 'Post Prompt');\n }\n }\n\n private insertQuestionColumns(headerRow: string[], component: any, componentStates: any[]): void {\n const maxQuestions = this.getMaxQuestionBankCount(componentStates);\n if (maxQuestions > 0) {\n for (let q = 0; q < maxQuestions; q++) {\n this.insertColumnBeforeResponseColumn(headerRow, `Question ${q + 1}`);\n }\n }\n if (this.isClickToUseEnabled(component)) {\n this.insertColumnBeforeResponseColumn(headerRow, 'Question Used');\n }\n }\n\n private hasPrePrompt(component: any): boolean {\n return this.hasDynamicPrompt(component) && this.hasValue(component.dynamicPrompt?.prePrompt);\n }\n\n private hasDynamicPrompt(component: any): boolean {\n return component.dynamicPrompt?.enabled;\n }\n\n private hasPostPrompt(component: any): boolean {\n return this.hasDynamicPrompt(component) && this.hasValue(component.dynamicPrompt?.postPrompt);\n }\n\n private hasValue(value: any): boolean {\n return value != null && value !== '';\n }\n\n private isClickToUseEnabled(component: any): boolean {\n return component.questionBank?.clickToUseEnabled;\n }\n\n private getMaxQuestionBankCount(componentStates: any[]): number {\n let maxQuestionBankCount = 0;\n for (const componentState of componentStates) {\n const questionBankCount = this.getQuestionBankCount(componentState);\n if (questionBankCount > maxQuestionBankCount) {\n maxQuestionBankCount = questionBankCount;\n }\n }\n return maxQuestionBankCount;\n }\n\n private getQuestionBankCount(componentState: any): number {\n let questionCount = 0;\n if (componentState.studentData.questionBank != null) {\n for (const questionBank of componentState.studentData.questionBank) {\n questionCount += questionBank.questions.length;\n }\n }\n return questionCount;\n }\n\n protected generateComponentWorkRows(\n component: any,\n columnNames: string[],\n columnNameToNumber: any,\n nodeId: string\n ): any[] {\n const componentStates = this.dataService.getComponentStatesByComponentId(component.id);\n const sortedComponentStates = this.sortByPeerGroupIdAndTimestamp(componentStates);\n const workRows = [];\n for (let r = 0; r < sortedComponentStates.length; r++) {\n const componentState = sortedComponentStates[r];\n const row = new Array(columnNames.length).fill('');\n this.setColumnValue(row, columnNameToNumber, '#', r + 1);\n this.setStudentInfo(row, columnNameToNumber, componentState);\n this.setRunInfo(row, columnNameToNumber, componentState);\n this.setComponentInfo(row, columnNameToNumber, nodeId, component);\n this.setStudentWork(row, columnNameToNumber, component, componentState);\n workRows.push(row);\n }\n return workRows;\n }\n\n private sortByPeerGroupIdAndTimestamp(componentStates: any[]): any[] {\n return componentStates.sort((a, b) => {\n if (a.peerGroupId < b.peerGroupId) {\n return -1;\n } else if (a.peerGroupId > b.peerGroupId) {\n return 1;\n } else {\n return a.serverSaveTime - b.serverSaveTime;\n }\n });\n }\n\n protected setStudentInfo(row: any[], columnNameToNumber: any, componentState: any): void {\n this.setColumnValue(row, columnNameToNumber, 'Peer Group ID', componentState.peerGroupId);\n super.setStudentInfo(row, columnNameToNumber, componentState);\n }\n\n protected setComponentInfo(\n row: any[],\n columnNameToNumber: any,\n nodeId: string,\n component: any\n ): void {\n this.setColumnValue(row, columnNameToNumber, 'Node ID', nodeId);\n this.setColumnValue(row, columnNameToNumber, 'Component ID', component.id);\n this.setColumnValue(\n row,\n columnNameToNumber,\n 'Component Part Number',\n this.projectService.getNode(nodeId).getComponentPosition(component.id) + 1\n );\n this.setColumnValue(\n row,\n columnNameToNumber,\n 'Step Title',\n this.projectService.getNodePositionAndTitle(nodeId)\n );\n this.setColumnValue(row, columnNameToNumber, 'Component Type', component.type);\n if (!this.hasDynamicPrompt(component)) {\n this.setColumnValue(row, columnNameToNumber, 'Prompt', component.prompt);\n }\n }\n\n protected setStudentWork(\n row: any[],\n columnNameToNumber: any,\n component: any,\n componentState: any\n ): void {\n this.setColumnValue(\n row,\n columnNameToNumber,\n 'Server Timestamp',\n millisecondsToDateTime(componentState.serverSaveTime)\n );\n this.setColumnValue(\n row,\n columnNameToNumber,\n 'Client Timestamp',\n millisecondsToDateTime(componentState.clientSaveTime)\n );\n this.setDynamicPrompts(row, columnNameToNumber, component, componentState);\n if (componentState.studentData.questionBank != null) {\n this.setQuestions(row, columnNameToNumber, componentState);\n }\n if (this.isClickToUseEnabled(component)) {\n this.setColumnValue(\n row,\n columnNameToNumber,\n 'Question Used',\n this.getQuestionText(component, componentState.studentData.questionId)\n );\n }\n this.setColumnValue(row, columnNameToNumber, 'Response', componentState.studentData.response);\n }\n\n private setDynamicPrompts(\n row: any,\n columnNameToNumber: any,\n component: any,\n componentState: any\n ): void {\n if (this.hasPrePrompt(component)) {\n this.setColumnValue(\n row,\n columnNameToNumber,\n 'Pre Prompt',\n component.dynamicPrompt?.prePrompt\n );\n }\n if (this.hasDynamicPrompt(component)) {\n this.setColumnValue(\n row,\n columnNameToNumber,\n 'Dynamic Prompt',\n componentState.studentData.dynamicPrompt?.prompt\n );\n }\n if (this.hasPostPrompt(component)) {\n this.setColumnValue(\n row,\n columnNameToNumber,\n 'Post Prompt',\n component.dynamicPrompt?.postPrompt\n );\n }\n }\n\n private setQuestions(row: any[], columnNameToNumber: any, componentState: any): void {\n let questionCounter = 1;\n for (const questionBank of componentState.studentData.questionBank) {\n for (const question of questionBank.questions) {\n this.setColumnValue(\n row,\n columnNameToNumber,\n `Question ${questionCounter++}`,\n typeof question === 'string' ? question : question.text\n );\n }\n }\n }\n\n private getQuestionText(component: any, questionId: string): string {\n for (const rule of component.questionBank.rules) {\n for (const question of rule.questions) {\n if (question.id === questionId) {\n return question.text;\n }\n }\n }\n return null;\n }\n\n protected getComponentTypeWithUnderscore(): string {\n return 'peer_chat';\n }\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "defaultColumnNames", + "defaultValue": "[\n '#',\n 'Peer Group ID',\n 'Workgroup ID',\n 'User ID 1',\n 'Student Name 1',\n 'User ID 2',\n 'Student Name 2',\n 'User ID 3',\n 'Student Name 3',\n 'Class Period',\n 'Project ID',\n 'Project Name',\n 'Run ID',\n 'Start Date',\n 'End Date',\n 'Server Timestamp',\n 'Client Timestamp',\n 'Node ID',\n 'Component ID',\n 'Component Part Number',\n 'Step Title',\n 'Component Type',\n 'Response'\n ]", + "deprecated": false, + "deprecationMessage": "", + "type": "[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 5, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "allOrLatest", + "deprecated": false, + "deprecationMessage": "", + "type": "\"all\" | \"latest\"", + "indexKey": "", + "optional": false, + "description": "", + "line": 8, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "componentStateIdToRevisionNumber", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "object", + "indexKey": "", + "optional": false, + "description": "", + "line": 9, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "includeOnlySubmits", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 39, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "includeStudentNames", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 40, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "revisionCounter", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 41, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "annotationService", + "deprecated": false, + "deprecationMessage": "", + "type": "AnnotationService", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "configService", + "deprecated": false, + "deprecationMessage": "", + "type": "ConfigService", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "context", + "deprecated": false, + "deprecationMessage": "", + "type": "DataExportContext", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "controller", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "dataExportService", + "deprecated": false, + "deprecationMessage": "", + "type": "DataExportService", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "dataService", + "deprecated": false, + "deprecationMessage": "", + "type": "TeacherDataService", + "indexKey": "", + "optional": false, + "description": "", + "line": 20, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "projectService", + "deprecated": false, + "deprecationMessage": "", + "type": "TeacherProjectService", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + } + ], + "methods": [ + { + "name": "generateComponentHeaderRow", + "args": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string[]", + "typeParameters": [], + "line": 31, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "generateComponentWorkRows", + "args": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNames", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 107, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNames", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "getComponentTypeWithUnderscore", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 262, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "getMaxQuestionBankCount", + "args": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 86, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getQuestionBankCount", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 97, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getQuestionText", + "args": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "questionId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 251, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "questionId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "hasDynamicPrompt", + "args": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 70, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "hasPostPrompt", + "args": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 74, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "hasPrePrompt", + "args": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 66, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "hasValue", + "args": [ + { + "name": "value", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 78, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "value", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "insertPromptColumns", + "args": [ + { + "name": "headerRow", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 39, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "headerRow", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "insertQuestionColumns", + "args": [ + { + "name": "headerRow", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 54, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "headerRow", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isClickToUseEnabled", + "args": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 82, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setComponentInfo", + "args": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 146, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "setDynamicPrompts", + "args": [ + { + "name": "row", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 205, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "row", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setQuestions", + "args": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 237, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setStudentInfo", + "args": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 141, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "setStudentWork", + "args": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 172, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "sortByPeerGroupIdAndTimestamp", + "args": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 129, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "calculateRevisionNumbers", + "args": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 130, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "export", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 53, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "getComponentStates", + "args": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "calculateRevisions", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "true" + } + ], + "optional": false, + "returnType": "ComponentState[]", + "typeParameters": [], + "line": 104, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "calculateRevisions", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "true", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "getLatestRevisions", + "args": [ + { + "name": "componentStates", + "type": "ComponentState[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "ComponentState[]", + "typeParameters": [], + "line": 169, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "componentStates", + "type": "ComponentState[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "getPrompt", + "args": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 206, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "getRevisionCounter", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 165, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "getRevisionCounterKey", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 157, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "incrementRevisionCounter", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 144, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "setAllOrLatest", + "args": [ + { + "name": "allOrLatest", + "type": "\"all\" | \"latest\"", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 98, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "allOrLatest", + "type": "\"all\" | \"latest\"", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "sortByWorkgroupIdAndTimestamp", + "args": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 122, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentDataExportStrategy" + } + }, + { + "name": "generateCSVFile", + "args": [ + { + "name": "rows", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "fileName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 194, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "rows", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "fileName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "generateExportFileName", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentTypeWithUnderscore", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 179, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentTypeWithUnderscore", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "getColumnValue", + "args": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 113, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "getSelectedNodesMap", + "args": [ + { + "name": "selectedNodes", + "type": "[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]" + } + ], + "optional": false, + "returnType": "{}", + "typeParameters": [], + "line": 62, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet a mapping of node/component id strings to true.\nexample if\nselectedNodes = [\n {\n nodeId: \"node1\",\n componentId: \"343b8aesf7\"\n },\n {\n nodeId: \"node2\",\n componentId: \"b34gaf0ug2\"\n },\n {\n nodeId: \"node3\"\n }\n]\n\nthis function will return\n{\n \"node1-343b8aesf7\": true,\n \"node2-b34gaf0ug2\": true,\n \"node3\": true\n}\n\na componentId field\n", + "description": "

Get a mapping of node/component id strings to true.\nexample if\nselectedNodes = [\n {\n nodeId: "node1",\n componentId: "343b8aesf7"\n },\n {\n nodeId: "node2",\n componentId: "b34gaf0ug2"\n },\n {\n nodeId: "node3"\n }\n]

\n

this function will return\n{\n "node1-343b8aesf7": true,\n "node2-b34gaf0ug2": true,\n "node3": true\n}

\n

a componentId field

\n", + "jsdoctags": [ + { + "name": { + "pos": 1979, + "end": 1992, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "selectedNodes" + }, + "type": "[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]", + "tagName": { + "pos": 1973, + "end": 1978, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

an array of objects that contain a nodeId field and maybe also\na componentId field

\n" + }, + { + "tagName": { + "pos": 2087, + "end": 2093, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

a mapping of node/component id strings to true

\n" + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "getStudentDataString", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 157, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the plain text representation of the student work.\n", + "description": "

Get the plain text representation of the student work.

\n", + "jsdoctags": [ + { + "name": { + "pos": 5328, + "end": 5342, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 5322, + "end": 5327, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

A component state that contains the student work.

\n", + "typeExpression": { + "pos": 5343, + "end": 5351, + "kind": 310, + "id": 0, + "flags": 16842752, + "modifierFlagsCache": 0, + "transformFlags": 0, + "type": { + "pos": 5344, + "end": 5350, + "kind": 151, + "id": 0, + "flags": 16777216, + "transformFlags": 1 + } + } + }, + { + "tagName": { + "pos": 5408, + "end": 5415, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

A string that can be placed in a csv cell.

\n", + "returnType": "string" + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "insertColumnAtEnd", + "args": [ + { + "name": "headerRow", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 121, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "headerRow", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "insertColumnBeforeResponseColumn", + "args": [ + { + "name": "headerRow", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 117, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "headerRow", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "isComponentSelected", + "args": [ + { + "name": "selectedNodesMap", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 138, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if a component is selected\nto true\nexample\n{\n \"node1-38fj20egrj\": true,\n \"node1-20dbj2e0sf\": true\n}\n", + "description": "

Check if a component is selected\nto true\nexample\n{\n "node1-38fj20egrj": true,\n "node1-20dbj2e0sf": true\n}

\n", + "jsdoctags": [ + { + "name": { + "pos": 4590, + "end": 4606, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "selectedNodesMap" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4584, + "end": 4589, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

a map of node id and component id strings\nto true\nexample\n{\n"node1-38fj20egrj": true,\n"node1-20dbj2e0sf": true\n}

\n" + }, + { + "name": { + "pos": 4766, + "end": 4772, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4760, + "end": 4765, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id to check

\n" + }, + { + "name": { + "pos": 4806, + "end": 4817, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4800, + "end": 4805, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component id to check

\n" + }, + { + "tagName": { + "pos": 4850, + "end": 4856, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether the component is selected

\n" + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "populateColumnNameMappings", + "args": [ + { + "name": "columnNames", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 103, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "columnNames", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "setColumnValue", + "args": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "value", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 109, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "value", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "setDataExportContext", + "args": [ + { + "name": "context", + "type": "DataExportContext", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "context", + "type": "DataExportContext", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "setRunInfo", + "args": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + } + ], + "indexSignatures": [], + "extends": [ + "AbstractComponentDataExportStrategy" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "PeerChatInfo", + "id": "class-PeerChatInfo-d51da6184e8457b6b03a417fe596e6f1c6b92e192b7ea9c0b6d248681f020824afe8bac5d8a5276c348bd233c4da02a512587db329bd829a932be960dbed902b", + "file": "src/assets/wise5/components/peerChat/PeerChatInfo.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { ComponentInfo } from '../ComponentInfo';\n\nexport class PeerChatInfo extends ComponentInfo {\n protected description: string = $localize`Students are grouped with other students to discuss a topic.`;\n protected label: string = $localize`Peer Chat`;\n protected previewExamples: any[] = [\n {\n label: $localize`Peer Chat`,\n content: {\n id: 'abcde12345',\n type: 'PeerChat',\n prompt: `

Hi! You've been paired with a classmate to improve your explanation to the question: \"How do you think Mt. Hood formed?\"

\n

Discuss with your partner in this chat!
If you agree, you can describe what you agree on and try to elaborate. If you disagree, try to figure out why.

\n

You can use questions from the Question Bank if you want help connecting your ideas.

`,\n showSaveButton: false,\n showSubmitButton: false,\n peerGroupingTag: '',\n questionBank: {\n version: 2,\n enabled: true,\n maxQuestionsToShow: 3,\n clickToUseEnabled: true,\n rules: [\n {\n id: 'lt6a6dwpq3',\n expression: 'true',\n questions: [\n {\n text: 'How does convection affect plate movement where Mt. Hood is located?',\n id: 'vwv7dnbm28'\n },\n {\n text: 'How does density have an effect on how plates interact with one another? ',\n id: 'vwv7dnbm29'\n },\n {\n text:\n 'Do you agree or disagree with your partner? What would you add or build on?',\n id: 'vwv7dnbm27'\n }\n ]\n }\n ]\n },\n constraints: []\n }\n }\n ];\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "description", + "defaultValue": "$localize`Students are grouped with other students to discuss a topic.`", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 4, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentInfo" + } + }, + { + "name": "label", + "defaultValue": "$localize`Peer Chat`", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 5, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentInfo" + } + }, + { + "name": "previewExamples", + "defaultValue": "[\n {\n label: $localize`Peer Chat`,\n content: {\n id: 'abcde12345',\n type: 'PeerChat',\n prompt: `

Hi! You've been paired with a classmate to improve your explanation to the question: \"How do you think Mt. Hood formed?\"

\n

Discuss with your partner in this chat!
If you agree, you can describe what you agree on and try to elaborate. If you disagree, try to figure out why.

\n

You can use questions from the Question Bank if you want help connecting your ideas.

`,\n showSaveButton: false,\n showSubmitButton: false,\n peerGroupingTag: '',\n questionBank: {\n version: 2,\n enabled: true,\n maxQuestionsToShow: 3,\n clickToUseEnabled: true,\n rules: [\n {\n id: 'lt6a6dwpq3',\n expression: 'true',\n questions: [\n {\n text: 'How does convection affect plate movement where Mt. Hood is located?',\n id: 'vwv7dnbm28'\n },\n {\n text: 'How does density have an effect on how plates interact with one another? ',\n id: 'vwv7dnbm29'\n },\n {\n text:\n 'Do you agree or disagree with your partner? What would you add or build on?',\n id: 'vwv7dnbm27'\n }\n ]\n }\n ]\n },\n constraints: []\n }\n }\n ]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 6, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentInfo" + } + } + ], + "methods": [ + { + "name": "getDescription", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 6, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentInfo" + } + }, + { + "name": "getLabel", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 10, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentInfo" + } + }, + { + "name": "getPreviewExamples", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 14, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentInfo" + } + } + ], + "indexSignatures": [], + "extends": [ + "ComponentInfo" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "PeerChatMessage", + "id": "class-PeerChatMessage-3228fc7f912647288fb467158105f6b21d2d6436f5b4c5a0422027c9c5b56610a637b17d72950793070e044a2cbe6d6362cb6bc42755d927be0e89767acc3ad1", + "file": "src/assets/wise5/components/peerChat/PeerChatMessage.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "export class PeerChatMessage {\n componentStateId: number;\n isDeleted: boolean;\n text: string;\n timestamp: number;\n workgroupId: number;\n\n constructor(\n workgroupId: number,\n text: string,\n timestamp: number,\n componentStateId: number = null,\n isDeleted: boolean = false\n ) {\n this.componentStateId = componentStateId;\n this.isDeleted = isDeleted;\n this.text = text;\n this.timestamp = timestamp;\n this.workgroupId = workgroupId;\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "timestamp", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentStateId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + }, + { + "name": "isDeleted", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "line": 6, + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "timestamp", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentStateId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + }, + { + "name": "isDeleted", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "componentStateId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 2 + }, + { + "name": "isDeleted", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 3 + }, + { + "name": "text", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 4 + }, + { + "name": "timestamp", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 5 + }, + { + "name": "workgroupId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 6 + } + ], + "methods": [], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "PeerGroup", + "id": "class-PeerGroup-09c457c5a03cefa8393af0d46df9b51382ae3bd5951b52712f55af905afbcf4e23d4ca8cd82e7315bc16c19df5a86df3990dd84bdeb79d986a78d4a03f8ed6f4", + "file": "src/assets/wise5/components/peerChat/PeerGroup.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { PeerGrouping } from '../../../../app/domain/peerGrouping';\nimport { PeerGroupMember } from './PeerGroupMember';\n\nexport class PeerGroup {\n id: number;\n members: PeerGroupMember[];\n peerGrouping: PeerGrouping;\n periodId: number;\n\n constructor(id: number, members: PeerGroupMember[], peerGrouping: PeerGrouping) {\n this.id = id;\n this.members = members;\n this.peerGrouping = peerGrouping;\n }\n\n getWorkgroupIds(): number[] {\n return this.members.map((member) => member.id);\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "id", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "members", + "type": "PeerGroupMember[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "peerGrouping", + "type": "PeerGrouping", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 8, + "jsdoctags": [ + { + "name": "id", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "members", + "type": "PeerGroupMember[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "peerGrouping", + "type": "PeerGrouping", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "id", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 5 + }, + { + "name": "members", + "deprecated": false, + "deprecationMessage": "", + "type": "PeerGroupMember[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 6 + }, + { + "name": "peerGrouping", + "deprecated": false, + "deprecationMessage": "", + "type": "PeerGrouping", + "indexKey": "", + "optional": false, + "description": "", + "line": 7 + }, + { + "name": "periodId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 8 + } + ], + "methods": [ + { + "name": "getWorkgroupIds", + "args": [], + "optional": false, + "returnType": "number[]", + "typeParameters": [], + "line": 16, + "deprecated": false, + "deprecationMessage": "" + } + ], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "PeerGrouping", + "id": "class-PeerGrouping-77c4a683796fc3e7b9934506ef3e5c41a49eaa4c68d58429912f429b410a29d6e475c97b4facaa4a7feb0f1b8437bf9c5d6a81ef028b2409125205cc80f3a340", + "file": "src/app/domain/peerGrouping.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import {\n DIFFERENT_IDEAS_REGEX,\n DIFFERENT_SCORES_REGEX\n} from '../../assets/wise5/authoringTool/peer-grouping/PeerGroupingLogic';\nimport { ReferenceComponent } from './referenceComponent';\n\nexport class PeerGrouping {\n logic: string;\n maxMembershipCount: number;\n name: string;\n stepsUsedIn: string[];\n tag: string;\n threshold: any[];\n\n constructor(jsonObject: any = {}) {\n for (const key of Object.keys(jsonObject)) {\n if (jsonObject[key] != null) {\n this[key] = jsonObject[key];\n }\n }\n }\n\n getDifferentIdeasReferenceComponent(): ReferenceComponent {\n return this.getReferenceComponent(DIFFERENT_IDEAS_REGEX);\n }\n\n getDifferentScoresReferenceComponent(): ReferenceComponent {\n return this.getReferenceComponent(DIFFERENT_SCORES_REGEX);\n }\n\n getReferenceComponent(regex: RegExp) {\n const result = new RegExp(regex).exec(this.logic);\n return new ReferenceComponent(result[1], result[2]);\n }\n\n getDifferentIdeasMode(): string {\n return this.getMode(DIFFERENT_IDEAS_REGEX);\n }\n\n getDifferentScoresMode(): string {\n return this.getMode(DIFFERENT_SCORES_REGEX);\n }\n\n getMode(regex: RegExp) {\n const result = new RegExp(regex).exec(this.logic);\n return result[4];\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "jsonObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "{}" + } + ], + "line": 13, + "jsdoctags": [ + { + "name": "jsonObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "{}", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "logic", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 8 + }, + { + "name": "maxMembershipCount", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 9 + }, + { + "name": "name", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 10 + }, + { + "name": "stepsUsedIn", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 11 + }, + { + "name": "tag", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 12 + }, + { + "name": "threshold", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 13 + } + ], + "methods": [ + { + "name": "getDifferentIdeasMode", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 36, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getDifferentIdeasReferenceComponent", + "args": [], + "optional": false, + "returnType": "ReferenceComponent", + "typeParameters": [], + "line": 23, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getDifferentScoresMode", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 40, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getDifferentScoresReferenceComponent", + "args": [], + "optional": false, + "returnType": "ReferenceComponent", + "typeParameters": [], + "line": 27, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getMode", + "args": [ + { + "name": "regex", + "type": "RegExp", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 44, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "regex", + "type": "RegExp", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getReferenceComponent", + "args": [ + { + "name": "regex", + "type": "RegExp", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 31, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "regex", + "type": "RegExp", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "PeerGroupMember", + "id": "class-PeerGroupMember-dc1ccdfc41f942a7dc9f8040f6551a056e98570327b6c6292aa8cce1891d945d56540cabdbf26a565181342dc86d0e6fb353c339d01352e79e2b4ffd3a5a3eca", + "file": "src/assets/wise5/components/peerChat/PeerGroupMember.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "export class PeerGroupMember {\n id: number;\n periodId: number;\n\n constructor(id: number, periodId: number) {\n this.id = id;\n this.periodId = periodId;\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "id", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 3, + "jsdoctags": [ + { + "name": "id", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "id", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 2 + }, + { + "name": "periodId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 3 + } + ], + "methods": [], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "PeerGroupStudentData", + "id": "class-PeerGroupStudentData-8c9b062b29a4c1a428406a5dbe0ae80aa9690d3516f0494264632e4159e1103c5034020fe6ceb2369c3dcb43db9c7ce78e879112a913e8d16eba76282b52fffb", + "file": "src/app/domain/peerGroupStudentData.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "export class PeerGroupStudentData {\n annotation: any;\n studentWork: any;\n workgroup: any;\n\n constructor(workgroup: any, studentWork: any, annotation: any) {\n this.workgroup = workgroup;\n this.studentWork = studentWork;\n this.annotation = annotation;\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "workgroup", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentWork", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "annotation", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 4, + "jsdoctags": [ + { + "name": "workgroup", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentWork", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "annotation", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "annotation", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 2 + }, + { + "name": "studentWork", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 3 + }, + { + "name": "workgroup", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 4 + } + ], + "methods": [], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "Period", + "id": "class-Period-4b6734e54beb5216df4e40c5ff31bbfe7e448fd569297ee0dbfb937f5ac6aed613aa01d9640ffe529e018a6e468875645502857fd2db4ee9c442cb00f3d1b045", + "file": "src/assets/wise5/classroomMonitor/classroomMonitorComponents/pause-screens-menu/pause-screens-menu.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { Component } from '@angular/core';\nimport { TeacherDataService } from '../../../services/teacherDataService';\nimport { TeacherPauseScreenService } from '../../../services/teacherPauseScreenService';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { FormsModule } from '@angular/forms';\n\nclass Period {\n paused: boolean;\n periodId: number;\n periodName: string;\n}\n\n@Component({\n imports: [FormsModule, MatDividerModule, MatIconModule, MatSlideToggleModule, MatToolbarModule],\n selector: 'pause-screens-menu',\n styleUrl: './pause-screens-menu.component.scss',\n templateUrl: './pause-screens-menu.component.html'\n})\nexport class PauseScreensMenuComponent {\n protected allPeriodsPaused: boolean;\n protected periods: Period[];\n\n constructor(\n private dataService: TeacherDataService,\n private pauseScreenService: TeacherPauseScreenService\n ) {\n this.periods = this.dataService.getPeriods().filter((period) => period.periodId !== -1);\n }\n\n protected togglePeriod(period: Period): void {\n this.pauseScreenService.pauseScreensChanged(period.periodId, period.paused);\n }\n\n protected toggleAllPeriods(): void {\n this.periods.forEach((period) => {\n this.pauseScreenService.pauseScreensChanged(period.periodId, this.allPeriodsPaused);\n });\n }\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "paused", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 11 + }, + { + "name": "periodId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 12 + }, + { + "name": "periodName", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 13 + } + ], + "methods": [], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "PersonalLibraryHarness", + "id": "class-PersonalLibraryHarness-84af7ea6dcd1400bf587c6be777711da784dcd1fbad8bb8f47f164c56f29344369f3ac9a10a6a73158973217669246446bb4d6cb2901774ef6afb9dd66af8bfd", + "file": "src/app/modules/library/personal-library/personal-library.harness.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { ComponentHarness } from '@angular/cdk/testing';\nimport { LibraryProjectHarness } from '../library-project/library-project.harness';\nimport { MatButtonHarness } from '@angular/material/button/testing';\nimport { MatCheckboxHarness } from '@angular/material/checkbox/testing';\nimport { MatPaginatorHarness } from '@angular/material/paginator/testing';\nimport { SelectAllItemsCheckboxHarness } from '../select-all-items-checkbox/select-all-items-checkbox.harness';\nimport { MatSelectHarness } from '@angular/material/select/testing';\n\nexport class PersonalLibraryHarness extends ComponentHarness {\n static hostSelector = 'app-personal-library';\n protected getViewSelect = this.locatorFor(MatSelectHarness);\n getArchiveButton = this.locatorFor(MatButtonHarness.with({ selector: '[matTooltip=\"Archive\"]' }));\n getUnarchiveButton = this.locatorFor(\n MatButtonHarness.with({ selector: '[matTooltip=\"Restore\"]' })\n );\n getPaginator = this.locatorFor(MatPaginatorHarness);\n\n async getSelectAllCheckbox(): Promise {\n return (await this.locatorFor(SelectAllItemsCheckboxHarness)()).getCheckbox();\n }\n\n async getProjectsInView(): Promise {\n const projects = this.locatorForAll(LibraryProjectHarness);\n return await projects();\n }\n\n async getProjectIdsInView(): Promise {\n const projectIds = [];\n for (const project of await this.getProjectsInView()) {\n projectIds.push(await project.getProjectId());\n }\n return projectIds;\n }\n\n async selectProjects(projectIds: number[]): Promise {\n for (const project of await this.getProjectsInView()) {\n if (projectIds.includes(await project.getProjectId())) {\n await (await project.getCheckbox()).check();\n }\n }\n }\n\n async getProjectCount(): Promise {\n const projects = this.locatorForAll('app-library-project');\n return (await projects()).length;\n }\n\n async showArchivedView(): Promise {\n return (await this.getViewSelect()).clickOptions({ text: 'Archived' });\n }\n\n async showActiveView(): Promise {\n return (await this.getViewSelect()).clickOptions({ text: 'Active' });\n }\n\n async getSelectedProjects(): Promise {\n const selectedProjects = [];\n for (const project of await this.getProjectsInView()) {\n if (await (await project.getCheckbox()).isChecked()) {\n selectedProjects.push(project);\n }\n }\n return selectedProjects;\n }\n\n async getSelectedProjectIds(): Promise {\n const selectedProjectIds = [];\n for (const project of await this.getSelectedProjects()) {\n selectedProjectIds.push(await project.getProjectId());\n }\n return selectedProjectIds;\n }\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "getArchiveButton", + "defaultValue": "this.locatorFor(MatButtonHarness.with({ selector: '[matTooltip=\"Archive\"]' }))", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 12 + }, + { + "name": "getPaginator", + "defaultValue": "this.locatorFor(MatPaginatorHarness)", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 16 + }, + { + "name": "getUnarchiveButton", + "defaultValue": "this.locatorFor(\n MatButtonHarness.with({ selector: '[matTooltip=\"Restore\"]' })\n )", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 13 + }, + { + "name": "getViewSelect", + "defaultValue": "this.locatorFor(MatSelectHarness)", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "modifierKind": [ + 124 + ] + }, + { + "name": "hostSelector", + "defaultValue": "'app-personal-library'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "modifierKind": [ + 126 + ] + } + ], + "methods": [ + { + "name": "getProjectCount", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 43, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ] + }, + { + "name": "getProjectIdsInView", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 27, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ] + }, + { + "name": "getProjectsInView", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ] + }, + { + "name": "getSelectAllCheckbox", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 18, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ] + }, + { + "name": "getSelectedProjectIds", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 66, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ] + }, + { + "name": "getSelectedProjects", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 56, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ] + }, + { + "name": "selectProjects", + "args": [ + { + "name": "projectIds", + "type": "number[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 35, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ], + "jsdoctags": [ + { + "name": "projectIds", + "type": "number[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "showActiveView", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 52, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ] + }, + { + "name": "showArchivedView", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 48, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ] + } + ], + "indexSignatures": [], + "extends": [ + "ComponentHarness" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "PlotLine", + "id": "class-PlotLine-5cda74e9be5c33e6cbee6254100e447aa0a100cc0b702adfc3cb9b7452581d97d80a4dbc9054581f7c43afe4fa6d1979808b6e919d88ef52fbe79b30396c7aba", + "file": "src/assets/wise5/components/graph/domain/plotLine.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "export class PlotLine {\n color: string = 'red';\n id: string;\n label: { align: string; text: string; verticalAlign: string } = {\n align: '',\n text: '',\n verticalAlign: ''\n };\n value: number;\n width: number = 2;\n zIndex: number = 5;\n\n constructor(id: string, value: number, text: string) {\n this.id = id;\n this.label.text = text;\n this.value = value;\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "value", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 11, + "jsdoctags": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "value", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "color", + "defaultValue": "'red'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 2 + }, + { + "name": "id", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 3 + }, + { + "name": "label", + "defaultValue": "{\n align: '',\n text: '',\n verticalAlign: ''\n }", + "deprecated": false, + "deprecationMessage": "", + "type": "literal type", + "indexKey": "", + "optional": false, + "description": "", + "line": 4 + }, + { + "name": "value", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 9 + }, + { + "name": "width", + "defaultValue": "2", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 10 + }, + { + "name": "zIndex", + "defaultValue": "5", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 11 + } + ], + "methods": [], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "PlotLineManager", + "id": "class-PlotLineManager-ee3110cb10317170f376abbcf17d93fa21aba05d5103202c4df9677f07e46551912f05a265072fb59e582077ef6b801b5ffcc5782880c13194124b962b33e662", + "file": "src/assets/wise5/components/graph/plot-line-manager.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { XPlotLine } from './domain/xPlotLine';\nimport { YPlotLine } from './domain/yPlotLine';\nimport { PlotLine } from './domain/plotLine';\n\nexport class PlotLineManager {\n constructor(\n private xAxisPlotLines: any[] = [],\n private showMouseXPlotLine: boolean = false,\n private showMouseYPlotLine: boolean = false\n ) {}\n\n getXPlotLines(): any[] {\n return this.xAxisPlotLines;\n }\n\n setXPlotLine(x: number): void {\n const plotLine = {\n color: 'red',\n width: 2,\n value: x,\n zIndex: 5\n };\n this.xAxisPlotLines = [plotLine];\n }\n\n isShowMousePlotLine(): boolean {\n return this.isShowMouseXPlotLine() || this.isShowMouseYPlotLine();\n }\n\n isShowMouseXPlotLine(): boolean {\n return this.showMouseXPlotLine;\n }\n\n isShowMouseYPlotLine(): boolean {\n return this.showMouseYPlotLine;\n }\n\n /**\n * Show the vertical plot line at the given x.\n * @param x Show the vertical line at this x.\n * @param text The text to show on the plot line.\n */\n showXPlotLine(chart: any, x: number, text: string = ''): void {\n this.removeAndAddPlotLine(chart.xAxis[0], new XPlotLine(x, text));\n }\n\n /**\n * Show the horizontal plot line at the given y.\n * @param y Show the horizontal line at this y.\n * @param text The text to show on the plot line.\n */\n showYPlotLine(chart: any, y: number, text: string = ''): void {\n this.removeAndAddPlotLine(chart.yAxis[0], new YPlotLine(y, text));\n }\n\n private removeAndAddPlotLine(axis: any, newPlotLine: PlotLine): void {\n axis.removePlotLine(newPlotLine.id);\n axis.addPlotLine(newPlotLine);\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "xAxisPlotLines", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]" + }, + { + "name": "showMouseXPlotLine", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + }, + { + "name": "showMouseYPlotLine", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "line": 5, + "jsdoctags": [ + { + "name": "xAxisPlotLines", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]", + "tagName": { + "text": "param" + } + }, + { + "name": "showMouseXPlotLine", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + }, + { + "name": "showMouseYPlotLine", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [], + "methods": [ + { + "name": "getXPlotLines", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 12, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isShowMousePlotLine", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isShowMouseXPlotLine", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 30, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isShowMouseYPlotLine", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 34, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "removeAndAddPlotLine", + "args": [ + { + "name": "axis", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "newPlotLine", + "type": "PlotLine", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 56, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "axis", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "newPlotLine", + "type": "PlotLine", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setXPlotLine", + "args": [ + { + "name": "x", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 16, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "x", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "showXPlotLine", + "args": [ + { + "name": "chart", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "x", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "''" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 43, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nShow the vertical plot line at the given x.\n", + "description": "

Show the vertical plot line at the given x.

\n", + "jsdoctags": [ + { + "name": "chart", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": { + "pos": 905, + "end": 906, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "x" + }, + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 899, + "end": 904, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

Show the vertical line at this x.

\n" + }, + { + "name": { + "pos": 953, + "end": 957, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "text" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "''", + "tagName": { + "pos": 947, + "end": 952, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The text to show on the plot line.

\n" + } + ] + }, + { + "name": "showYPlotLine", + "args": [ + { + "name": "chart", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "y", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "''" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 52, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nShow the horizontal plot line at the given y.\n", + "description": "

Show the horizontal plot line at the given y.

\n", + "jsdoctags": [ + { + "name": "chart", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": { + "pos": 1210, + "end": 1211, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "y" + }, + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 1204, + "end": 1209, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

Show the horizontal line at this y.

\n" + }, + { + "name": { + "pos": 1260, + "end": 1264, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "text" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "''", + "tagName": { + "pos": 1254, + "end": 1259, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The text to show on the plot line.

\n" + } + ] + } + ], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "Project", + "id": "class-Project-aeda394d85176aaa33448be851cf0aa66486c081d7e3ce8861186e9c9e7400e9d91b63a34d5a30827539fc182b723994e7fb45cf1d5d4b2824f0eb39b7dd98b0", + "file": "src/app/domain/project.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { Run } from './run';\nimport { User } from '../domain/user';\nimport { Tag } from './tag';\n\nexport class Project {\n archived: boolean;\n dateArchived: string;\n dateCreated: string;\n id: number;\n isHighlighted: boolean;\n lastEdited: string;\n license: String;\n metadata: any;\n name: string;\n owner: User;\n parentId: number;\n projectThumb: string;\n run: Run;\n sharedOwners: User[] = [];\n selected: boolean;\n tags: Tag[] = [];\n thumbStyle: any;\n uri: String;\n wiseVersion: number;\n\n static readonly VIEW_PERMISSION: number = 1;\n static readonly EDIT_PERMISSION: number = 2;\n\n constructor(jsonObject: any = {}) {\n for (const key of Object.keys(jsonObject)) {\n const value = jsonObject[key];\n if (key === 'owner') {\n this[key] = new User(value);\n } else if (key === 'sharedOwners') {\n const sharedOwners: User[] = [];\n for (const sharedOwner of value) {\n sharedOwners.push(new User(sharedOwner));\n }\n this[key] = sharedOwners;\n } else if (key === 'metadata') {\n this[key] = this.parseMetadata(value);\n } else {\n this[key] = value;\n }\n }\n }\n\n public canView(userId) {\n return (\n this.isOwner(userId) || this.isSharedOwnerWithPermission(userId, Project.VIEW_PERMISSION)\n );\n }\n\n public canEdit(userId) {\n return (\n this.isOwner(userId) || this.isSharedOwnerWithPermission(userId, Project.EDIT_PERMISSION)\n );\n }\n\n public isChild() {\n return this.parentId != null;\n }\n\n isOwner(userId) {\n return this.owner.id === userId;\n }\n\n isSharedOwnerWithPermission(userId, permissionId) {\n for (const sharedOwner of this.sharedOwners) {\n if (sharedOwner.id === userId) {\n return this.userHasPermission(sharedOwner, permissionId);\n }\n }\n return false;\n }\n\n userHasPermission(user: User, permission: number) {\n return user.permissions.includes(permission);\n }\n\n parseMetadata(metadata) {\n if (typeof metadata.authors === 'string') {\n metadata.authors = JSON.parse(metadata.authors);\n }\n if (typeof metadata.grades === 'string') {\n metadata.grades = JSON.parse(metadata.grades);\n }\n if (typeof metadata.parentProjects === 'string') {\n metadata.parentProjects = JSON.parse(metadata.parentProjects);\n }\n if (typeof metadata.standardsAddressed === 'string') {\n metadata.standardsAddressed = JSON.parse(metadata.standardsAddressed);\n }\n return metadata;\n }\n\n hasTagWithText(tagText: string): boolean {\n return this.tags.some((tag: Tag) => tag.text === tagText);\n }\n\n hasTag(tag: Tag): boolean {\n return this.tags.some((projectTag: Tag) => projectTag.id === tag.id);\n }\n\n updateArchivedStatus(archived: boolean, tag: Tag): void {\n this.archived = archived;\n archived ? this.addTag(tag) : this.removeTag(tag);\n }\n\n addTag(tag: Tag): void {\n this.tags.push(tag);\n this.tags.sort((a, b) => a.text.toLowerCase().localeCompare(b.text.toLowerCase()));\n }\n\n removeTag(tag: Tag): void {\n this.tags = this.tags.filter((projectTag: Tag) => projectTag.id !== tag.id);\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "jsonObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "{}" + } + ], + "line": 27, + "jsdoctags": [ + { + "name": "jsonObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "{}", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "archived", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 6 + }, + { + "name": "dateArchived", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 7 + }, + { + "name": "dateCreated", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 8 + }, + { + "name": "EDIT_PERMISSION", + "defaultValue": "2", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 27, + "modifierKind": [ + 126, + 148 + ] + }, + { + "name": "id", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 9 + }, + { + "name": "isHighlighted", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 10 + }, + { + "name": "lastEdited", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 11 + }, + { + "name": "license", + "deprecated": false, + "deprecationMessage": "", + "type": "String", + "indexKey": "", + "optional": false, + "description": "", + "line": 12 + }, + { + "name": "metadata", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 13 + }, + { + "name": "name", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 14 + }, + { + "name": "owner", + "deprecated": false, + "deprecationMessage": "", + "type": "User", + "indexKey": "", + "optional": false, + "description": "", + "line": 15 + }, + { + "name": "parentId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 16 + }, + { + "name": "projectThumb", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 17 + }, + { + "name": "run", + "deprecated": false, + "deprecationMessage": "", + "type": "Run", + "indexKey": "", + "optional": false, + "description": "", + "line": 18 + }, + { + "name": "selected", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 20 + }, + { + "name": "sharedOwners", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "User[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 19 + }, + { + "name": "tags", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "Tag[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 21 + }, + { + "name": "thumbStyle", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 22 + }, + { + "name": "uri", + "deprecated": false, + "deprecationMessage": "", + "type": "String", + "indexKey": "", + "optional": false, + "description": "", + "line": 23 + }, + { + "name": "VIEW_PERMISSION", + "defaultValue": "1", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 26, + "modifierKind": [ + 126, + 148 + ] + }, + { + "name": "wiseVersion", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 24 + } + ], + "methods": [ + { + "name": "addTag", + "args": [ + { + "name": "tag", + "type": "Tag", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 110, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "tag", + "type": "Tag", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "canEdit", + "args": [ + { + "name": "userId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 54, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 125 + ], + "jsdoctags": [ + { + "name": "userId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "canView", + "args": [ + { + "name": "userId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 48, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 125 + ], + "jsdoctags": [ + { + "name": "userId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "hasTag", + "args": [ + { + "name": "tag", + "type": "Tag", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 101, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "tag", + "type": "Tag", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "hasTagWithText", + "args": [ + { + "name": "tagText", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 97, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "tagText", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isChild", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 60, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 125 + ] + }, + { + "name": "isOwner", + "args": [ + { + "name": "userId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 64, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "userId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isSharedOwnerWithPermission", + "args": [ + { + "name": "userId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "permissionId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 68, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "userId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "permissionId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "parseMetadata", + "args": [ + { + "name": "metadata", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 81, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "metadata", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "removeTag", + "args": [ + { + "name": "tag", + "type": "Tag", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 115, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "tag", + "type": "Tag", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "updateArchivedStatus", + "args": [ + { + "name": "archived", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "tag", + "type": "Tag", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 105, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "archived", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "tag", + "type": "Tag", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "userHasPermission", + "args": [ + { + "name": "user", + "type": "User", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "permission", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 77, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "user", + "type": "User", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "permission", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "ProjectAuthoringHarness", + "id": "class-ProjectAuthoringHarness-2ee66778a79f9bee37f1a693586042fb7c84f4c22c74aa5ce5b6bc0372ecb78371c8b40f907cf56374256c392c63b46ac2c9cbd026fecd0fed56b17af18eb032", + "file": "src/assets/wise5/authoringTool/project-authoring/project-authoring.harness.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { ComponentHarness } from '@angular/cdk/testing';\nimport { MatButtonHarness } from '@angular/material/button/testing';\nimport { MatMenuHarness } from '@angular/material/menu/testing';\nimport { ProjectAuthoringLessonHarness } from '../project-authoring-lesson/project-authoring-lesson.harness';\nimport { ProjectAuthoringStepHarness } from '../project-authoring-step/project-authoring-step.harness';\n\nexport class ProjectAuthoringHarness extends ComponentHarness {\n static hostSelector = 'project-authoring';\n getAddLessonButtons = this.locatorForAll(\n MatButtonHarness.with({ selector: '[matTooltip=\"Add lesson\"]' })\n );\n getAddStepButtons = this.locatorForAll(\n MatButtonHarness.with({ selector: '[matTooltip=\"Add step\"]' })\n );\n getAddStepMenus = this.locatorForAll(MatMenuHarness);\n getCollapseAllButton = this.locatorFor(MatButtonHarness.with({ text: '- Collapse All' }));\n getExpandAllButton = this.locatorFor(MatButtonHarness.with({ text: '+ Expand All' }));\n getLessons = this.locatorForAll(ProjectAuthoringLessonHarness);\n getSteps = this.locatorForAll(ProjectAuthoringStepHarness);\n\n getLesson(title: string): Promise {\n return this.locatorForOptional(ProjectAuthoringLessonHarness.with({ title: title }))();\n }\n\n getUnusedLessons(): Promise {\n return this.locatorForAll(ProjectAuthoringLessonHarness.with({ title: /^(?!\\d*: ).*/ }))();\n }\n\n async getUnusedLessonTitles(): Promise {\n const unusedLessonTitles = [];\n for (const unusedLesson of await this.getUnusedLessons()) {\n unusedLessonTitles.push(await unusedLesson.getTitle());\n }\n return unusedLessonTitles;\n }\n\n getStep(title: string): Promise {\n return this.locatorForOptional(ProjectAuthoringStepHarness.with({ title: title }))();\n }\n\n async getOpenedAddStepMenu(): Promise {\n const addStepMenus = await this.getAddStepMenus();\n for (const menu of addStepMenus) {\n if (await menu.isOpen()) {\n return menu;\n }\n }\n return null;\n }\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "getAddLessonButtons", + "defaultValue": "this.locatorForAll(\n MatButtonHarness.with({ selector: '[matTooltip=\"Add lesson\"]' })\n )", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 9 + }, + { + "name": "getAddStepButtons", + "defaultValue": "this.locatorForAll(\n MatButtonHarness.with({ selector: '[matTooltip=\"Add step\"]' })\n )", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 12 + }, + { + "name": "getAddStepMenus", + "defaultValue": "this.locatorForAll(MatMenuHarness)", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 15 + }, + { + "name": "getCollapseAllButton", + "defaultValue": "this.locatorFor(MatButtonHarness.with({ text: '- Collapse All' }))", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 16 + }, + { + "name": "getExpandAllButton", + "defaultValue": "this.locatorFor(MatButtonHarness.with({ text: '+ Expand All' }))", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 17 + }, + { + "name": "getLessons", + "defaultValue": "this.locatorForAll(ProjectAuthoringLessonHarness)", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 18 + }, + { + "name": "getSteps", + "defaultValue": "this.locatorForAll(ProjectAuthoringStepHarness)", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 19 + }, + { + "name": "hostSelector", + "defaultValue": "'project-authoring'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 8, + "modifierKind": [ + 126 + ] + } + ], + "methods": [ + { + "name": "getLesson", + "args": [ + { + "name": "title", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 21, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "title", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getOpenedAddStepMenu", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 41, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ] + }, + { + "name": "getStep", + "args": [ + { + "name": "title", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 37, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "title", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getUnusedLessons", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 25, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getUnusedLessonTitles", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 29, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ] + } + ], + "indexSignatures": [], + "extends": [ + "ComponentHarness" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "ProjectAuthoringLessonHarness", + "id": "class-ProjectAuthoringLessonHarness-b4ce8eb2482a4b2bf81365716a7351c730d12328de9e2c59a4ceaee151f17067a4a462c84ec4f075912c412eb3b77d375f94cadbc90c0d6d5feb5760a905b995", + "file": "src/assets/wise5/authoringTool/project-authoring-lesson/project-authoring-lesson.harness.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { HarnessPredicate } from '@angular/cdk/testing';\nimport { ProjectAuthoringStepHarness } from '../project-authoring-step/project-authoring-step.harness';\nimport {\n ProjectAuthoringNodeHarness,\n ProjectAuthoringNodeHarnessFilters\n} from '../project-authoring/project-authoring-node.harness';\nimport { MatExpansionPanelHarness } from '@angular/material/expansion/testing';\n\nexport class ProjectAuthoringLessonHarness extends ProjectAuthoringNodeHarness {\n static hostSelector = 'project-authoring-lesson';\n getLesson = this.locatorFor(MatExpansionPanelHarness);\n getSteps = this.locatorForAll(ProjectAuthoringStepHarness);\n\n static with(\n options: ProjectAuthoringNodeHarnessFilters\n ): HarnessPredicate {\n return new HarnessPredicate(ProjectAuthoringLessonHarness, options).addOption(\n 'title',\n options.title,\n async (harness, title) => {\n return HarnessPredicate.stringMatches(harness.getTitle(), title);\n }\n );\n }\n\n async isExpanded(): Promise {\n return (await (await this.getLesson()).isExpanded()) === true;\n }\n\n async isCollapsed(): Promise {\n return (await (await this.getLesson()).isExpanded()) === false;\n }\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "getLesson", + "defaultValue": "this.locatorFor(MatExpansionPanelHarness)", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 11 + }, + { + "name": "getSteps", + "defaultValue": "this.locatorForAll(ProjectAuthoringStepHarness)", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 12 + }, + { + "name": "hostSelector", + "defaultValue": "'project-authoring-lesson'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "modifierKind": [ + 126 + ] + }, + { + "name": "getDeleteButton", + "defaultValue": "this.locatorFor(MatButtonHarness.with({ selector: '[matTooltip^=\"Delete\"]' }))", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "inheritance": { + "file": "ProjectAuthoringNodeHarness" + } + }, + { + "name": "getMoveButton", + "defaultValue": "this.locatorFor(MatButtonHarness.with({ selector: '[matTooltip^=\"Move\"]' }))", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "inheritance": { + "file": "ProjectAuthoringNodeHarness" + } + }, + { + "name": "getTitleElement", + "defaultValue": "this.locatorFor(NodeIconAndTitleHarness)", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "inheritance": { + "file": "ProjectAuthoringNodeHarness" + } + } + ], + "methods": [ + { + "name": "isCollapsed", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 30, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ] + }, + { + "name": "isExpanded", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ] + }, + { + "name": "with", + "args": [ + { + "name": "options", + "type": "ProjectAuthoringNodeHarnessFilters", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "HarnessPredicate", + "typeParameters": [], + "line": 14, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "options", + "type": "ProjectAuthoringNodeHarnessFilters", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getTitle", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 14, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ], + "inheritance": { + "file": "ProjectAuthoringNodeHarness" + } + } + ], + "indexSignatures": [], + "extends": [ + "ProjectAuthoringNodeHarness" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "ProjectAuthoringNodeHarness", + "id": "class-ProjectAuthoringNodeHarness-e1b0fb59461318dd939bcdb76f696e61c89ae52f09d15eeec3876b7f932f7c57f5e71281e04c83fc301a88fa44885476dcfcaba0a340aa91f109be79b30d6d34", + "file": "src/assets/wise5/authoringTool/project-authoring/project-authoring-node.harness.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { BaseHarnessFilters, ComponentHarness } from '@angular/cdk/testing';\nimport { NodeIconAndTitleHarness } from '../choose-node-location/node-icon-and-title/node-icon-and-title.harness';\nimport { MatButtonHarness } from '@angular/material/button/testing';\n\nexport interface ProjectAuthoringNodeHarnessFilters extends BaseHarnessFilters {\n title?: string | RegExp;\n}\n\nexport class ProjectAuthoringNodeHarness extends ComponentHarness {\n getMoveButton = this.locatorFor(MatButtonHarness.with({ selector: '[matTooltip^=\"Move\"]' }));\n getDeleteButton = this.locatorFor(MatButtonHarness.with({ selector: '[matTooltip^=\"Delete\"]' }));\n getTitleElement = this.locatorFor(NodeIconAndTitleHarness);\n\n async getTitle(): Promise {\n const stepTitleElement = await this.getTitleElement();\n return await stepTitleElement.getPositionAndTitle();\n }\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "getDeleteButton", + "defaultValue": "this.locatorFor(MatButtonHarness.with({ selector: '[matTooltip^=\"Delete\"]' }))", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 11 + }, + { + "name": "getMoveButton", + "defaultValue": "this.locatorFor(MatButtonHarness.with({ selector: '[matTooltip^=\"Move\"]' }))", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 10 + }, + { + "name": "getTitleElement", + "defaultValue": "this.locatorFor(NodeIconAndTitleHarness)", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 12 + } + ], + "methods": [ + { + "name": "getTitle", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 14, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ] + } + ], + "indexSignatures": [], + "extends": [ + "ComponentHarness" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "ProjectAuthoringStepHarness", + "id": "class-ProjectAuthoringStepHarness-5b3fa32d4d7054c029dce022134f37026a6c8e52f9f5f17e7829bac3718d35b6fa78354e66e6d4e0cf77f4fd494d9be8a4ad541d80f725efaa3d00e07f0750dd", + "file": "src/assets/wise5/authoringTool/project-authoring-step/project-authoring-step.harness.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { HarnessPredicate } from '@angular/cdk/testing';\nimport {\n ProjectAuthoringNodeHarness,\n ProjectAuthoringNodeHarnessFilters\n} from '../project-authoring/project-authoring-node.harness';\nimport { MatButtonHarness } from '@angular/material/button/testing';\n\nexport class ProjectAuthoringStepHarness extends ProjectAuthoringNodeHarness {\n static hostSelector = 'project-authoring-step';\n\n getCopyButton = this.locatorFor(MatButtonHarness.with({ selector: '[matTooltip=\"Copy step\"]' }));\n\n static with(\n options: ProjectAuthoringNodeHarnessFilters\n ): HarnessPredicate {\n return new HarnessPredicate(ProjectAuthoringStepHarness, options).addOption(\n 'title',\n options.title,\n async (harness, title) => {\n return HarnessPredicate.stringMatches(harness.getTitle(), title);\n }\n );\n }\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "getCopyButton", + "defaultValue": "this.locatorFor(MatButtonHarness.with({ selector: '[matTooltip=\"Copy step\"]' }))", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 11 + }, + { + "name": "hostSelector", + "defaultValue": "'project-authoring-step'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 9, + "modifierKind": [ + 126 + ] + }, + { + "name": "getDeleteButton", + "defaultValue": "this.locatorFor(MatButtonHarness.with({ selector: '[matTooltip^=\"Delete\"]' }))", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "inheritance": { + "file": "ProjectAuthoringNodeHarness" + } + }, + { + "name": "getMoveButton", + "defaultValue": "this.locatorFor(MatButtonHarness.with({ selector: '[matTooltip^=\"Move\"]' }))", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "inheritance": { + "file": "ProjectAuthoringNodeHarness" + } + }, + { + "name": "getTitleElement", + "defaultValue": "this.locatorFor(NodeIconAndTitleHarness)", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "inheritance": { + "file": "ProjectAuthoringNodeHarness" + } + } + ], + "methods": [ + { + "name": "with", + "args": [ + { + "name": "options", + "type": "ProjectAuthoringNodeHarnessFilters", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "HarnessPredicate", + "typeParameters": [], + "line": 13, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "options", + "type": "ProjectAuthoringNodeHarnessFilters", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getTitle", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 14, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ], + "inheritance": { + "file": "ProjectAuthoringNodeHarness" + } + } + ], + "indexSignatures": [], + "extends": [ + "ProjectAuthoringNodeHarness" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "ProjectCompletion", + "id": "class-ProjectCompletion-3ebc4dad0de8fe5c9a76f2b8e82915f3a1327fffdf690a5027377f6bfd767392fce94992c972b6fe7892107180a8bbd144d499d74795f8185f0d23c0187035a5", + "file": "src/assets/wise5/common/ProjectCompletion.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "export class ProjectCompletion {\n completedItems: number;\n completionPct: number;\n totalItems: number;\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "completedItems", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 2 + }, + { + "name": "completionPct", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 3 + }, + { + "name": "totalItems", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 4 + } + ], + "methods": [], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "ProjectFilterValues", + "id": "class-ProjectFilterValues-e5a2c0577d3fcbb841f414026ecb2e90527516f4903cce2e94c5b04bf67b8f63b4783f3ce02611ab7d25f3a1ebe3e618bdee8182a4cfb4d989694a90e097e18c", + "file": "src/app/domain/projectFilterValues.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { Subject } from 'rxjs';\nimport { LibraryProject } from '../modules/library/libraryProject';\nimport { Location } from '../modules/library/Location';\n\nexport class ProjectFilterValues {\n disciplineValue: string[] = [];\n featureValue: string[] = [];\n gradeLevelValue: number[] = [];\n locationValue: string[] = [];\n publicUnitType?: ('wiseTested' | 'communityBuilt')[] = [];\n publicUnitTypeValue?: ('wiseTested' | 'communityBuilt')[] = [];\n searchValue: string = '';\n standardValue: string[] = [];\n unitTypeValue: string[] = [];\n private updatedSource = new Subject();\n public updated$ = this.updatedSource.asObservable();\n\n matches(project: LibraryProject): boolean {\n return (\n this.matchesSearch(project) &&\n this.matchesPublicUnitType(project) &&\n this.matchesStandard(project) &&\n this.matchesDiscipline(project) &&\n this.matchesUnitType(project) &&\n this.matchesFeature(project) &&\n this.matchesGradeLevel(project) &&\n this.matchesLocation(project)\n );\n }\n\n private matchesSearch(project: LibraryProject): boolean {\n project.metadata.id = project.id;\n return (\n !this.searchValue ||\n Object.keys(project.metadata)\n .filter((prop) =>\n // only check for match in specific metadata fields\n ['title', 'summary', 'keywords', 'features', 'standards', 'id'].includes(prop)\n )\n .some((prop) => {\n let value = project.metadata[prop];\n if (prop === 'standards') {\n value = JSON.stringify(value);\n }\n return (\n typeof value !== 'undefined' &&\n value != null &&\n value.toString().toLocaleLowerCase().indexOf(this.searchValue) !== -1\n );\n })\n );\n }\n\n hasFilters(): boolean {\n return (\n this.standardValue.length +\n this.disciplineValue.length +\n this.unitTypeValue.length +\n this.gradeLevelValue.length +\n this.featureValue.length +\n this.locationValue.length >\n 0\n );\n }\n\n clear(): void {\n this.disciplineValue = [];\n this.featureValue = [];\n this.gradeLevelValue = [];\n this.publicUnitTypeValue = [];\n this.searchValue = '';\n this.standardValue = [];\n this.unitTypeValue = [];\n this.locationValue = [];\n }\n\n private matchesUnitType(project: LibraryProject): boolean {\n const unitTypeValue =\n project.metadata.unitType === 'Platform' ? 'WISE Platform' : 'Other Platform';\n return this.unitTypeValue.length === 0 || this.unitTypeValue?.includes(unitTypeValue);\n }\n\n private matchesPublicUnitType(project: LibraryProject): boolean {\n return (\n this.publicUnitTypeValue?.length === 0 ||\n this.publicUnitTypeValue?.includes(project.metadata.publicUnitType)\n );\n }\n\n private matchesStandard(project: LibraryProject): boolean {\n const standards = project.metadata.standards;\n const commonCore = standards?.commonCore ?? [];\n const ngss = standards?.ngss ?? [];\n const learningForJustice = standards?.learningForJustice ?? [];\n return (\n this.standardValue.length === 0 ||\n [...commonCore, ...ngss, ...learningForJustice].some((val) =>\n this.standardValue.includes(val.id)\n )\n );\n }\n\n private matchesLocation(project: LibraryProject): boolean {\n return (\n this.locationValue.length === 0 ||\n project.metadata.locations\n ?.map((location) => Object.assign(new Location(), location))\n .flatMap((location) => location.getLocationOptions())\n .some((locationOption) => this.locationValue.includes(locationOption.name))\n );\n }\n\n private matchesFeature(project: LibraryProject): boolean {\n return (\n this.featureValue.length === 0 ||\n project.metadata.features?.some((feature) => this.featureValue.includes(feature.name))\n );\n }\n\n private matchesDiscipline(project: LibraryProject): boolean {\n return (\n this.disciplineValue.length === 0 ||\n project.metadata.disciplines?.some((discipline) =>\n this.disciplineValue.includes(discipline.id)\n )\n );\n }\n\n private matchesGradeLevel(project: LibraryProject): boolean {\n return (\n this.gradeLevelValue.length === 0 ||\n project.metadata.grades?.some((gradeLevel) =>\n this.gradeLevelValue.includes(Number(gradeLevel))\n )\n );\n }\n\n emitUpdated(): void {\n this.updatedSource.next();\n }\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "disciplineValue", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 6 + }, + { + "name": "featureValue", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 7 + }, + { + "name": "gradeLevelValue", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "number[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 8 + }, + { + "name": "locationValue", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 9 + }, + { + "name": "publicUnitType", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "(\"wiseTested\" | \"communityBuilt\")[]", + "indexKey": "", + "optional": true, + "description": "", + "line": 10 + }, + { + "name": "publicUnitTypeValue", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "(\"wiseTested\" | \"communityBuilt\")[]", + "indexKey": "", + "optional": true, + "description": "", + "line": 11 + }, + { + "name": "searchValue", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 12 + }, + { + "name": "standardValue", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 13 + }, + { + "name": "unitTypeValue", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 14 + }, + { + "name": "updated$", + "defaultValue": "this.updatedSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "modifierKind": [ + 125 + ] + }, + { + "name": "updatedSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 123 + ] + } + ], + "methods": [ + { + "name": "clear", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 66, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "emitUpdated", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 138, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "hasFilters", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 54, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "matches", + "args": [ + { + "name": "project", + "type": "LibraryProject", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 18, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "project", + "type": "LibraryProject", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "matchesDiscipline", + "args": [ + { + "name": "project", + "type": "LibraryProject", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 120, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "project", + "type": "LibraryProject", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "matchesFeature", + "args": [ + { + "name": "project", + "type": "LibraryProject", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 113, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "project", + "type": "LibraryProject", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "matchesGradeLevel", + "args": [ + { + "name": "project", + "type": "LibraryProject", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 129, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "project", + "type": "LibraryProject", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "matchesLocation", + "args": [ + { + "name": "project", + "type": "LibraryProject", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 103, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "project", + "type": "LibraryProject", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "matchesPublicUnitType", + "args": [ + { + "name": "project", + "type": "LibraryProject", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "project", + "type": "LibraryProject", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "matchesSearch", + "args": [ + { + "name": "project", + "type": "LibraryProject", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 31, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "project", + "type": "LibraryProject", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "matchesStandard", + "args": [ + { + "name": "project", + "type": "LibraryProject", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 90, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "project", + "type": "LibraryProject", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "matchesUnitType", + "args": [ + { + "name": "project", + "type": "LibraryProject", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 77, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "project", + "type": "LibraryProject", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "ProjectLocale", + "id": "class-ProjectLocale-ad6dd5bb4d7e58d3aeef068631fd96647185fcfe7ee72339fc8d7d9fd98ffcd5bb52208f85599358f9a092bdb9615a27f4c9f63ae181e750ac50d4aa6e817793", + "file": "src/app/domain/projectLocale.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { Language } from './language';\nimport { localeToLanguage } from './localeToLanguage';\n\nexport class ProjectLocale {\n private locale: { default: string; supported: string[] };\n\n constructor(locale: any) {\n this.locale = locale;\n }\n\n getAvailableLanguages(): Language[] {\n return [this.getDefaultLanguage()].concat(this.getSupportedLanguages());\n }\n\n getDefaultLanguage(): Language {\n return { language: localeToLanguage[this.locale.default], locale: this.locale.default };\n }\n\n setDefaultLocale(locale: string): void {\n this.locale.default = locale;\n this.locale.supported = this.locale.supported.filter(\n (supportedLocale) => supportedLocale != locale\n );\n }\n\n getSupportedLanguages(): Language[] {\n return this.locale.supported.map((locale) => ({\n language: localeToLanguage[locale],\n locale: locale\n }));\n }\n\n setSupportedLanguages(languages: Language[]): void {\n this.locale.supported = languages.map((language) => language.locale);\n }\n\n hasTranslations(): boolean {\n return this.locale.supported.length > 0;\n }\n\n hasTranslationsToApply(locale: string): boolean {\n return !this.isDefaultLocale(locale) && this.hasLocale(locale);\n }\n\n isDefaultLocale(locale: string): boolean {\n return this.locale.default === locale;\n }\n\n private hasLocale(locale: string): boolean {\n return this.locale.supported.includes(locale);\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "locale", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 5, + "jsdoctags": [ + { + "name": "locale", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "locale", + "deprecated": false, + "deprecationMessage": "", + "type": "literal type", + "indexKey": "", + "optional": false, + "description": "", + "line": 5, + "modifierKind": [ + 123 + ] + } + ], + "methods": [ + { + "name": "getAvailableLanguages", + "args": [], + "optional": false, + "returnType": "Language[]", + "typeParameters": [], + "line": 11, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getDefaultLanguage", + "args": [], + "optional": false, + "returnType": "Language", + "typeParameters": [], + "line": 15, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getSupportedLanguages", + "args": [], + "optional": false, + "returnType": "Language[]", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "hasLocale", + "args": [ + { + "name": "locale", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 49, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "locale", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "hasTranslations", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 37, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "hasTranslationsToApply", + "args": [ + { + "name": "locale", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 41, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "locale", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isDefaultLocale", + "args": [ + { + "name": "locale", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 45, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "locale", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setDefaultLocale", + "args": [ + { + "name": "locale", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 19, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "locale", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setSupportedLanguages", + "args": [ + { + "name": "languages", + "type": "Language[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 33, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "languages", + "type": "Language[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "ProjectSelectionEvent", + "id": "class-ProjectSelectionEvent-b3cba18fecc454430540463b89178c0be176aa9e2b8668072b7773e25ff526c807686dce249fe20894ad23dc59f85c9139ee113e872f80c6e18f36eb9d9bf0fd", + "file": "src/app/domain/projectSelectionEvent.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { LibraryProject } from '../modules/library/libraryProject';\n\nexport class ProjectSelectionEvent {\n project: LibraryProject;\n selected: boolean;\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "project", + "deprecated": false, + "deprecationMessage": "", + "type": "LibraryProject", + "indexKey": "", + "optional": false, + "description": "", + "line": 4 + }, + { + "name": "selected", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 5 + } + ], + "methods": [], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "Question", + "id": "class-Question-90ad0372f9e79b70383e116c72fee092fc99133aafcc39619d6e1dd4dba9ebe913d855ebe849f1ebb755c4fbcc2c01ad39e2a66489fa3774ca61fe3c175f8fc7", + "file": "src/assets/wise5/components/peerChat/peer-chat-question-bank/Question.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { generateRandomKey } from '../../../common/string/string';\n\nexport class Question {\n id: string;\n text: string = '';\n\n constructor() {\n this.id = generateRandomKey();\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [], + "line": 5 + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "id", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 4 + }, + { + "name": "text", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 5 + } + ], + "methods": [], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "QuestionBank", + "id": "class-QuestionBank-aa104c5d0475eb129d19bbabc01b592bff28277b44a0a93b916aa152ac1cbe1e76016100e67ce989ba0d06dad96538a3a2f86179eb2c598ed30e4a589e87f39e", + "file": "src/assets/wise5/components/peerChat/peer-chat-question-bank/QuestionBank.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { ReferenceComponentRules } from '../../common/ReferenceComponentRules';\nimport { QuestionBankRule } from './QuestionBankRule';\n\nexport class QuestionBank extends ReferenceComponentRules {\n clickToUseEnabled: boolean;\n label: string;\n maxQuestionsToShow: number;\n rules: QuestionBankRule[];\n version: number;\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "clickToUseEnabled", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 5 + }, + { + "name": "label", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 6 + }, + { + "name": "maxQuestionsToShow", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 7 + }, + { + "name": "rules", + "deprecated": false, + "deprecationMessage": "", + "type": "QuestionBankRule[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 8, + "inheritance": { + "file": "ReferenceComponentRules" + } + }, + { + "name": "version", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 9 + }, + { + "name": "enabled", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 5, + "inheritance": { + "file": "ReferenceComponentRules" + } + }, + { + "name": "peerGroupingTag", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": true, + "description": "", + "line": 6, + "inheritance": { + "file": "ReferenceComponentRules" + } + }, + { + "name": "referenceComponent", + "deprecated": false, + "deprecationMessage": "", + "type": "ReferenceComponent", + "indexKey": "", + "optional": false, + "description": "", + "line": 7, + "inheritance": { + "file": "ReferenceComponentRules" + } + } + ], + "methods": [ + { + "name": "getPeerGroupingTag", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 18, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ReferenceComponentRules" + } + }, + { + "name": "getReferenceComponentId", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ReferenceComponentRules" + } + }, + { + "name": "getReferenceNodeId", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ReferenceComponentRules" + } + }, + { + "name": "getRules", + "args": [], + "optional": false, + "returnType": "FeedbackRule[]", + "typeParameters": [], + "line": 30, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ReferenceComponentRules" + } + }, + { + "name": "isPeerGroupingTagSpecified", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 34, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ReferenceComponentRules" + } + } + ], + "indexSignatures": [], + "extends": [ + "ReferenceComponentRules" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "QuestionBankContent", + "id": "class-QuestionBankContent-bd4e85823e5b4d9777af919c7538e3f5c30ff6d5eb0a5fc6cd4afdb0786f979ac55ae52efb4cf24cce020d09ca6cc0dacebb46cfaf816dca67cbc691f0214180", + "file": "src/assets/wise5/components/peerChat/peer-chat-question-bank/QuestionBankContent.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { QuestionBank } from './QuestionBank';\n\nexport class QuestionBankContent {\n componentId: string;\n nodeId: string;\n questionBank: QuestionBank;\n\n constructor(nodeId: string, componentId: string, questionBank: QuestionBank) {\n this.nodeId = nodeId;\n this.componentId = componentId;\n this.questionBank = questionBank;\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "questionBank", + "type": "QuestionBank", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 6, + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "questionBank", + "type": "QuestionBank", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 4 + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 5 + }, + { + "name": "questionBank", + "deprecated": false, + "deprecationMessage": "", + "type": "QuestionBank", + "indexKey": "", + "optional": false, + "description": "", + "line": 6 + } + ], + "methods": [], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "QuestionBankRule", + "id": "class-QuestionBankRule-0ea7a48518f36a16abf9837c37078e00c6b5835d56c299195d37a92e453d2c2a70e0e34fa952238e6125e6e6b78a9ffb6f24a8c9f5ecb0d2a2e9efd4313b59c6", + "file": "src/assets/wise5/components/peerChat/peer-chat-question-bank/QuestionBankRule.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { FeedbackRule } from '../../common/feedbackRule/FeedbackRule';\nimport { Question } from './Question';\n\nexport class QuestionBankRule extends FeedbackRule {\n questions: (string | Question)[];\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "questions", + "deprecated": false, + "deprecationMessage": "", + "type": "(string | Question)[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 5 + }, + { + "name": "expression", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 5, + "inheritance": { + "file": "FeedbackRule" + } + }, + { + "name": "feedback", + "deprecated": false, + "deprecationMessage": "", + "type": "string | string[]", + "indexKey": "", + "optional": true, + "description": "", + "line": 6, + "inheritance": { + "file": "FeedbackRule" + } + }, + { + "name": "id", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": true, + "description": "", + "line": 4, + "inheritance": { + "file": "FeedbackRule" + } + }, + { + "name": "prompt", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": true, + "description": "", + "line": 7, + "inheritance": { + "file": "FeedbackRule" + } + } + ], + "methods": [ + { + "name": "getPostfixExpression", + "args": [], + "optional": false, + "returnType": "string[]", + "typeParameters": [], + "line": 35, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "FeedbackRule" + } + }, + { + "name": "isDefaultRule", + "args": [ + { + "name": "feedbackRule", + "type": "FeedbackRule", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 31, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "feedbackRule", + "type": "FeedbackRule", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "FeedbackRule" + } + }, + { + "name": "isFinalSubmitRule", + "args": [ + { + "name": "feedbackRule", + "type": "FeedbackRule", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 27, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "feedbackRule", + "type": "FeedbackRule", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "FeedbackRule" + } + }, + { + "name": "isSecondToLastSubmitRule", + "args": [ + { + "name": "feedbackRule", + "type": "FeedbackRule", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 23, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "feedbackRule", + "type": "FeedbackRule", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "FeedbackRule" + } + }, + { + "name": "isSpecialRule", + "args": [ + { + "name": "feedbackRule", + "type": "FeedbackRule", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 17, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "feedbackRule", + "type": "FeedbackRule", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "FeedbackRule" + } + } + ], + "indexSignatures": [], + "extends": [ + "FeedbackRule" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "RawDataExportStrategy", + "id": "class-RawDataExportStrategy-3ff07c875a7cb7b6b0752e8704d69adbb22f07c95e0042d52b6062070cf961e76545a1634cb43b2275f6bbb2db67d16cec7be5aa1b545a2dfaadc6eb0eba343f", + "file": "src/assets/wise5/classroomMonitor/dataExport/strategies/RawDataExportStrategy.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { AbstractDataExportStrategy } from './AbstractDataExportStrategy';\nimport * as FileSaver from 'file-saver';\nimport { copy } from '../../../common/object/object';\n\nexport class RawDataExportStrategy extends AbstractDataExportStrategy {\n export() {\n this.controller.showDownloadingExportMessage();\n var selectedNodes = [];\n\n /*\n * holds the mappings from nodeid or nodeid-componentid to a boolean\n * value of whether the node was selected\n * example\n * selectedNodesMap[\"node3\"] = true\n * selectedNodesMap[\"node4-wt38sdf1d3\"] = true\n */\n var selectedNodesMap = null;\n if (this.controller.exportStepSelectionType === 'exportSelectSteps') {\n selectedNodes = this.controller.getSelectedNodesToExport();\n if (selectedNodes == null || selectedNodes.length == 0) {\n alert('Please select a step to export.');\n this.controller.hideDownloadingExportMessage();\n return;\n } else {\n selectedNodesMap = this.getSelectedNodesMap(selectedNodes);\n }\n }\n this.dataExportService.retrieveStudentData(selectedNodes, true, true, true).subscribe(() => {\n var runId = this.configService.getRunId();\n var data: any = {};\n var workgroups = this.configService.getClassmateUserInfosSortedByWorkgroupId();\n workgroups = copy(workgroups);\n for (var w = 0; w < workgroups.length; w++) {\n var workgroup = workgroups[w];\n if (workgroup != null) {\n if (!this.controller.includeStudentNames) {\n this.removeNamesFromWorkgroup(workgroup);\n }\n var workgroupId = workgroup.workgroupId;\n if (this.controller.includeStudentWork) {\n workgroup.studentWork = [];\n var componentStates = this.dataService.getComponentStatesByWorkgroupId(workgroupId);\n if (componentStates != null) {\n for (var c = 0; c < componentStates.length; c++) {\n var componentState = componentStates[c];\n if (componentState != null) {\n var compositeId = this.getCompositeId(componentState);\n if (\n selectedNodesMap == null ||\n (compositeId != null && selectedNodesMap[compositeId] == true)\n ) {\n workgroup.studentWork.push(componentState);\n }\n }\n }\n }\n }\n if (this.controller.includeAnnotations) {\n workgroup.annotations = [];\n var annotations = this.dataService.getAnnotationsToWorkgroupId(workgroupId);\n if (annotations != null) {\n for (var a = 0; a < annotations.length; a++) {\n var annotation = annotations[a];\n if (annotation != null) {\n var compositeId = this.getCompositeId(annotation);\n if (\n selectedNodesMap == null ||\n (compositeId != null && selectedNodesMap[compositeId] == true)\n ) {\n workgroup.annotations.push(annotation);\n }\n }\n }\n }\n }\n if (this.controller.includeEvents) {\n workgroup.events = [];\n var events = this.dataService.getEventsByWorkgroupId(workgroupId);\n if (events != null) {\n for (var e = 0; e < events.length; e++) {\n var event = events[e];\n if (event != null) {\n var compositeId = this.getCompositeId(event);\n if (\n selectedNodesMap == null ||\n (compositeId != null && selectedNodesMap[compositeId] == true)\n ) {\n workgroup.events.push(event);\n }\n }\n }\n }\n }\n }\n }\n data.workgroups = workgroups;\n const dataJSONString = JSON.stringify(data, null, 4);\n const blob = new Blob([dataJSONString]);\n FileSaver.saveAs(blob, runId + '_raw_data.json');\n this.controller.hideDownloadingExportMessage();\n });\n }\n\n private removeNamesFromWorkgroup(workgroup): void {\n delete workgroup.username;\n delete workgroup.displayNames;\n for (let user of workgroup.users) {\n delete user.name;\n delete user.firstName;\n delete user.lastName;\n }\n }\n\n /**\n * Get the composite id for a given object\n * @param object a component state, annotation, or event\n * @return the composite id for the object\n * example\n * 'node3'\n * 'node4-wt38sdf1d3'\n */\n private getCompositeId(object): string {\n var compositeId = null;\n if (object.nodeId != null) {\n compositeId = object.nodeId;\n }\n if (object.componentId != null) {\n compositeId += '-' + object.componentId;\n }\n return compositeId;\n }\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "allOrLatest", + "defaultValue": "'all'", + "deprecated": false, + "deprecationMessage": "", + "type": "\"all\" | \"latest\"", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "annotationService", + "deprecated": false, + "deprecationMessage": "", + "type": "AnnotationService", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "configService", + "deprecated": false, + "deprecationMessage": "", + "type": "ConfigService", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "context", + "deprecated": false, + "deprecationMessage": "", + "type": "DataExportContext", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "controller", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "dataExportService", + "deprecated": false, + "deprecationMessage": "", + "type": "DataExportService", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "dataService", + "deprecated": false, + "deprecationMessage": "", + "type": "TeacherDataService", + "indexKey": "", + "optional": false, + "description": "", + "line": 20, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "projectService", + "deprecated": false, + "deprecationMessage": "", + "type": "TeacherProjectService", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + } + ], + "methods": [ + { + "name": "export", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 6, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "getCompositeId", + "args": [ + { + "name": "object", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 122, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the composite id for a given object\nexample\n'node3'\n'node4-wt38sdf1d3'\n", + "description": "

Get the composite id for a given object\nexample\n'node3'\n'node4-wt38sdf1d3'

\n", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": { + "pos": 4471, + "end": 4477, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "object" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4465, + "end": 4470, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

a component state, annotation, or event

\n" + }, + { + "tagName": { + "pos": 4524, + "end": 4530, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

the composite id for the object\nexample\n'node3'\n'node4-wt38sdf1d3'

\n" + } + ] + }, + { + "name": "removeNamesFromWorkgroup", + "args": [ + { + "name": "workgroup", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 104, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "workgroup", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "generateCSVFile", + "args": [ + { + "name": "rows", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "fileName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 194, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "rows", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "fileName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "generateExportFileName", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentTypeWithUnderscore", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 179, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentTypeWithUnderscore", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "getColumnValue", + "args": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 113, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "getSelectedNodesMap", + "args": [ + { + "name": "selectedNodes", + "type": "[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]" + } + ], + "optional": false, + "returnType": "{}", + "typeParameters": [], + "line": 62, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet a mapping of node/component id strings to true.\nexample if\nselectedNodes = [\n {\n nodeId: \"node1\",\n componentId: \"343b8aesf7\"\n },\n {\n nodeId: \"node2\",\n componentId: \"b34gaf0ug2\"\n },\n {\n nodeId: \"node3\"\n }\n]\n\nthis function will return\n{\n \"node1-343b8aesf7\": true,\n \"node2-b34gaf0ug2\": true,\n \"node3\": true\n}\n\na componentId field\n", + "description": "

Get a mapping of node/component id strings to true.\nexample if\nselectedNodes = [\n {\n nodeId: "node1",\n componentId: "343b8aesf7"\n },\n {\n nodeId: "node2",\n componentId: "b34gaf0ug2"\n },\n {\n nodeId: "node3"\n }\n]

\n

this function will return\n{\n "node1-343b8aesf7": true,\n "node2-b34gaf0ug2": true,\n "node3": true\n}

\n

a componentId field

\n", + "jsdoctags": [ + { + "name": { + "pos": 1979, + "end": 1992, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "selectedNodes" + }, + "type": "[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]", + "tagName": { + "pos": 1973, + "end": 1978, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

an array of objects that contain a nodeId field and maybe also\na componentId field

\n" + }, + { + "tagName": { + "pos": 2087, + "end": 2093, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

a mapping of node/component id strings to true

\n" + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "getStudentDataString", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 157, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the plain text representation of the student work.\n", + "description": "

Get the plain text representation of the student work.

\n", + "jsdoctags": [ + { + "name": { + "pos": 5328, + "end": 5342, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 5322, + "end": 5327, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

A component state that contains the student work.

\n", + "typeExpression": { + "pos": 5343, + "end": 5351, + "kind": 310, + "id": 0, + "flags": 16842752, + "modifierFlagsCache": 0, + "transformFlags": 0, + "type": { + "pos": 5344, + "end": 5350, + "kind": 151, + "id": 0, + "flags": 16777216, + "transformFlags": 1 + } + } + }, + { + "tagName": { + "pos": 5408, + "end": 5415, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

A string that can be placed in a csv cell.

\n", + "returnType": "string" + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "insertColumnAtEnd", + "args": [ + { + "name": "headerRow", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 121, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "headerRow", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "insertColumnBeforeResponseColumn", + "args": [ + { + "name": "headerRow", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 117, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "headerRow", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "isComponentSelected", + "args": [ + { + "name": "selectedNodesMap", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 138, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if a component is selected\nto true\nexample\n{\n \"node1-38fj20egrj\": true,\n \"node1-20dbj2e0sf\": true\n}\n", + "description": "

Check if a component is selected\nto true\nexample\n{\n "node1-38fj20egrj": true,\n "node1-20dbj2e0sf": true\n}

\n", + "jsdoctags": [ + { + "name": { + "pos": 4590, + "end": 4606, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "selectedNodesMap" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4584, + "end": 4589, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

a map of node id and component id strings\nto true\nexample\n{\n"node1-38fj20egrj": true,\n"node1-20dbj2e0sf": true\n}

\n" + }, + { + "name": { + "pos": 4766, + "end": 4772, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4760, + "end": 4765, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id to check

\n" + }, + { + "name": { + "pos": 4806, + "end": 4817, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4800, + "end": 4805, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component id to check

\n" + }, + { + "tagName": { + "pos": 4850, + "end": 4856, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether the component is selected

\n" + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "populateColumnNameMappings", + "args": [ + { + "name": "columnNames", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 103, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "columnNames", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "setColumnValue", + "args": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "value", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 109, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "value", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "setDataExportContext", + "args": [ + { + "name": "context", + "type": "DataExportContext", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "context", + "type": "DataExportContext", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "setRunInfo", + "args": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + } + ], + "indexSignatures": [], + "extends": [ + "AbstractDataExportStrategy" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "ReferenceComponent", + "id": "class-ReferenceComponent-7d05c414780c234fadbc458ac60cd107ee134a2f5e0e3f4b0e6362c247c87c14626cbae6ec2c0d030b5620f9fe6b8287011bb799976a627d00effc03e02e990e", + "file": "src/app/domain/referenceComponent.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "export class ReferenceComponent {\n componentId: string;\n nodeId: string;\n\n constructor(nodeId: string, componentId: string) {\n this.nodeId = nodeId;\n this.componentId = componentId;\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 3, + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 2 + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 3 + } + ], + "methods": [], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "ReferenceComponentRules", + "id": "class-ReferenceComponentRules-71ad5af2e587d30bd01932fcb5ed03131bd18a9970da02f26f8afb72ea792df151ea501efb7e3dd43469a179f55402946c0619fc47cfd4ceee7e9ec88a70e75e", + "file": "src/assets/wise5/components/common/ReferenceComponentRules.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { ReferenceComponent } from '../../../../app/domain/referenceComponent';\nimport { FeedbackRule } from './feedbackRule/FeedbackRule';\n\nexport abstract class ReferenceComponentRules {\n enabled: boolean;\n peerGroupingTag?: string;\n referenceComponent: ReferenceComponent;\n rules: FeedbackRule[];\n\n constructor(jsonObject: any = {}) {\n for (const key of Object.keys(jsonObject)) {\n if (jsonObject[key] != null) {\n this[key] = jsonObject[key];\n }\n }\n }\n\n getPeerGroupingTag(): string {\n return this.peerGroupingTag;\n }\n\n getReferenceNodeId(): string {\n return this.referenceComponent.nodeId;\n }\n\n getReferenceComponentId(): string {\n return this.referenceComponent.componentId;\n }\n\n getRules(): FeedbackRule[] {\n return this.rules;\n }\n\n isPeerGroupingTagSpecified(): boolean {\n return this.peerGroupingTag != null && this.peerGroupingTag !== '';\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "jsonObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "{}" + } + ], + "line": 8, + "jsdoctags": [ + { + "name": "jsonObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "{}", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "enabled", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 5 + }, + { + "name": "peerGroupingTag", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": true, + "description": "", + "line": 6 + }, + { + "name": "referenceComponent", + "deprecated": false, + "deprecationMessage": "", + "type": "ReferenceComponent", + "indexKey": "", + "optional": false, + "description": "", + "line": 7 + }, + { + "name": "rules", + "deprecated": false, + "deprecationMessage": "", + "type": "FeedbackRule[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 8 + } + ], + "methods": [ + { + "name": "getPeerGroupingTag", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 18, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getReferenceComponentId", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getReferenceNodeId", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getRules", + "args": [], + "optional": false, + "returnType": "FeedbackRule[]", + "typeParameters": [], + "line": 30, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isPeerGroupingTagSpecified", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 34, + "deprecated": false, + "deprecationMessage": "" + } + ], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "RegisterUserFormComponent", + "id": "class-RegisterUserFormComponent-1d74656944ee42d2e91fe4351e752127176b498084f6c2613a17cb680d40a1053a3e631ae52fedb39934ea00f25be27a0c1662f200f1bd4311a0f154313b20fc", + "file": "src/app/register/register-user-form/register-user-form.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { FormBuilder, FormGroup } from '@angular/forms';\nimport { User } from '../../domain/user';\nimport { injectPasswordErrors } from '../../common/password-helper';\nimport { MatSnackBar } from '@angular/material/snack-bar';\n\nexport class RegisterUserFormComponent {\n protected NAME_REGEX = '^[a-zA-Z]+([ -]?[a-zA-Z]+)*$';\n\n protected confirmPasswordLabel: string = $localize`Confirm Password`;\n protected passwordLabel: string = $localize`Password`;\n protected passwordsFormGroup: FormGroup = this.fb.group({});\n protected processing: boolean = false;\n user: User;\n\n constructor(protected fb: FormBuilder, protected snackBar: MatSnackBar) {}\n\n handleCreateAccountError(error: any, userObject: User): void {\n switch (error.messageCode) {\n case 'invalidPassword':\n injectPasswordErrors(this.passwordsFormGroup, error);\n break;\n case 'recaptchaResponseInvalid':\n userObject['isRecaptchaInvalid'] = true;\n break;\n default:\n this.snackBar.open(this.translateCreateAccountErrorMessageCode(error.messageCode));\n }\n this.processing = false;\n }\n\n private translateCreateAccountErrorMessageCode(messageCode: string): string {\n switch (messageCode) {\n case 'invalidFirstAndLastName':\n return $localize`Error: First Name and Last Name must only contain characters A-Z, a-z, spaces, or dashes and can not start or end with a space or dash`;\n case 'invalidFirstName':\n return $localize`Error: First Name must only contain characters A-Z, a-z, spaces, or dashes and can not start or end with a space or dash`;\n case 'invalidLastName':\n return $localize`Error: Last Name must only contain characters A-Z, a-z, spaces, or dashes and can not start or end with a space or dash`;\n }\n return messageCode;\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "fb", + "type": "FormBuilder", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "snackBar", + "type": "MatSnackBar", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 13, + "jsdoctags": [ + { + "name": "fb", + "type": "FormBuilder", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "snackBar", + "type": "MatSnackBar", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "confirmPasswordLabel", + "defaultValue": "$localize`Confirm Password`", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 9, + "modifierKind": [ + 124 + ] + }, + { + "name": "NAME_REGEX", + "defaultValue": "'^[a-zA-Z]+([ -]?[a-zA-Z]+)*$'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 7, + "modifierKind": [ + 124 + ] + }, + { + "name": "passwordLabel", + "defaultValue": "$localize`Password`", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "modifierKind": [ + 124 + ] + }, + { + "name": "passwordsFormGroup", + "defaultValue": "this.fb.group({})", + "deprecated": false, + "deprecationMessage": "", + "type": "FormGroup", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "modifierKind": [ + 124 + ] + }, + { + "name": "processing", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "modifierKind": [ + 124 + ] + }, + { + "name": "user", + "deprecated": false, + "deprecationMessage": "", + "type": "User", + "indexKey": "", + "optional": false, + "description": "", + "line": 13 + } + ], + "methods": [ + { + "name": "handleCreateAccountError", + "args": [ + { + "name": "error", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "userObject", + "type": "User", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 17, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "error", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "userObject", + "type": "User", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "translateCreateAccountErrorMessageCode", + "args": [ + { + "name": "messageCode", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 31, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "messageCode", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "RemovalCriteria", + "id": "class-RemovalCriteria-5445a71e77dc3a7ed9c3fb940ebb328384dd5d53c8eaad1f8dca5651ab8fea186f3de2f536bd3b766a4e6bf49a2c8a52e4e2260fb1d2cec026cb7bfd09bfa7a7", + "file": "src/app/domain/removalCriteria.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { RemovalCriteriaParam } from './removalCriteriaParam';\nimport { ValueAndText } from './valueAndText';\n\nexport class RemovalCriteria extends ValueAndText {\n params: any[];\n\n constructor(value: string, text: string, params: RemovalCriteriaParam[]) {\n super(value, text);\n this.params = params;\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "value", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "params", + "type": "RemovalCriteriaParam[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 5, + "jsdoctags": [ + { + "name": "value", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "params", + "type": "RemovalCriteriaParam[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "params", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 5 + }, + { + "name": "text", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 2, + "inheritance": { + "file": "ValueAndText" + } + }, + { + "name": "value", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 3, + "inheritance": { + "file": "ValueAndText" + } + } + ], + "methods": [], + "indexSignatures": [], + "extends": [ + "ValueAndText" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "RemovalCriteriaParam", + "id": "class-RemovalCriteriaParam-7a84d8b754f0fa40a3873f4eaca573608b4c4c8f8093bcf4f603007cff1d86f8f2d78b34a1d807ab3de2a640a2802a3f15a0dba7dd80f8b7c2149fcfef2da19a", + "file": "src/app/domain/removalCriteriaParam.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { ValueAndText } from './valueAndText';\n\nexport class RemovalCriteriaParam extends ValueAndText {\n defaultValue: any;\n\n constructor(value: string, text: string, defaultValue: any = '') {\n super(value, text);\n this.defaultValue = defaultValue;\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "value", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "defaultValue", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "''" + } + ], + "line": 4, + "jsdoctags": [ + { + "name": "value", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "defaultValue", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "''", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "defaultValue", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 4 + }, + { + "name": "text", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 2, + "inheritance": { + "file": "ValueAndText" + } + }, + { + "name": "value", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 3, + "inheritance": { + "file": "ValueAndText" + } + } + ], + "methods": [], + "indexSignatures": [], + "extends": [ + "ValueAndText" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "Response", + "id": "class-Response-88543692920025d867532eb48eb235837c8e38147ef560aeeb75d827a49cc7e25e370656ed0ca60ae68ac93514b5519f7ed626f1c0e00f3d4e0b9dffaabad81d", + "file": "src/assets/wise5/components/common/feedbackRule/Response.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "export class Response {\n submitCounter: number;\n constructor(jsonObject: any = {}) {\n this.populateFields(jsonObject);\n }\n\n protected populateFields(jsonObject: any = {}): void {\n for (const key of Object.keys(jsonObject)) {\n if (jsonObject[key] != null) {\n this[key] = jsonObject[key];\n }\n }\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "jsonObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "{}" + } + ], + "line": 2, + "jsdoctags": [ + { + "name": "jsonObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "{}", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "submitCounter", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 2 + } + ], + "methods": [ + { + "name": "populateFields", + "args": [ + { + "name": "jsonObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "{}" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 7, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "jsonObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "{}", + "tagName": { + "text": "param" + } + } + ] + } + ], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "Run", + "id": "class-Run-9f7bd88cacffe5cc3bca9ad1a8a87a9043eb2c8fb9f1c904cc286bb6e1ccc3fe132324aad90e46d0c9f8002cf1fd71346209e5942613203b66b5de86cf083f44", + "file": "src/app/domain/run.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { Project } from './project';\nimport { User } from './user';\n\nexport class Run {\n id: number;\n name: string;\n runCode: string;\n startTime: number;\n endTime: number;\n isLockedAfterEndDate: boolean;\n lastRun: string;\n numStudents: number;\n maxStudentsPerTeam: number;\n periods: string[];\n owner: User;\n sharedOwners: User[] = [];\n project: Project;\n private isSurvey: boolean;\n\n static readonly VIEW_STUDENT_WORK_PERMISSION: number = 1;\n static readonly GRADE_AND_MANAGE_PERMISSION: number = 2;\n static readonly VIEW_STUDENT_NAMES_PERMISSION: number = 3;\n\n constructor(jsonObject: any = {}) {\n for (let key of Object.keys(jsonObject)) {\n const value = jsonObject[key];\n if (key == 'owner') {\n this[key] = new User(value);\n } else if (key == 'project') {\n this[key] = new Project(value);\n } else if (key == 'sharedOwners') {\n const sharedOwners: User[] = [];\n for (let sharedOwner of value) {\n sharedOwners.push(new User(sharedOwner));\n }\n this[key] = sharedOwners;\n } else {\n this[key] = value;\n }\n }\n }\n\n public canViewStudentWork(userId): boolean {\n return (\n this.isOwner(userId) ||\n this.isSharedOwnerWithPermission(userId, Run.VIEW_STUDENT_WORK_PERMISSION)\n );\n }\n\n public canGradeAndManage(userId): boolean {\n return (\n this.isOwner(userId) ||\n this.isSharedOwnerWithPermission(userId, Run.GRADE_AND_MANAGE_PERMISSION)\n );\n }\n\n public canViewStudentNames(userId): boolean {\n return (\n this.isOwner(userId) ||\n this.isSharedOwnerWithPermission(userId, Run.VIEW_STUDENT_NAMES_PERMISSION)\n );\n }\n\n isOwner(userId): boolean {\n return this.owner.id == userId;\n }\n\n isSharedOwnerWithPermission(userId, permissionId): boolean {\n for (const sharedOwner of this.sharedOwners) {\n if (sharedOwner.id == userId) {\n return this.userHasPermission(sharedOwner, permissionId);\n }\n }\n return false;\n }\n\n userHasPermission(user: User, permission: number): boolean {\n return user.permissions.includes(permission);\n }\n\n isScheduled(now: number): boolean {\n return now < this.startTime;\n }\n\n isActive(now: number): boolean {\n return !this.isScheduled(now) && !this.isCompleted(now);\n }\n\n isCompleted(now: number): boolean {\n return this.hasEndTime() && this.endTime <= now;\n }\n\n private hasEndTime(): boolean {\n return this.endTime != null;\n }\n\n isSurveyRun(): boolean {\n return this.isSurvey;\n }\n}\n\nexport function sortByRunStartTimeDesc(a: Run, b: Run): number {\n return b.startTime - a.startTime;\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "jsonObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "{}" + } + ], + "line": 22, + "jsdoctags": [ + { + "name": "jsonObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "{}", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "endTime", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 9 + }, + { + "name": "GRADE_AND_MANAGE_PERMISSION", + "defaultValue": "2", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 21, + "modifierKind": [ + 126, + 148 + ] + }, + { + "name": "id", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 5 + }, + { + "name": "isLockedAfterEndDate", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 10 + }, + { + "name": "isSurvey", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "modifierKind": [ + 123 + ] + }, + { + "name": "lastRun", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 11 + }, + { + "name": "maxStudentsPerTeam", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 13 + }, + { + "name": "name", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 6 + }, + { + "name": "numStudents", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 12 + }, + { + "name": "owner", + "deprecated": false, + "deprecationMessage": "", + "type": "User", + "indexKey": "", + "optional": false, + "description": "", + "line": 15 + }, + { + "name": "periods", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 14 + }, + { + "name": "project", + "deprecated": false, + "deprecationMessage": "", + "type": "Project", + "indexKey": "", + "optional": false, + "description": "", + "line": 17 + }, + { + "name": "runCode", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 7 + }, + { + "name": "sharedOwners", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "User[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 16 + }, + { + "name": "startTime", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 8 + }, + { + "name": "VIEW_STUDENT_NAMES_PERMISSION", + "defaultValue": "3", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 22, + "modifierKind": [ + 126, + 148 + ] + }, + { + "name": "VIEW_STUDENT_WORK_PERMISSION", + "defaultValue": "1", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 20, + "modifierKind": [ + 126, + 148 + ] + } + ], + "methods": [ + { + "name": "canGradeAndManage", + "args": [ + { + "name": "userId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 50, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 125 + ], + "jsdoctags": [ + { + "name": "userId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "canViewStudentNames", + "args": [ + { + "name": "userId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 57, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 125 + ], + "jsdoctags": [ + { + "name": "userId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "canViewStudentWork", + "args": [ + { + "name": "userId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 43, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 125 + ], + "jsdoctags": [ + { + "name": "userId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "hasEndTime", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 93, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "isActive", + "args": [ + { + "name": "now", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 85, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "now", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isCompleted", + "args": [ + { + "name": "now", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 89, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "now", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isOwner", + "args": [ + { + "name": "userId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 64, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "userId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isScheduled", + "args": [ + { + "name": "now", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 81, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "now", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isSharedOwnerWithPermission", + "args": [ + { + "name": "userId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "permissionId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 68, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "userId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "permissionId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isSurveyRun", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 97, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "userHasPermission", + "args": [ + { + "name": "user", + "type": "User", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "permission", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 77, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "user", + "type": "User", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "permission", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "RunInfo", + "id": "class-RunInfo-a5d97388119b5d85f31398001ce169e8228ae60b5faf35744e31911af1e3e619653393f1cf03e3b81faec9d865feaf285829521ecc3ea2f2b5dec03f50f24b0a", + "file": "src/app/student/run-info.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "export class RunInfo {\n periods: string[];\n runCode: string;\n runId: number;\n runTitle: string;\n startTime: number;\n teacherName: string;\n error: string;\n name: string;\n wiseVersion: number;\n isSurvey: boolean;\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "error", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 8 + }, + { + "name": "isSurvey", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 11 + }, + { + "name": "name", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 9 + }, + { + "name": "periods", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 2 + }, + { + "name": "runCode", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 3 + }, + { + "name": "runId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 4 + }, + { + "name": "runTitle", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 5 + }, + { + "name": "startTime", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 6 + }, + { + "name": "teacherName", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 7 + }, + { + "name": "wiseVersion", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 10 + } + ], + "methods": [], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "RunMenuHarness", + "id": "class-RunMenuHarness-674c54caf2468be6bc92f9fc294c6df5f2bb59aba6a8e3aa508cbec50de96c5e8a9733d3f4cbb1e6d2510758b184d86fb67f6dfad1af029b20b97cd4c2a8e7ed", + "file": "src/app/teacher/run-menu/run-menu.harness.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { ComponentHarness } from '@angular/cdk/testing';\nimport { clickMenuButton } from '../../common/harness-helper';\nimport { MatMenuHarness } from '@angular/material/menu/testing';\n\nexport class RunMenuHarness extends ComponentHarness {\n static hostSelector = 'app-run-menu';\n private ARCHIVE_MENU_BUTTON_TEXT = 'archiveArchive';\n private UNARCHIVE_MENU_BUTTON_TEXT = 'unarchiveRestore';\n\n async clickArchiveMenuButton(): Promise {\n return await clickMenuButton(this, this.ARCHIVE_MENU_BUTTON_TEXT);\n }\n\n async clickUnarchiveMenuButton(): Promise {\n return await clickMenuButton(this, this.UNARCHIVE_MENU_BUTTON_TEXT);\n }\n\n async hasRestoreMenuButton(): Promise {\n const getMenu = this.locatorFor(MatMenuHarness);\n const menu = await getMenu();\n await menu.open();\n let foundRestoreMenuButton = false;\n for (const item of await menu.getItems()) {\n if ((await item.getText()) === this.UNARCHIVE_MENU_BUTTON_TEXT) {\n foundRestoreMenuButton = true;\n }\n }\n return foundRestoreMenuButton;\n }\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "ARCHIVE_MENU_BUTTON_TEXT", + "defaultValue": "'archiveArchive'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 7, + "modifierKind": [ + 123 + ] + }, + { + "name": "hostSelector", + "defaultValue": "'app-run-menu'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 6, + "modifierKind": [ + 126 + ] + }, + { + "name": "UNARCHIVE_MENU_BUTTON_TEXT", + "defaultValue": "'unarchiveRestore'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 8, + "modifierKind": [ + 123 + ] + } + ], + "methods": [ + { + "name": "clickArchiveMenuButton", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 10, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ] + }, + { + "name": "clickUnarchiveMenuButton", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 14, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ] + }, + { + "name": "hasRestoreMenuButton", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 18, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ] + } + ], + "indexSignatures": [], + "extends": [ + "ComponentHarness" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "ScoreConstraintStrategy", + "id": "class-ScoreConstraintStrategy-f83eb130b8937bf3a6924f3ba3d557c97ca4330d2e2106da10763d28f0dca90a9c3bc841a6c00e79725116f84dae267198bd60ef1ca5bf7a6839828724cb7278", + "file": "src/assets/wise5/common/constraint/strategies/ScoreConstraintStrategy.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { AbstractConstraintStrategy } from './AbstractConstraintStrategy';\n\nexport class ScoreConstraintStrategy extends AbstractConstraintStrategy {\n evaluate(criteria: any): boolean {\n const latestScoreAnnotation = this.annotationService.getLatestScoreAnnotation(\n criteria.params.nodeId,\n criteria.params.componentId,\n this.configService.getWorkgroupId(),\n 'any'\n );\n return (\n latestScoreAnnotation != null && this.isScoreInExpectedScores(criteria, latestScoreAnnotation)\n );\n }\n\n isScoreInExpectedScores(criteria: any, scoreAnnotation: any): boolean {\n const scoreValue = this.dataService.getScoreValueFromScoreAnnotation(\n scoreAnnotation,\n criteria.params.scoreId\n );\n return this.dataService.isScoreInExpectedScores(criteria.params.scores, scoreValue);\n }\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "annotationService", + "deprecated": false, + "deprecationMessage": "", + "type": "AnnotationService", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "completionService", + "deprecated": false, + "deprecationMessage": "", + "type": "CompletionService", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "componentServiceLookupService", + "deprecated": false, + "deprecationMessage": "", + "type": "ComponentServiceLookupService", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "configService", + "deprecated": false, + "deprecationMessage": "", + "type": "ConfigService", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "context", + "deprecated": false, + "deprecationMessage": "", + "type": "EvaluateConstraintContext", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "dataService", + "deprecated": false, + "deprecationMessage": "", + "type": "StudentDataService", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "notebookService", + "deprecated": false, + "deprecationMessage": "", + "type": "NotebookService", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "tagService", + "deprecated": false, + "deprecationMessage": "", + "type": "TagService", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + } + ], + "methods": [ + { + "name": "evaluate", + "args": [ + { + "name": "criteria", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 4, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "criteria", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "isScoreInExpectedScores", + "args": [ + { + "name": "criteria", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "scoreAnnotation", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 16, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "criteria", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "scoreAnnotation", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setContext", + "args": [ + { + "name": "context", + "type": "EvaluateConstraintContext", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 21, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "context", + "type": "EvaluateConstraintContext", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractConstraintStrategy" + } + } + ], + "indexSignatures": [], + "extends": [ + "AbstractConstraintStrategy" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "ScoreSummaryData", + "id": "class-ScoreSummaryData-0071d63e598ada350023719039ea8a94b38dc8a316694d1330556560eb53985265970c75ca83618ff00f8f783d22311ab73c8fa9c25a1b3e71c34a31d9dbb9e8", + "file": "src/assets/wise5/directives/summary-display/summary-data/ScoreSummaryData.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { Annotation } from '../../../common/Annotation';\nimport { ScoreSummaryDataPoint } from './ScoreSummaryDataPoint';\nimport { SummaryData } from './SummaryData';\n\nexport class ScoreSummaryData extends SummaryData {\n protected summaryDataPoints: ScoreSummaryDataPoint[];\n\n constructor(annotations: Annotation[], maxScore: number) {\n super();\n for (let scoreValue = 0; scoreValue <= maxScore; scoreValue++) {\n this.summaryDataPoints.push(new ScoreSummaryDataPoint(scoreValue));\n }\n annotations.forEach((annotation) => this.addAnnotationDataToSummaryData(annotation));\n }\n\n private addAnnotationDataToSummaryData(annotation: Annotation): void {\n const score = annotation.data.value;\n this.incrementSummaryData(score, 1);\n }\n\n protected generateNewDataPoint(id: string | number): ScoreSummaryDataPoint {\n return new ScoreSummaryDataPoint(id);\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "annotations", + "type": "Annotation[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "maxScore", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 6, + "jsdoctags": [ + { + "name": "annotations", + "type": "Annotation[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "maxScore", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "summaryDataPoints", + "deprecated": false, + "deprecationMessage": "", + "type": "ScoreSummaryDataPoint[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 6, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "SummaryData" + } + } + ], + "methods": [ + { + "name": "addAnnotationDataToSummaryData", + "args": [ + { + "name": "annotation", + "type": "Annotation", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 16, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "annotation", + "type": "Annotation", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "generateNewDataPoint", + "args": [ + { + "name": "id", + "type": "string | number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "ScoreSummaryDataPoint", + "typeParameters": [], + "line": 21, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "id", + "type": "string | number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryData" + } + }, + { + "name": "getDataPointById", + "args": [ + { + "name": "id", + "type": "string | number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "SummaryDataPoint", + "typeParameters": [], + "line": 13, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "id", + "type": "string | number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryData" + } + }, + { + "name": "getDataPointCountById", + "args": [ + { + "name": "id", + "type": "string | number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 32, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "id", + "type": "string | number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryData" + } + }, + { + "name": "getDataPoints", + "args": [], + "optional": false, + "returnType": "SummaryDataPoint[]", + "typeParameters": [], + "line": 17, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "SummaryData" + } + }, + { + "name": "incrementSummaryData", + "args": [ + { + "name": "id", + "type": "string | number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "incrementBy", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 21, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "id", + "type": "string | number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "incrementBy", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryData" + } + } + ], + "indexSignatures": [], + "extends": [ + "SummaryData" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "ScoreSummaryDataPoint", + "id": "class-ScoreSummaryDataPoint-431ee10926296cbeadc082df38bb26da8a828c07aff904faaddd3c60df74b1e756c8ed11860b8f93e57226ae22a1dd9118774abbaef1560bb013177e3312ffb1", + "file": "src/assets/wise5/directives/summary-display/summary-data/ScoreSummaryDataPoint.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { SummaryDataPoint } from './SummaryDataPoint';\n\nexport class ScoreSummaryDataPoint extends SummaryDataPoint {}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "count", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 3, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "SummaryDataPoint" + } + }, + { + "name": "id", + "deprecated": false, + "deprecationMessage": "", + "type": "number | string", + "indexKey": "", + "optional": false, + "description": "", + "line": 2, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "SummaryDataPoint" + } + } + ], + "methods": [ + { + "name": "getCount", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 14, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "SummaryDataPoint" + } + }, + { + "name": "getId", + "args": [], + "optional": false, + "returnType": "number | string", + "typeParameters": [], + "line": 10, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "SummaryDataPoint" + } + }, + { + "name": "incrementCount", + "args": [ + { + "name": "incrementBy", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 18, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "incrementBy", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDataPoint" + } + } + ], + "indexSignatures": [], + "extends": [ + "SummaryDataPoint" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "ScoreTransition", + "id": "class-ScoreTransition-c1c899fd24884e403c6e3c754599bbe5de59133eefc8d8b69d75133ca125a0d9f49044b044ed6051eec6cc5e92cc83421df8c0b8b717298fa11c8b6d42fa0150", + "file": "src/assets/wise5/services/authorBranchService.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { AuthorBranchParams } from '../common/AuthorBranchParams';\nimport { TeacherProjectService } from './teacherProjectService';\nimport {\n CHOICE_CHOSEN_VALUE,\n SCORE_VALUE,\n WORKGROUP_ID_VALUE\n} from '../../../app/domain/branchCriteria';\nimport { Transition } from '../common/Transition';\nimport { TransitionCriteria } from '../common/TransitionCriteria';\nimport { TransitionCriteriaParams } from '../common/TransitionCriteriaParams';\nimport { Injectable } from '@angular/core';\n\n@Injectable()\nexport abstract class AuthorBranchService {\n constructor(protected projectService: TeacherProjectService) {}\n\n protected createPathStep(\n params: AuthorBranchParams,\n branchNode: any,\n nodeId: string,\n pathIndex: number\n ): void {\n const newNode = this.projectService.createNode($localize`Path ${pathIndex + 1}`);\n newNode.id = nodeId;\n this.addTransitionFromBranchNodeToPathNode(params, branchNode, newNode, pathIndex);\n this.projectService.addNode(newNode);\n this.projectService.addApplicationNode(newNode);\n this.projectService.setIdToNode(newNode.id, newNode);\n this.projectService.addBranchPathTakenConstraints(newNode.id, branchNode.id, newNode.id);\n }\n\n protected setPathStepTransitions(newNodeIds: string[], mergeStepId: string): void {\n for (const newNodeId of newNodeIds) {\n this.projectService.getNode(newNodeId).getTransitionLogic().transitions = [\n new Transition(mergeStepId)\n ];\n }\n }\n\n protected setBranchNodeTransitionLogic(branchNode: any, criteria: string): void {\n branchNode.transitionLogic.maxPathsVisitable = 1;\n branchNode.transitionLogic.howToChooseAmongAvailablePaths =\n criteria === WORKGROUP_ID_VALUE ? WORKGROUP_ID_VALUE : 'random';\n branchNode.transitionLogic.canChangePath = false;\n }\n\n private addTransitionFromBranchNodeToPathNode(\n params: AuthorBranchParams,\n branchNode: any,\n newNode: any,\n pathIndex: number\n ): void {\n switch (params.criteria) {\n case SCORE_VALUE:\n branchNode.transitionLogic.transitions.push(\n new ScoreTransition(newNode.id, params, params.paths[pathIndex].split(','))\n );\n branchNode.transitionLogic.whenToChoosePath =\n params.branchStepId === params.nodeId ? 'studentDataChanged' : 'enterNode';\n break;\n case CHOICE_CHOSEN_VALUE:\n branchNode.transitionLogic.transitions.push(\n new ChoiceChosenTransition(newNode.id, params, [params.paths[pathIndex]])\n );\n branchNode.transitionLogic.whenToChoosePath =\n params.branchStepId === params.nodeId ? 'studentDataChanged' : 'enterNode';\n break;\n default:\n branchNode.transitionLogic.transitions.push(new Transition(newNode.id));\n branchNode.transitionLogic.whenToChoosePath = 'enterNode';\n }\n }\n}\n\nclass ScoreTransition extends Transition {\n constructor(toNodeId: string, params: AuthorBranchParams, scores: string[]) {\n super(toNodeId, [\n new TransitionCriteria(\n SCORE_VALUE,\n new TransitionCriteriaParams({\n nodeId: params.nodeId,\n componentId: params.componentId,\n scores: scores\n })\n )\n ]);\n }\n}\n\nclass ChoiceChosenTransition extends Transition {\n constructor(toNodeId: string, params: AuthorBranchParams, choiceIds: string[]) {\n super(toNodeId, [\n new TransitionCriteria(\n CHOICE_CHOSEN_VALUE,\n new TransitionCriteriaParams({\n nodeId: params.nodeId,\n componentId: params.componentId,\n choiceIds: choiceIds\n })\n )\n ]);\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "toNodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "params", + "type": "AuthorBranchParams", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "scores", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 75, + "jsdoctags": [ + { + "name": "toNodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "params", + "type": "AuthorBranchParams", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "scores", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "criteria", + "deprecated": false, + "deprecationMessage": "", + "type": "TransitionCriteria[]", + "indexKey": "", + "optional": true, + "description": "", + "line": 4, + "inheritance": { + "file": "Transition" + } + }, + { + "name": "to", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 5, + "inheritance": { + "file": "Transition" + } + } + ], + "methods": [], + "indexSignatures": [], + "extends": [ + "Transition" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "SelectAllItemsCheckboxHarness", + "id": "class-SelectAllItemsCheckboxHarness-5344bd56726a5d43edb342104fcfa296a5ee2749e6836ad02d0857b16a2aa5b63a51b34197f41ebaa781ff9dfdef6eaa6bd826dfe305c9ff73280d8ff3c3f3a4", + "file": "src/app/modules/library/select-all-items-checkbox/select-all-items-checkbox.harness.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { ComponentHarness } from '@angular/cdk/testing';\nimport { MatCheckboxHarness } from '@angular/material/checkbox/testing';\n\nexport class SelectAllItemsCheckboxHarness extends ComponentHarness {\n static hostSelector = 'select-all-items-checkbox';\n getCheckbox = this.locatorFor(MatCheckboxHarness);\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "getCheckbox", + "defaultValue": "this.locatorFor(MatCheckboxHarness)", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 6 + }, + { + "name": "hostSelector", + "defaultValue": "'select-all-items-checkbox'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 5, + "modifierKind": [ + 126 + ] + } + ], + "methods": [], + "indexSignatures": [], + "extends": [ + "ComponentHarness" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "SelectComponentHarness", + "id": "class-SelectComponentHarness-924512372f610bbf4af52fa68ddc366d27411419020b340aac8684d24491360050fc1b7fa49ddda83165c2d323303bec9fa4d8b66da2de65a4e7e58111aa7826", + "file": "src/app/authoring-tool/select-component/select-component.harness.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { ComponentHarness } from '@angular/cdk/testing';\nimport { MatSelectHarness } from '@angular/material/select/testing';\n\nexport class SelectComponentHarness extends ComponentHarness {\n static hostSelector = 'select-component';\n getSelect = this.locatorFor(MatSelectHarness);\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "getSelect", + "defaultValue": "this.locatorFor(MatSelectHarness)", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 6 + }, + { + "name": "hostSelector", + "defaultValue": "'select-component'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 5, + "modifierKind": [ + 126 + ] + } + ], + "methods": [], + "indexSignatures": [], + "extends": [ + "ComponentHarness" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "SelectMenuTestHelper", + "id": "class-SelectMenuTestHelper-c56355db9542205da4a8a2c50d96c1acaf5bb75dd45d4d8f96216c66a75a6f0aa2d7eeae005b762237b5bd41ed90372aa4b0de257db4b3b7b73d8ebcb46a024e", + "file": "src/app/modules/library/select-menu-test.helper.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { OverlayContainer } from '@angular/cdk/overlay';\nimport { inject, ComponentFixture, flush } from '@angular/core/testing';\nimport { By } from '@angular/platform-browser';\n\nexport class SelectMenuTestHelper {\n private _container: OverlayContainer;\n private _containerElement: HTMLElement;\n private _trigger: HTMLElement;\n\n public constructor(private _fixture: ComponentFixture) {\n inject([OverlayContainer], (oc: OverlayContainer) => {\n this._container = oc;\n this._containerElement = oc.getContainerElement();\n })();\n }\n\n public triggerMenu() {\n this._fixture.detectChanges();\n this._trigger = this._fixture.debugElement.query(By.css('.mat-select-trigger')).nativeElement;\n this._trigger.click();\n this._fixture.detectChanges();\n }\n\n public getOptions(): HTMLElement[] {\n return Array.from(\n this._containerElement.querySelectorAll('mat-option') as NodeListOf\n );\n }\n\n public selectOption(option: HTMLElement) {\n option.click();\n this._fixture.detectChanges();\n this._trigger.click();\n this._fixture.detectChanges();\n flush();\n }\n\n public selectOptionByKey(options: HTMLElement[], key: string) {\n options.forEach((option: HTMLElement) => {\n if (option.innerText.trim() === key) {\n this.selectOption(option);\n }\n });\n }\n\n public cleanup() {\n this._container.ngOnDestroy();\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "_fixture", + "type": "ComponentFixture", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 8, + "modifierKind": [ + 125 + ], + "jsdoctags": [ + { + "name": "_fixture", + "type": "ComponentFixture", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "_container", + "deprecated": false, + "deprecationMessage": "", + "type": "OverlayContainer", + "indexKey": "", + "optional": false, + "description": "", + "line": 6, + "modifierKind": [ + 123 + ] + }, + { + "name": "_containerElement", + "deprecated": false, + "deprecationMessage": "", + "type": "HTMLElement", + "indexKey": "", + "optional": false, + "description": "", + "line": 7, + "modifierKind": [ + 123 + ] + }, + { + "name": "_trigger", + "deprecated": false, + "deprecationMessage": "", + "type": "HTMLElement", + "indexKey": "", + "optional": false, + "description": "", + "line": 8, + "modifierKind": [ + 123 + ] + } + ], + "methods": [ + { + "name": "cleanup", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 46, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 125 + ] + }, + { + "name": "getOptions", + "args": [], + "optional": false, + "returnType": "HTMLElement[]", + "typeParameters": [], + "line": 24, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 125 + ] + }, + { + "name": "selectOption", + "args": [ + { + "name": "option", + "type": "HTMLElement", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 30, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 125 + ], + "jsdoctags": [ + { + "name": "option", + "type": "HTMLElement", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "selectOptionByKey", + "args": [ + { + "name": "options", + "type": "HTMLElement[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "key", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 38, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 125 + ], + "jsdoctags": [ + { + "name": "options", + "type": "HTMLElement[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "key", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "triggerMenu", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 17, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 125 + ] + } + ], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "SelectPeerGroupingDialogData", + "id": "class-SelectPeerGroupingDialogData-1d182780f9c661d3b4e2463c4c1785cfcbca19156f5b64aeaf4711458cc431b323c48fa760190bd08420bcae10bffea1c3fd5e4926b4329cb95b41e06cacbb22", + "file": "src/assets/wise5/authoringTool/peer-grouping/select-peer-grouping-dialog/select-peer-grouping-dialog.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { CdkScrollable } from '@angular/cdk/scrolling';\nimport { Component, Inject, OnInit } from '@angular/core';\nimport { MatButton } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport {\n MAT_DIALOG_DATA,\n MatDialog,\n MatDialogModule,\n MatDialogRef\n} from '@angular/material/dialog';\nimport { MatIcon } from '@angular/material/icon';\nimport { PeerGrouping } from '../../../../../app/domain/peerGrouping';\nimport { PeerGroupingAuthoringService } from '../../../services/peerGroupingAuthoringService';\nimport { CreateNewPeerGroupingDialogComponent } from '../create-new-peer-grouping-dialog/create-new-peer-grouping-dialog.component';\nimport { SelectPeerGroupingOptionComponent } from '../select-peer-grouping-option/select-peer-grouping-option.component';\n\nclass SelectPeerGroupingDialogData {\n peerGrouping: PeerGrouping;\n updateSelectedTag: (tag: string) => void;\n}\n\n@Component({\n templateUrl: './select-peer-grouping-dialog.component.html',\n styles: ['.peer-grouping { margin-bottom: 8px; }'],\n imports: [\n MatDialogModule,\n CdkScrollable,\n MatCardModule,\n SelectPeerGroupingOptionComponent,\n MatButton,\n MatIcon\n ]\n})\nexport class SelectPeerGroupingDialogComponent implements OnInit {\n peerGroupings: PeerGrouping[] = [];\n\n constructor(\n private dialog: MatDialog,\n private dialogRef: MatDialogRef,\n @Inject(MAT_DIALOG_DATA) private dialogData: SelectPeerGroupingDialogData,\n private peerGroupingAuthoringService: PeerGroupingAuthoringService\n ) {}\n\n ngOnInit(): void {\n this.peerGroupings = this.peerGroupingAuthoringService.getPeerGroupings();\n }\n\n selectPeerGrouping(peerGrouping: PeerGrouping): void {\n this.dialogData.peerGrouping = peerGrouping;\n this.dialogData.updateSelectedTag(peerGrouping.tag);\n }\n\n close(): void {\n this.dialogRef.close();\n }\n\n showNewPeerGroupingAuthoring(): void {\n this.dialog.open(CreateNewPeerGroupingDialogComponent, {\n panelClass: 'dialog-sm'\n });\n }\n\n deletePeerGrouping(peerGrouping: PeerGrouping): void {\n this.peerGroupingAuthoringService.deletePeerGrouping(peerGrouping);\n }\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "peerGrouping", + "deprecated": false, + "deprecationMessage": "", + "type": "PeerGrouping", + "indexKey": "", + "optional": false, + "description": "", + "line": 18 + }, + { + "name": "updateSelectedTag", + "deprecated": false, + "deprecationMessage": "", + "type": "function", + "indexKey": "", + "optional": false, + "description": "", + "line": 19 + } + ], + "methods": [], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "SelectRunsControlsHarness", + "id": "class-SelectRunsControlsHarness-617946c2b77054bdbbf19e3d0ab020bc0328d10d93f671cc4f10743d06fa9cd43f8544d6bc821b40a4aad6565e2a2f9399a18950067e2287f748b8c78d563be8", + "file": "src/app/teacher/select-runs-controls/select-runs-controls.harness.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { ComponentHarness } from '@angular/cdk/testing';\nimport { MatButtonHarness } from '@angular/material/button/testing';\nimport { MatCheckboxHarness } from '@angular/material/checkbox/testing';\n\nexport class SelectRunsControlsHarness extends ComponentHarness {\n static hostSelector = 'select-runs-controls';\n protected getArchiveButton = this.locatorFor(\n MatButtonHarness.with({ selector: '[matTooltip=\"Archive\"]' })\n );\n protected getSelectAllCheckbox = this.locatorFor(MatCheckboxHarness);\n protected getUnarchiveButton = this.locatorFor(\n MatButtonHarness.with({ selector: '[matTooltip=\"Restore\"]' })\n );\n\n async checkCheckbox(): Promise {\n return (await this.getSelectAllCheckbox()).check();\n }\n\n async uncheckCheckbox(): Promise {\n return (await this.getSelectAllCheckbox()).uncheck();\n }\n\n async toggleCheckbox(): Promise {\n return (await this.getSelectAllCheckbox()).toggle();\n }\n\n async isChecked(): Promise {\n return (await this.getSelectAllCheckbox()).isChecked();\n }\n\n async isIndeterminate(): Promise {\n return (await this.getSelectAllCheckbox()).isIndeterminate();\n }\n\n async clickArchiveButton(): Promise {\n return (await this.getArchiveButton()).click();\n }\n\n async clickUnarchiveButton(): Promise {\n return (await this.getUnarchiveButton()).click();\n }\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "getArchiveButton", + "defaultValue": "this.locatorFor(\n MatButtonHarness.with({ selector: '[matTooltip=\"Archive\"]' })\n )", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 7, + "modifierKind": [ + 124 + ] + }, + { + "name": "getSelectAllCheckbox", + "defaultValue": "this.locatorFor(MatCheckboxHarness)", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "modifierKind": [ + 124 + ] + }, + { + "name": "getUnarchiveButton", + "defaultValue": "this.locatorFor(\n MatButtonHarness.with({ selector: '[matTooltip=\"Restore\"]' })\n )", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "modifierKind": [ + 124 + ] + }, + { + "name": "hostSelector", + "defaultValue": "'select-runs-controls'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 6, + "modifierKind": [ + 126 + ] + } + ], + "methods": [ + { + "name": "checkCheckbox", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 15, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ] + }, + { + "name": "clickArchiveButton", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 35, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ] + }, + { + "name": "clickUnarchiveButton", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 39, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ] + }, + { + "name": "isChecked", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 27, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ] + }, + { + "name": "isIndeterminate", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 31, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ] + }, + { + "name": "toggleCheckbox", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 23, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ] + }, + { + "name": "uncheckCheckbox", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 19, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ] + } + ], + "indexSignatures": [], + "extends": [ + "ComponentHarness" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "SelectStepAndComponentCheckboxesComponentHarness", + "id": "class-SelectStepAndComponentCheckboxesComponentHarness-a40fe61ca3cf5c49c81fb383fde934632974c621c3c2eab2f7c7d2f59c5017a135de0b7feb44f3128e555dbcfb6908379d72e85547ca19ca74e10c8eb79e2913", + "file": "src/assets/wise5/classroomMonitor/dataExport/select-step-and-component-checkboxes/select-step-and-component-checkboxes.harness.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { ComponentHarness } from '@angular/cdk/testing';\nimport { MatButtonHarness } from '@angular/material/button/testing';\nimport { MatCheckboxHarness } from '@angular/material/checkbox/testing';\n\nexport class SelectStepAndComponentCheckboxesComponentHarness extends ComponentHarness {\n static hostSelector = 'select-step-and-component-checkboxes';\n\n getDeselectAllButton = this.locatorFor(MatButtonHarness.with({ text: 'Deselect All' }));\n getSelectAllButton = this.locatorFor(MatButtonHarness.with({ text: 'Select All' }));\n\n getCheckbox(labelText: string): Promise {\n return this.locatorFor(MatCheckboxHarness.with({ label: labelText }))();\n }\n\n getCheckboxes(): Promise {\n return this.locatorForAll(MatCheckboxHarness)();\n }\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "getDeselectAllButton", + "defaultValue": "this.locatorFor(MatButtonHarness.with({ text: 'Deselect All' }))", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 8 + }, + { + "name": "getSelectAllButton", + "defaultValue": "this.locatorFor(MatButtonHarness.with({ text: 'Select All' }))", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 9 + }, + { + "name": "hostSelector", + "defaultValue": "'select-step-and-component-checkboxes'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 6, + "modifierKind": [ + 126 + ] + } + ], + "methods": [ + { + "name": "getCheckbox", + "args": [ + { + "name": "labelText", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 11, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "labelText", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getCheckboxes", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 15, + "deprecated": false, + "deprecationMessage": "" + } + ], + "indexSignatures": [], + "extends": [ + "ComponentHarness" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "SelectStepAndComponentHarness", + "id": "class-SelectStepAndComponentHarness-23b439f63a78bcfb366294708a972bb12f84ca07cafc789a025253d3013745ef94d3117c7b3335a24ebc45a04d45277ba55ff49820d779ae7f537956c49a5111", + "file": "src/app/authoring-tool/select-step-and-component/select-step-and-component.harness.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { ComponentHarness } from '@angular/cdk/testing';\nimport { SelectStepHarness } from '../select-step/select-step.harness';\nimport { SelectComponentHarness } from '../select-component/select-component.harness';\n\nexport class SelectStepAndComponentHarness extends ComponentHarness {\n static hostSelector = 'select-step-and-component';\n getSelectComponent = this.locatorFor(SelectComponentHarness);\n getSelectStep = this.locatorFor(SelectStepHarness);\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "getSelectComponent", + "defaultValue": "this.locatorFor(SelectComponentHarness)", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 7 + }, + { + "name": "getSelectStep", + "defaultValue": "this.locatorFor(SelectStepHarness)", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 8 + }, + { + "name": "hostSelector", + "defaultValue": "'select-step-and-component'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 6, + "modifierKind": [ + 126 + ] + } + ], + "methods": [], + "indexSignatures": [], + "extends": [ + "ComponentHarness" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "SelectStepHarness", + "id": "class-SelectStepHarness-dd9b609e4ce010812ca816998d3838281f231203fa1e90a7f31fef3cc81f413ef8d485cdd8d17cf61c86bcc68d97d86a4e8fa2a0a28b5b148e8dfba6e2bb0eb6", + "file": "src/app/authoring-tool/select-step/select-step.harness.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { ComponentHarness } from '@angular/cdk/testing';\nimport { MatSelectHarness } from '@angular/material/select/testing';\n\nexport class SelectStepHarness extends ComponentHarness {\n static hostSelector = 'select-step';\n getSelect = this.locatorFor(MatSelectHarness);\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "getSelect", + "defaultValue": "this.locatorFor(MatSelectHarness)", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 6 + }, + { + "name": "hostSelector", + "defaultValue": "'select-step'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 5, + "modifierKind": [ + 126 + ] + } + ], + "methods": [], + "indexSignatures": [], + "extends": [ + "ComponentHarness" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "SeriesData", + "id": "class-SeriesData-54ffac91c967e06ce1b11de383c302a2b8dae54bb633de8eaf4d061d0d01d2f7d0ff2b9d7c8a8d43cf3bece30cf96c7f8c6715bbf16cf6ebf9adcf1b697e8c96", + "file": "src/assets/wise5/common/SeriesData.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { SeriesDataPoint } from './SeriesDataPoint';\n\nexport class SeriesData {\n private dataPoints: SeriesDataPoint[];\n\n constructor(dataPoints?: SeriesDataPoint[]) {\n this.dataPoints = dataPoints ?? [];\n }\n\n getDataPoints(): SeriesDataPoint[] {\n return this.dataPoints;\n }\n\n addDataPoint(dataPoint: SeriesDataPoint): void {\n this.dataPoints.push(dataPoint);\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "dataPoints", + "type": "SeriesDataPoint[]", + "deprecated": false, + "deprecationMessage": "", + "optional": true + } + ], + "line": 4, + "jsdoctags": [ + { + "name": "dataPoints", + "type": "SeriesDataPoint[]", + "deprecated": false, + "deprecationMessage": "", + "optional": true, + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "dataPoints", + "deprecated": false, + "deprecationMessage": "", + "type": "SeriesDataPoint[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 4, + "modifierKind": [ + 123 + ] + } + ], + "methods": [ + { + "name": "addDataPoint", + "args": [ + { + "name": "dataPoint", + "type": "SeriesDataPoint", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 14, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "dataPoint", + "type": "SeriesDataPoint", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getDataPoints", + "args": [], + "optional": false, + "returnType": "SeriesDataPoint[]", + "typeParameters": [], + "line": 10, + "deprecated": false, + "deprecationMessage": "" + } + ], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "SeriesDataPoint", + "id": "class-SeriesDataPoint-85c8cd58e7b2fad88a3c091366334e0221b64b4e4d31db69a1c7647e902dcafbf607bff147f9766ab5d6e16d22206105b2c51eb66edb95056049ba2ace74b5f3", + "file": "src/assets/wise5/common/SeriesDataPoint.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "export class SeriesDataPoint {\n name: string | number;\n y: number;\n color: string;\n\n constructor(name: string | number, y: number, color?: string) {\n this.name = name;\n this.y = y;\n if (color) {\n this.color = color;\n }\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "name", + "type": "string | number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "y", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "color", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "optional": true + } + ], + "line": 4, + "jsdoctags": [ + { + "name": "name", + "type": "string | number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "y", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "color", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "optional": true, + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "color", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 4 + }, + { + "name": "name", + "deprecated": false, + "deprecationMessage": "", + "type": "string | number", + "indexKey": "", + "optional": false, + "description": "", + "line": 2 + }, + { + "name": "y", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 3 + } + ], + "methods": [], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "ShowGroupWorkComponent", + "id": "class-ShowGroupWorkComponent-34c0ef08e979d213070128068076f660831ad75ea90b69adb06076d89380610c8ee510b439e739e28177b877f684ffb3b6e7a91d6c1d1f8c91ebf37cf034db86", + "file": "src/assets/wise5/components/showGroupWork/ShowGroupWorkComponent.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { Component } from '../../common/Component';\n\nexport class ShowGroupWorkComponent extends Component {\n isGradable(): boolean {\n return false;\n }\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "content", + "deprecated": false, + "deprecationMessage": "", + "type": "ComponentContent", + "indexKey": "", + "optional": false, + "description": "", + "line": 4, + "inheritance": { + "file": "Component" + } + }, + { + "name": "id", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 5, + "inheritance": { + "file": "Component" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 6, + "inheritance": { + "file": "Component" + } + } + ], + "methods": [ + { + "name": "isGradable", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 4, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "Component" + } + }, + { + "name": "getConnectedComponent", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 43, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "Component" + } + }, + { + "name": "hasConnectedComponent", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 14, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "Component" + } + }, + { + "name": "hasConnectedComponentAlwaysField", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 18, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "Component" + } + }, + { + "name": "isAcceptsAssets", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 34, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "Component" + } + } + ], + "indexSignatures": [], + "extends": [ + "Component" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "ShowGroupWorkInfo", + "id": "class-ShowGroupWorkInfo-9294f22b03e687b56070eed831b9c88de68a55a0356d8113452e50d824436adaf7127fc508461f575bbb5640b4229f92fb3ef79e7fbfd9e3b87a419abb22232e", + "file": "src/assets/wise5/components/showGroupWork/ShowGroupWorkInfo.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { ComponentInfo } from '../ComponentInfo';\n\nexport class ShowGroupWorkInfo extends ComponentInfo {\n protected description: string = $localize`Students are shown work that everyone in their group submitted for a specific item.`;\n protected label: string = $localize`Show Group Work`;\n protected previewExamples: any[] = [\n {\n label: $localize`Show Group Work`,\n content: {\n id: 'abcde12345',\n type: 'ShowGroupWork',\n prompt: `Hi! You've been paired with a classmate to improve your explanation.
Here are your responses to the question \"How do you think Mt. Hood formed?\":`,\n showSaveButton: false,\n showSubmitButton: false,\n showWorkNodeId: '',\n showWorkComponentId: '',\n peerGroupingTag: '',\n isShowMyWork: true,\n layout: 'column',\n constraints: []\n }\n }\n ];\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "description", + "defaultValue": "$localize`Students are shown work that everyone in their group submitted for a specific item.`", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 4, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentInfo" + } + }, + { + "name": "label", + "defaultValue": "$localize`Show Group Work`", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 5, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentInfo" + } + }, + { + "name": "previewExamples", + "defaultValue": "[\n {\n label: $localize`Show Group Work`,\n content: {\n id: 'abcde12345',\n type: 'ShowGroupWork',\n prompt: `Hi! You've been paired with a classmate to improve your explanation.
Here are your responses to the question \"How do you think Mt. Hood formed?\":`,\n showSaveButton: false,\n showSubmitButton: false,\n showWorkNodeId: '',\n showWorkComponentId: '',\n peerGroupingTag: '',\n isShowMyWork: true,\n layout: 'column',\n constraints: []\n }\n }\n ]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 6, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentInfo" + } + } + ], + "methods": [ + { + "name": "getDescription", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 6, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentInfo" + } + }, + { + "name": "getLabel", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 10, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentInfo" + } + }, + { + "name": "getPreviewExamples", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 14, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentInfo" + } + } + ], + "indexSignatures": [], + "extends": [ + "ComponentInfo" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "ShowMyWorkInfo", + "id": "class-ShowMyWorkInfo-e6987fe1ece9184a31269bc0c3ebb358c0e91a53e72f7a24b6e701c12de0cc8a707f5685dc529791004d28ddf5fbd51958696aa783df002737d45ba6c58c089a", + "file": "src/assets/wise5/components/showMyWork/ShowMyWorkInfo.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { ComponentInfo } from '../ComponentInfo';\n\nexport class ShowMyWorkInfo extends ComponentInfo {\n protected description: string = $localize`Students are shown work that they submitted for a specific item.`;\n protected label: string = $localize`Show My Work`;\n protected previewExamples: any[] = [\n {\n label: $localize`Show My Work`,\n content: {\n id: 'abcde12345',\n type: 'ShowMyWork',\n prompt: 'Here is your previous answer to the question \"How do you think Mt. Hood formed?\":',\n showSaveButton: false,\n showSubmitButton: false,\n showWorkNodeId: '',\n showWorkComponentId: '',\n constraints: []\n }\n }\n ];\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "description", + "defaultValue": "$localize`Students are shown work that they submitted for a specific item.`", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 4, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentInfo" + } + }, + { + "name": "label", + "defaultValue": "$localize`Show My Work`", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 5, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentInfo" + } + }, + { + "name": "previewExamples", + "defaultValue": "[\n {\n label: $localize`Show My Work`,\n content: {\n id: 'abcde12345',\n type: 'ShowMyWork',\n prompt: 'Here is your previous answer to the question \"How do you think Mt. Hood formed?\":',\n showSaveButton: false,\n showSubmitButton: false,\n showWorkNodeId: '',\n showWorkComponentId: '',\n constraints: []\n }\n }\n ]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 6, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentInfo" + } + } + ], + "methods": [ + { + "name": "getDescription", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 6, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentInfo" + } + }, + { + "name": "getLabel", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 10, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentInfo" + } + }, + { + "name": "getPreviewExamples", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 14, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentInfo" + } + } + ], + "indexSignatures": [], + "extends": [ + "ComponentInfo" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "ShowStudentInfoHarness", + "id": "class-ShowStudentInfoHarness-3fb688632a69f906a0012e7dc4186e9682bad04a1a32ac7dbcc5c2494eb88461eecaa3cc6108426e85a7e7ee08e4f087b4dc76c262a5a0e13e24cf167fa10ac2", + "file": "src/assets/wise5/classroomMonitor/classroomMonitorComponents/manageStudents/show-student-info/show-student-info.harness.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { ComponentHarness } from '@angular/cdk/testing';\n\nexport class ShowStudentInfoHarness extends ComponentHarness {\n static hostSelector = 'show-student-info';\n protected getUsername = this.locatorFor('.username');\n\n async getUsernameText(): Promise {\n return (await this.getUsername()).text();\n }\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "getUsername", + "defaultValue": "this.locatorFor('.username')", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 5, + "modifierKind": [ + 124 + ] + }, + { + "name": "hostSelector", + "defaultValue": "'show-student-info'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 4, + "modifierKind": [ + 126 + ] + } + ], + "methods": [ + { + "name": "getUsernameText", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 7, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ] + } + ], + "indexSignatures": [], + "extends": [ + "ComponentHarness" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "SimulationNode", + "id": "class-SimulationNode-e3b120679d7c8f2ab812c9a4ede1da37f9c6803d457146db8b817d1e22470f29a3a0a1a3a7bedcdadb73550be92820214ecbda775149e2711e0d64ff98254c88", + "file": "src/assets/wise5/authoringTool/addNode/choose-simulation/choose-simulation.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { Component } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { RouterModule } from '@angular/router';\nimport { CardSelectorComponent } from '../../components/card-selector/card-selector.component';\nimport { AbstractImportStepComponent } from '../abstract-import-step/abstract-import-step.component';\n\nclass SimulationNode {\n metadata = {\n subjects: []\n };\n type: string;\n constructor(node: any) {\n Object.assign(this, node);\n }\n}\n\n@Component({\n imports: [\n CardSelectorComponent,\n FormsModule,\n MatButtonModule,\n MatDividerModule,\n MatFormFieldModule,\n MatIconModule,\n MatInputModule,\n MatProgressBarModule,\n MatSelectModule,\n MatTooltipModule,\n RouterModule\n ],\n templateUrl: './choose-simulation.component.html',\n styleUrls: ['./choose-simulation.component.scss', '../../add-content.scss']\n})\nexport class ChooseSimulationComponent extends AbstractImportStepComponent {\n private allNodes: SimulationNode[] = [];\n protected filteredNodes: SimulationNode[] = [];\n protected project: any;\n private projectItems: any;\n protected searchText: string = '';\n protected selectedNode: string;\n protected selectedSubjects: string[] = [];\n protected subjects: string[] = [];\n\n ngOnInit(): void {\n super.ngOnInit();\n this.importProjectId = this.projectService.getSimulationProjectId();\n this.showSimulationProject();\n }\n\n private showSimulationProject(): void {\n this.projectService.retrieveProjectById(this.importProjectId).then((projectJSON) => {\n this.project = projectJSON;\n const nodeOrderOfProject = this.projectService.getNodeOrderOfProject(this.project);\n this.projectItems = nodeOrderOfProject.nodes.slice(1); // remove root node from consideration\n const allSubjects: string[] = [];\n this.projectItems.forEach((item) => {\n if (item.node.type !== 'group') {\n const simulationNode = new SimulationNode(item.node);\n this.allNodes.push(simulationNode);\n allSubjects.push(...simulationNode.metadata.subjects);\n }\n });\n this.filteredNodes = this.allNodes;\n this.subjects = Array.from(new Set(allSubjects)).sort();\n });\n }\n\n protected filter(): void {\n this.filteredNodes = this.allNodes.filter((node: SimulationNode) => {\n const isSearchTextFound = this.isSearchTextFound(this.searchText, JSON.stringify(node));\n if (this.isAnySubjectChosen()) {\n return isSearchTextFound && this.isSubjectFound(this.selectedSubjects, node);\n }\n return isSearchTextFound;\n });\n }\n\n private isSearchTextFound(searchText: string, testText: string): boolean {\n return testText.toLowerCase().includes(searchText.toLowerCase());\n }\n\n private isAnySubjectChosen(): boolean {\n return this.selectedSubjects.length > 0;\n }\n\n private isSubjectFound(selectedSubjects: any[], resource: any): boolean {\n return selectedSubjects.some((subject) => resource.metadata.subjects.includes(subject));\n }\n\n protected clearFilters(): void {\n this.searchText = '';\n this.selectedSubjects = [];\n this.filter();\n }\n\n protected getNumItemsFound(): number {\n return this.filteredNodes.filter((node: SimulationNode) => {\n return node.type != 'group';\n }).length;\n }\n\n protected previewNode(node: any): void {\n window.open(`${this.project.previewProjectURL}/${node.id}`);\n }\n\n protected itemSelected(item: any): void {\n this.selectedNode = item;\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 19, + "jsdoctags": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "metadata", + "defaultValue": "{\n subjects: []\n }", + "deprecated": false, + "deprecationMessage": "", + "type": "object", + "indexKey": "", + "optional": false, + "description": "", + "line": 16 + }, + { + "name": "type", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 19 + } + ], + "methods": [], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "Standard", + "id": "class-Standard-519713f12dee763c3ee2d915e6443ccee0aea0c86a51fbc6bfa3d59b284c0c340ea79e56693a217557b7bd67675229e007da0a28beaacb01400edf7767943870", + "file": "src/app/modules/library/standard.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "export type StandardType = 'NGSS' | 'Common Core' | 'Learning For Justice';\n\nexport class Standard {\n id: string = '';\n name: string = '';\n type: StandardType;\n url: string = '';\n\n constructor(id: string = '', name: string = '', type: StandardType, url: string = '') {\n this.id = id;\n this.name = name;\n this.type = type;\n this.url = url;\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "''" + }, + { + "name": "name", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "''" + }, + { + "name": "type", + "type": "StandardType", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "url", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "''" + } + ], + "line": 7, + "jsdoctags": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "''", + "tagName": { + "text": "param" + } + }, + { + "name": "name", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "''", + "tagName": { + "text": "param" + } + }, + { + "name": "type", + "type": "StandardType", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "url", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "''", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "id", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 4 + }, + { + "name": "name", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 5 + }, + { + "name": "type", + "deprecated": false, + "deprecationMessage": "", + "type": "StandardType", + "indexKey": "", + "optional": false, + "description": "", + "line": 6 + }, + { + "name": "url", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 7 + } + ], + "methods": [], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "Student", + "id": "class-Student-7ec24c09255270f62e8cdb78d2d2ff4f0296f6c0237da4d4cc66a19a469f3df2865db7c858e906fa9079ae33786b962f8ffacf61cb8cb4561aa5bce8717195f2", + "file": "src/app/domain/student.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { User } from './user';\n\nexport class Student extends User {\n gender: string;\n googleUserId: string;\n birthMonth: number;\n birthDay: number;\n securityQuestion: string;\n securityAnswer: string;\n accessCode: string;\n period: string;\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "accessCode", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 10 + }, + { + "name": "birthDay", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 7 + }, + { + "name": "birthMonth", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 6 + }, + { + "name": "gender", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 4 + }, + { + "name": "googleUserId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 5 + }, + { + "name": "period", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 11 + }, + { + "name": "securityAnswer", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 9 + }, + { + "name": "securityQuestion", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 8 + }, + { + "name": "displayName", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 2, + "inheritance": { + "file": "User" + } + }, + { + "name": "firstName", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 3, + "inheritance": { + "file": "User" + } + }, + { + "name": "id", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 4, + "inheritance": { + "file": "User" + } + }, + { + "name": "isGoogleUser", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 5, + "inheritance": { + "file": "User" + } + }, + { + "name": "isRecaptchaInvalid", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 6, + "inheritance": { + "file": "User" + } + }, + { + "name": "isRecaptchaRequired", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 7, + "inheritance": { + "file": "User" + } + }, + { + "name": "language", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 8, + "inheritance": { + "file": "User" + } + }, + { + "name": "lastName", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 9, + "inheritance": { + "file": "User" + } + }, + { + "name": "microsoftUserId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "inheritance": { + "file": "User" + } + }, + { + "name": "permissions", + "deprecated": false, + "deprecationMessage": "", + "type": "number[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "inheritance": { + "file": "User" + } + }, + { + "name": "roles", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "inheritance": { + "file": "User" + } + }, + { + "name": "token", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "inheritance": { + "file": "User" + } + }, + { + "name": "username", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "inheritance": { + "file": "User" + } + } + ], + "methods": [], + "indexSignatures": [], + "extends": [ + "User" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "StudentAssetDataExportStrategy", + "id": "class-StudentAssetDataExportStrategy-1cfbee22fe4a76e7792e3fb440496719d1b62695b7f384233dd48843c3809aa73fe6cad8cbb2d96fae501309e8cbd7cc235984202b8b39f9367c1a0029122517", + "file": "src/assets/wise5/classroomMonitor/dataExport/strategies/StudentAssetDataExportStrategy.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { AbstractDataExportStrategy } from './AbstractDataExportStrategy';\n\nexport class StudentAssetDataExportStrategy extends AbstractDataExportStrategy {\n export() {\n this.controller.showDownloadingExportMessage();\n this.dataExportService.retrieveStudentAssetsExport().then(() => {\n this.controller.hideDownloadingExportMessage();\n });\n }\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "allOrLatest", + "defaultValue": "'all'", + "deprecated": false, + "deprecationMessage": "", + "type": "\"all\" | \"latest\"", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "annotationService", + "deprecated": false, + "deprecationMessage": "", + "type": "AnnotationService", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "configService", + "deprecated": false, + "deprecationMessage": "", + "type": "ConfigService", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "context", + "deprecated": false, + "deprecationMessage": "", + "type": "DataExportContext", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "controller", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "dataExportService", + "deprecated": false, + "deprecationMessage": "", + "type": "DataExportService", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "dataService", + "deprecated": false, + "deprecationMessage": "", + "type": "TeacherDataService", + "indexKey": "", + "optional": false, + "description": "", + "line": 20, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "projectService", + "deprecated": false, + "deprecationMessage": "", + "type": "TeacherProjectService", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + } + ], + "methods": [ + { + "name": "export", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 4, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "generateCSVFile", + "args": [ + { + "name": "rows", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "fileName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 194, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "rows", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "fileName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "generateExportFileName", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentTypeWithUnderscore", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 179, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentTypeWithUnderscore", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "getColumnValue", + "args": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 113, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "getSelectedNodesMap", + "args": [ + { + "name": "selectedNodes", + "type": "[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]" + } + ], + "optional": false, + "returnType": "{}", + "typeParameters": [], + "line": 62, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet a mapping of node/component id strings to true.\nexample if\nselectedNodes = [\n {\n nodeId: \"node1\",\n componentId: \"343b8aesf7\"\n },\n {\n nodeId: \"node2\",\n componentId: \"b34gaf0ug2\"\n },\n {\n nodeId: \"node3\"\n }\n]\n\nthis function will return\n{\n \"node1-343b8aesf7\": true,\n \"node2-b34gaf0ug2\": true,\n \"node3\": true\n}\n\na componentId field\n", + "description": "

Get a mapping of node/component id strings to true.\nexample if\nselectedNodes = [\n {\n nodeId: "node1",\n componentId: "343b8aesf7"\n },\n {\n nodeId: "node2",\n componentId: "b34gaf0ug2"\n },\n {\n nodeId: "node3"\n }\n]

\n

this function will return\n{\n "node1-343b8aesf7": true,\n "node2-b34gaf0ug2": true,\n "node3": true\n}

\n

a componentId field

\n", + "jsdoctags": [ + { + "name": { + "pos": 1979, + "end": 1992, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "selectedNodes" + }, + "type": "[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]", + "tagName": { + "pos": 1973, + "end": 1978, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

an array of objects that contain a nodeId field and maybe also\na componentId field

\n" + }, + { + "tagName": { + "pos": 2087, + "end": 2093, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

a mapping of node/component id strings to true

\n" + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "getStudentDataString", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 157, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the plain text representation of the student work.\n", + "description": "

Get the plain text representation of the student work.

\n", + "jsdoctags": [ + { + "name": { + "pos": 5328, + "end": 5342, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 5322, + "end": 5327, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

A component state that contains the student work.

\n", + "typeExpression": { + "pos": 5343, + "end": 5351, + "kind": 310, + "id": 0, + "flags": 16842752, + "modifierFlagsCache": 0, + "transformFlags": 0, + "type": { + "pos": 5344, + "end": 5350, + "kind": 151, + "id": 0, + "flags": 16777216, + "transformFlags": 1 + } + } + }, + { + "tagName": { + "pos": 5408, + "end": 5415, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

A string that can be placed in a csv cell.

\n", + "returnType": "string" + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "insertColumnAtEnd", + "args": [ + { + "name": "headerRow", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 121, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "headerRow", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "insertColumnBeforeResponseColumn", + "args": [ + { + "name": "headerRow", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 117, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "headerRow", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "isComponentSelected", + "args": [ + { + "name": "selectedNodesMap", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 138, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if a component is selected\nto true\nexample\n{\n \"node1-38fj20egrj\": true,\n \"node1-20dbj2e0sf\": true\n}\n", + "description": "

Check if a component is selected\nto true\nexample\n{\n "node1-38fj20egrj": true,\n "node1-20dbj2e0sf": true\n}

\n", + "jsdoctags": [ + { + "name": { + "pos": 4590, + "end": 4606, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "selectedNodesMap" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4584, + "end": 4589, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

a map of node id and component id strings\nto true\nexample\n{\n"node1-38fj20egrj": true,\n"node1-20dbj2e0sf": true\n}

\n" + }, + { + "name": { + "pos": 4766, + "end": 4772, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4760, + "end": 4765, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id to check

\n" + }, + { + "name": { + "pos": 4806, + "end": 4817, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4800, + "end": 4805, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component id to check

\n" + }, + { + "tagName": { + "pos": 4850, + "end": 4856, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether the component is selected

\n" + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "populateColumnNameMappings", + "args": [ + { + "name": "columnNames", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 103, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "columnNames", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "setColumnValue", + "args": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "value", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 109, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "value", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "setDataExportContext", + "args": [ + { + "name": "context", + "type": "DataExportContext", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "context", + "type": "DataExportContext", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "setRunInfo", + "args": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + } + ], + "indexSignatures": [], + "extends": [ + "AbstractDataExportStrategy" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "StudentDialogResponse", + "id": "class-StudentDialogResponse-5bbd29ff7a95c6ea7f10154e12ceb14bf0a807092514fdcdd5d336f7c255e06a6f57fcfab3dfa380bb756a05014700835129785708ad79011e6ba853e5f0f946", + "file": "src/assets/wise5/components/dialogGuidance/StudentDialogResponse.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { DialogResponse } from './DialogResponse';\n\nexport class StudentDialogResponse extends DialogResponse {\n ideas: string[];\n user: string = 'Student';\n\n constructor(text: string, timestamp: number, workgroupId: number) {\n super(text, timestamp, workgroupId);\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "timestamp", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 5, + "jsdoctags": [ + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "timestamp", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "ideas", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 4 + }, + { + "name": "user", + "defaultValue": "'Student'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 5, + "inheritance": { + "file": "DialogResponse" + } + }, + { + "name": "text", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 2, + "inheritance": { + "file": "DialogResponse" + } + }, + { + "name": "timestamp", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 4, + "inheritance": { + "file": "DialogResponse" + } + }, + { + "name": "workgroupId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 5, + "inheritance": { + "file": "DialogResponse" + } + } + ], + "methods": [], + "indexSignatures": [], + "extends": [ + "DialogResponse" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "StudentProgress", + "id": "class-StudentProgress-407fa689331e284c5d27e40227c94ae246d0f66d641592b2a2c2a616fcab791bb9461aff682b7bae9d68d907da0e7bc323d2d97a2b6c2050e8d36eec4802da4a", + "file": "src/assets/wise5/classroomMonitor/student-progress/student-progress.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { Component, OnInit, ViewEncapsulation } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { ConfigService } from '../../services/configService';\nimport { ClassroomStatusService } from '../../services/classroomStatusService';\nimport { TeacherDataService } from '../../services/teacherDataService';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { ProjectCompletion } from '../../common/ProjectCompletion';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatListModule } from '@angular/material/list';\nimport { MatTableModule } from '@angular/material/table';\nimport { CommonModule } from '@angular/common';\nimport { WorkgroupSelectAutocompleteComponent } from '../../../../app/classroom-monitor/workgroup-select/workgroup-select-autocomplete/workgroup-select-autocomplete.component';\nimport { ProjectProgressComponent } from '../classroomMonitorComponents/studentProgress/project-progress/project-progress.component';\n\n@Component({\n encapsulation: ViewEncapsulation.None,\n imports: [\n CommonModule,\n MatButtonModule,\n MatIconModule,\n MatListModule,\n MatTableModule,\n ProjectProgressComponent,\n WorkgroupSelectAutocompleteComponent\n ],\n selector: 'student-progress',\n styleUrl: './student-progress.component.scss',\n templateUrl: './student-progress.component.html'\n})\nexport class StudentProgressComponent implements OnInit {\n protected permissions: any;\n protected sort: any;\n protected sortedStudents: StudentProgress[];\n private subscriptions: Subscription = new Subscription();\n protected sortOptions: any = {\n team: {\n label: $localize`Team`,\n fieldName: 'workgroupId',\n isNumeric: true\n },\n student: {\n label: $localize`Student`,\n fieldName: 'username',\n isNumeric: false\n },\n firstName: {\n label: $localize`First Name`,\n fieldName: 'firstName',\n isNumeric: false\n },\n lastName: {\n label: $localize`Last Name`,\n fieldName: 'lastName',\n isNumeric: false\n },\n location: {\n label: $localize`Location`,\n fieldName: 'order',\n isNumeric: true\n },\n completion: {\n label: $localize`Completion`,\n fieldName: 'completionPct',\n isNumeric: true\n },\n score: {\n label: $localize`Score`,\n fieldName: 'scorePct',\n isNumeric: true\n }\n };\n private students: StudentProgress[] = [];\n\n constructor(\n private classroomStatusService: ClassroomStatusService,\n private configService: ConfigService,\n private dataService: TeacherDataService,\n private route: ActivatedRoute,\n private router: Router\n ) {}\n\n ngOnInit(): void {\n this.sort = this.dataService.studentProgressSort;\n this.permissions = this.configService.getPermissions();\n this.initializeStudents();\n this.sortWorkgroups();\n this.subscriptions.add(\n this.classroomStatusService.studentStatusReceived$.subscribe((args) => {\n this.updateTeam(args.studentStatus.workgroupId);\n })\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n private initializeStudents(): void {\n this.configService\n .getClassmateUserInfos()\n .filter((workgroup: any) => workgroup.workgroupId != null)\n .forEach((workgroup: any) => {\n const workgroupId = workgroup.workgroupId;\n const userNames = this.configService\n .getDisplayUsernamesByWorkgroupId(workgroupId)\n .split(', ');\n userNames.forEach((user: any) => {\n const names = user.split(' ');\n const student = new StudentProgress({\n periodId: workgroup.periodId,\n periodName: workgroup.periodName,\n workgroupId: workgroupId,\n username: names[0] + ' ' + names[1],\n firstName: names[0],\n lastName: names[1]\n });\n this.students.push(student);\n this.updateTeam(workgroupId);\n });\n });\n }\n\n private updateTeam(workgroupId: number): void {\n const location = this.classroomStatusService.getCurrentNodeLocationForWorkgroupId(workgroupId);\n const completion = this.classroomStatusService.getStudentProjectCompletion(workgroupId);\n const score = this.getStudentTotalScore(workgroupId) || 0;\n const maxScore = this.classroomStatusService.getMaxScoreForWorkgroupId(workgroupId) ?? 0;\n this.students\n .filter((student) => student.workgroupId === workgroupId)\n .forEach((student) => {\n student.position = location?.position || '';\n student.order = location?.order || 0;\n student.completion = completion;\n student.completionPct = completion.completionPct || 0;\n student.score = score;\n student.maxScore = maxScore;\n student.scorePct = maxScore ? score / maxScore : score;\n });\n }\n\n private getStudentTotalScore(workgroupId: number): number {\n return this.dataService.getTotalScoreByWorkgroupId(workgroupId);\n }\n\n private sortWorkgroups(): void {\n this.sortedStudents = [...this.students];\n const dir = this.sort.charAt(0) === '-' ? 'desc' : 'asc';\n const sort = this.sort.charAt(0) === '-' ? this.sort.slice(1) : this.sort;\n this.sortedStudents.sort(\n this.createSort(this.sortOptions[sort].fieldName, dir, this.sortOptions[sort].isNumeric)\n );\n }\n\n private createSort(fieldName: string, direction: 'asc' | 'desc', isNumeric: boolean): any {\n return (studentA: StudentProgress, studentB: StudentProgress): number => {\n const localeCompare = this.localeCompareBy(\n fieldName,\n studentA,\n studentB,\n direction,\n isNumeric\n );\n return fieldName !== 'workgroupId' && localeCompare === 0\n ? this.localeCompareBy('workgroupId', studentA, studentB, 'asc', true)\n : localeCompare;\n };\n }\n\n private localeCompareBy(\n fieldName: string,\n studentA: any,\n studentB: any,\n direction: 'asc' | 'desc',\n isNumeric: boolean\n ): number {\n const valueA = studentA[fieldName];\n const valueB = studentB[fieldName];\n if (isNumeric) {\n const numA = parseFloat(valueA);\n const numB = parseFloat(valueB);\n return direction === 'asc' ? numA - numB : numB - numA;\n }\n return direction === 'asc' ? valueA.localeCompare(valueB) : valueB.localeCompare(valueA);\n }\n\n protected isWorkgroupShown(workgroup: number): boolean {\n return this.dataService.isWorkgroupShown(workgroup);\n }\n\n protected showStudentGradingView(workgroup: any): void {\n if (this.classroomStatusService.hasStudentStatus(workgroup.workgroupId)) {\n this.router.navigate([workgroup.workgroupId], { relativeTo: this.route });\n }\n }\n\n protected setSort(value: string): void {\n this.sort = this.sort === value ? `-${value}` : value;\n this.dataService.studentProgressSort = this.sort;\n this.sortWorkgroups();\n }\n}\n\nexport class StudentProgress {\n periodId: string;\n periodName: string;\n workgroupId: number;\n username: string;\n firstName: string;\n lastName: string;\n position: string;\n order: number;\n completion: ProjectCompletion;\n completionPct: number;\n score: number;\n maxScore: number;\n scorePct: number;\n\n constructor(jsonObject: any = {}) {\n for (const key of Object.keys(jsonObject)) {\n this[key] = jsonObject[key];\n }\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "jsonObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "{}" + } + ], + "line": 217, + "jsdoctags": [ + { + "name": "jsonObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "{}", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "completion", + "deprecated": false, + "deprecationMessage": "", + "type": "ProjectCompletion", + "indexKey": "", + "optional": false, + "description": "", + "line": 213 + }, + { + "name": "completionPct", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 214 + }, + { + "name": "firstName", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 209 + }, + { + "name": "lastName", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 210 + }, + { + "name": "maxScore", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 216 + }, + { + "name": "order", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 212 + }, + { + "name": "periodId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 205 + }, + { + "name": "periodName", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 206 + }, + { + "name": "position", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 211 + }, + { + "name": "score", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 215 + }, + { + "name": "scorePct", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 217 + }, + { + "name": "username", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 208 + }, + { + "name": "workgroupId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 207 + } + ], + "methods": [], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "StudentRun", + "id": "class-StudentRun-b354b62092d9860c6f19a34feb91b34b9f688bf991ba3555df8ac6d4aaf6bfb4a644db3731afc2be3879f06e0dfd5f29796f6cb9f0e06f04adfe8678745063aa", + "file": "src/app/student/student-run.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { Run } from '../domain/run';\n\nexport class StudentRun extends Run {\n periodName: string;\n maxStudentsPerTeam: number;\n teacherFirstname: string;\n teacherLastname: string;\n workgroupId: number;\n workgroupMembers: any;\n workgroupNames: string;\n status: string;\n messageCode: string;\n isHighlighted: boolean;\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "isHighlighted", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 13 + }, + { + "name": "maxStudentsPerTeam", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 5, + "inheritance": { + "file": "Run" + } + }, + { + "name": "messageCode", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 12 + }, + { + "name": "periodName", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 4 + }, + { + "name": "status", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 11 + }, + { + "name": "teacherFirstname", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 6 + }, + { + "name": "teacherLastname", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 7 + }, + { + "name": "workgroupId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 8 + }, + { + "name": "workgroupMembers", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 9 + }, + { + "name": "workgroupNames", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 10 + }, + { + "name": "endTime", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 9, + "inheritance": { + "file": "Run" + } + }, + { + "name": "GRADE_AND_MANAGE_PERMISSION", + "defaultValue": "2", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 21, + "modifierKind": [ + 126, + 148 + ], + "inheritance": { + "file": "Run" + } + }, + { + "name": "id", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 5, + "inheritance": { + "file": "Run" + } + }, + { + "name": "isLockedAfterEndDate", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "inheritance": { + "file": "Run" + } + }, + { + "name": "isSurvey", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "Run" + } + }, + { + "name": "lastRun", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "inheritance": { + "file": "Run" + } + }, + { + "name": "name", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 6, + "inheritance": { + "file": "Run" + } + }, + { + "name": "numStudents", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "inheritance": { + "file": "Run" + } + }, + { + "name": "owner", + "deprecated": false, + "deprecationMessage": "", + "type": "User", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "inheritance": { + "file": "Run" + } + }, + { + "name": "periods", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "inheritance": { + "file": "Run" + } + }, + { + "name": "project", + "deprecated": false, + "deprecationMessage": "", + "type": "Project", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "inheritance": { + "file": "Run" + } + }, + { + "name": "runCode", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 7, + "inheritance": { + "file": "Run" + } + }, + { + "name": "sharedOwners", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "User[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "inheritance": { + "file": "Run" + } + }, + { + "name": "startTime", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 8, + "inheritance": { + "file": "Run" + } + }, + { + "name": "VIEW_STUDENT_NAMES_PERMISSION", + "defaultValue": "3", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 22, + "modifierKind": [ + 126, + 148 + ], + "inheritance": { + "file": "Run" + } + }, + { + "name": "VIEW_STUDENT_WORK_PERMISSION", + "defaultValue": "1", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 20, + "modifierKind": [ + 126, + 148 + ], + "inheritance": { + "file": "Run" + } + } + ], + "methods": [ + { + "name": "canGradeAndManage", + "args": [ + { + "name": "userId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 50, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 125 + ], + "jsdoctags": [ + { + "name": "userId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "Run" + } + }, + { + "name": "canViewStudentNames", + "args": [ + { + "name": "userId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 57, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 125 + ], + "jsdoctags": [ + { + "name": "userId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "Run" + } + }, + { + "name": "canViewStudentWork", + "args": [ + { + "name": "userId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 43, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 125 + ], + "jsdoctags": [ + { + "name": "userId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "Run" + } + }, + { + "name": "hasEndTime", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 93, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "Run" + } + }, + { + "name": "isActive", + "args": [ + { + "name": "now", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 85, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "now", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "Run" + } + }, + { + "name": "isCompleted", + "args": [ + { + "name": "now", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 89, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "now", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "Run" + } + }, + { + "name": "isOwner", + "args": [ + { + "name": "userId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 64, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "userId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "Run" + } + }, + { + "name": "isScheduled", + "args": [ + { + "name": "now", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 81, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "now", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "Run" + } + }, + { + "name": "isSharedOwnerWithPermission", + "args": [ + { + "name": "userId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "permissionId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 68, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "userId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "permissionId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "Run" + } + }, + { + "name": "isSurveyRun", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 97, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "Run" + } + }, + { + "name": "userHasPermission", + "args": [ + { + "name": "user", + "type": "User", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "permission", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 77, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "user", + "type": "User", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "permission", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "Run" + } + } + ], + "indexSignatures": [], + "extends": [ + "Run" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "StudentStatus", + "id": "class-StudentStatus-e5fba54a007a7ced1301858a600183711f47eca1906ea002094187ef47e49156bcb7f698f46bb7e96a82982ba2703cae84bb4129d87b63d9666646a82f0508a3", + "file": "src/assets/wise5/common/StudentStatus.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { Language } from '../../../app/domain/language';\nimport { NodeProgress } from './NodeProgress';\n\nexport class StudentStatus {\n computerAvatarId?: string;\n currentNodeId: string;\n language?: Language;\n nodeStatuses: any;\n periodId: number;\n projectCompletion: NodeProgress;\n runId: number;\n workgroupId: number;\n\n constructor(jsonObject: any = {}) {\n for (const key of Object.keys(jsonObject)) {\n if (jsonObject[key] != null) {\n this[key] = jsonObject[key];\n }\n }\n }\n}\n\nexport function createStudentStatus(\n computerAvatarId: string,\n currentNodeId: string,\n nodeStatuses: any,\n periodId: number,\n projectCompletion: NodeProgress,\n runId: number,\n workgroupId: number\n) {\n return new StudentStatus({\n computerAvatarId,\n currentNodeId,\n nodeStatuses,\n periodId,\n projectCompletion,\n runId,\n workgroupId\n });\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "jsonObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "{}" + } + ], + "line": 12, + "jsdoctags": [ + { + "name": "jsonObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "{}", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "computerAvatarId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": true, + "description": "", + "line": 5 + }, + { + "name": "currentNodeId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 6 + }, + { + "name": "language", + "deprecated": false, + "deprecationMessage": "", + "type": "Language", + "indexKey": "", + "optional": true, + "description": "", + "line": 7 + }, + { + "name": "nodeStatuses", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 8 + }, + { + "name": "periodId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 9 + }, + { + "name": "projectCompletion", + "deprecated": false, + "deprecationMessage": "", + "type": "NodeProgress", + "indexKey": "", + "optional": false, + "description": "", + "line": 10 + }, + { + "name": "runId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 11 + }, + { + "name": "workgroupId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 12 + } + ], + "methods": [], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "StudentWorkDataExportStrategy", + "id": "class-StudentWorkDataExportStrategy-0ae4e0c6479b595c00462abb6fc02489c1564b50ef3e969e68319b5f0b0f7ca123e379c2674826aacb70b5a4a4cd3d8eb69c8848d6c3392b227224e51f769753", + "file": "src/assets/wise5/classroomMonitor/dataExport/strategies/StudentWorkDataExportStrategy.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { AbstractDataExportStrategy } from './AbstractDataExportStrategy';\nimport { removeHTMLTags } from '../../../common/string/string';\nimport { millisecondsToDateTime } from '../../../common/datetime/datetime';\n\nexport class StudentWorkDataExportStrategy extends AbstractDataExportStrategy {\n constructor(private exportType: string) {\n super();\n }\n\n export() {\n this.controller.showDownloadingExportMessage();\n var selectedNodes = [];\n var selectedNodesMap = null;\n if (this.controller.exportStepSelectionType === 'exportSelectSteps') {\n selectedNodes = this.controller.getSelectedNodesToExport();\n if (selectedNodes == null || selectedNodes.length == 0) {\n alert('Please select a step to export.');\n this.controller.hideDownloadingExportMessage();\n return;\n } else {\n selectedNodesMap = this.getSelectedNodesMap(selectedNodes);\n }\n }\n this.dataExportService.retrieveStudentData(selectedNodes, true, false, true).subscribe(() => {\n var runId = this.configService.getRunId();\n var rows = [];\n var rowCounter = 1;\n var columnNameToNumber = {};\n var columnNames = [\n '#',\n 'Workgroup ID',\n 'User ID 1',\n 'Student Name 1',\n 'User ID 2',\n 'Student Name 2',\n 'User ID 3',\n 'Student Name 3',\n 'Class Period',\n 'Project ID',\n 'Project Name',\n 'Run ID',\n 'Start Date',\n 'End Date',\n 'Student Work ID',\n 'Server Timestamp',\n 'Client Timestamp',\n 'Node ID',\n 'Component ID',\n 'Component Part Number',\n 'Teacher Score Server Timestamp',\n 'Teacher Score Client Timestamp',\n 'Teacher Score',\n 'Max Teacher Score',\n 'Teacher Comment Server Timestamp',\n 'Teacher Comment Client Timestamp',\n 'Teacher Comment',\n 'Auto Score Server Timestamp',\n 'Auto Score Client Timestamp',\n 'Auto Score',\n 'Max Auto Score',\n 'Auto Comment Server Timestamp',\n 'Auto Comment Client Timestamp',\n 'Auto Comment',\n 'Step Title',\n 'Component Type',\n 'Component Prompt',\n 'Student Data',\n 'Component Revision Counter',\n 'Is Correct',\n 'Is Submit',\n 'Submit Count',\n 'Response'\n ];\n var headerRow = [];\n for (var c = 0; c < columnNames.length; c++) {\n var columnName = columnNames[c];\n if (columnName != null) {\n columnNameToNumber[columnName] = c;\n }\n headerRow.push(columnName);\n }\n rows.push(headerRow);\n for (const workgroupId of this.configService.getClassmateWorkgroupIds()) {\n var userInfo = this.configService.getUserInfoByWorkgroupId(workgroupId);\n var extractedUserIDsAndStudentNames = this.controller.extractUserIDsAndStudentNames(\n userInfo.users\n );\n /*\n * a mapping from component to component revision counter.\n * the key will be {{nodeId}}_{{componentId}} and the\n * value will be a number.\n */\n var componentRevisionCounter = {};\n let componentStates = [];\n if (this.exportType === 'allStudentWork') {\n componentStates = this.dataService.getComponentStatesByWorkgroupId(workgroupId);\n } else if (this.exportType === 'latestStudentWork') {\n this.injectRevisionCounterIntoComponentStates(\n this.dataService.getComponentStatesByWorkgroupId(workgroupId)\n );\n componentStates = this.getLatestComponentStatesByWorkgroupId(workgroupId);\n }\n if (componentStates != null) {\n for (var c = 0; c < componentStates.length; c++) {\n var componentState = componentStates[c];\n if (componentState != null) {\n var exportRow = true;\n if (this.controller.exportStepSelectionType === 'exportSelectSteps') {\n if (\n !this.isComponentSelected(\n selectedNodesMap,\n componentState.nodeId,\n componentState.componentId\n )\n ) {\n exportRow = false;\n }\n }\n if (exportRow) {\n var row = this.createStudentWorkExportRow(\n columnNames,\n columnNameToNumber,\n rowCounter,\n workgroupId,\n extractedUserIDsAndStudentNames['userId1'],\n extractedUserIDsAndStudentNames['userId2'],\n extractedUserIDsAndStudentNames['userId3'],\n extractedUserIDsAndStudentNames['studentName1'],\n extractedUserIDsAndStudentNames['studentName2'],\n extractedUserIDsAndStudentNames['studentName3'],\n userInfo.periodName,\n componentRevisionCounter,\n componentState\n );\n rows.push(row);\n rowCounter++;\n }\n }\n }\n }\n }\n var fileName = '';\n if (this.exportType === 'allStudentWork') {\n fileName = runId + '_all_work.csv';\n } else if (this.exportType === 'latestStudentWork') {\n fileName = runId + '_latest_work.csv';\n }\n this.generateCSVFile(rows, fileName);\n this.controller.hideDownloadingExportMessage();\n });\n }\n\n private injectRevisionCounterIntoComponentStates(componentStates: any[]): void {\n const componentRevisionCounter = {};\n componentStates.forEach((componentState) => {\n const key = componentState.nodeId + '-' + componentState.componentId;\n if (componentRevisionCounter[key] == null) {\n componentRevisionCounter[key] = 1;\n }\n componentState.revisionCounter = componentRevisionCounter[key];\n componentRevisionCounter[key]++;\n });\n }\n\n /**\n * @param workgroupId the workgroup id\n * @return An array of component states. Each component state will be the latest component state\n * for a component.\n */\n private getLatestComponentStatesByWorkgroupId(workgroupId: number): any[] {\n const componentStates = [];\n const componentsFound = {};\n const componentStatesForWorkgroup =\n this.dataService.getComponentStatesByWorkgroupId(workgroupId);\n for (let csb = componentStatesForWorkgroup.length - 1; csb >= 0; csb--) {\n const componentState = componentStatesForWorkgroup[csb];\n const key = componentState.nodeId + '-' + componentState.componentId;\n if (componentsFound[key] == null) {\n componentStates.push(componentState);\n componentsFound[key] = true;\n }\n }\n componentStates.reverse();\n return componentStates;\n }\n\n /**\n * Create the array that will be used as a row in the student work export\n * @param columnNames all the header column name\n * @param columnNameToNumber the mapping from column name to column number\n * @param rowCounter the current row number\n * @param workgroupId the workgroup id\n * @param userId1 the User ID 1\n * @param userId2 the User ID 2\n * @param userId3 the User ID 3\n * @param periodName the period name\n * @param componentRevisionCounter the mapping of component to revision counter\n * @param componentState the component state\n * @return an array containing the cells in the row\n */\n createStudentWorkExportRow(\n columnNames: string[],\n columnNameToNumber: any,\n rowCounter: number,\n workgroupId: number,\n userId1: number,\n userId2: number,\n userId3: number,\n studentName1: string,\n studentName2: string,\n studentName3: string,\n periodName: string,\n componentRevisionCounter: any,\n componentState: any\n ): string[] {\n var row = new Array(columnNames.length);\n row.fill('');\n row[columnNameToNumber['#']] = rowCounter;\n row[columnNameToNumber['Workgroup ID']] = workgroupId;\n this.setStudentIDsAndNames(\n row,\n columnNameToNumber,\n userId1,\n studentName1,\n userId2,\n studentName2,\n userId3,\n studentName3\n );\n row[columnNameToNumber['Class Period']] = periodName;\n row[columnNameToNumber['Project ID']] = this.configService.getProjectId();\n row[columnNameToNumber['Project Name']] = this.projectService.getProjectTitle();\n row[columnNameToNumber['Run ID']] = this.configService.getRunId();\n row[columnNameToNumber['Student Work ID']] = componentState.id;\n if (componentState.serverSaveTime != null) {\n var formattedDateTime = millisecondsToDateTime(componentState.serverSaveTime);\n row[columnNameToNumber['Server Timestamp']] = formattedDateTime;\n }\n if (componentState.clientSaveTime != null) {\n const clientSaveTime = new Date(componentState.clientSaveTime);\n if (clientSaveTime != null) {\n var clientSaveTimeString =\n clientSaveTime.toDateString() + ' ' + clientSaveTime.toLocaleTimeString();\n row[columnNameToNumber['Client Timestamp']] = clientSaveTimeString;\n }\n }\n row[columnNameToNumber['Node ID']] = componentState.nodeId;\n row[columnNameToNumber['Component ID']] = componentState.componentId;\n row[columnNameToNumber['Step Title']] = this.projectService.getNodePositionAndTitle(\n componentState.nodeId\n );\n var componentPartNumber =\n this.projectService\n .getNode(componentState.nodeId)\n .getComponentPosition(componentState.componentId) + 1;\n row[columnNameToNumber['Component Part Number']] = componentPartNumber;\n var component = this.projectService.getComponent(\n componentState.nodeId,\n componentState.componentId\n );\n if (component != null) {\n row[columnNameToNumber['Component Type']] = component.type;\n if (component.prompt != null) {\n var prompt = removeHTMLTags(component.prompt);\n prompt = prompt.replace(/\"/g, '\"\"');\n row[columnNameToNumber['Component Prompt']] = prompt;\n }\n }\n var teacherScoreAnnotation =\n this.annotationService.getLatestTeacherScoreAnnotationByStudentWorkId(componentState.id);\n var teacherCommentAnnotation =\n this.annotationService.getLatestTeacherCommentAnnotationByStudentWorkId(componentState.id);\n var autoScoreAnnotation = this.annotationService.getLatestAutoScoreAnnotationByStudentWorkId(\n componentState.id\n );\n var autoCommentAnnotation =\n this.annotationService.getLatestAutoCommentAnnotationByStudentWorkId(componentState.id);\n if (teacherScoreAnnotation != null) {\n if (teacherScoreAnnotation.serverSaveTime != null) {\n var teacherScoreServerSaveTime = new Date(teacherScoreAnnotation.serverSaveTime);\n if (teacherScoreServerSaveTime != null) {\n var teacherScoreServerSaveTimeString =\n teacherScoreServerSaveTime.toDateString() +\n ' ' +\n teacherScoreServerSaveTime.toLocaleTimeString();\n row[columnNameToNumber['Teacher Score Server Timestamp']] =\n teacherScoreServerSaveTimeString;\n }\n }\n if (teacherScoreAnnotation.clientSaveTime != null) {\n var teacherScoreClientSaveTime = new Date(teacherScoreAnnotation.clientSaveTime);\n if (teacherScoreClientSaveTime != null) {\n var teacherScoreClientSaveTimeString =\n teacherScoreClientSaveTime.toDateString() +\n ' ' +\n teacherScoreClientSaveTime.toLocaleTimeString();\n row[columnNameToNumber['Teacher Score Client Timestamp']] =\n teacherScoreClientSaveTimeString;\n }\n }\n var data = teacherScoreAnnotation.data;\n if (data != null) {\n var score = data.value;\n if (score != null) {\n row[columnNameToNumber['Teacher Score']] = score;\n }\n var maxScore = this.projectService.getMaxScoreForComponent(\n componentState.nodeId,\n componentState.componentId\n );\n if (maxScore != null) {\n row[columnNameToNumber['Max Teacher Score']] = maxScore;\n }\n }\n }\n if (teacherCommentAnnotation != null) {\n if (teacherCommentAnnotation.serverSaveTime != null) {\n var teacherCommentServerSaveTime = new Date(teacherCommentAnnotation.serverSaveTime);\n if (teacherCommentServerSaveTime != null) {\n var teacherCommentServerSaveTimeString =\n teacherCommentServerSaveTime.toDateString() +\n ' ' +\n teacherCommentServerSaveTime.toLocaleTimeString();\n row[columnNameToNumber['Teacher Comment Server Timestamp']] =\n teacherCommentServerSaveTimeString;\n }\n }\n if (teacherCommentAnnotation.clientSaveTime != null) {\n var teacherCommentClientSaveTime = new Date(teacherCommentAnnotation.clientSaveTime);\n if (teacherCommentClientSaveTime != null) {\n var teacherCommentClientSaveTimeString =\n teacherCommentClientSaveTime.toDateString() +\n ' ' +\n teacherCommentClientSaveTime.toLocaleTimeString();\n row[columnNameToNumber['Teacher Comment Client Timestamp']] =\n teacherCommentClientSaveTimeString;\n }\n }\n var data = teacherCommentAnnotation.data;\n if (data != null) {\n var comment = data.value;\n if (comment != null) {\n row[columnNameToNumber['Teacher Comment']] = comment;\n }\n }\n }\n if (autoScoreAnnotation != null) {\n if (autoScoreAnnotation.serverSaveTime != null) {\n var autoScoreServerSaveTime = new Date(autoScoreAnnotation.serverSaveTime);\n if (autoScoreServerSaveTime != null) {\n // get the auto score server timestamp e.g. Wed Apr 06 2016 9:05:38 AM\n var autoScoreServerSaveTimeString =\n autoScoreServerSaveTime.toDateString() +\n ' ' +\n autoScoreServerSaveTime.toLocaleTimeString();\n row[columnNameToNumber['Auto Score Server Timestamp']] = autoScoreServerSaveTimeString;\n }\n }\n if (autoScoreAnnotation.clientSaveTime != null) {\n var autoScoreClientSaveTime = new Date(autoScoreAnnotation.clientSaveTime);\n if (autoScoreClientSaveTime != null) {\n var autoScoreClientSaveTimeString =\n autoScoreClientSaveTime.toDateString() +\n ' ' +\n autoScoreClientSaveTime.toLocaleTimeString();\n row[columnNameToNumber['Auto Score Client Timestamp']] = autoScoreClientSaveTimeString;\n }\n }\n var data = autoScoreAnnotation.data;\n if (data != null) {\n var autoScore = data.value;\n if (autoScore != null) {\n row[columnNameToNumber['Auto Score']] = autoScore;\n }\n var maxAutoScore = data.maxAutoScore;\n if (maxAutoScore != null) {\n row[columnNameToNumber['Max Auto Score']] = maxAutoScore;\n }\n }\n }\n if (autoCommentAnnotation != null) {\n if (autoCommentAnnotation.serverSaveTime != null) {\n var autoCommentServerSaveTime = new Date(autoCommentAnnotation.serverSaveTime);\n if (autoCommentServerSaveTime != null) {\n var autoCommentServerSaveTimeString =\n autoCommentServerSaveTime.toDateString() +\n ' ' +\n autoCommentServerSaveTime.toLocaleTimeString();\n row[columnNameToNumber['Auto Comment Server Timestamp']] =\n autoCommentServerSaveTimeString;\n }\n }\n if (autoCommentAnnotation.clientSaveTime != null) {\n var autoCommentClientSaveTime = new Date(autoCommentAnnotation.clientSaveTime);\n if (autoCommentClientSaveTime != null) {\n var autoCommentClientSaveTimeString =\n autoCommentClientSaveTime.toDateString() +\n ' ' +\n autoCommentClientSaveTime.toLocaleTimeString();\n row[columnNameToNumber['Auto Comment Client Timestamp']] =\n autoCommentClientSaveTimeString;\n }\n }\n var data = autoCommentAnnotation.data;\n if (data != null) {\n var autoComment = data.value;\n if (autoComment != null) {\n row[columnNameToNumber['Auto Comment']] = removeHTMLTags(autoComment);\n }\n }\n }\n var studentData = componentState.studentData;\n if (studentData != null) {\n row[columnNameToNumber['Student Data']] = studentData;\n var isCorrect = studentData.isCorrect;\n if (isCorrect != null) {\n if (isCorrect) {\n row[columnNameToNumber['Is Correct']] = 1;\n } else {\n row[columnNameToNumber['Is Correct']] = 0;\n }\n }\n }\n row[columnNameToNumber['Response']] = this.getStudentDataString(componentState);\n let revisionCounter = this.getRevisionCounter(\n componentRevisionCounter,\n componentState.nodeId,\n componentState.componentId\n );\n if (componentState.revisionCounter == null) {\n /*\n * use the revision counter obtained from the componentRevisionCounter\n * mapping. this case will happen when we are exporting all student\n * work.\n */\n row[columnNameToNumber['Component Revision Counter']] = revisionCounter;\n } else {\n /*\n * use the revision counter from the value in the component state.\n * this case will happen when we are exporting latest student work\n * because the revision counter needs to be previously calculated\n * and then set into the component state\n */\n row[columnNameToNumber['Component Revision Counter']] = componentState.revisionCounter;\n }\n this.incrementRevisionCounter(\n componentRevisionCounter,\n componentState.nodeId,\n componentState.componentId\n );\n var isSubmit = componentState.isSubmit;\n if (isSubmit) {\n row[columnNameToNumber['Is Submit']] = 1;\n if (studentData != null) {\n var submitCounter = studentData.submitCounter;\n if (submitCounter != null) {\n row[columnNameToNumber['Submit Count']] = submitCounter;\n }\n }\n } else {\n row[columnNameToNumber['Is Submit']] = 0;\n }\n return row;\n }\n\n setStudentIDsAndNames(\n row: any[],\n columnNameToNumber: any,\n userId1: number,\n studentName1: string,\n userId2: number,\n studentName2: string,\n userId3: number,\n studentName3: string\n ): void {\n if (userId1 != null) {\n row[columnNameToNumber['User ID 1']] = userId1;\n }\n if (studentName1 != null && this.controller.includeStudentNames) {\n row[columnNameToNumber['Student Name 1']] = studentName1;\n }\n if (userId2 != null) {\n row[columnNameToNumber['User ID 2']] = userId2;\n }\n if (studentName2 != null && this.controller.includeStudentNames) {\n row[columnNameToNumber['Student Name 2']] = studentName2;\n }\n if (userId3 != null) {\n row[columnNameToNumber['User ID 3']] = userId3;\n }\n if (studentName3 != null && this.controller.includeStudentNames) {\n row[columnNameToNumber['Student Name 3']] = studentName3;\n }\n }\n\n /**\n * Get the revision number for the next component state revision.\n * @param componentRevisionCounter The mapping from component to revision\n * counter.\n * @param nodeId The node id the component is in.\n * @param componentId The component id of the component.\n */\n getRevisionCounter(componentRevisionCounter: any, nodeId: string, componentId: string): number {\n let nodeIdAndComponentId = nodeId + '_' + componentId;\n if (componentRevisionCounter[nodeIdAndComponentId] == null) {\n componentRevisionCounter[nodeIdAndComponentId] = 1;\n }\n return componentRevisionCounter[nodeIdAndComponentId];\n }\n\n /**\n * Increment the revision counter for the given {{nodeId}}_{{componentId}}.\n * @param componentRevisionCounter The mapping from component to revision\n * counter.\n * @param nodeId The node id the component is in.\n * @param componentId The component id of the component.\n */\n incrementRevisionCounter(\n componentRevisionCounter: any,\n nodeId: string,\n componentId: string\n ): void {\n const nodeIdAndComponentId = nodeId + '_' + componentId;\n if (componentRevisionCounter[nodeIdAndComponentId] == null) {\n componentRevisionCounter[nodeIdAndComponentId] = 1;\n }\n const revisionCounter = componentRevisionCounter[nodeIdAndComponentId];\n componentRevisionCounter[nodeIdAndComponentId] = revisionCounter + 1;\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "exportType", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 5, + "jsdoctags": [ + { + "name": "exportType", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "allOrLatest", + "defaultValue": "'all'", + "deprecated": false, + "deprecationMessage": "", + "type": "\"all\" | \"latest\"", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "annotationService", + "deprecated": false, + "deprecationMessage": "", + "type": "AnnotationService", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "configService", + "deprecated": false, + "deprecationMessage": "", + "type": "ConfigService", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "context", + "deprecated": false, + "deprecationMessage": "", + "type": "DataExportContext", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "controller", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "dataExportService", + "deprecated": false, + "deprecationMessage": "", + "type": "DataExportService", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "dataService", + "deprecated": false, + "deprecationMessage": "", + "type": "TeacherDataService", + "indexKey": "", + "optional": false, + "description": "", + "line": 20, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "projectService", + "deprecated": false, + "deprecationMessage": "", + "type": "TeacherProjectService", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "inheritance": { + "file": "AbstractDataExportStrategy" + } + } + ], + "methods": [ + { + "name": "createStudentWorkExportRow", + "args": [ + { + "name": "columnNames", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "rowCounter", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "userId1", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "userId2", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "userId3", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentName1", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentName2", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentName3", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "periodName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentRevisionCounter", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string[]", + "typeParameters": [], + "line": 201, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCreate the array that will be used as a row in the student work export\n", + "description": "

Create the array that will be used as a row in the student work export

\n", + "jsdoctags": [ + { + "name": { + "pos": 6873, + "end": 6884, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "columnNames" + }, + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 6867, + "end": 6872, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

all the header column name

\n" + }, + { + "name": { + "pos": 6924, + "end": 6942, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "columnNameToNumber" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 6918, + "end": 6923, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the mapping from column name to column number

\n" + }, + { + "name": { + "pos": 7001, + "end": 7011, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "rowCounter" + }, + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 6995, + "end": 7000, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the current row number

\n" + }, + { + "name": { + "pos": 7047, + "end": 7058, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "workgroupId" + }, + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 7041, + "end": 7046, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the workgroup id

\n" + }, + { + "name": { + "pos": 7088, + "end": 7095, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "userId1" + }, + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 7082, + "end": 7087, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the User ID 1

\n" + }, + { + "name": { + "pos": 7122, + "end": 7129, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "userId2" + }, + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 7116, + "end": 7121, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the User ID 2

\n" + }, + { + "name": { + "pos": 7156, + "end": 7163, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "userId3" + }, + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 7150, + "end": 7155, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the User ID 3

\n" + }, + { + "name": "studentName1", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentName2", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentName3", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": { + "pos": 7190, + "end": 7200, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "periodName" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 7184, + "end": 7189, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the period name

\n" + }, + { + "name": { + "pos": 7229, + "end": 7253, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentRevisionCounter" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 7223, + "end": 7228, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the mapping of component to revision counter

\n" + }, + { + "name": { + "pos": 7311, + "end": 7325, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 7305, + "end": 7310, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component state

\n" + }, + { + "tagName": { + "pos": 7352, + "end": 7358, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

an array containing the cells in the row

\n" + } + ] + }, + { + "name": "export", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 10, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "getLatestComponentStatesByWorkgroupId", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 170, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nfor a component.\n", + "description": "

for a component.

\n", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": { + "pos": 5952, + "end": 5963, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "workgroupId" + }, + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 5946, + "end": 5951, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the workgroup id

\n" + }, + { + "tagName": { + "pos": 5987, + "end": 5993, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

An array of component states. Each component state will be the latest component state\nfor a component.

\n" + } + ] + }, + { + "name": "getRevisionCounter", + "args": [ + { + "name": "componentRevisionCounter", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 503, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the revision number for the next component state revision.\ncounter.\n", + "description": "

Get the revision number for the next component state revision.\ncounter.

\n", + "jsdoctags": [ + { + "name": { + "pos": 19052, + "end": 19076, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentRevisionCounter" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 19046, + "end": 19051, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The mapping from component to revision\ncounter.

\n" + }, + { + "name": { + "pos": 19142, + "end": 19148, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 19136, + "end": 19141, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The node id the component is in.

\n" + }, + { + "name": { + "pos": 19194, + "end": 19205, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 19188, + "end": 19193, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The component id of the component.

\n" + } + ] + }, + { + "name": "incrementRevisionCounter", + "args": [ + { + "name": "componentRevisionCounter", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 518, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nIncrement the revision counter for the given {{nodeId}}_{{componentId}}.\ncounter.\n", + "description": "

Increment the revision counter for the given {{nodeId}}_{{componentId}}.\ncounter.

\n", + "jsdoctags": [ + { + "name": { + "pos": 19695, + "end": 19719, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentRevisionCounter" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 19689, + "end": 19694, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The mapping from component to revision\ncounter.

\n" + }, + { + "name": { + "pos": 19785, + "end": 19791, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 19779, + "end": 19784, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The node id the component is in.

\n" + }, + { + "name": { + "pos": 19837, + "end": 19848, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 19831, + "end": 19836, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The component id of the component.

\n" + } + ] + }, + { + "name": "injectRevisionCounterIntoComponentStates", + "args": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 153, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setStudentIDsAndNames", + "args": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "userId1", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentName1", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "userId2", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentName2", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "userId3", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentName3", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 466, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "userId1", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentName1", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "userId2", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentName2", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "userId3", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentName3", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "generateCSVFile", + "args": [ + { + "name": "rows", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "fileName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 194, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "rows", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "fileName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "generateExportFileName", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentTypeWithUnderscore", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 179, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentTypeWithUnderscore", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "getColumnValue", + "args": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 113, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "getSelectedNodesMap", + "args": [ + { + "name": "selectedNodes", + "type": "[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]" + } + ], + "optional": false, + "returnType": "{}", + "typeParameters": [], + "line": 62, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet a mapping of node/component id strings to true.\nexample if\nselectedNodes = [\n {\n nodeId: \"node1\",\n componentId: \"343b8aesf7\"\n },\n {\n nodeId: \"node2\",\n componentId: \"b34gaf0ug2\"\n },\n {\n nodeId: \"node3\"\n }\n]\n\nthis function will return\n{\n \"node1-343b8aesf7\": true,\n \"node2-b34gaf0ug2\": true,\n \"node3\": true\n}\n\na componentId field\n", + "description": "

Get a mapping of node/component id strings to true.\nexample if\nselectedNodes = [\n {\n nodeId: "node1",\n componentId: "343b8aesf7"\n },\n {\n nodeId: "node2",\n componentId: "b34gaf0ug2"\n },\n {\n nodeId: "node3"\n }\n]

\n

this function will return\n{\n "node1-343b8aesf7": true,\n "node2-b34gaf0ug2": true,\n "node3": true\n}

\n

a componentId field

\n", + "jsdoctags": [ + { + "name": { + "pos": 1979, + "end": 1992, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "selectedNodes" + }, + "type": "[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]", + "tagName": { + "pos": 1973, + "end": 1978, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

an array of objects that contain a nodeId field and maybe also\na componentId field

\n" + }, + { + "tagName": { + "pos": 2087, + "end": 2093, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

a mapping of node/component id strings to true

\n" + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "getStudentDataString", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 157, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the plain text representation of the student work.\n", + "description": "

Get the plain text representation of the student work.

\n", + "jsdoctags": [ + { + "name": { + "pos": 5328, + "end": 5342, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 5322, + "end": 5327, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

A component state that contains the student work.

\n", + "typeExpression": { + "pos": 5343, + "end": 5351, + "kind": 310, + "id": 0, + "flags": 16842752, + "modifierFlagsCache": 0, + "transformFlags": 0, + "type": { + "pos": 5344, + "end": 5350, + "kind": 151, + "id": 0, + "flags": 16777216, + "transformFlags": 1 + } + } + }, + { + "tagName": { + "pos": 5408, + "end": 5415, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

A string that can be placed in a csv cell.

\n", + "returnType": "string" + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "insertColumnAtEnd", + "args": [ + { + "name": "headerRow", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 121, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "headerRow", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "insertColumnBeforeResponseColumn", + "args": [ + { + "name": "headerRow", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 117, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "headerRow", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "isComponentSelected", + "args": [ + { + "name": "selectedNodesMap", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 138, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if a component is selected\nto true\nexample\n{\n \"node1-38fj20egrj\": true,\n \"node1-20dbj2e0sf\": true\n}\n", + "description": "

Check if a component is selected\nto true\nexample\n{\n "node1-38fj20egrj": true,\n "node1-20dbj2e0sf": true\n}

\n", + "jsdoctags": [ + { + "name": { + "pos": 4590, + "end": 4606, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "selectedNodesMap" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4584, + "end": 4589, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

a map of node id and component id strings\nto true\nexample\n{\n"node1-38fj20egrj": true,\n"node1-20dbj2e0sf": true\n}

\n" + }, + { + "name": { + "pos": 4766, + "end": 4772, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4760, + "end": 4765, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id to check

\n" + }, + { + "name": { + "pos": 4806, + "end": 4817, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4800, + "end": 4805, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the component id to check

\n" + }, + { + "tagName": { + "pos": 4850, + "end": 4856, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

whether the component is selected

\n" + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "populateColumnNameMappings", + "args": [ + { + "name": "columnNames", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 103, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "columnNames", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "setColumnValue", + "args": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "value", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 109, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "value", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "setDataExportContext", + "args": [ + { + "name": "context", + "type": "DataExportContext", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "context", + "type": "DataExportContext", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + }, + { + "name": "setRunInfo", + "args": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnNameToNumber", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractDataExportStrategy" + } + } + ], + "indexSignatures": [], + "extends": [ + "AbstractDataExportStrategy" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "SummaryData", + "id": "class-SummaryData-08d83a6f5877bda5bc516a83d877ad9daffe86bfee2d44f803c40aaf6ee6148e6abada85830d6fea2eaee9c28a171ca3271cee082189a69c87028592553ed3ca", + "file": "src/assets/wise5/directives/summary-display/summary-data/SummaryData.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { SummaryDataPoint } from './SummaryDataPoint';\n\nexport abstract class SummaryData {\n protected summaryDataPoints: SummaryDataPoint[];\n\n constructor(dataPoints?: SummaryDataPoint[]) {\n this.summaryDataPoints = [];\n if (dataPoints) {\n dataPoints.forEach((dataPoint) => this.summaryDataPoints.push(dataPoint));\n }\n }\n\n protected getDataPointById(id: string | number): SummaryDataPoint {\n return this.summaryDataPoints.find((dataPoint) => dataPoint.getId() === id) ?? null;\n }\n\n getDataPoints(): SummaryDataPoint[] {\n return this.summaryDataPoints;\n }\n\n protected incrementSummaryData(id: string | number, incrementBy: number): void {\n const dataPoint = this.getDataPointById(id);\n if (dataPoint) {\n dataPoint.incrementCount(incrementBy);\n } else {\n this.summaryDataPoints.push(this.generateNewDataPoint(id));\n }\n }\n\n protected abstract generateNewDataPoint(id: string | number): SummaryDataPoint;\n\n getDataPointCountById(id: string | number): number {\n return this.getDataPointById(id)?.getCount() ?? 0;\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "dataPoints", + "type": "SummaryDataPoint[]", + "deprecated": false, + "deprecationMessage": "", + "optional": true + } + ], + "line": 4, + "jsdoctags": [ + { + "name": "dataPoints", + "type": "SummaryDataPoint[]", + "deprecated": false, + "deprecationMessage": "", + "optional": true, + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "summaryDataPoints", + "deprecated": false, + "deprecationMessage": "", + "type": "SummaryDataPoint[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 4, + "modifierKind": [ + 124 + ] + } + ], + "methods": [ + { + "name": "generateNewDataPoint", + "args": [ + { + "name": "id", + "type": "string | number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "SummaryDataPoint", + "typeParameters": [], + "line": 30, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124, + 128 + ], + "jsdoctags": [ + { + "name": "id", + "type": "string | number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getDataPointById", + "args": [ + { + "name": "id", + "type": "string | number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "SummaryDataPoint", + "typeParameters": [], + "line": 13, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "id", + "type": "string | number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getDataPointCountById", + "args": [ + { + "name": "id", + "type": "string | number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 32, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "id", + "type": "string | number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getDataPoints", + "args": [], + "optional": false, + "returnType": "SummaryDataPoint[]", + "typeParameters": [], + "line": 17, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "incrementSummaryData", + "args": [ + { + "name": "id", + "type": "string | number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "incrementBy", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 21, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "id", + "type": "string | number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "incrementBy", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "SummaryDataPoint", + "id": "class-SummaryDataPoint-a82776e09c0a897b77fc243e63ebb4f23b7cb889cc040785543e1393d4e85b0046d96e0b82de96187eb9d695d47702e10b8e0a12fa501a802a88a97b3a28fd96", + "file": "src/assets/wise5/directives/summary-display/summary-data/SummaryDataPoint.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "export abstract class SummaryDataPoint {\n protected id: number | string;\n protected count: number;\n\n constructor(id: number | string, count?: number) {\n this.id = id;\n this.count = count ?? 0;\n }\n\n getId(): number | string {\n return this.id;\n }\n\n getCount(): number {\n return this.count;\n }\n\n incrementCount(incrementBy: number): void {\n this.count += incrementBy;\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "id", + "type": "number | string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "count", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "optional": true + } + ], + "line": 3, + "jsdoctags": [ + { + "name": "id", + "type": "number | string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "count", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "optional": true, + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "count", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 3, + "modifierKind": [ + 124 + ] + }, + { + "name": "id", + "deprecated": false, + "deprecationMessage": "", + "type": "number | string", + "indexKey": "", + "optional": false, + "description": "", + "line": 2, + "modifierKind": [ + 124 + ] + } + ], + "methods": [ + { + "name": "getCount", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 14, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getId", + "args": [], + "optional": false, + "returnType": "number | string", + "typeParameters": [], + "line": 10, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "incrementCount", + "args": [ + { + "name": "incrementBy", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 18, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "incrementBy", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "SummaryInfo", + "id": "class-SummaryInfo-938fcf7d7960a5099c3b901c3f154e5b871934faed6560bd2e28d3a60a924f30335e130607c6d7cfd919808a78a6e3dbf17a5fdd15adee49816632c3449d714d", + "file": "src/assets/wise5/components/summary/SummaryInfo.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { ComponentInfo } from '../ComponentInfo';\n\nexport class SummaryInfo extends ComponentInfo {\n protected description: string = $localize`Students are shown an aggregate graph summarizing data from the class.`;\n protected label: string = $localize`Summary`;\n protected previewExamples: any[] = [\n {\n lable: $localize`Summary`,\n content: {\n id: 'abcde12345',\n type: 'Summary',\n prompt: 'This graph shows a summary of the data collected by you and your classmates:',\n showSaveButton: false,\n showSubmitButton: false,\n summaryNodeId: null,\n summaryComponentId: null,\n source: 'period',\n studentDataType: null,\n chartType: 'column',\n requirementToSeeSummary: 'submitWork',\n highlightCorrectAnswer: false,\n customLabelColors: [],\n constraints: []\n }\n }\n ];\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "description", + "defaultValue": "$localize`Students are shown an aggregate graph summarizing data from the class.`", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 4, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentInfo" + } + }, + { + "name": "label", + "defaultValue": "$localize`Summary`", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 5, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentInfo" + } + }, + { + "name": "previewExamples", + "defaultValue": "[\n {\n lable: $localize`Summary`,\n content: {\n id: 'abcde12345',\n type: 'Summary',\n prompt: 'This graph shows a summary of the data collected by you and your classmates:',\n showSaveButton: false,\n showSubmitButton: false,\n summaryNodeId: null,\n summaryComponentId: null,\n source: 'period',\n studentDataType: null,\n chartType: 'column',\n requirementToSeeSummary: 'submitWork',\n highlightCorrectAnswer: false,\n customLabelColors: [],\n constraints: []\n }\n }\n ]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 6, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentInfo" + } + } + ], + "methods": [ + { + "name": "getDescription", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 6, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentInfo" + } + }, + { + "name": "getLabel", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 10, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentInfo" + } + }, + { + "name": "getPreviewExamples", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 14, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentInfo" + } + } + ], + "indexSignatures": [], + "extends": [ + "ComponentInfo" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "TableInfo", + "id": "class-TableInfo-14d0a090868cc53caf10079ff1865dbc40d381beb2c62ced11c0b5ca2f4fe4ed02536b6cc72e9145fe8f277edce433581409271a78a87216d76efab9425791ba", + "file": "src/assets/wise5/components/table/TableInfo.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { ComponentInfo } from '../ComponentInfo';\n\nexport class TableInfo extends ComponentInfo {\n protected description: string = $localize`Students view and/or edit table data.`;\n protected label: string = $localize`Table`;\n protected previewExamples: any[] = [\n {\n label: $localize`Table`,\n content: {\n id: 'abcde12345',\n type: 'Table',\n prompt: `

Document your findings!

\n

Run at least 3 trials with the simulation: one with dark sand, one with medium colored sand, and one with light sand. Record the results in the table below.

`,\n showSaveButton: false,\n showSubmitButton: false,\n showAddToNotebookButton: false,\n globalCellSize: 9,\n numRows: 4,\n nuColumns: 8,\n tableData: [\n [\n {\n editable: false,\n text: 'Trial'\n },\n {\n editable: false,\n text: 'Sand Color'\n },\n {\n editable: false,\n text: 'Initial number of fish'\n },\n {\n editable: false,\n text: 'Initial number of sharks'\n },\n {\n editable: false,\n text: 'Generations passed'\n },\n {\n editable: false,\n text: 'Resulting number of dark fish'\n },\n {\n editable: false,\n text: 'Resulting number of light fish'\n }\n ],\n [\n {\n editable: false,\n text: '1'\n },\n {\n editable: true,\n text: ''\n },\n {\n editable: true,\n text: ''\n },\n {\n editable: true,\n text: ''\n },\n {\n editable: true,\n text: ''\n },\n {\n editable: true,\n text: ''\n },\n {\n editable: true,\n text: ''\n }\n ],\n [\n {\n editable: false,\n text: '2'\n },\n {\n editable: true,\n text: ''\n },\n {\n editable: true,\n text: ''\n },\n {\n editable: true,\n text: ''\n },\n {\n editable: true,\n text: ''\n },\n {\n editable: true,\n text: ''\n },\n {\n editable: true,\n text: ''\n }\n ],\n [\n {\n editable: false,\n text: '3'\n },\n {\n editable: true,\n text: ''\n },\n {\n editable: true,\n text: ''\n },\n {\n editable: true,\n text: ''\n },\n {\n editable: true,\n text: ''\n },\n {\n editable: true,\n text: ''\n },\n {\n editable: true,\n text: ''\n }\n ]\n ],\n constraints: []\n }\n }\n ];\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "description", + "defaultValue": "$localize`Students view and/or edit table data.`", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 4, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentInfo" + } + }, + { + "name": "label", + "defaultValue": "$localize`Table`", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 5, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentInfo" + } + }, + { + "name": "previewExamples", + "defaultValue": "[\n {\n label: $localize`Table`,\n content: {\n id: 'abcde12345',\n type: 'Table',\n prompt: `

Document your findings!

\n

Run at least 3 trials with the simulation: one with dark sand, one with medium colored sand, and one with light sand. Record the results in the table below.

`,\n showSaveButton: false,\n showSubmitButton: false,\n showAddToNotebookButton: false,\n globalCellSize: 9,\n numRows: 4,\n nuColumns: 8,\n tableData: [\n [\n {\n editable: false,\n text: 'Trial'\n },\n {\n editable: false,\n text: 'Sand Color'\n },\n {\n editable: false,\n text: 'Initial number of fish'\n },\n {\n editable: false,\n text: 'Initial number of sharks'\n },\n {\n editable: false,\n text: 'Generations passed'\n },\n {\n editable: false,\n text: 'Resulting number of dark fish'\n },\n {\n editable: false,\n text: 'Resulting number of light fish'\n }\n ],\n [\n {\n editable: false,\n text: '1'\n },\n {\n editable: true,\n text: ''\n },\n {\n editable: true,\n text: ''\n },\n {\n editable: true,\n text: ''\n },\n {\n editable: true,\n text: ''\n },\n {\n editable: true,\n text: ''\n },\n {\n editable: true,\n text: ''\n }\n ],\n [\n {\n editable: false,\n text: '2'\n },\n {\n editable: true,\n text: ''\n },\n {\n editable: true,\n text: ''\n },\n {\n editable: true,\n text: ''\n },\n {\n editable: true,\n text: ''\n },\n {\n editable: true,\n text: ''\n },\n {\n editable: true,\n text: ''\n }\n ],\n [\n {\n editable: false,\n text: '3'\n },\n {\n editable: true,\n text: ''\n },\n {\n editable: true,\n text: ''\n },\n {\n editable: true,\n text: ''\n },\n {\n editable: true,\n text: ''\n },\n {\n editable: true,\n text: ''\n },\n {\n editable: true,\n text: ''\n }\n ]\n ],\n constraints: []\n }\n }\n ]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 6, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentInfo" + } + } + ], + "methods": [ + { + "name": "getDescription", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 6, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentInfo" + } + }, + { + "name": "getLabel", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 10, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentInfo" + } + }, + { + "name": "getPreviewExamples", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 14, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentInfo" + } + } + ], + "indexSignatures": [], + "extends": [ + "ComponentInfo" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "TableSummaryData", + "id": "class-TableSummaryData-9bd49b86c5a2389327c784318fee028291df3e4ed78544bb409b2d04a9b72aff6106df7dac0e6f7d5e831ed4d6743fe5e538c259c81109593d6510eb1d7b3d9e", + "file": "src/assets/wise5/directives/summary-display/summary-data/TableSummaryData.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { ComponentState } from '../../../../../app/domain/componentState';\nimport { SummaryService } from '../../../components/summary/summaryService';\nimport { SummaryData } from './SummaryData';\nimport { TableSummaryDataPoint } from './TableSummaryDataPoint';\n\nexport class TableSummaryData extends SummaryData {\n protected summaryDataPoints: TableSummaryDataPoint[];\n\n constructor(componentStates: ComponentState[], summaryService: SummaryService) {\n super();\n componentStates.forEach((componentState) => {\n const tableData = componentState.studentData.tableData;\n for (let r = 1; r < tableData.length; r++) {\n const row = tableData[r];\n const key = row[0].text;\n const value = row[1].text;\n if (key != '') {\n this.accumulateLabel(summaryService.cleanLabel(key), value, summaryService);\n }\n }\n });\n }\n\n private accumulateLabel(key: string, value: any, summaryService: SummaryService): void {\n let dataPoint = this.getDataPointById(key);\n if (dataPoint == null) {\n dataPoint = new TableSummaryDataPoint(key);\n this.summaryDataPoints.push(dataPoint);\n }\n dataPoint.incrementCount(summaryService.convertToNumber(value));\n }\n\n getDataPoints(): TableSummaryDataPoint[] {\n return this.summaryDataPoints;\n }\n\n protected generateNewDataPoint(id: string | number): TableSummaryDataPoint {\n return new TableSummaryDataPoint(id);\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "componentStates", + "type": "ComponentState[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "summaryService", + "type": "SummaryService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 7, + "jsdoctags": [ + { + "name": "componentStates", + "type": "ComponentState[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "summaryService", + "type": "SummaryService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "summaryDataPoints", + "deprecated": false, + "deprecationMessage": "", + "type": "TableSummaryDataPoint[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 7, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "SummaryData" + } + } + ], + "methods": [ + { + "name": "accumulateLabel", + "args": [ + { + "name": "key", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "value", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "summaryService", + "type": "SummaryService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 24, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "key", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "value", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "summaryService", + "type": "SummaryService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "generateNewDataPoint", + "args": [ + { + "name": "id", + "type": "string | number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "TableSummaryDataPoint", + "typeParameters": [], + "line": 37, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "id", + "type": "string | number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryData" + } + }, + { + "name": "getDataPoints", + "args": [], + "optional": false, + "returnType": "TableSummaryDataPoint[]", + "typeParameters": [], + "line": 33, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "SummaryData" + } + }, + { + "name": "getDataPointById", + "args": [ + { + "name": "id", + "type": "string | number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "SummaryDataPoint", + "typeParameters": [], + "line": 13, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "id", + "type": "string | number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryData" + } + }, + { + "name": "getDataPointCountById", + "args": [ + { + "name": "id", + "type": "string | number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 32, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "id", + "type": "string | number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryData" + } + }, + { + "name": "incrementSummaryData", + "args": [ + { + "name": "id", + "type": "string | number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "incrementBy", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 21, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "id", + "type": "string | number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "incrementBy", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryData" + } + } + ], + "indexSignatures": [], + "extends": [ + "SummaryData" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "TableSummaryDataPoint", + "id": "class-TableSummaryDataPoint-3033146853b007b8a18d3b5ab0369e0ff2e5760c13fc4b1de95c953baebcc68a7de713c921b3f57b5aa656a0f12f720231f9dcf4f9bbc0d5b3477dec66e579e6", + "file": "src/assets/wise5/directives/summary-display/summary-data/TableSummaryDataPoint.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { SummaryDataPoint } from './SummaryDataPoint';\n\nexport class TableSummaryDataPoint extends SummaryDataPoint {}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "count", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 3, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "SummaryDataPoint" + } + }, + { + "name": "id", + "deprecated": false, + "deprecationMessage": "", + "type": "number | string", + "indexKey": "", + "optional": false, + "description": "", + "line": 2, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "SummaryDataPoint" + } + } + ], + "methods": [ + { + "name": "getCount", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 14, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "SummaryDataPoint" + } + }, + { + "name": "getId", + "args": [], + "optional": false, + "returnType": "number | string", + "typeParameters": [], + "line": 10, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "SummaryDataPoint" + } + }, + { + "name": "incrementCount", + "args": [ + { + "name": "incrementBy", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 18, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "incrementBy", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDataPoint" + } + } + ], + "indexSignatures": [], + "extends": [ + "SummaryDataPoint" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "TabulatorColumn", + "id": "class-TabulatorColumn-166c67a11764b0746499d7a1e9ca90e3f1ab7324864f98dd198fab77ccfb9772005ff019cb5ac250993d53b0578194ca4ba68b56ce891c88140e91be05e66426", + "file": "src/assets/wise5/components/table/TabulatorData.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { Tabulator } from 'tabulator-tables';\n\nexport class TabulatorData {\n constructor(\n public columns: TabulatorColumn[] = [], // see http://tabulator.info/docs/5.3/columns\n public data: any[] = [], // see http://tabulator.info/docs/5.3/data\n public editableCells: any = {},\n public options: any = {} // see http://tabulator.info/docs/5.3/options\n ) {\n const defaultOptions = {\n layout: 'fitDataTable',\n maxHeight: '500px',\n reactiveData: true,\n columnDefaults: {\n maxWidth: 200\n }\n };\n this.options = { ...defaultOptions, ...options };\n }\n}\n\nexport class TabulatorColumn {\n title: string;\n field: string;\n frozen: boolean;\n maxWidth: number | boolean; // number of pixels or false for no\n width: number | string; // number of pixels or percent of table width (e.g. '20%')\n editor: string;\n editable: (cell: Tabulator.CellComponent) => boolean;\n formatter: (cell: Tabulator.CellComponent) => any;\n sorter: string;\n sorterParams: any;\n\n constructor(jsonObject: any = {}) {\n for (const key of Object.keys(jsonObject)) {\n if (jsonObject[key] != null) {\n this[key] = jsonObject[key];\n }\n }\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "jsonObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "{}" + } + ], + "line": 32, + "jsdoctags": [ + { + "name": "jsonObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "{}", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "editable", + "deprecated": false, + "deprecationMessage": "", + "type": "function", + "indexKey": "", + "optional": false, + "description": "", + "line": 29 + }, + { + "name": "editor", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 28 + }, + { + "name": "field", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 24 + }, + { + "name": "formatter", + "deprecated": false, + "deprecationMessage": "", + "type": "function", + "indexKey": "", + "optional": false, + "description": "", + "line": 30 + }, + { + "name": "frozen", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 25 + }, + { + "name": "maxWidth", + "deprecated": false, + "deprecationMessage": "", + "type": "number | boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 26 + }, + { + "name": "sorter", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 31 + }, + { + "name": "sorterParams", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 32 + }, + { + "name": "title", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 23 + }, + { + "name": "width", + "deprecated": false, + "deprecationMessage": "", + "type": "number | string", + "indexKey": "", + "optional": false, + "description": "", + "line": 27 + } + ], + "methods": [], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "TabulatorData", + "id": "class-TabulatorData-166c67a11764b0746499d7a1e9ca90e3f1ab7324864f98dd198fab77ccfb9772005ff019cb5ac250993d53b0578194ca4ba68b56ce891c88140e91be05e66426", + "file": "src/assets/wise5/components/table/TabulatorData.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { Tabulator } from 'tabulator-tables';\n\nexport class TabulatorData {\n constructor(\n public columns: TabulatorColumn[] = [], // see http://tabulator.info/docs/5.3/columns\n public data: any[] = [], // see http://tabulator.info/docs/5.3/data\n public editableCells: any = {},\n public options: any = {} // see http://tabulator.info/docs/5.3/options\n ) {\n const defaultOptions = {\n layout: 'fitDataTable',\n maxHeight: '500px',\n reactiveData: true,\n columnDefaults: {\n maxWidth: 200\n }\n };\n this.options = { ...defaultOptions, ...options };\n }\n}\n\nexport class TabulatorColumn {\n title: string;\n field: string;\n frozen: boolean;\n maxWidth: number | boolean; // number of pixels or false for no\n width: number | string; // number of pixels or percent of table width (e.g. '20%')\n editor: string;\n editable: (cell: Tabulator.CellComponent) => boolean;\n formatter: (cell: Tabulator.CellComponent) => any;\n sorter: string;\n sorterParams: any;\n\n constructor(jsonObject: any = {}) {\n for (const key of Object.keys(jsonObject)) {\n if (jsonObject[key] != null) {\n this[key] = jsonObject[key];\n }\n }\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "columns", + "type": "TabulatorColumn[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]" + }, + { + "name": "data", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]" + }, + { + "name": "editableCells", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "{}" + }, + { + "name": "options", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "{}" + } + ], + "line": 3, + "jsdoctags": [ + { + "name": "columns", + "type": "TabulatorColumn[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]", + "tagName": { + "text": "param" + } + }, + { + "name": "data", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]", + "tagName": { + "text": "param" + } + }, + { + "name": "editableCells", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "{}", + "tagName": { + "text": "param" + } + }, + { + "name": "options", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "{}", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "columns", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "TabulatorColumn[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 5, + "modifierKind": [ + 125 + ] + }, + { + "name": "data", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 6, + "modifierKind": [ + 125 + ] + }, + { + "name": "editableCells", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 7, + "modifierKind": [ + 125 + ] + }, + { + "name": "options", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 8, + "modifierKind": [ + 125 + ] + } + ], + "methods": [], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "Teacher", + "id": "class-Teacher-49bb955caebf422a64ff690aecf6c676614537be038df40911e6f8f1c3100827fef2f02162be46566fa2d5c813e1930852db2ecb6a1374f18c5e1a8b305db67d", + "file": "src/app/domain/teacher.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { User } from './user';\n\nexport class Teacher extends User {\n displayName: string;\n email: string;\n googleUserId: string;\n city: string;\n state: string;\n country: string;\n schoolName: string;\n schoolLevel: string;\n howDidYouHearAboutUs: string;\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "city", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 7 + }, + { + "name": "country", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 9 + }, + { + "name": "displayName", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 4, + "inheritance": { + "file": "User" + } + }, + { + "name": "email", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 5 + }, + { + "name": "googleUserId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 6 + }, + { + "name": "howDidYouHearAboutUs", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 12 + }, + { + "name": "schoolLevel", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 11 + }, + { + "name": "schoolName", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 10 + }, + { + "name": "state", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 8 + }, + { + "name": "firstName", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 3, + "inheritance": { + "file": "User" + } + }, + { + "name": "id", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 4, + "inheritance": { + "file": "User" + } + }, + { + "name": "isGoogleUser", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 5, + "inheritance": { + "file": "User" + } + }, + { + "name": "isRecaptchaInvalid", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 6, + "inheritance": { + "file": "User" + } + }, + { + "name": "isRecaptchaRequired", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 7, + "inheritance": { + "file": "User" + } + }, + { + "name": "language", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 8, + "inheritance": { + "file": "User" + } + }, + { + "name": "lastName", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 9, + "inheritance": { + "file": "User" + } + }, + { + "name": "microsoftUserId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "inheritance": { + "file": "User" + } + }, + { + "name": "permissions", + "deprecated": false, + "deprecationMessage": "", + "type": "number[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "inheritance": { + "file": "User" + } + }, + { + "name": "roles", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "inheritance": { + "file": "User" + } + }, + { + "name": "token", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "inheritance": { + "file": "User" + } + }, + { + "name": "username", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "inheritance": { + "file": "User" + } + } + ], + "methods": [], + "indexSignatures": [], + "extends": [ + "User" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "TeacherRemovalConstraintStrategy", + "id": "class-TeacherRemovalConstraintStrategy-f4d1dd553c24fcbb9f2c8a3a305bf486124b667da03a35f2b8d5821a7f4b219f664d48847033fc2aed8f6d478e19d0fcd93c47d2bb5e74f2ac855ab8f75087ba", + "file": "src/assets/wise5/common/constraint/strategies/TeacherRemovalConstraintStrategy.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { AbstractConstraintStrategy } from './AbstractConstraintStrategy';\n\nexport class TeacherRemovalConstraintStrategy extends AbstractConstraintStrategy {\n evaluate(criteria: any): boolean {\n return this.configService.getPeriodId() !== criteria.params.periodId;\n }\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "annotationService", + "deprecated": false, + "deprecationMessage": "", + "type": "AnnotationService", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "completionService", + "deprecated": false, + "deprecationMessage": "", + "type": "CompletionService", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "componentServiceLookupService", + "deprecated": false, + "deprecationMessage": "", + "type": "ComponentServiceLookupService", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "configService", + "deprecated": false, + "deprecationMessage": "", + "type": "ConfigService", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "context", + "deprecated": false, + "deprecationMessage": "", + "type": "EvaluateConstraintContext", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "dataService", + "deprecated": false, + "deprecationMessage": "", + "type": "StudentDataService", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "notebookService", + "deprecated": false, + "deprecationMessage": "", + "type": "NotebookService", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "tagService", + "deprecated": false, + "deprecationMessage": "", + "type": "TagService", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + } + ], + "methods": [ + { + "name": "evaluate", + "args": [ + { + "name": "criteria", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 4, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "criteria", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "setContext", + "args": [ + { + "name": "context", + "type": "EvaluateConstraintContext", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 21, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "context", + "type": "EvaluateConstraintContext", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractConstraintStrategy" + } + } + ], + "indexSignatures": [], + "extends": [ + "AbstractConstraintStrategy" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "TeacherRun", + "id": "class-TeacherRun-d40cde2345fa67637edfcc49b4972ec96dfcb1db9d337ff6a172d2ddc695f89b66821a9faecaaa3df846c801eb5d0ea2beb399be6a931ce971e84943fc734557", + "file": "src/app/teacher/teacher-run.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { Run } from '../domain/run';\nimport { SelectRunsOption } from './select-runs-controls/select-runs-option';\n\nexport class TeacherRun extends Run {\n archived: boolean;\n shared: boolean;\n highlighted: boolean;\n\n constructor(jsonObject: any = {}) {\n super(jsonObject);\n }\n\n updateSelected(selectRunsOption: SelectRunsOption, currentTime: number): void {\n switch (selectRunsOption) {\n case SelectRunsOption.All:\n this.project.selected = true;\n break;\n case SelectRunsOption.None:\n this.project.selected = false;\n break;\n case SelectRunsOption.Completed:\n this.project.selected = this.isCompleted(currentTime);\n break;\n case SelectRunsOption.Running:\n this.project.selected = this.isActive(currentTime);\n break;\n case SelectRunsOption.Scheduled:\n this.project.selected = this.isScheduled(currentTime);\n break;\n }\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "jsonObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "{}" + } + ], + "line": 7, + "jsdoctags": [ + { + "name": "jsonObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "{}", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "archived", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 5 + }, + { + "name": "highlighted", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 7 + }, + { + "name": "shared", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 6 + }, + { + "name": "endTime", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 9, + "inheritance": { + "file": "Run" + } + }, + { + "name": "GRADE_AND_MANAGE_PERMISSION", + "defaultValue": "2", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 21, + "modifierKind": [ + 126, + 148 + ], + "inheritance": { + "file": "Run" + } + }, + { + "name": "id", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 5, + "inheritance": { + "file": "Run" + } + }, + { + "name": "isLockedAfterEndDate", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "inheritance": { + "file": "Run" + } + }, + { + "name": "isSurvey", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "Run" + } + }, + { + "name": "lastRun", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "inheritance": { + "file": "Run" + } + }, + { + "name": "maxStudentsPerTeam", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "inheritance": { + "file": "Run" + } + }, + { + "name": "name", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 6, + "inheritance": { + "file": "Run" + } + }, + { + "name": "numStudents", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "inheritance": { + "file": "Run" + } + }, + { + "name": "owner", + "deprecated": false, + "deprecationMessage": "", + "type": "User", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "inheritance": { + "file": "Run" + } + }, + { + "name": "periods", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "inheritance": { + "file": "Run" + } + }, + { + "name": "project", + "deprecated": false, + "deprecationMessage": "", + "type": "Project", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "inheritance": { + "file": "Run" + } + }, + { + "name": "runCode", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 7, + "inheritance": { + "file": "Run" + } + }, + { + "name": "sharedOwners", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "User[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "inheritance": { + "file": "Run" + } + }, + { + "name": "startTime", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 8, + "inheritance": { + "file": "Run" + } + }, + { + "name": "VIEW_STUDENT_NAMES_PERMISSION", + "defaultValue": "3", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 22, + "modifierKind": [ + 126, + 148 + ], + "inheritance": { + "file": "Run" + } + }, + { + "name": "VIEW_STUDENT_WORK_PERMISSION", + "defaultValue": "1", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 20, + "modifierKind": [ + 126, + 148 + ], + "inheritance": { + "file": "Run" + } + } + ], + "methods": [ + { + "name": "updateSelected", + "args": [ + { + "name": "selectRunsOption", + "type": "SelectRunsOption", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentTime", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 13, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "selectRunsOption", + "type": "SelectRunsOption", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentTime", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "canGradeAndManage", + "args": [ + { + "name": "userId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 50, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 125 + ], + "jsdoctags": [ + { + "name": "userId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "Run" + } + }, + { + "name": "canViewStudentNames", + "args": [ + { + "name": "userId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 57, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 125 + ], + "jsdoctags": [ + { + "name": "userId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "Run" + } + }, + { + "name": "canViewStudentWork", + "args": [ + { + "name": "userId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 43, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 125 + ], + "jsdoctags": [ + { + "name": "userId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "Run" + } + }, + { + "name": "hasEndTime", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 93, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "Run" + } + }, + { + "name": "isActive", + "args": [ + { + "name": "now", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 85, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "now", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "Run" + } + }, + { + "name": "isCompleted", + "args": [ + { + "name": "now", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 89, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "now", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "Run" + } + }, + { + "name": "isOwner", + "args": [ + { + "name": "userId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 64, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "userId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "Run" + } + }, + { + "name": "isScheduled", + "args": [ + { + "name": "now", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 81, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "now", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "Run" + } + }, + { + "name": "isSharedOwnerWithPermission", + "args": [ + { + "name": "userId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "permissionId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 68, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "userId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "permissionId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "Run" + } + }, + { + "name": "isSurveyRun", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 97, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "Run" + } + }, + { + "name": "userHasPermission", + "args": [ + { + "name": "user", + "type": "User", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "permission", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 77, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "user", + "type": "User", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "permission", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "Run" + } + } + ], + "indexSignatures": [], + "extends": [ + "Run" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "TeacherRunListHarness", + "id": "class-TeacherRunListHarness-8f505bd77876f1cda0e34a6314abf3b73f5b96e3ba3d02d6a2a112a87d3e401f5b12ed3387c46704cae83f501d78be71d10abfcab2bd6814592cfeac91c05f0f", + "file": "src/app/teacher/teacher-run-list/teacher-run-list.harness.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { ComponentHarness } from '@angular/cdk/testing';\nimport { TeacherRunListItemHarness } from '../teacher-run-list-item/teacher-run-list-item.harness';\nimport { SelectRunsControlsHarness } from '../select-runs-controls/select-runs-controls.harness';\nimport { MatSelectHarness } from '@angular/material/select/testing';\nimport { clickMenuButton } from '../../common/harness-helper';\nimport { MatInputHarness } from '@angular/material/input/testing';\n\nexport class TeacherRunListHarness extends ComponentHarness {\n static hostSelector = 'app-teacher-run-list';\n private ARCHIVED_TEXT = 'Archived';\n protected getNoRunsMessageDiv = this.locatorFor('.no-runs-message');\n getRunListItems = this.locatorForAll(TeacherRunListItemHarness);\n getSearchInput = this.locatorFor(MatInputHarness);\n protected getSelectRunsControls = this.locatorFor(SelectRunsControlsHarness);\n protected getViewSelect = this.locatorFor(MatSelectHarness);\n\n async isShowingArchived(): Promise {\n return (await (await this.getViewSelect()).getValueText()) === this.ARCHIVED_TEXT;\n }\n\n async showArchived(): Promise {\n return (await this.getViewSelect()).clickOptions({ text: this.ARCHIVED_TEXT });\n }\n\n async checkSelectRunsCheckbox(): Promise {\n return (await this.getSelectRunsControls()).checkCheckbox();\n }\n\n async uncheckSelectRunsCheckbox(): Promise {\n return (await this.getSelectRunsControls()).uncheckCheckbox();\n }\n\n async toggleSelectRunsCheckbox(): Promise {\n return (await this.getSelectRunsControls()).toggleCheckbox();\n }\n\n async isSelectRunsCheckboxChecked(): Promise {\n return (await this.getSelectRunsControls()).isChecked();\n }\n\n async isSelectRunsCheckboxIndeterminate(): Promise {\n return (await this.getSelectRunsControls()).isIndeterminate();\n }\n\n async clickSelectRunsMenuButton(menuButtonText: string): Promise {\n return clickMenuButton(await this.getSelectRunsControls(), menuButtonText);\n }\n\n async getRunListItem(title: string): Promise {\n return await this.locatorForOptional(TeacherRunListItemHarness.with({ title: title }))();\n }\n\n async getNumRunListItems(): Promise {\n return (await this.getRunListItems()).length;\n }\n\n async clickArchiveButton(): Promise {\n return (await this.getSelectRunsControls()).clickArchiveButton();\n }\n\n async clickUnarchiveButton(): Promise {\n return (await this.getSelectRunsControls()).clickUnarchiveButton();\n }\n\n async getNoRunsMessage(): Promise {\n return (await this.getNoRunsMessageDiv()).text();\n }\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "ARCHIVED_TEXT", + "defaultValue": "'Archived'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "modifierKind": [ + 123 + ] + }, + { + "name": "getNoRunsMessageDiv", + "defaultValue": "this.locatorFor('.no-runs-message')", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "modifierKind": [ + 124 + ] + }, + { + "name": "getRunListItems", + "defaultValue": "this.locatorForAll(TeacherRunListItemHarness)", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 12 + }, + { + "name": "getSearchInput", + "defaultValue": "this.locatorFor(MatInputHarness)", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 13 + }, + { + "name": "getSelectRunsControls", + "defaultValue": "this.locatorFor(SelectRunsControlsHarness)", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "modifierKind": [ + 124 + ] + }, + { + "name": "getViewSelect", + "defaultValue": "this.locatorFor(MatSelectHarness)", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 124 + ] + }, + { + "name": "hostSelector", + "defaultValue": "'app-teacher-run-list'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 9, + "modifierKind": [ + 126 + ] + } + ], + "methods": [ + { + "name": "checkSelectRunsCheckbox", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 25, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ] + }, + { + "name": "clickArchiveButton", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 57, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ] + }, + { + "name": "clickSelectRunsMenuButton", + "args": [ + { + "name": "menuButtonText", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 45, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ], + "jsdoctags": [ + { + "name": "menuButtonText", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "clickUnarchiveButton", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 61, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ] + }, + { + "name": "getNoRunsMessage", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 65, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ] + }, + { + "name": "getNumRunListItems", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 53, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ] + }, + { + "name": "getRunListItem", + "args": [ + { + "name": "title", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 49, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ], + "jsdoctags": [ + { + "name": "title", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isSelectRunsCheckboxChecked", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 37, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ] + }, + { + "name": "isSelectRunsCheckboxIndeterminate", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 41, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ] + }, + { + "name": "isShowingArchived", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 17, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ] + }, + { + "name": "showArchived", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 21, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ] + }, + { + "name": "toggleSelectRunsCheckbox", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 33, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ] + }, + { + "name": "uncheckSelectRunsCheckbox", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 29, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ] + } + ], + "indexSignatures": [], + "extends": [ + "ComponentHarness" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "TeacherRunListItemHarness", + "id": "class-TeacherRunListItemHarness-75d49496356e4f4e25dbb05cd8677203e04ef4403312bfc90bf0a7443baf3797728b5df983e7cc36da1e7733da3a0c83e21ed0231ec47fd564753e4a19518eac", + "file": "src/app/teacher/teacher-run-list-item/teacher-run-list-item.harness.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { BaseHarnessFilters, ComponentHarness, HarnessPredicate } from '@angular/cdk/testing';\nimport { MatCheckboxHarness } from '@angular/material/checkbox/testing';\nimport { MatCardHarness } from '@angular/material/card/testing';\nimport { RunMenuHarness } from '../run-menu/run-menu.harness';\n\nexport interface TeacherRunListItemHarnessFilters extends BaseHarnessFilters {\n title?: string | RegExp;\n}\n\nexport class TeacherRunListItemHarness extends ComponentHarness {\n static hostSelector = 'app-teacher-run-list-item';\n protected getCard = this.locatorFor(MatCardHarness);\n protected getCheckbox = this.locatorFor(MatCheckboxHarness);\n protected getMenu = this.locatorFor(RunMenuHarness);\n\n static with(\n options: TeacherRunListItemHarnessFilters\n ): HarnessPredicate {\n return new HarnessPredicate(TeacherRunListItemHarness, options).addOption(\n 'title',\n options.title,\n async (harness, title) => {\n return HarnessPredicate.stringMatches(harness.getRunTitle(), title);\n }\n );\n }\n\n async checkCheckbox(): Promise {\n return (await this.getCheckbox()).check();\n }\n\n async isChecked(): Promise {\n return (await this.getCheckbox()).isChecked();\n }\n\n async clickArchiveMenuButton(): Promise {\n return (await this.getMenu()).clickArchiveMenuButton();\n }\n\n async clickUnarchiveMenuButton(): Promise {\n return (await this.getMenu()).clickUnarchiveMenuButton();\n }\n\n async getRunTitle(): Promise {\n return (await this.getCard()).getTitleText();\n }\n\n async isArchived(): Promise {\n return (await this.getMenu()).hasRestoreMenuButton();\n }\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "getCard", + "defaultValue": "this.locatorFor(MatCardHarness)", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "modifierKind": [ + 124 + ] + }, + { + "name": "getCheckbox", + "defaultValue": "this.locatorFor(MatCheckboxHarness)", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "modifierKind": [ + 124 + ] + }, + { + "name": "getMenu", + "defaultValue": "this.locatorFor(RunMenuHarness)", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "modifierKind": [ + 124 + ] + }, + { + "name": "hostSelector", + "defaultValue": "'app-teacher-run-list-item'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "modifierKind": [ + 126 + ] + } + ], + "methods": [ + { + "name": "checkCheckbox", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 28, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ] + }, + { + "name": "clickArchiveMenuButton", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 36, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ] + }, + { + "name": "clickUnarchiveMenuButton", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 40, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ] + }, + { + "name": "getRunTitle", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 44, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ] + }, + { + "name": "isArchived", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 48, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ] + }, + { + "name": "isChecked", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 32, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ] + }, + { + "name": "with", + "args": [ + { + "name": "options", + "type": "TeacherRunListItemHarnessFilters", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "HarnessPredicate", + "typeParameters": [], + "line": 16, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "options", + "type": "TeacherRunListItemHarnessFilters", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "indexSignatures": [], + "extends": [ + "ComponentHarness" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "TermEvaluator", + "id": "class-TermEvaluator-708f7307764196853369041b6497f2a071fc9e20291d74bbe7b747ed75212c7c65c51c10b63e8cea4bf0e62831ef26f2b89cf98e9a94b15ef5c391d122bc9c24", + "file": "src/assets/wise5/components/common/feedbackRule/TermEvaluator/TermEvaluator.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { Component } from '../../../../common/Component';\nimport { ConfigService } from '../../../../services/configService';\nimport { ConstraintService } from '../../../../services/constraintService';\nimport { PeerGroup } from '../../../peerChat/PeerGroup';\nimport { Response } from '../Response';\n\nexport abstract class TermEvaluator {\n protected configService: ConfigService;\n protected constraintService: ConstraintService;\n protected peerGroup: PeerGroup;\n protected referenceComponent: Component;\n\n constructor(protected term: string) {}\n abstract evaluate(response: Response | Response[]): boolean;\n\n static isAccumulatedIdeaCountTerm(term: string): boolean {\n return /accumulatedIdeaCount(MoreThan|Equals|LessThan)\\([\\d+]\\)/.test(term);\n }\n\n static isBooleanTerm(term: string): boolean {\n return ['true', 'false'].includes(term);\n }\n\n static isLowestWorkgroupIdInPeerGroupTerm(term: string): boolean {\n return term === 'isLowestWorkgroupIdInPeerGroup';\n }\n\n static isMyChoiceChosenTerm(term: string): boolean {\n return /myChoiceChosen\\(\"\\w+\"\\)/.test(term);\n }\n\n static isHasKIScoreTerm(term: string): boolean {\n return /hasKIScore\\([1-5]\\)/.test(term);\n }\n\n static isIdeaCountTerm(term: string): boolean {\n return /ideaCount(MoreThan|Equals|LessThan)\\([\\d+]\\)/.test(term);\n }\n\n static isIdeaCountWithResponseIndexTerm(term: string): boolean {\n return /ideaCount(MoreThan|Equals|LessThan)\\(\\d+,\\s*\\d+\\)/.test(term);\n }\n\n static isSubmitNumberTerm(term: string): boolean {\n return /isSubmitNumber\\(\\d+\\)/.test(term);\n }\n\n static requiresAllResponses(term: string): boolean {\n return (\n TermEvaluator.isAccumulatedIdeaCountTerm(term) ||\n TermEvaluator.isIdeaCountWithResponseIndexTerm(term)\n );\n }\n\n setConfigService(service: ConfigService): void {\n this.configService = service;\n }\n\n setConstraintService(service: ConstraintService): void {\n this.constraintService = service;\n }\n\n setPeerGroup(peerGroup: PeerGroup): void {\n this.peerGroup = peerGroup;\n }\n\n setReferenceComponent(referenceComponent: Component): void {\n this.referenceComponent = referenceComponent;\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 11, + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "configService", + "deprecated": false, + "deprecationMessage": "", + "type": "ConfigService", + "indexKey": "", + "optional": false, + "description": "", + "line": 8, + "modifierKind": [ + 124 + ] + }, + { + "name": "constraintService", + "deprecated": false, + "deprecationMessage": "", + "type": "ConstraintService", + "indexKey": "", + "optional": false, + "description": "", + "line": 9, + "modifierKind": [ + 124 + ] + }, + { + "name": "peerGroup", + "deprecated": false, + "deprecationMessage": "", + "type": "PeerGroup", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "modifierKind": [ + 124 + ] + }, + { + "name": "referenceComponent", + "deprecated": false, + "deprecationMessage": "", + "type": "Component", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "modifierKind": [ + 124 + ] + } + ], + "methods": [ + { + "name": "evaluate", + "args": [ + { + "name": "response", + "type": "Response | Response[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 14, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 128 + ], + "jsdoctags": [ + { + "name": "response", + "type": "Response | Response[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isAccumulatedIdeaCountTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 16, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isBooleanTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 20, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isHasKIScoreTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 32, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isIdeaCountTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 36, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isIdeaCountWithResponseIndexTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 40, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isLowestWorkgroupIdInPeerGroupTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 24, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isMyChoiceChosenTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 28, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isSubmitNumberTerm", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 44, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "requiresAllResponses", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 48, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 126 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setConfigService", + "args": [ + { + "name": "service", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 55, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "service", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setConstraintService", + "args": [ + { + "name": "service", + "type": "ConstraintService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 59, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "service", + "type": "ConstraintService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setPeerGroup", + "args": [ + { + "name": "peerGroup", + "type": "PeerGroup", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 63, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "peerGroup", + "type": "PeerGroup", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setReferenceComponent", + "args": [ + { + "name": "referenceComponent", + "type": "Component", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 67, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "referenceComponent", + "type": "Component", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "TermEvaluatorFactory", + "id": "class-TermEvaluatorFactory-9e35c761fe0765d5f69407b3a85ddbedd665bc9c7e45f10150acddbed753acb39bb1b32e75c3d03789a169b0677b5a364421d364279296177a3adb21ee2476fd", + "file": "src/assets/wise5/components/common/feedbackRule/TermEvaluator/TermEvaluatorFactory.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { ConstraintService } from '../../../../services/constraintService';\nimport { AccumulatedIdeaCountTermEvaluator } from './AccumulatedIdeaCountTermEvaluator';\nimport { MyChoiceChosenTermEvaluator } from './MyChoiceChosenTermEvaluator';\nimport { HasKIScoreTermEvaluator } from './HasKIScoreTermEvaluator';\nimport { IdeaCountTermEvaluator } from './IdeaCountTermEvaluator';\nimport { IdeaCountWithResponseIndexTermEvaluator } from './IdeaCountWithResponseIndexTermEvaluator';\nimport { IdeaTermEvaluator } from './IdeaTermEvaluator';\nimport { IsSubmitNumberEvaluator } from './IsSubmitNumberEvaluator';\nimport { TermEvaluator } from './TermEvaluator';\nimport { ConfigService } from '../../../../services/configService';\nimport { IsLowestWorkgroupIdInPeerGroupTermEvaluator } from './IsLowestWorkgroupIdInPeerGroupTermEvaluator';\nimport { BooleanTermEvaluator } from './BooleanTermEvaluator';\n\nexport class TermEvaluatorFactory {\n constructor(private configService: ConfigService, private constraintService: ConstraintService) {}\n\n getTermEvaluator(term: string): TermEvaluator {\n let evaluator: TermEvaluator;\n if (TermEvaluator.isBooleanTerm(term)) {\n evaluator = new BooleanTermEvaluator(term);\n } else if (TermEvaluator.isHasKIScoreTerm(term)) {\n evaluator = new HasKIScoreTermEvaluator(term);\n } else if (TermEvaluator.isIdeaCountTerm(term)) {\n evaluator = new IdeaCountTermEvaluator(term);\n } else if (TermEvaluator.isIdeaCountWithResponseIndexTerm(term)) {\n evaluator = new IdeaCountWithResponseIndexTermEvaluator(term);\n } else if (TermEvaluator.isSubmitNumberTerm(term)) {\n evaluator = new IsSubmitNumberEvaluator(term);\n } else if (TermEvaluator.isAccumulatedIdeaCountTerm(term)) {\n evaluator = new AccumulatedIdeaCountTermEvaluator(term);\n } else if (TermEvaluator.isMyChoiceChosenTerm(term)) {\n evaluator = new MyChoiceChosenTermEvaluator(term);\n } else if (TermEvaluator.isLowestWorkgroupIdInPeerGroupTerm(term)) {\n evaluator = new IsLowestWorkgroupIdInPeerGroupTermEvaluator(term);\n } else {\n evaluator = new IdeaTermEvaluator(term);\n }\n evaluator.setConfigService(this.configService);\n evaluator.setConstraintService(this.constraintService);\n return evaluator;\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "constraintService", + "type": "ConstraintService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 14, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "constraintService", + "type": "ConstraintService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [], + "methods": [ + { + "name": "getTermEvaluator", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "TermEvaluator", + "typeParameters": [], + "line": 17, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "Transition", + "id": "class-Transition-7cfeca9a90f56fbde0ec42655b0b20f3b7bc2aa156835bd30ff98e8abad39ba7c00987b4ab920756ff2b5df371e50094d89d94e5db3921d8053c31b058893d07", + "file": "src/assets/wise5/common/Transition.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { TransitionCriteria } from './TransitionCriteria';\n\nexport class Transition {\n criteria?: TransitionCriteria[];\n to: string;\n\n constructor(to: string, criteria?: TransitionCriteria[]) {\n this.to = to;\n if (criteria != null) {\n this.criteria = criteria;\n }\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "to", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "criteria", + "type": "TransitionCriteria[]", + "deprecated": false, + "deprecationMessage": "", + "optional": true + } + ], + "line": 5, + "jsdoctags": [ + { + "name": "to", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "criteria", + "type": "TransitionCriteria[]", + "deprecated": false, + "deprecationMessage": "", + "optional": true, + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "criteria", + "deprecated": false, + "deprecationMessage": "", + "type": "TransitionCriteria[]", + "indexKey": "", + "optional": true, + "description": "", + "line": 4 + }, + { + "name": "to", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 5 + } + ], + "methods": [], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "TransitionCriteria", + "id": "class-TransitionCriteria-32e050826ae45afc43000acf57a4167985a1534557ae617cd2d6481961e4719b99a32badc2171a9ea49f01934c474f79457d6f66dab1285994acb4cca9f488f6", + "file": "src/assets/wise5/common/TransitionCriteria.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { TransitionCriteriaParams } from './TransitionCriteriaParams';\n\nexport class TransitionCriteria {\n name: string;\n params: TransitionCriteriaParams;\n\n constructor(name: string, params: TransitionCriteriaParams) {\n this.name = name;\n this.params = params;\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "name", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "params", + "type": "TransitionCriteriaParams", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 5, + "jsdoctags": [ + { + "name": "name", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "params", + "type": "TransitionCriteriaParams", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "name", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 4 + }, + { + "name": "params", + "deprecated": false, + "deprecationMessage": "", + "type": "TransitionCriteriaParams", + "indexKey": "", + "optional": false, + "description": "", + "line": 5 + } + ], + "methods": [], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "TransitionCriteriaParams", + "id": "class-TransitionCriteriaParams-0a13dbd702d94f1a84f39a0130e9156e02a2502f81798de1d97a91734b7eb58d70640d765d0f554187db8fd7af008b3703599b983ef67edac0d03e66a377d6f9", + "file": "src/assets/wise5/common/TransitionCriteriaParams.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "export class TransitionCriteriaParams {\n choiceIds?: string[];\n componentId: string;\n nodeId: string;\n scores?: string[];\n\n constructor(jsonObject: any = {}) {\n for (const key of Object.keys(jsonObject)) {\n this[key] = jsonObject[key];\n }\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "jsonObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "{}" + } + ], + "line": 5, + "jsdoctags": [ + { + "name": "jsonObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "{}", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "choiceIds", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": true, + "description": "", + "line": 2 + }, + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 3 + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 4 + }, + { + "name": "scores", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": true, + "description": "", + "line": 5 + } + ], + "methods": [], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "TransitionLogic", + "id": "class-TransitionLogic-f20dde549d20aa9aff11f5cbeb8292d11060cb1de8f03e92494131c83428f43c46e546869c72c2c4de178764305b906b8de516eda168c44379362c15a6be68d4", + "file": "src/assets/wise5/common/TransitionLogic.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { Transition } from './Transition';\nimport { TransitionCriteria } from './TransitionCriteria';\nimport { TransitionCriteriaParams } from './TransitionCriteriaParams';\n\nexport class TransitionLogic {\n canChangePath?: boolean;\n howToChooseAmongAvailablePaths?: string;\n maxPathsVisitable?: number;\n transitions: Transition[];\n whenToChoosePath?: string;\n\n constructor(jsonObject: any = {}) {\n for (const key of Object.keys(jsonObject)) {\n if (key === 'transitions') {\n this.transitions = jsonObject[key].map(\n (transition: any) =>\n new Transition(\n transition.to,\n transition.criteria?.map(\n (criteria: any) =>\n new TransitionCriteria(\n criteria.name,\n new TransitionCriteriaParams(criteria.params)\n )\n )\n )\n );\n } else {\n this[key] = jsonObject[key];\n }\n }\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "jsonObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "{}" + } + ], + "line": 10, + "jsdoctags": [ + { + "name": "jsonObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "{}", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "canChangePath", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": true, + "description": "", + "line": 6 + }, + { + "name": "howToChooseAmongAvailablePaths", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": true, + "description": "", + "line": 7 + }, + { + "name": "maxPathsVisitable", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": true, + "description": "", + "line": 8 + }, + { + "name": "transitions", + "deprecated": false, + "deprecationMessage": "", + "type": "Transition[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 9 + }, + { + "name": "whenToChoosePath", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": true, + "description": "", + "line": 10 + } + ], + "methods": [], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "UnitResource", + "id": "class-UnitResource-32a9fbfbd8306b34d90a0884238179e4c92eba3c5e8a1d3d5be56dfdf1fc22892ebe41f6d1258f1f4546aa0e39dc82dc80f1b2641dfd20e0758b0c3408b7d4e4", + "file": "src/assets/wise5/authoringTool/edit-unit-resources/edit-unit-resources.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { CdkDragDrop, DragDropModule, moveItemInArray } from '@angular/cdk/drag-drop';\nimport { CdkTextareaAutosize } from '@angular/cdk/text-field';\nimport { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { debounceTime, distinctUntilChanged, Subject, Subscription } from 'rxjs';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { TeacherProjectService } from '../../services/teacherProjectService';\n\nclass UnitResource {\n name: string;\n url: string;\n constructor(name: string, url: string) {\n this.name = name;\n this.url = url;\n }\n}\n\n@Component({\n imports: [\n CommonModule,\n CdkTextareaAutosize,\n DragDropModule,\n FormsModule,\n MatCardModule,\n MatInputModule,\n MatFormFieldModule,\n MatButtonModule,\n MatIconModule,\n MatTooltipModule\n ],\n selector: 'edit-unit-resources',\n styleUrl: './edit-unit-resources.component.scss',\n templateUrl: './edit-unit-resources.component.html'\n})\nexport class EditUnitResourcesComponent {\n protected inputChanged: Subject = new Subject();\n @Input() resources: UnitResource[] = [];\n private subscriptions: Subscription = new Subscription();\n\n constructor(private projectService: TeacherProjectService) {}\n\n ngOnInit(): void {\n this.subscriptions.add(\n this.inputChanged\n .pipe(debounceTime(1000), distinctUntilChanged())\n .subscribe(() => this.projectService.saveProject())\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n protected drop(event: CdkDragDrop): void {\n this.moveRuleItem(event.previousIndex, event.currentIndex);\n }\n\n protected moveUp(ruleIndex: number): void {\n this.moveRuleItem(ruleIndex, ruleIndex - 1);\n }\n\n protected moveDown(ruleIndex: number): void {\n this.moveRuleItem(ruleIndex, ruleIndex + 1);\n }\n\n protected moveRuleItem(previousIndex: number, currentIndex: number): void {\n moveItemInArray(this.resources, previousIndex, currentIndex);\n this.projectService.saveProject();\n }\n\n protected addNewResource(addToTop: boolean): void {\n const location = addToTop ? 0 : this.resources.length;\n this.resources.splice(location, 0, new UnitResource('', ''));\n this.projectService.saveProject();\n if (!addToTop) {\n this.scrollToBottomOfList();\n }\n }\n\n private scrollToBottomOfList(): void {\n setTimeout(() => {\n const button = document.getElementById('add-new-resource-bottom-button');\n if (button) {\n button.scrollIntoView();\n }\n }, 0);\n }\n\n protected deleteResource(resourceIndex: number): void {\n if (confirm($localize`Are you sure you want to delete this resource?`)) {\n this.resources.splice(resourceIndex, 1);\n this.projectService.saveProject();\n }\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "name", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "url", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 17, + "jsdoctags": [ + { + "name": "name", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "url", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "name", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 16 + }, + { + "name": "url", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 17 + } + ], + "methods": [], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "UrlParameter", + "id": "class-UrlParameter-c201b135561c79b3488a3e05fd7a0b331e6a8c7da46806718c1379da92385af56a353e86e851c646e43766ecbb361ef7aca7858dd69e96764b2046226578cdcc", + "file": "src/app/authoring-tool/author-url-parameters/author-url-parameters.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { Subject, Subscription } from 'rxjs';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport { FormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatOptionModule } from '@angular/material/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\nexport class UrlParameter {\n name: string;\n key: string;\n description: string;\n type: string;\n options: any[];\n}\n\n@Component({\n imports: [\n FormsModule,\n MatFormFieldModule,\n MatInputModule,\n MatSelectModule,\n MatOptionModule,\n MatIconModule,\n MatTooltipModule\n ],\n selector: 'author-url-parameters',\n templateUrl: './author-url-parameters.component.html'\n})\nexport class AuthorUrlParametersComponent implements OnInit {\n protected inputChanged: Subject = new Subject();\n private inputChangedSubscription: Subscription;\n @Output() generatedUrl: EventEmitter = new EventEmitter();\n @Input() parameters: UrlParameter[] = [];\n protected parameterValues: any = {};\n @Input() url: string = '';\n private urlWithoutParameters: string;\n\n ngOnInit(): void {\n this.initializeInputChangedSubscription();\n this.initializeDefaultParameterValues();\n this.initializeParameterValuesFromUrl();\n }\n\n ngOnChanges(changes: any): void {\n this.initializeParameterValuesFromUrl();\n }\n\n private initializeInputChangedSubscription(): void {\n this.inputChangedSubscription = this.inputChanged\n .pipe(debounceTime(1000), distinctUntilChanged())\n .subscribe(() => {\n this.generateUrlParameters();\n });\n }\n\n initializeDefaultParameterValues(): void {\n this.parameters ??= [];\n for (const parameter of this.parameters) {\n this.parameterValues[parameter.key] = '';\n }\n }\n\n initializeParameterValuesFromUrl(): void {\n this.urlWithoutParameters = this.url.split('?')[0];\n const parametersString = this.url.split('?')[1];\n if (parametersString != null) {\n const parametersKeyValueStrings = parametersString.split('&');\n for (const parameterKeyValueString of parametersKeyValueStrings) {\n const keyValue = parameterKeyValueString.split('=');\n const key = keyValue[0];\n const value = keyValue[1];\n this.parameterValues[key] = value ?? '';\n }\n }\n }\n\n ngOnDestroy(): void {\n this.inputChangedSubscription.unsubscribe();\n }\n\n generateUrlParameters(): void {\n let urlParameters = '';\n for (const parameterKey in this.parameterValues) {\n if (this.parameterValues[parameterKey] !== '') {\n if (urlParameters != '') {\n urlParameters += '&';\n }\n urlParameters += `${parameterKey}=${this.parameterValues[parameterKey]}`;\n }\n }\n if (urlParameters === '') {\n this.generatedUrl.emit(`${this.urlWithoutParameters}`);\n } else {\n this.generatedUrl.emit(`${this.urlWithoutParameters}?${urlParameters}`);\n }\n }\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "description", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 15 + }, + { + "name": "key", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 14 + }, + { + "name": "name", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 13 + }, + { + "name": "options", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 17 + }, + { + "name": "type", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 16 + } + ], + "methods": [], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "UsedXSubmitsConstraintStrategy", + "id": "class-UsedXSubmitsConstraintStrategy-0274fe6bc8eaff49bc0d0ee0b71b74a37a2a3ce084de399ae73cfb5d3758a26cf811abb2920de1518646fee166cdb7cf8771a60dc14ce1e20aa032505870b741", + "file": "src/assets/wise5/common/constraint/strategies/UsedXSubmitsConstraintStrategy.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { AbstractConstraintStrategy } from './AbstractConstraintStrategy';\n\nexport class UsedXSubmitsConstraintStrategy extends AbstractConstraintStrategy {\n evaluate(criteria: any): boolean {\n const componentStates = this.dataService.getComponentStatesByNodeIdAndComponentId(\n criteria.params.nodeId,\n criteria.params.componentId\n );\n return this.getSubmitCount(componentStates) >= criteria.params.requiredSubmitCount;\n }\n\n private getSubmitCount(componentStates: any[]): number {\n /*\n * We are counting with two submit counters for backwards compatibility.\n * Some componentStates only have isSubmit=true and do not keep an\n * updated submitCounter for the number of submits.\n */\n let manualSubmitCounter = 0;\n let highestSubmitCounter = 0;\n for (const componentState of componentStates) {\n if (componentState.isSubmit) {\n manualSubmitCounter++;\n }\n const studentData = componentState.studentData;\n if (studentData.submitCounter > highestSubmitCounter) {\n highestSubmitCounter = studentData.submitCounter;\n }\n }\n return Math.max(manualSubmitCounter, highestSubmitCounter);\n }\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "annotationService", + "deprecated": false, + "deprecationMessage": "", + "type": "AnnotationService", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "completionService", + "deprecated": false, + "deprecationMessage": "", + "type": "CompletionService", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "componentServiceLookupService", + "deprecated": false, + "deprecationMessage": "", + "type": "ComponentServiceLookupService", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "configService", + "deprecated": false, + "deprecationMessage": "", + "type": "ConfigService", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "context", + "deprecated": false, + "deprecationMessage": "", + "type": "EvaluateConstraintContext", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "dataService", + "deprecated": false, + "deprecationMessage": "", + "type": "StudentDataService", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "notebookService", + "deprecated": false, + "deprecationMessage": "", + "type": "NotebookService", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "tagService", + "deprecated": false, + "deprecationMessage": "", + "type": "TagService", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + } + ], + "methods": [ + { + "name": "evaluate", + "args": [ + { + "name": "criteria", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 4, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "criteria", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "getSubmitCount", + "args": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 12, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setContext", + "args": [ + { + "name": "context", + "type": "EvaluateConstraintContext", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 21, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "context", + "type": "EvaluateConstraintContext", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractConstraintStrategy" + } + } + ], + "indexSignatures": [], + "extends": [ + "AbstractConstraintStrategy" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "User", + "id": "class-User-246eab7fe525b2058979e6697cfbfa67c835d5c8a32cbbca5c48df83e82ede806865e22a1df108b062395d5460cf83e97764c8828641d25863ef95df8eb58d2b", + "file": "src/app/domain/user.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "export class User {\n displayName: string;\n firstName: string;\n id: number;\n isGoogleUser: boolean = false;\n isRecaptchaInvalid: boolean = false;\n isRecaptchaRequired: boolean;\n language: string;\n lastName: string;\n microsoftUserId: string;\n permissions: number[];\n roles: string[];\n token: string;\n username: string;\n\n constructor(jsonObject: any = {}) {\n for (let key of Object.keys(jsonObject)) {\n this[key] = jsonObject[key];\n }\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "jsonObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "{}" + } + ], + "line": 14, + "jsdoctags": [ + { + "name": "jsonObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "{}", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "displayName", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 2 + }, + { + "name": "firstName", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 3 + }, + { + "name": "id", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 4 + }, + { + "name": "isGoogleUser", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 5 + }, + { + "name": "isRecaptchaInvalid", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 6 + }, + { + "name": "isRecaptchaRequired", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 7 + }, + { + "name": "language", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 8 + }, + { + "name": "lastName", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 9 + }, + { + "name": "microsoftUserId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 10 + }, + { + "name": "permissions", + "deprecated": false, + "deprecationMessage": "", + "type": "number[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 11 + }, + { + "name": "roles", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 12 + }, + { + "name": "token", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 13 + }, + { + "name": "username", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 14 + } + ], + "methods": [], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "UserIdsAndStudentNames", + "id": "class-UserIdsAndStudentNames-da30ca573bd13d2c0973e65399c8732f993d84b08565258d2f2fe8a3d3d22188654572533cde47c0f398c607d1e1007d6d00414ee4d546e776d2fc214d5a0eb3", + "file": "src/assets/wise5/classroomMonitor/dataExport/UserIdsAndStudentNames.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "export class UserIdsAndStudentNames extends Map {\n constructor(users: any[], canViewStudentNames: boolean) {\n super();\n for (let u = 0; u < users.length; u++) {\n const user = users[u];\n this.set(`userId${u + 1}`, user.id);\n if (canViewStudentNames) {\n this.set(`studentName${u + 1}`, user.name);\n }\n }\n }\n\n getUserId(userNumber: number): number {\n return this.get(`userId${userNumber}`);\n }\n\n getStudentName(userNumber: number): string {\n return this.get(`studentName${userNumber}`);\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "users", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "canViewStudentNames", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 1, + "jsdoctags": [ + { + "name": "users", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "canViewStudentNames", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [], + "methods": [ + { + "name": "getStudentName", + "args": [ + { + "name": "userNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 17, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "userNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getUserId", + "args": [ + { + "name": "userNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 13, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "userNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "indexSignatures": [], + "extends": [ + "Map" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "ValueAndText", + "id": "class-ValueAndText-7f19030dd544cf8357b2329785e6fbdb9bb3d3a5710f37f77df4f55fa11e464ad2a19f6e17c33d8c82c8d24fb64f4b6bd0cfade323e7d2c4285fb730fe6092b9", + "file": "src/app/domain/valueAndText.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "export class ValueAndText {\n text: string;\n value: string;\n\n constructor(value: string, text: string) {\n this.text = text;\n this.value = value;\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "value", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 3, + "jsdoctags": [ + { + "name": "value", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "text", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 2 + }, + { + "name": "value", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 3 + } + ], + "methods": [], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "Workgroup", + "id": "class-Workgroup-2c3a120424ef2f609cee9a1b9f84b036d8166459bc19991000f445a143b38ca9c56fe613dcd220d9647f6ecec69b51454817683074af9e3886adf809704cab60", + "file": "src/assets/wise5/classroomMonitor/classroomMonitorComponents/studentGrading/student-grading-tools/student-grading-tools.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { Component, OnInit } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { Subscription } from 'rxjs/internal/Subscription';\nimport { copy } from '../../../../common/object/object';\nimport { ConfigService } from '../../../../services/configService';\nimport { TeacherDataService } from '../../../../services/teacherDataService';\nimport { getAvatarColorForWorkgroupId } from '../../../../common/workgroup/workgroup';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { filter } from 'rxjs';\nimport { WorkgroupSelectAutocompleteComponent } from '../../../../../../app/classroom-monitor/workgroup-select/workgroup-select-autocomplete/workgroup-select-autocomplete.component';\n\nclass Workgroup {\n periodId: number;\n workgroupId: number;\n}\n\n@Component({\n imports: [MatButtonModule, MatIconModule, MatTooltipModule, WorkgroupSelectAutocompleteComponent],\n selector: 'student-grading-tools',\n templateUrl: './student-grading-tools.component.html'\n})\nexport class StudentGradingToolsComponent implements OnInit {\n protected avatarColor: string;\n protected nextWorkgroup: Workgroup;\n private periodId: number;\n protected prevWorkgroup: Workgroup;\n private subscriptions: Subscription = new Subscription();\n private workgroupId: number;\n private workgroups: Workgroup[];\n\n constructor(\n private configService: ConfigService,\n private dataService: TeacherDataService,\n private route: ActivatedRoute,\n private router: Router\n ) {}\n\n ngOnInit(): void {\n if (/unit\\/(\\d*)\\/team\\/(\\w*)$/.test(this.router.url)) {\n this.workgroupId = parseInt(this.router.url.match(/\\/team\\/(\\d+)$/)[1]);\n }\n this.updateModel();\n this.subscriptions.add(\n this.dataService.currentPeriodChanged$.subscribe(() => {\n this.updateModel();\n })\n );\n this.subscriptions.add(\n this.dataService.currentWorkgroupChanged$\n .pipe(filter((workgroup) => workgroup.currentWorkgroup != null))\n .subscribe(({ currentWorkgroup }) => {\n this.workgroupId = currentWorkgroup.workgroupId;\n this.updateModel();\n this.router.navigate(['team', this.workgroupId], { relativeTo: this.route });\n })\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n ngOnChanges(): void {\n this.updateModel();\n }\n\n private updateModel(): void {\n this.avatarColor = getAvatarColorForWorkgroupId(this.workgroupId);\n this.periodId = this.dataService.getCurrentPeriod().periodId;\n this.filterWorkgroups();\n this.sortWorkgroups();\n this.setNextAndPrev();\n }\n\n private filterWorkgroups(): void {\n this.workgroups = copy(this.configService.getClassmateUserInfos())\n .filter((workgroup) => this.periodId === -1 || workgroup.periodId === this.periodId)\n .filter((workgroup) => workgroup.workgroupId != null);\n }\n\n private sortWorkgroups(): void {\n this.workgroups = this.workgroups.sort((a, b) => a.workgroupId - b.workgroupId);\n }\n\n private setNextAndPrev(): void {\n const currentWorkgroupIndex = this.workgroups.findIndex(\n (workgroup) => workgroup.workgroupId === this.workgroupId\n );\n this.prevWorkgroup = this.getPreviousWorkgroup(currentWorkgroupIndex);\n this.nextWorkgroup = this.getNextWorkgroup(currentWorkgroupIndex);\n }\n\n private getPreviousWorkgroup(currentWorkgroupIndex: number): Workgroup {\n return currentWorkgroupIndex > 0 ? this.workgroups[currentWorkgroupIndex - 1] : null;\n }\n\n private getNextWorkgroup(currentWorkgroupIndex: number): Workgroup {\n return currentWorkgroupIndex < this.workgroups.length - 1\n ? this.workgroups[currentWorkgroupIndex + 1]\n : null;\n }\n\n protected goToTeam(workgroup: Workgroup): void {\n this.dataService.setCurrentWorkgroup(workgroup);\n }\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "periodId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 15 + }, + { + "name": "workgroupId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 16 + } + ], + "methods": [], + "indexSignatures": [], + "extends": [], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "WroteXNumberOfWordsConstraintStrategy", + "id": "class-WroteXNumberOfWordsConstraintStrategy-87c7134eac91dff10bceef558ec1628d17182c0b206eb341fd99dbfb0381e6a8d29160ce2fd14612270dfeb02d665133ebeacd242f308ac4ea397d31baf96699", + "file": "src/assets/wise5/common/constraint/strategies/WroteXNumberOfWordsConstraintStrategy.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { AbstractConstraintStrategy } from './AbstractConstraintStrategy';\n\nexport class WroteXNumberOfWordsConstraintStrategy extends AbstractConstraintStrategy {\n evaluate(criteria: any): boolean {\n const params = criteria.params;\n const nodeId = params.nodeId;\n const componentId = params.componentId;\n const requiredNumberOfWords = params.requiredNumberOfWords;\n const componentState = this.dataService.getLatestComponentStateByNodeIdAndComponentId(\n nodeId,\n componentId\n );\n if (componentState != null) {\n const studentData = componentState.studentData;\n const response = studentData.response;\n const numberOfWords = this.wordCount(response);\n if (numberOfWords >= requiredNumberOfWords) {\n return true;\n }\n }\n return false;\n }\n\n private wordCount(str: string): number {\n return str.trim().split(/\\s+/).length;\n }\n}\n", + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "annotationService", + "deprecated": false, + "deprecationMessage": "", + "type": "AnnotationService", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "completionService", + "deprecated": false, + "deprecationMessage": "", + "type": "CompletionService", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "componentServiceLookupService", + "deprecated": false, + "deprecationMessage": "", + "type": "ComponentServiceLookupService", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "configService", + "deprecated": false, + "deprecationMessage": "", + "type": "ConfigService", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "context", + "deprecated": false, + "deprecationMessage": "", + "type": "EvaluateConstraintContext", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "dataService", + "deprecated": false, + "deprecationMessage": "", + "type": "StudentDataService", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "notebookService", + "deprecated": false, + "deprecationMessage": "", + "type": "NotebookService", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "tagService", + "deprecated": false, + "deprecationMessage": "", + "type": "TagService", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "inheritance": { + "file": "AbstractConstraintStrategy" + } + } + ], + "methods": [ + { + "name": "evaluate", + "args": [ + { + "name": "criteria", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 4, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "criteria", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractConstraintStrategy" + } + }, + { + "name": "wordCount", + "args": [ + { + "name": "str", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 24, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "str", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setContext", + "args": [ + { + "name": "context", + "type": "EvaluateConstraintContext", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 21, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "context", + "type": "EvaluateConstraintContext", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractConstraintStrategy" + } + } + ], + "indexSignatures": [], + "extends": [ + "AbstractConstraintStrategy" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "XPlotLine", + "id": "class-XPlotLine-116f39baf4fc39f1bf826f46246c6c2a289f69e94d2b44b421fdb6775f1ada964dc629e0ef43e82320686b9c5dda88bf11878f015deabd216b94cbd5e1062a3d", + "file": "src/assets/wise5/components/graph/domain/xPlotLine.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { PlotLine } from './plotLine';\n\nexport class XPlotLine extends PlotLine {\n static readonly id: string = 'plot-line-x';\n\n constructor(x: number, text: string) {\n super(XPlotLine.id, x, text);\n this.label.verticalAlign = 'top';\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "x", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 4, + "jsdoctags": [ + { + "name": "x", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "id", + "defaultValue": "'plot-line-x'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 4, + "modifierKind": [ + 126, + 148 + ], + "inheritance": { + "file": "PlotLine" + } + }, + { + "name": "color", + "defaultValue": "'red'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 2, + "inheritance": { + "file": "PlotLine" + } + }, + { + "name": "label", + "defaultValue": "{\n align: '',\n text: '',\n verticalAlign: ''\n }", + "deprecated": false, + "deprecationMessage": "", + "type": "literal type", + "indexKey": "", + "optional": false, + "description": "", + "line": 4, + "inheritance": { + "file": "PlotLine" + } + }, + { + "name": "value", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 9, + "inheritance": { + "file": "PlotLine" + } + }, + { + "name": "width", + "defaultValue": "2", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "inheritance": { + "file": "PlotLine" + } + }, + { + "name": "zIndex", + "defaultValue": "5", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "inheritance": { + "file": "PlotLine" + } + } + ], + "methods": [], + "indexSignatures": [], + "extends": [ + "PlotLine" + ], + "hostBindings": [], + "hostListeners": [] + }, + { + "name": "YPlotLine", + "id": "class-YPlotLine-da3016b3e52ec3d1c693c0de1e5055e89fc852f0e3e22901725468b771de8d34ea4ffaf3b985c825b2f83fc5d82a98e3e1ad0e1b741f8850c7cd44288265d662", + "file": "src/assets/wise5/components/graph/domain/yPlotLine.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "class", + "sourceCode": "import { PlotLine } from './plotLine';\n\nexport class YPlotLine extends PlotLine {\n static readonly id: string = 'plot-line-y';\n\n constructor(y: number, text: string) {\n super(YPlotLine.id, y, text);\n this.label.align = 'right';\n }\n}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "y", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 4, + "jsdoctags": [ + { + "name": "y", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "inputsClass": [], + "outputsClass": [], + "properties": [ + { + "name": "id", + "defaultValue": "'plot-line-y'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 4, + "modifierKind": [ + 126, + 148 + ], + "inheritance": { + "file": "PlotLine" + } + }, + { + "name": "color", + "defaultValue": "'red'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 2, + "inheritance": { + "file": "PlotLine" + } + }, + { + "name": "label", + "defaultValue": "{\n align: '',\n text: '',\n verticalAlign: ''\n }", + "deprecated": false, + "deprecationMessage": "", + "type": "literal type", + "indexKey": "", + "optional": false, + "description": "", + "line": 4, + "inheritance": { + "file": "PlotLine" + } + }, + { + "name": "value", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 9, + "inheritance": { + "file": "PlotLine" + } + }, + { + "name": "width", + "defaultValue": "2", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "inheritance": { + "file": "PlotLine" + } + }, + { + "name": "zIndex", + "defaultValue": "5", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "inheritance": { + "file": "PlotLine" + } + } + ], + "methods": [], + "indexSignatures": [], + "extends": [ + "PlotLine" + ], + "hostBindings": [], + "hostListeners": [] + } + ], + "directives": [ + { + "name": "AbstractBranchAuthoringComponent", + "id": "directive-AbstractBranchAuthoringComponent-1f31f044c4b5cc09a715c32898f7e057ca41ecfb979bc58864bf2cb3062e65ff32ede52427510236636fe96317cdcf5bdf13bbf6579fda1cf2d0c6b8e1cdb21c", + "file": "src/assets/wise5/authoringTool/abstract-branch-authoring/abstract-branch-authoring.component.ts", + "type": "directive", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Directive } from '@angular/core';\nimport { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\nimport { TeacherProjectService } from '../../services/teacherProjectService';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport {\n CHOICE_CHOSEN_VALUE,\n RANDOM_VALUE,\n SCORE_VALUE,\n WORKGROUP_ID_VALUE\n} from '../../../../app/domain/branchCriteria';\nimport { AuthorBranchParams } from '../../common/AuthorBranchParams';\n\n@Directive()\nexport abstract class AbstractBranchAuthoringComponent {\n protected readonly CHOICE_CHOSEN_VALUE: string = CHOICE_CHOSEN_VALUE;\n protected readonly RANDOM_VALUE: string = RANDOM_VALUE;\n protected readonly SCORE_VALUE: string = SCORE_VALUE;\n protected readonly WORKGROUP_ID_VALUE: string = WORKGROUP_ID_VALUE;\n\n protected allowedComponentTypes: string[] = [];\n private components: any[];\n protected pathFormGroup: FormGroup = this.fb.group({});\n protected targetId: string;\n protected targetTitle: string;\n\n protected formGroup: FormGroup = this.fb.group({\n pathCount: new FormControl('', [Validators.required]),\n criteria: new FormControl('', [Validators.required]),\n pathFormGroup: this.pathFormGroup,\n mergeStep: new FormControl('')\n });\n\n constructor(\n protected fb: FormBuilder,\n protected projectService: TeacherProjectService,\n protected route: ActivatedRoute,\n protected router: Router\n ) {}\n\n ngOnInit(): void {\n this.targetId = history.state.targetId;\n this.targetTitle = this.projectService.getNodePositionAndTitle(this.targetId);\n this.formGroup.controls['criteria'].valueChanges.subscribe((criteria: string) => {\n if (this.criteriaRequiresAdditionalParams(criteria)) {\n this.updateAllowedComponentTypes();\n this.updateStepAndComponentParams();\n } else {\n this.removeAdditionalParams();\n }\n });\n }\n\n protected criteriaRequiresAdditionalParams(criteria: string): boolean {\n return criteria === this.SCORE_VALUE || criteria === this.CHOICE_CHOSEN_VALUE;\n }\n\n private updateAllowedComponentTypes(): void {\n const criteria = this.formGroup.get('criteria').value;\n if (criteria === this.SCORE_VALUE) {\n this.allowedComponentTypes = [\n 'AiChat',\n 'Animation',\n 'AudioOscillator',\n 'ConceptMap',\n 'DialogGuidance',\n 'Discussion',\n 'Draw',\n 'Embedded',\n 'Graph',\n 'Label',\n 'Match',\n 'MultipleChoice',\n 'OpenResponse',\n 'PeerChat',\n 'Table'\n ];\n } else if (criteria === this.CHOICE_CHOSEN_VALUE) {\n this.allowedComponentTypes = ['MultipleChoice'];\n }\n }\n\n private updateStepAndComponentParams(): void {\n this.initializeComponentIdSelector();\n this.initializeNodeIdSelector();\n this.updateComponentIdSelector();\n }\n\n private initializeNodeIdSelector(): void {\n if (this.formGroup.controls['nodeId'] == null) {\n this.formGroup.addControl('nodeId', new FormControl('', [Validators.required]));\n this.formGroup.controls['nodeId'].valueChanges.subscribe((nodeId: string) => {\n this.components = this.projectService.getComponents(nodeId);\n this.setComponentId('');\n this.tryAutoSelectComponentId();\n });\n if (this.formGroup.get('nodeId')?.value === '') {\n this.setNodeId(this.targetId);\n }\n }\n }\n\n private initializeComponentIdSelector(): void {\n if (this.formGroup.controls['componentId'] == null) {\n this.formGroup.addControl('componentId', new FormControl('', [Validators.required]));\n }\n }\n\n private updateComponentIdSelector(): void {\n const selectedComponent = this.components.find(\n (component) => component.id === this.formGroup.get('componentId')?.value\n );\n if (selectedComponent == null || !this.allowedComponentTypes.includes(selectedComponent.type)) {\n this.setComponentId('');\n }\n this.tryAutoSelectComponentId();\n }\n\n private tryAutoSelectComponentId(): void {\n const criteria = this.formGroup.get('criteria').value;\n if (criteria === this.SCORE_VALUE) {\n this.tryAutoSelectScoreComponent();\n } else if (criteria === this.CHOICE_CHOSEN_VALUE) {\n this.tryAutoSelectChoiceChosenComponent();\n }\n }\n\n private tryAutoSelectScoreComponent(): void {\n const numWorkComponents = this.components.filter((component) =>\n this.projectService.componentHasWork(component)\n ).length;\n if (numWorkComponents === 1) {\n this.setComponentId(\n this.components.find((component) => this.projectService.componentHasWork(component)).id\n );\n }\n }\n\n private tryAutoSelectChoiceChosenComponent(): void {\n const numMultipleChoice = this.components.filter(\n (component) => component.type === 'MultipleChoice'\n ).length;\n if (numMultipleChoice === 1) {\n this.setComponentId(\n this.components.find((component) => component.type === 'MultipleChoice').id\n );\n }\n }\n\n private removeAdditionalParams(): void {\n this.formGroup.removeControl('nodeId');\n this.formGroup.removeControl('componentId');\n }\n\n protected setPathCount(pathCount: number): void {\n this.formGroup.get('pathCount').setValue(pathCount);\n }\n\n protected setCriteria(criteria: string): void {\n this.formGroup.get('criteria').setValue(criteria);\n }\n\n protected setNodeId(nodeId: string): void {\n this.formGroup.get('nodeId').setValue(nodeId);\n }\n\n protected setComponentId(componentId: string): void {\n this.formGroup.get('componentId').setValue(componentId);\n }\n\n protected setMergeStep(nodeId: string): void {\n this.formGroup.get('mergeStep').setValue(nodeId);\n }\n\n protected getBranchParams(): AuthorBranchParams {\n const params: AuthorBranchParams = {\n branchStepId: this.targetId,\n componentId: this.formGroup.get('componentId')?.value,\n criteria: this.formGroup.get('criteria').value,\n mergeStepId: this.formGroup.get('mergeStep').value,\n nodeId: this.formGroup.get('nodeId')?.value,\n pathCount: this.formGroup.get('pathCount').value\n };\n if (this.criteriaRequiresAdditionalParams(params.criteria)) {\n params.paths = [];\n this.pathFormGroup.get('paths').value.forEach((value: string) => {\n params.paths.push(value);\n });\n }\n return params;\n }\n}\n", + "providers": [], + "hostDirectives": [], + "standalone": false, + "inputsClass": [], + "outputsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "propertiesClass": [ + { + "name": "allowedComponentTypes", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 20, + "modifierKind": [ + 124 + ] + }, + { + "name": "CHOICE_CHOSEN_VALUE", + "defaultValue": "CHOICE_CHOSEN_VALUE", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 124, + 148 + ] + }, + { + "name": "components", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 21, + "modifierKind": [ + 123 + ] + }, + { + "name": "formGroup", + "defaultValue": "this.fb.group({\n pathCount: new FormControl('', [Validators.required]),\n criteria: new FormControl('', [Validators.required]),\n pathFormGroup: this.pathFormGroup,\n mergeStep: new FormControl('')\n })", + "deprecated": false, + "deprecationMessage": "", + "type": "FormGroup", + "indexKey": "", + "optional": false, + "description": "", + "line": 26, + "modifierKind": [ + 124 + ] + }, + { + "name": "pathFormGroup", + "defaultValue": "this.fb.group({})", + "deprecated": false, + "deprecationMessage": "", + "type": "FormGroup", + "indexKey": "", + "optional": false, + "description": "", + "line": 22, + "modifierKind": [ + 124 + ] + }, + { + "name": "RANDOM_VALUE", + "defaultValue": "RANDOM_VALUE", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "modifierKind": [ + 124, + 148 + ] + }, + { + "name": "SCORE_VALUE", + "defaultValue": "SCORE_VALUE", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "modifierKind": [ + 124, + 148 + ] + }, + { + "name": "targetId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 23, + "modifierKind": [ + 124 + ] + }, + { + "name": "targetTitle", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 24, + "modifierKind": [ + 124 + ] + }, + { + "name": "WORKGROUP_ID_VALUE", + "defaultValue": "WORKGROUP_ID_VALUE", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "modifierKind": [ + 124, + 148 + ] + } + ], + "methodsClass": [ + { + "name": "criteriaRequiresAdditionalParams", + "args": [ + { + "name": "criteria", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 53, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "criteria", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getBranchParams", + "args": [], + "optional": false, + "returnType": "AuthorBranchParams", + "typeParameters": [], + "line": 174, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "initializeComponentIdSelector", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 102, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "initializeNodeIdSelector", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 88, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 40, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "removeAdditionalParams", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 149, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "setComponentId", + "args": [ + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 166, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setCriteria", + "args": [ + { + "name": "criteria", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 158, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "criteria", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setMergeStep", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 170, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setNodeId", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 162, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setPathCount", + "args": [ + { + "name": "pathCount", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 154, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "pathCount", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "tryAutoSelectChoiceChosenComponent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 138, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "tryAutoSelectComponentId", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 118, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "tryAutoSelectScoreComponent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 127, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "updateAllowedComponentTypes", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 57, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "updateComponentIdSelector", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 108, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "updateStepAndComponentParams", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 82, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + } + ], + "extends": [], + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "fb", + "type": "FormBuilder", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 31, + "jsdoctags": [ + { + "name": "fb", + "type": "FormBuilder", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + }, + { + "name": "AbstractClassResponsesComponent", + "id": "directive-AbstractClassResponsesComponent-e22c07b539554dcef35042d55e0fa66996cff098f23d4fd3426a5fe02fd2c13cb072d62c7e63594512f6092c25c0304c55165d41d645ca50d6661c1ced00c4b3", + "file": "src/assets/wise5/classroomMonitor/classroomMonitorComponents/AbstractClassResponsesComponent.ts", + "type": "directive", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Directive } from '@angular/core';\nimport { AnnotationService } from '../../services/annotationService';\nimport { ClassroomStatusService } from '../../services/classroomStatusService';\nimport { ConfigService } from '../../services/configService';\nimport { NotificationService } from '../../services/notificationService';\nimport { TeacherDataService } from '../../services/teacherDataService';\nimport { TeacherProjectService } from '../../services/teacherProjectService';\nimport { Node } from '../../common/Node';\nimport { copy } from '../../common/object/object';\nimport { CompletionStatus } from './shared/CompletionStatus';\n\n@Directive()\nexport abstract class AbstractClassResponsesComponent {\n protected allWorkgroupsExpanded: boolean;\n protected component: any;\n protected node: Node;\n protected sortBy: string;\n protected sortedWorkgroups: any[] = [];\n protected workgroups: any[] = [];\n protected workgroupExpanded: Record = {}; // workgroup is expanded or not\n private workgroupInView: Record = {}; // workgroup is in view or not\n protected workgroupsById: Record = {};\n\n constructor(\n protected annotationService: AnnotationService,\n protected classroomStatusService: ClassroomStatusService,\n protected configService: ConfigService,\n protected dataService: TeacherDataService,\n protected notificationService: NotificationService,\n protected projectService: TeacherProjectService\n ) {}\n\n protected retrieveStudentData(node: Node): void {\n this.dataService.retrieveStudentDataForNode(node).subscribe(() => {\n this.workgroups = copy(this.configService.getClassmateUserInfos()).filter(\n (workgroup) =>\n workgroup.workgroupId != null &&\n this.classroomStatusService.hasStudentStatus(workgroup.workgroupId)\n );\n this.setWorkgroupsById();\n this.sortBy = '';\n this.sortWorkgroups('workgroupId');\n document.body.scrollTop = document.documentElement.scrollTop = 0;\n });\n }\n\n protected setWorkgroupsById(): void {\n this.workgroups.forEach((workgroup) => {\n this.workgroupsById[workgroup.workgroupId] = workgroup;\n this.workgroupExpanded[workgroup.workgroupId] = false;\n if (this.component) {\n this.updateWorkgroup(workgroup);\n }\n });\n }\n\n protected updateWorkgroup(workgroup: any): void {\n const alertNotifications = this.notificationService.getAlertNotifications({\n nodeId: this.node.id,\n toWorkgroupId: workgroup.workgroupId\n });\n workgroup.hasAlert = alertNotifications.length > 0;\n workgroup.hasNewAlert = alertNotifications.some((alert) => !alert.timeDismissed);\n const completionStatus = this.getCompletionStatus(workgroup.workgroupId);\n workgroup.isVisible = completionStatus.isVisible ? 1 : 0;\n workgroup.completionStatus = completionStatus.getStateNumber();\n const studentStatus = this.classroomStatusService.getStudentStatusForWorkgroupId(\n workgroup.workgroupId\n );\n workgroup.nodeStatus = studentStatus.nodeStatuses[this.node.id] || {};\n workgroup.score = this.getWorkgroupScore(workgroup.workgroupId);\n }\n\n private getCompletionStatus(workgroupId: number): CompletionStatus {\n const studentStatus = this.classroomStatusService.getStudentStatusForWorkgroupId(workgroupId);\n return studentStatus != null && studentStatus.nodeStatuses[this.node.id] != null\n ? this.createCompletionStatus(studentStatus.nodeStatuses[this.node.id], workgroupId)\n : new CompletionStatus();\n }\n\n private createCompletionStatus(nodeStatus: any, workgroupId: number): CompletionStatus {\n const completionStatus: CompletionStatus = new CompletionStatus();\n completionStatus.isVisible = nodeStatus.isVisible;\n completionStatus.latestWorkTime = this.getLatestWorkTimeByWorkgroupId(workgroupId);\n completionStatus.latestAnnotationTime = this.getLatestAnnotationTimeByWorkgroupId(workgroupId);\n if (!this.hasWork()) {\n completionStatus.isCompleted = nodeStatus.isVisited;\n }\n if (completionStatus.latestWorkTime) {\n completionStatus.isCompleted = this.isCompleted(workgroupId, nodeStatus);\n }\n return completionStatus;\n }\n\n protected abstract getWorkgroupScore(workgroupId: number): number;\n\n protected abstract hasWork(): boolean;\n\n protected abstract isCompleted(workgroupId: number, nodeStatus: any): boolean;\n\n private getLatestWorkTimeByWorkgroupId(workgroupId: number): string {\n return (\n this.getComponentStates().findLast(\n (componentState) => componentState.workgroupId === workgroupId\n )?.serverSaveTime ?? null\n );\n }\n\n protected abstract getComponentStates(): any[];\n\n private getLatestAnnotationTimeByWorkgroupId(workgroupId: number): string {\n return (\n this.dataService\n .getAnnotationsByNodeId(this.node.id)\n .findLast((annotation) => this.isAnnotationForWorkgroup(annotation, workgroupId))\n ?.serverSaveTime ?? null\n );\n }\n\n protected isAnnotationForWorkgroup(annotation: any, workgroupId: number): boolean {\n return (\n annotation.toWorkgroupId === workgroupId &&\n annotation.fromWorkgroupId === this.configService.getWorkgroupId()\n );\n }\n\n protected sortWorkgroups(sortBy: string): void {\n this.sortBy = this.sortBy === sortBy ? `-${sortBy}` : sortBy;\n this.sortedWorkgroups = [...this.workgroups].sort(this.createSortFunction());\n }\n\n private createSortFunction(): (workgroupA: any, workgroupB: any) => number {\n return (workgroupA: any, workgroupB: any) => {\n const ascending = this.sortBy[0] !== '-';\n const fieldName = this.sortBy.replace('-', '');\n if (workgroupA.isVisible === workgroupB.isVisible) {\n if (workgroupA[fieldName] === workgroupB[fieldName]) {\n return workgroupA.workgroupId - workgroupB.workgroupId;\n } else {\n return ascending\n ? workgroupA[fieldName] - workgroupB[fieldName]\n : workgroupB[fieldName] - workgroupA[fieldName];\n }\n } else {\n return workgroupB.isVisible - workgroupA.isVisible;\n }\n };\n }\n\n protected onIntersection(\n workgroupId: number,\n intersectionObserverEntries: IntersectionObserverEntry[]\n ): void {\n intersectionObserverEntries.forEach((entry) => {\n this.workgroupInView[workgroupId] = entry.isIntersecting;\n if (this.allWorkgroupsExpanded && entry.isIntersecting) {\n this.workgroupExpanded[workgroupId] = true;\n }\n });\n }\n\n protected onUpdateExpand({ workgroupId, value: expanded }): void {\n this.workgroupExpanded[workgroupId] = expanded;\n if (!expanded) {\n this.allWorkgroupsExpanded = false;\n }\n }\n\n protected isWorkgroupShown(workgroup: any): boolean {\n return this.dataService.isWorkgroupShown(workgroup);\n }\n\n protected collapseAll(): void {\n this.workgroups.forEach((workgroup) => (this.workgroupExpanded[workgroup.workgroupId] = false));\n this.allWorkgroupsExpanded = false;\n }\n\n protected expandAll(): void {\n this.workgroups\n .filter((workgroup) => this.workgroupInView[workgroup.workgroupId])\n .forEach((workgroup) => (this.workgroupExpanded[workgroup.workgroupId] = true));\n this.allWorkgroupsExpanded = true;\n }\n}\n", + "providers": [], + "hostDirectives": [], + "standalone": false, + "inputsClass": [], + "outputsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "propertiesClass": [ + { + "name": "allWorkgroupsExpanded", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "modifierKind": [ + 124 + ] + }, + { + "name": "component", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 124 + ] + }, + { + "name": "node", + "deprecated": false, + "deprecationMessage": "", + "type": "Node", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "modifierKind": [ + 124 + ] + }, + { + "name": "sortBy", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "modifierKind": [ + 124 + ] + }, + { + "name": "sortedWorkgroups", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "modifierKind": [ + 124 + ] + }, + { + "name": "workgroupExpanded", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "Record", + "indexKey": "", + "optional": false, + "description": "", + "line": 20, + "modifierKind": [ + 124 + ] + }, + { + "name": "workgroupInView", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "Record", + "indexKey": "", + "optional": false, + "description": "", + "line": 21, + "modifierKind": [ + 123 + ] + }, + { + "name": "workgroups", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "modifierKind": [ + 124 + ] + }, + { + "name": "workgroupsById", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "Record", + "indexKey": "", + "optional": false, + "description": "", + "line": 22, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "collapseAll", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 173, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "createCompletionStatus", + "args": [ + { + "name": "nodeStatus", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "CompletionStatus", + "typeParameters": [], + "line": 81, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeStatus", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createSortFunction", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 132, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "expandAll", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 178, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "getCompletionStatus", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "CompletionStatus", + "typeParameters": [], + "line": 74, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getComponentStates", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 109, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124, + 128 + ] + }, + { + "name": "getLatestAnnotationTimeByWorkgroupId", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 111, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getLatestWorkTimeByWorkgroupId", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 101, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getWorkgroupScore", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 95, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124, + 128 + ], + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "hasWork", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 97, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124, + 128 + ] + }, + { + "name": "isAnnotationForWorkgroup", + "args": [ + { + "name": "annotation", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 120, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "annotation", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isCompleted", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeStatus", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 99, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124, + 128 + ], + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeStatus", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isWorkgroupShown", + "args": [ + { + "name": "workgroup", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 169, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "workgroup", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "onIntersection", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "intersectionObserverEntries", + "type": "IntersectionObserverEntry[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 150, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "intersectionObserverEntries", + "type": "IntersectionObserverEntry[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "onUpdateExpand", + "args": [ + { + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 162, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "retrieveStudentData", + "args": [ + { + "name": "node", + "type": "Node", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 33, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "node", + "type": "Node", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setWorkgroupsById", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 47, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "sortWorkgroups", + "args": [ + { + "name": "sortBy", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 127, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "sortBy", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "updateWorkgroup", + "args": [ + { + "name": "workgroup", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 57, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "workgroup", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "extends": [], + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "classroomStatusService", + "type": "ClassroomStatusService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "notificationService", + "type": "NotificationService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 22, + "jsdoctags": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "classroomStatusService", + "type": "ClassroomStatusService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "notificationService", + "type": "NotificationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + }, + { + "name": "AbstractComponentAuthoring", + "id": "directive-AbstractComponentAuthoring-743ead941ce041b0afc0de75c358ad3cbf93c994c7a8aff5377749d87c0814453c6288e597023dbcb06d97af0a69d8f94cdb67a309c42af7f057c1152616c00e", + "file": "src/assets/wise5/authoringTool/components/AbstractComponentAuthoring.ts", + "type": "directive", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Directive } from '@angular/core';\nimport { Subject, Subscription } from 'rxjs';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport { ProjectAssetService } from '../../../../app/services/projectAssetService';\nimport { ConfigService } from '../../services/configService';\nimport { TeacherProjectService } from '../../services/teacherProjectService';\nimport { TeacherNodeService } from '../../services/teacherNodeService';\nimport { moveObjectDown, moveObjectUp } from '../../common/array/array';\n\n@Directive()\nexport abstract class AbstractComponentAuthoring {\n allowedConnectedComponentTypes: string[];\n componentContent: any;\n componentId: string;\n idToOrder: any;\n inputChange: Subject = new Subject();\n nodeId: string;\n promptChange: Subject = new Subject();\n subscriptions: Subscription = new Subscription();\n\n constructor(\n protected configService: ConfigService,\n protected nodeService: TeacherNodeService,\n protected projectAssetService: ProjectAssetService,\n protected projectService: TeacherProjectService\n ) {}\n\n ngOnInit(): void {\n this.componentId = this.componentContent.id;\n this.idToOrder = this.projectService.idToOrder;\n this.subscriptions.add(\n this.projectService.componentChanged$.subscribe(() => {\n this.componentChanged();\n })\n );\n this.subscriptions.add(\n this.nodeService.starterStateResponse$.subscribe((args: any) => {\n if (this.isForThisComponent(args)) {\n this.saveStarterState(args.starterState);\n }\n })\n );\n this.subscriptions.add(\n this.nodeService.deleteStarterState$.subscribe((args: any) => {\n if (this.isForThisComponent(args)) {\n this.deleteStarterState();\n }\n })\n );\n this.subscriptions.add(\n this.promptChange\n .pipe(debounceTime(1000), distinctUntilChanged())\n .subscribe((prompt: string) => {\n this.componentContent.prompt = prompt;\n this.componentChanged();\n })\n );\n this.subscriptions.add(\n this.inputChange.pipe(debounceTime(1000), distinctUntilChanged()).subscribe(() => {\n this.componentChanged();\n })\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n promptChanged(prompt: string): void {\n this.promptChange.next(prompt);\n }\n\n componentChanged(): void {\n this.projectService.nodeChanged();\n }\n\n isForThisComponent(object: any): boolean {\n return object.nodeId == this.nodeId && object.componentId == this.componentId;\n }\n\n deleteStarterState(): void {}\n\n saveStarterState(starterState: any): void {}\n\n setShowSubmitButtonValue(show: boolean): void {\n if (show == null || show == false) {\n this.componentContent.showSaveButton = false;\n this.componentContent.showSubmitButton = false;\n } else {\n this.componentContent.showSaveButton = true;\n this.componentContent.showSubmitButton = true;\n }\n this.nodeService.broadcastComponentShowSubmitButtonValueChanged({\n nodeId: this.nodeId,\n componentId: this.componentId,\n showSubmitButton: show\n });\n }\n\n assetSelected({ nodeId, componentId, assetItem, target }): void {}\n\n getComponents(nodeId: string): any[] {\n return this.projectService.getComponents(nodeId);\n }\n\n getComponent(nodeId: string, componentId: string): any {\n return this.projectService.getComponent(nodeId, componentId);\n }\n\n confirmAndRemove(message: string, array: any[], index: number): void {\n if (confirm(message)) {\n array.splice(index, 1);\n this.componentChanged();\n }\n }\n\n moveObjectUp(objects: any[], index: number): void {\n moveObjectUp(objects, index);\n this.componentChanged();\n }\n\n moveObjectDown(objects: any[], index: number): void {\n moveObjectDown(objects, index);\n this.componentChanged();\n }\n}\n", + "providers": [], + "hostDirectives": [], + "standalone": false, + "inputsClass": [], + "outputsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "propertiesClass": [ + { + "name": "allowedConnectedComponentTypes", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 12 + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 13 + }, + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 14 + }, + { + "name": "idToOrder", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 15 + }, + { + "name": "inputChange", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 16 + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 17 + }, + { + "name": "promptChange", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 18 + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 19 + } + ], + "methodsClass": [ + { + "name": "assetSelected", + "args": [ + { + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 100, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "componentChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 73, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "confirmAndRemove", + "args": [ + { + "name": "message", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "array", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 110, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "message", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "array", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "deleteStarterState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 81, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getComponent", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 106, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getComponents", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 102, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isForThisComponent", + "args": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 77, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "moveObjectDown", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 122, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "moveObjectUp", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 117, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 65, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 28, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "promptChanged", + "args": [ + { + "name": "prompt", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 69, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "prompt", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "saveStarterState", + "args": [ + { + "name": "starterState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "starterState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setShowSubmitButtonValue", + "args": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 85, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "extends": [], + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeService", + "type": "TeacherNodeService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectAssetService", + "type": "ProjectAssetService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 19, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeService", + "type": "TeacherNodeService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectAssetService", + "type": "ProjectAssetService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + }, + { + "name": "AbstractExportComponent", + "id": "directive-AbstractExportComponent-5958dae651b293ffd3c2d78de317351e8e7f8d91726d8b9f7b77594d381593f43a7f670e09be354dc272c2b2826088412994494dbdec3858995eaa0a4942e681", + "file": "src/assets/wise5/classroomMonitor/dataExport/abstract-export.component.ts", + "type": "directive", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { MatDialog } from '@angular/material/dialog';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { DialogWithSpinnerComponent } from '../../directives/dialog-with-spinner/dialog-with-spinner.component';\nimport { AnnotationService } from '../../services/annotationService';\nimport { ConfigService } from '../../services/configService';\nimport { DataExportService } from '../../services/dataExportService';\nimport { TeacherDataService } from '../../services/teacherDataService';\nimport { TeacherProjectService } from '../../services/teacherProjectService';\nimport { Directive } from '@angular/core';\n\n@Directive()\nexport abstract class AbstractExportComponent {\n protected canViewStudentNames = false;\n protected exportStepSelectionType: string = 'exportAllSteps';\n protected flattenedProjectAsNodeIds: string[] = [];\n protected includeStudentNames = true;\n protected includeStudentWork = true;\n protected nodes: any[] = [];\n protected project: any;\n protected projectIdToOrder: any;\n protected projectItems: any;\n\n constructor(\n public annotationService: AnnotationService,\n public configService: ConfigService,\n public dataExportService: DataExportService,\n public dataService: TeacherDataService,\n protected dialog: MatDialog,\n public projectService: TeacherProjectService,\n protected route: ActivatedRoute,\n protected router: Router\n ) {}\n\n ngOnInit(): void {\n this.project = this.projectService.project;\n const nodeOrderOfProject = this.projectService.getNodeOrderOfProject(this.project);\n this.projectIdToOrder = nodeOrderOfProject.idToOrder;\n this.projectItems = nodeOrderOfProject.nodes;\n this.flattenedProjectAsNodeIds = this.projectService.getFlattenedProjectAsNodeIds();\n this.nodes = Object.values(this.projectIdToOrder);\n this.nodes.sort(this.sortNodesByOrder);\n this.canViewStudentNames = this.configService.getPermissions().canViewStudentNames;\n }\n\n private sortNodesByOrder(nodeA: any, nodeB: any): number {\n return nodeA.order - nodeB.order;\n }\n\n protected showDownloadingExportMessage(): void {\n this.dialog.open(DialogWithSpinnerComponent, {\n data: {\n title: $localize`Downloading Export`\n },\n disableClose: false\n });\n }\n\n protected hideDownloadingExportMessage(): void {\n this.dialog.closeAll();\n }\n\n protected getSelectedNodesToExport(): any[] {\n const selectedNodes = [];\n for (let n = 0; n < this.projectItems.length; n++) {\n let item = this.projectItems[n];\n if (item.node.type === 'node') {\n let nodeId = item.node.id;\n if (item.checked) {\n const selectedStep = {\n nodeId: nodeId\n };\n selectedNodes.push(selectedStep);\n }\n if (item.node.components != null && item.node.components.length > 0) {\n item.node.components.map((component) => {\n if (component.checked) {\n const selectedComponent = {\n nodeId: nodeId,\n componentId: component.id\n };\n selectedNodes.push(selectedComponent);\n }\n });\n }\n }\n }\n return selectedNodes;\n }\n\n /**\n * @param users An array of user objects. Each user object contains an id and name.\n * @returns {object} An object that contains key/value pairs. The key is userIdX\n * or studentNameX where X is an integer. The values are the corresponding actual\n * values of user id and student name.\n */\n extractUserIDsAndStudentNames(users: any[]): Record {\n const userIDsAndStudentNames = {};\n for (let u = 0; u < users.length; u++) {\n let user = users[u];\n userIDsAndStudentNames['userId' + (u + 1)] = user.id;\n if (this.canViewStudentNames) {\n userIDsAndStudentNames['studentName' + (u + 1)] = user.name;\n }\n }\n return userIDsAndStudentNames;\n }\n\n protected goBack(): void {\n this.router.navigate(['..'], { relativeTo: this.route });\n }\n}\n", + "providers": [], + "hostDirectives": [], + "standalone": false, + "inputsClass": [], + "outputsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "propertiesClass": [ + { + "name": "annotationService", + "deprecated": false, + "deprecationMessage": "", + "type": "AnnotationService", + "indexKey": "", + "optional": false, + "description": "", + "line": 24, + "modifierKind": [ + 125 + ] + }, + { + "name": "canViewStudentNames", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "modifierKind": [ + 124 + ] + }, + { + "name": "configService", + "deprecated": false, + "deprecationMessage": "", + "type": "ConfigService", + "indexKey": "", + "optional": false, + "description": "", + "line": 25, + "modifierKind": [ + 125 + ] + }, + { + "name": "dataExportService", + "deprecated": false, + "deprecationMessage": "", + "type": "DataExportService", + "indexKey": "", + "optional": false, + "description": "", + "line": 26, + "modifierKind": [ + 125 + ] + }, + { + "name": "dataService", + "deprecated": false, + "deprecationMessage": "", + "type": "TeacherDataService", + "indexKey": "", + "optional": false, + "description": "", + "line": 27, + "modifierKind": [ + 125 + ] + }, + { + "name": "exportStepSelectionType", + "defaultValue": "'exportAllSteps'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "modifierKind": [ + 124 + ] + }, + { + "name": "flattenedProjectAsNodeIds", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 124 + ] + }, + { + "name": "includeStudentNames", + "defaultValue": "true", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "modifierKind": [ + 124 + ] + }, + { + "name": "includeStudentWork", + "defaultValue": "true", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "modifierKind": [ + 124 + ] + }, + { + "name": "nodes", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "modifierKind": [ + 124 + ] + }, + { + "name": "project", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "modifierKind": [ + 124 + ] + }, + { + "name": "projectIdToOrder", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 20, + "modifierKind": [ + 124 + ] + }, + { + "name": "projectItems", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 21, + "modifierKind": [ + 124 + ] + }, + { + "name": "projectService", + "deprecated": false, + "deprecationMessage": "", + "type": "TeacherProjectService", + "indexKey": "", + "optional": false, + "description": "", + "line": 29, + "modifierKind": [ + 125 + ] + } + ], + "methodsClass": [ + { + "name": "extractUserIDsAndStudentNames", + "args": [ + { + "name": "users", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Record", + "typeParameters": [], + "line": 96, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nor studentNameX where X is an integer. The values are the corresponding actual\nvalues of user id and student name.\n", + "description": "

or studentNameX where X is an integer. The values are the corresponding actual\nvalues of user id and student name.

\n", + "jsdoctags": [ + { + "name": { + "pos": 3200, + "end": 3205, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "users" + }, + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3194, + "end": 3199, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

An array of user objects. Each user object contains an id and name.

\n" + }, + { + "tagName": { + "pos": 3280, + "end": 3287, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

An object that contains key/value pairs. The key is userIdX\nor studentNameX where X is an integer. The values are the corresponding actual\nvalues of user id and student name.

\n", + "returnType": "object" + } + ] + }, + { + "name": "getSelectedNodesToExport", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 62, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "goBack", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 108, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "hideDownloadingExportMessage", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 58, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 34, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "showDownloadingExportMessage", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 49, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "sortNodesByOrder", + "args": [ + { + "name": "nodeA", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeB", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 45, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeA", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeB", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "extends": [], + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dataExportService", + "type": "DataExportService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 21, + "jsdoctags": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dataExportService", + "type": "DataExportService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + }, + { + "name": "AbstractImportStepComponent", + "id": "directive-AbstractImportStepComponent-8215c956a3ce039e5f8deff5a5b394ac0a7249f5a19c5459974946efd282ed091410fc44cd5504620108f554d6ffbed7778a00c59a2112927a6499e08968e8ad", + "file": "src/assets/wise5/authoringTool/addNode/abstract-import-step/abstract-import-step.component.ts", + "type": "directive", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Directive, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { ConfigService } from '../../../services/configService';\nimport { CopyNodesService } from '../../../services/copyNodesService';\nimport { InsertNodesService } from '../../../services/insertNodesService';\nimport { TeacherProjectService } from '../../../services/teacherProjectService';\nimport { InsertFirstNodeInBranchPathService } from '../../../services/insertFirstNodeInBranchPathService';\nimport { AddStepTarget } from '../../../../../app/domain/addStepTarget';\n\n@Directive()\nexport abstract class AbstractImportStepComponent implements OnInit {\n protected importProjectId: number;\n protected submitting: boolean;\n protected target: AddStepTarget;\n\n constructor(\n protected configService: ConfigService,\n protected copyNodesService: CopyNodesService,\n protected insertFirstNodeInBranchPathService: InsertFirstNodeInBranchPathService,\n protected insertNodesService: InsertNodesService,\n protected projectService: TeacherProjectService,\n protected route: ActivatedRoute,\n protected router: Router\n ) {}\n\n ngOnInit(): void {\n this.target = history.state;\n this.importProjectId = this.target.importProjectId;\n }\n\n protected import(nodesToImport: any[]): void {\n this.submitting = true;\n this.copyNodesService\n .copyNodes(nodesToImport, this.importProjectId, this.configService.getProjectId())\n .subscribe((copiedNodes: any[]) => {\n const nodesWithNewNodeIds = this.projectService.getNodesWithNewIds(copiedNodes);\n if (this.target.type === 'firstStepInBranchPath') {\n this.insertFirstNodeInBranchPathService.insertNodes(\n nodesWithNewNodeIds,\n this.target.branchNodeId,\n this.target.firstNodeIdInBranchPath\n );\n } else {\n this.insertNodesService.insertNodes(nodesWithNewNodeIds, this.target.targetId);\n }\n this.projectService.checkPotentialStartNodeIdChangeThenSaveProject().then(() => {\n this.projectService.refreshProject();\n this.router.navigate(['../../..'], { relativeTo: this.route });\n });\n });\n }\n}\n", + "providers": [], + "hostDirectives": [], + "standalone": false, + "inputsClass": [], + "outputsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "propertiesClass": [ + { + "name": "importProjectId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "modifierKind": [ + 124 + ] + }, + { + "name": "submitting", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "modifierKind": [ + 124 + ] + }, + { + "name": "target", + "deprecated": false, + "deprecationMessage": "", + "type": "AddStepTarget", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "import", + "args": [ + { + "name": "nodesToImport", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 31, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodesToImport", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "" + } + ], + "extends": [], + "implements": [ + "OnInit" + ], + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "copyNodesService", + "type": "CopyNodesService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "insertFirstNodeInBranchPathService", + "type": "InsertFirstNodeInBranchPathService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "insertNodesService", + "type": "InsertNodesService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 14, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "copyNodesService", + "type": "CopyNodesService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "insertFirstNodeInBranchPathService", + "type": "InsertFirstNodeInBranchPathService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "insertNodesService", + "type": "InsertNodesService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + }, + { + "name": "AbstractRegisterUserComponent", + "id": "directive-AbstractRegisterUserComponent-b9926dd21f69fa1147ece2db38b02cba88125f04615a82991922b5f89ce5848bd876db4fca70ed9a4096bb030ddbf084993d61c5b21c0a3e63bdb53d6182ad2a", + "file": "src/app/register/abstract-register-user.component.ts", + "type": "directive", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Router } from '@angular/router';\nimport { UserService } from '../services/user.service';\nimport { ConfigService } from '../services/config.service';\nimport { Directive, OnInit } from '@angular/core';\nimport { GoogleUser } from '../modules/google-sign-in/GoogleUser';\n\n@Directive()\nexport abstract class AbstractRegisterUserComponent implements OnInit {\n protected googleAuthenticationEnabled: boolean = false;\n protected abstract joinFormPath: string;\n protected microsoftAuthenticationEnabled: boolean = false;\n\n constructor(\n private configService: ConfigService,\n private router: Router,\n private userService: UserService\n ) {}\n\n ngOnInit(): void {\n this.configService.getConfig().subscribe((config) => {\n if (config != null) {\n this.googleAuthenticationEnabled = this.isSet(config.googleClientId);\n this.microsoftAuthenticationEnabled = this.isSet(config.microsoftClientId);\n }\n });\n }\n\n private isSet(value: string): boolean {\n return value != null && value != '';\n }\n\n protected googleSignIn(credential: GoogleUser): void {\n this.userService.isGoogleIdExists(credential.sub).subscribe((isExists) => {\n if (isExists) {\n this.router.navigate(['join/googleUserAlreadyExists']);\n } else {\n this.router.navigate([this.joinFormPath, this.getGoogleFormParams(credential)]);\n }\n });\n }\n\n protected signUp(): void {\n this.router.navigate([this.joinFormPath, this.getFormParams()]);\n }\n\n protected microsoftSignIn(): void {\n window.location.href = `/api/microsoft-login?redirectUrl=${this.joinFormPath}`;\n }\n\n protected abstract getFormParams(): any;\n\n protected abstract getGoogleFormParams(credential: GoogleUser): any;\n}\n", + "providers": [], + "hostDirectives": [], + "standalone": false, + "inputsClass": [], + "outputsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "propertiesClass": [ + { + "name": "googleAuthenticationEnabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 9, + "modifierKind": [ + 124 + ] + }, + { + "name": "joinFormPath", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "modifierKind": [ + 124, + 128 + ] + }, + { + "name": "microsoftAuthenticationEnabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "getFormParams", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 50, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124, + 128 + ] + }, + { + "name": "getGoogleFormParams", + "args": [ + { + "name": "credential", + "type": "GoogleUser", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 52, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124, + 128 + ], + "jsdoctags": [ + { + "name": "credential", + "type": "GoogleUser", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "googleSignIn", + "args": [ + { + "name": "credential", + "type": "GoogleUser", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 32, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "credential", + "type": "GoogleUser", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isSet", + "args": [ + { + "name": "value", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 28, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "value", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "microsoftSignIn", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 46, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 19, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "signUp", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 42, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + } + ], + "extends": [], + "implements": [ + "OnInit" + ], + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "userService", + "type": "UserService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 11, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "userService", + "type": "UserService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + }, + { + "name": "AbstractTagsMenuComponent", + "id": "directive-AbstractTagsMenuComponent-24f59c5d76325a8443aba4c103d0d8116696de9d7a8a26416b1210dfa23f094df2c826a7ca3e86b5a77547379cafe70439e2272e87382290e63ca5f138aee1d9", + "file": "src/app/teacher/abstract-tags-menu/abstract-tags-menu.component.ts", + "type": "directive", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Directive } from '@angular/core';\nimport { Tag } from '../../domain/tag';\nimport { Subscription } from 'rxjs';\nimport { MatDialog } from '@angular/material/dialog';\nimport { ProjectTagService } from '../../../assets/wise5/services/projectTagService';\nimport { ManageTagsDialogComponent } from '../manage-tags-dialog/manage-tags-dialog.component';\n\n@Directive()\nexport class AbstractTagsMenuComponent {\n protected filteredTags: Tag[] = [];\n protected searchText: string = '';\n private subscriptions: Subscription = new Subscription();\n protected tags: Tag[] = [];\n\n constructor(\n private dialog: MatDialog,\n protected projectTagService: ProjectTagService\n ) {}\n\n ngOnInit(): void {\n this.retrieveUserTags();\n this.subscribeToTagUpdated();\n this.subscribeToNewTag();\n this.subscribeToTagDeleted();\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n private retrieveUserTags(): void {\n this.projectTagService.retrieveUserTags().subscribe((tags: Tag[]) => {\n this.tags = tags;\n this.filteredTags = tags;\n this.afterRetrieveUserTags();\n });\n }\n\n protected afterRetrieveUserTags(): void {}\n\n private subscribeToTagUpdated(): void {\n this.subscriptions.add(\n this.projectTagService.tagUpdated$.subscribe((updatedTag: Tag) => {\n const tag = this.tags.find((t: Tag) => t.id === updatedTag.id);\n tag.text = updatedTag.text;\n tag.color = updatedTag.color;\n this.projectTagService.sortTags(this.tags);\n })\n );\n }\n\n private subscribeToNewTag(): void {\n this.subscriptions.add(\n this.projectTagService.newTag$.subscribe((tag: Tag) => {\n this.tags.push(tag);\n this.projectTagService.sortTags(this.tags);\n this.filterTags(this.searchText);\n this.afterNewTag(tag);\n })\n );\n }\n\n protected afterNewTag(tag: Tag): void {}\n\n private subscribeToTagDeleted(): void {\n this.subscriptions.add(\n this.projectTagService.tagDeleted$.subscribe((deletedTag: Tag) => {\n this.tags = this.tags.filter((tag: Tag) => tag.id !== deletedTag.id);\n this.filterTags(this.searchText);\n })\n );\n }\n\n protected filterTags(searchText: string): void {\n this.searchText = searchText;\n this.filteredTags = this.tags.filter((tag: Tag) =>\n tag.text.toLowerCase().includes(searchText.trim().toLowerCase())\n );\n }\n\n protected manageTags(): void {\n this.dialog.open(ManageTagsDialogComponent, {\n panelClass: 'dialog-md'\n });\n }\n}\n", + "providers": [], + "hostDirectives": [], + "standalone": false, + "inputsClass": [], + "outputsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "propertiesClass": [ + { + "name": "filteredTags", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "Tag[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "modifierKind": [ + 124 + ] + }, + { + "name": "searchText", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "modifierKind": [ + 124 + ] + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "modifierKind": [ + 123 + ] + }, + { + "name": "tags", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "Tag[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "afterNewTag", + "args": [ + { + "name": "tag", + "type": "Tag", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 63, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "tag", + "type": "Tag", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "afterRetrieveUserTags", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 39, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "filterTags", + "args": [ + { + "name": "searchText", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 74, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "searchText", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "manageTags", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 81, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 27, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 20, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "retrieveUserTags", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 31, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "subscribeToNewTag", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 52, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "subscribeToTagDeleted", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 65, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "subscribeToTagUpdated", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 41, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + } + ], + "extends": [], + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectTagService", + "type": "ProjectTagService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 13, + "jsdoctags": [ + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectTagService", + "type": "ProjectTagService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + }, + { + "name": "AbstractTranslatableFieldComponent", + "id": "directive-AbstractTranslatableFieldComponent-51cb83958e3b9065b9fababd03464f61def2d125df0ba09754517fe1462dfa224e04819a9416485e6f4e0e4b5f4545a86e700c39b29cd327a92d34adcc88f7bf", + "file": "src/assets/wise5/authoringTool/components/abstract-translatable-field/abstract-translatable-field.component.ts", + "type": "directive", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Input, Signal, Output, computed, Directive } from '@angular/core';\nimport { Subject, Subscription, debounceTime } from 'rxjs';\nimport { Language } from '../../../../../app/domain/language';\nimport { TeacherProjectTranslationService } from '../../../services/teacherProjectTranslationService';\nimport { TeacherProjectService } from '../../../services/teacherProjectService';\nimport { generateRandomKey } from '../../../common/string/string';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport { Translations } from '../../../../../app/domain/translations';\nimport { copy } from '../../../common/object/object';\n\n@Directive()\nexport abstract class AbstractTranslatableFieldComponent {\n @Input() content: object;\n protected currentLanguage: Signal = this.projectService.currentLanguage;\n private currentTranslations$ = toObservable(this.projectTranslationService.currentTranslations);\n protected defaultLanguage: Language = this.projectService.getLocale().getDefaultLanguage();\n @Output() defaultLanguageTextChanged: Subject = new Subject();\n @Input() hint: string;\n protected i18nId: string;\n @Input() key: string;\n @Input() label: string;\n @Input() placeholder: string;\n protected showTranslationInput: Signal = computed(\n () => !this.projectService.isDefaultLocale()\n );\n protected subscriptions: Subscription = new Subscription();\n protected translationText: string;\n protected translationTextChanged: Subject = new Subject();\n constructor(\n protected projectService: TeacherProjectService,\n protected projectTranslationService: TeacherProjectTranslationService\n ) {}\n\n ngOnChanges(): void {\n this.setI18nId();\n this.subscriptions.add(\n this.currentTranslations$.subscribe((translations: Translations) => {\n // i18nId might have been created by another component (e.g. this=input, other=AssetChooser)\n this.setI18nId();\n if (this.showTranslationInput()) {\n this.setTranslationText(translations[this.i18nId]?.value);\n }\n })\n );\n this.subscriptions.add(\n this.translationTextChanged.pipe(debounceTime(1000)).subscribe(async (text: string) => {\n if (this.i18nId == null) {\n await this.createI18NField();\n }\n this.saveTranslationText(text);\n })\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n private setI18nId(): void {\n this.i18nId = this.content[`${this.key}.i18n`]?.id;\n }\n\n protected setTranslationText(text: string): void {\n this.translationText = text;\n }\n\n private createI18NField(): Promise {\n this.i18nId = generateRandomKey(30);\n this.content[`${this.key}.i18n`] = { id: this.i18nId, modified: new Date().getTime() };\n return this.projectService.saveProject();\n }\n\n protected saveTranslationText(text: string): void {\n const currentTranslations = copy(this.projectTranslationService.currentTranslations());\n currentTranslations[this.i18nId] = { value: text, modified: new Date().getTime() };\n this.projectTranslationService.saveCurrentTranslations(currentTranslations).subscribe();\n }\n}\n", + "providers": [], + "hostDirectives": [], + "standalone": false, + "inputsClass": [ + { + "name": "content", + "deprecated": false, + "deprecationMessage": "", + "line": 13, + "type": "object", + "decorators": [] + }, + { + "name": "hint", + "deprecated": false, + "deprecationMessage": "", + "line": 18, + "type": "string", + "decorators": [] + }, + { + "name": "key", + "deprecated": false, + "deprecationMessage": "", + "line": 20, + "type": "string", + "decorators": [] + }, + { + "name": "label", + "deprecated": false, + "deprecationMessage": "", + "line": 21, + "type": "string", + "decorators": [] + }, + { + "name": "placeholder", + "deprecated": false, + "deprecationMessage": "", + "line": 22, + "type": "string", + "decorators": [] + } + ], + "outputsClass": [ + { + "name": "defaultLanguageTextChanged", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "line": 17, + "type": "Subject" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "propertiesClass": [ + { + "name": "currentLanguage", + "defaultValue": "this.projectService.currentLanguage", + "deprecated": false, + "deprecationMessage": "", + "type": "Signal", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "modifierKind": [ + 124 + ] + }, + { + "name": "currentTranslations$", + "defaultValue": "toObservable(this.projectTranslationService.currentTranslations)", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 123 + ] + }, + { + "name": "defaultLanguage", + "defaultValue": "this.projectService.getLocale().getDefaultLanguage()", + "deprecated": false, + "deprecationMessage": "", + "type": "Language", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "modifierKind": [ + 124 + ] + }, + { + "name": "i18nId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "modifierKind": [ + 124 + ] + }, + { + "name": "showTranslationInput", + "defaultValue": "computed(\n () => !this.projectService.isDefaultLocale()\n )", + "deprecated": false, + "deprecationMessage": "", + "type": "Signal", + "indexKey": "", + "optional": false, + "description": "", + "line": 23, + "modifierKind": [ + 124 + ] + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 26, + "modifierKind": [ + 124 + ] + }, + { + "name": "translationText", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 27, + "modifierKind": [ + 124 + ] + }, + { + "name": "translationTextChanged", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 28, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "createI18NField", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 67, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "ngOnChanges", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 34, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 55, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "saveTranslationText", + "args": [ + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 73, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setI18nId", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 59, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "setTranslationText", + "args": [ + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 63, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "extends": [], + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectTranslationService", + "type": "TeacherProjectTranslationService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 28, + "jsdoctags": [ + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectTranslationService", + "type": "TeacherProjectTranslationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + }, + { + "name": "AuthorPeerGroupingDialogComponent", + "id": "directive-AuthorPeerGroupingDialogComponent-b4ae388868c23e99cf32cc70199ffe07fd9e02af90fbf61f75538e8e46916e61f23735e9a514b79a07db04e429a1e150e9d31c6ec86355b172673803389e779f", + "file": "src/assets/wise5/authoringTool/peer-grouping/author-peer-grouping-dialog/author-peer-grouping-dialog.component.ts", + "type": "directive", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Directive, OnInit } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\nimport { PeerGrouping } from '../../../../../app/domain/peerGrouping';\nimport { ReferenceComponent } from '../../../../../app/domain/referenceComponent';\nimport { ProjectService } from '../../../services/projectService';\nimport { AVAILABLE_LOGIC, AVAILABLE_MODES, PeerGroupingLogic } from '../PeerGroupingLogic';\nimport { MatSnackBar } from '@angular/material/snack-bar';\n\n@Directive()\nexport abstract class AuthorPeerGroupingDialogComponent implements OnInit {\n allowedReferenceComponentTypes: string[] = ['OpenResponse'];\n availableLogic: PeerGroupingLogic[];\n logicType: string;\n logicTypesWithModes: string[] = ['differentIdeas', 'differentKIScores'];\n mode: string;\n availableModes: any[] = AVAILABLE_MODES;\n peerGrouping: PeerGrouping;\n referenceComponent: ReferenceComponent = new ReferenceComponent(null, null);\n\n constructor(\n protected dialogRef: MatDialogRef,\n protected projectService: ProjectService,\n protected snackBar: MatSnackBar\n ) {\n this.availableLogic = AVAILABLE_LOGIC;\n }\n\n ngOnInit(): void {}\n\n protected updatePeerGroupingLogic(): void {\n if (this.logicTypesWithModes.includes(this.logicType)) {\n this.peerGrouping.logic = this.generateLogicString(\n this.logicType,\n this.referenceComponent,\n this.mode\n );\n } else {\n this.peerGrouping.logic = this.logicType;\n }\n }\n\n private generateLogicString(\n logicType: string,\n referenceComponent: ReferenceComponent,\n mode: string\n ): string {\n if (mode == null) {\n return `${logicType}(\"${referenceComponent.nodeId}\", \"${referenceComponent.componentId}\")`;\n } else {\n return `${logicType}(\"${referenceComponent.nodeId}\", \"${referenceComponent.componentId}\", \"${mode}\")`;\n }\n }\n\n cancel(): void {\n this.dialogRef.close();\n }\n\n protected handleError(error: any): void {\n switch (error.messageCode) {\n case 'genericError':\n this.snackBar.open($localize`An error occurred. Please try again.`);\n break;\n case 'notAuthorized':\n this.snackBar.open($localize`You are not allowed to perform this action.`);\n break;\n }\n }\n}\n", + "providers": [], + "hostDirectives": [], + "standalone": false, + "inputsClass": [], + "outputsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "propertiesClass": [ + { + "name": "allowedReferenceComponentTypes", + "defaultValue": "['OpenResponse']", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 11 + }, + { + "name": "availableLogic", + "deprecated": false, + "deprecationMessage": "", + "type": "PeerGroupingLogic[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 12 + }, + { + "name": "availableModes", + "defaultValue": "AVAILABLE_MODES", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 16 + }, + { + "name": "logicType", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 13 + }, + { + "name": "logicTypesWithModes", + "defaultValue": "['differentIdeas', 'differentKIScores']", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 14 + }, + { + "name": "mode", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 15 + }, + { + "name": "peerGrouping", + "deprecated": false, + "deprecationMessage": "", + "type": "PeerGrouping", + "indexKey": "", + "optional": false, + "description": "", + "line": 17 + }, + { + "name": "referenceComponent", + "defaultValue": "new ReferenceComponent(null, null)", + "deprecated": false, + "deprecationMessage": "", + "type": "ReferenceComponent", + "indexKey": "", + "optional": false, + "description": "", + "line": 18 + } + ], + "methodsClass": [ + { + "name": "cancel", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 54, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "generateLogicString", + "args": [ + { + "name": "logicType", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "referenceComponent", + "type": "ReferenceComponent", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "mode", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 42, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "logicType", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "referenceComponent", + "type": "ReferenceComponent", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "mode", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "handleError", + "args": [ + { + "name": "error", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 58, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "error", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 28, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "updatePeerGroupingLogic", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 30, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + } + ], + "extends": [], + "implements": [ + "OnInit" + ], + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "dialogRef", + "type": "MatDialogRef", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "snackBar", + "type": "MatSnackBar", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 18, + "jsdoctags": [ + { + "name": "dialogRef", + "type": "MatDialogRef", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "snackBar", + "type": "MatSnackBar", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + }, + { + "name": "ChooseNodeLocationComponent", + "id": "directive-ChooseNodeLocationComponent-31a9f25d92f7efbe3fb5b18886fe65bb184d012e69423bae48657cb34a618d51528b9de1e7d0d9a4c2614f973b01bfc1755c98a988c3362aa3f955997db97d10", + "file": "src/assets/wise5/authoringTool/choose-node-location/choose-node-location.component.ts", + "type": "directive", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { ActivatedRoute, Router } from '@angular/router';\nimport { TeacherProjectService } from '../../services/teacherProjectService';\nimport { Directive } from '@angular/core';\n\n@Directive()\nexport abstract class ChooseNodeLocationComponent {\n protected inactiveGroupNodes: any[];\n protected inactiveStepNodes: any[];\n protected nodeIds: string[];\n protected selectedNodeIds: string[];\n\n constructor(\n protected projectService: TeacherProjectService,\n protected route: ActivatedRoute,\n protected router: Router\n ) {}\n\n ngOnInit(): void {\n this.inactiveGroupNodes = this.projectService.getInactiveGroupNodes();\n this.inactiveStepNodes = this.projectService.getInactiveStepNodes();\n this.nodeIds = Object.keys(this.projectService.idToOrder);\n this.nodeIds.shift(); // remove the 'group0' root node from consideration\n this.selectedNodeIds = history.state.selectedNodeIds;\n }\n\n protected insert(nodeId: string, after: boolean): void {\n this.saveAndGoToProjectView(after ? this.insertAfter(nodeId) : this.insertInside(nodeId));\n }\n\n protected abstract insertAfter(nodeId: string): any[];\n\n protected abstract insertInside(groupNodeId: string): any[];\n\n protected saveAndGoToProjectView(newNodes: any[]): void {\n this.projectService.checkPotentialStartNodeIdChangeThenSaveProject().then(() => {\n this.projectService.refreshProject();\n this.router.navigate(['..'], {\n relativeTo: this.route,\n state: { newNodes: newNodes }\n });\n });\n }\n\n protected isGroupNode(nodeId: string): boolean {\n return this.projectService.isGroupNode(nodeId);\n }\n\n protected isNodeInAnyBranchPath(nodeId: string): boolean {\n return this.projectService.isNodeInAnyBranchPath(nodeId);\n }\n\n protected getParentGroup(nodeId: string): any {\n return this.projectService.getParentGroup(nodeId);\n }\n\n protected getBackgroundColor(nodeId: string): string {\n return this.projectService.getBackgroundColor(nodeId);\n }\n}\n", + "providers": [], + "hostDirectives": [], + "standalone": false, + "inputsClass": [], + "outputsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "propertiesClass": [ + { + "name": "inactiveGroupNodes", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 7, + "modifierKind": [ + 124 + ] + }, + { + "name": "inactiveStepNodes", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 8, + "modifierKind": [ + 124 + ] + }, + { + "name": "nodeIds", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 9, + "modifierKind": [ + 124 + ] + }, + { + "name": "selectedNodeIds", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "getBackgroundColor", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 56, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getParentGroup", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 52, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "insert", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "after", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "after", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "insertAfter", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 30, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124, + 128 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "insertInside", + "args": [ + { + "name": "groupNodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 32, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124, + 128 + ], + "jsdoctags": [ + { + "name": "groupNodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isGroupNode", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 44, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isNodeInAnyBranchPath", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 48, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 18, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "saveAndGoToProjectView", + "args": [ + { + "name": "newNodes", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 34, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "newNodes", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "extends": [], + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 10, + "jsdoctags": [ + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + }, + { + "name": "ComponentShowWorkDirective", + "id": "directive-ComponentShowWorkDirective-faaf697a2c778e5c3e01036d55a34fb3adbb632ca18474db845fc37b28cc3271601565336c8e7c55c77e74d9cdfe3abd1a6ad905f4c361b56098e2907100e570", + "file": "src/assets/wise5/components/component-show-work.directive.ts", + "type": "directive", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Directive, Input } from '@angular/core';\nimport { ProjectService } from '../services/projectService';\nimport { NodeService } from '../services/nodeService';\n\n@Directive()\nexport abstract class ComponentShowWorkDirective {\n @Input() nodeId: string;\n @Input() componentId: string;\n @Input() componentState: any;\n @Input() isRevision: boolean = false;\n\n componentContent: any;\n\n constructor(\n protected nodeService: NodeService,\n protected projectService: ProjectService\n ) {}\n\n ngOnInit(): void {\n this.componentContent = this.projectService.injectAssetPaths(\n this.projectService.getComponent(this.nodeId, this.componentId)\n );\n this.componentState = this.projectService.injectAssetPaths(this.componentState);\n }\n\n ngAfterViewInit(): void {\n this.nodeService.broadcastDoneRenderingComponent({\n nodeId: this.nodeId,\n componentId: this.componentId\n });\n }\n\n ngOnDestroy(): void {}\n}\n", + "providers": [], + "hostDirectives": [], + "standalone": false, + "inputsClass": [ + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "line": 8, + "type": "string", + "decorators": [] + }, + { + "name": "componentState", + "deprecated": false, + "deprecationMessage": "", + "line": 9, + "type": "any", + "decorators": [] + }, + { + "name": "isRevision", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "line": 10, + "type": "boolean", + "decorators": [] + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 7, + "type": "string", + "decorators": [] + } + ], + "outputsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "propertiesClass": [ + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 12 + } + ], + "methodsClass": [ + { + "name": "ngAfterViewInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 33, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 19, + "deprecated": false, + "deprecationMessage": "" + } + ], + "extends": [], + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 12, + "jsdoctags": [ + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + }, + { + "name": "ComponentStudent", + "id": "directive-ComponentStudent-37379d5bdf7e61120883fdb671abe7f2f5a750726b09f88e0d2641d0f546b5e5487f05b025c30139197166aa6bad4d7c3f2b4b60a143d89c71d56f28ff8c047d", + "file": "src/assets/wise5/components/component-student.component.ts", + "type": "directive", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Directive, EventEmitter, Input, Output } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { SafeHtml } from '@angular/platform-browser';\nimport { Subscription } from 'rxjs';\nimport { ComponentState } from '../../../app/domain/componentState';\nimport { Component } from '../common/Component';\nimport { copy } from '../common/object/object';\nimport { AnnotationService } from '../services/annotationService';\nimport { ConfigService } from '../services/configService';\nimport { NodeService } from '../services/nodeService';\nimport { NotebookService } from '../services/notebookService';\nimport { StudentAssetService } from '../services/studentAssetService';\nimport { StudentDataService } from '../services/studentDataService';\nimport { StudentAssetsDialogComponent } from '../vle/studentAsset/student-assets-dialog/student-assets-dialog.component';\nimport { StudentAssetRequest } from '../vle/studentAsset/StudentAssetRequest';\nimport { ComponentService } from './componentService';\nimport { ComponentStateRequest } from './ComponentStateRequest';\nimport { ComponentStateWrapper } from './ComponentStateWrapper';\nimport { Annotation } from '../common/Annotation';\nimport $ from 'jquery';\n\n@Directive()\nexport abstract class ComponentStudent {\n @Input() component: Component;\n @Input() componentState: any;\n @Input() isDisabled: boolean = false;\n @Input() mode: string;\n @Input() nodeId: string;\n @Input() workgroupId: number;\n @Output() saveComponentStateEvent: EventEmitter = new EventEmitter();\n @Output() starterStateChangedEvent = new EventEmitter();\n\n attachments: any[] = [];\n componentContent: any;\n componentId: string;\n componentType: string;\n prompt: SafeHtml;\n isSaveButtonVisible: boolean = false;\n isShowAddToNotebookButton: boolean = false;\n isSubmitButtonVisible: boolean = false;\n isSaveOrSubmitButtonVisible: boolean = false;\n isSubmitButtonDisabled: boolean = false;\n isSubmitDirty: boolean = false;\n isSubmit: boolean = false;\n isDirty: boolean = false;\n isStudentAttachmentEnabled: boolean = false;\n submitCounter: number = 0;\n latestAnnotations: any;\n parentStudentWorkIds: any[];\n latestComponentState: any;\n showAddToNotebookButton: boolean;\n protected requestComponentStateSubscription: Subscription;\n protected annotationSavedToServerSubscription: Subscription;\n protected nodeSubmitClickedSubscription: Subscription;\n protected studentWorkSavedToServerSubscription: Subscription;\n protected subscriptions: Subscription = new Subscription();\n\n constructor(\n protected annotationService: AnnotationService,\n protected componentService: ComponentService,\n protected configService: ConfigService,\n protected dialog: MatDialog,\n protected nodeService: NodeService,\n protected notebookService: NotebookService,\n protected studentAssetService: StudentAssetService,\n protected studentDataService: StudentDataService\n ) {}\n\n ngOnInit(): void {\n this.nodeId = this.component.nodeId;\n this.componentContent = this.component.content;\n this.componentId = this.componentContent.id;\n this.componentType = this.componentContent.type;\n this.isSaveButtonVisible = this.componentContent.showSaveButton;\n this.isSubmitButtonVisible = this.componentContent.showSubmitButton;\n this.isSaveOrSubmitButtonVisible = this.isSaveButtonVisible || this.isSubmitButtonVisible;\n if (!this.isPreviewMode()) {\n this.latestAnnotations = this.annotationService.getLatestComponentAnnotations(\n this.nodeId,\n this.componentId,\n this.workgroupId\n );\n }\n this.showAddToNotebookButton =\n this.componentContent.showAddToNotebookButton == null\n ? true\n : this.componentContent.showAddToNotebookButton;\n this.isStudentAttachmentEnabled = this.componentContent.isStudentAttachmentEnabled;\n this.isShowAddToNotebookButton = this.isAddToNotebookEnabled();\n if (this.hasMaxSubmitCountAndUsedAllSubmits()) {\n this.isDisabled = true;\n this.isSubmitButtonDisabled = true;\n }\n this.subscribeToSubscriptions();\n }\n\n ngOnDestroy(): void {\n if (this.isDirty) {\n const request = {\n componentId: this.componentId,\n isSubmit: false,\n nodeId: this.nodeId\n };\n this.saveComponentStateEvent.emit(this.getComponentStateWrapper(request));\n }\n this.subscriptions.unsubscribe();\n }\n\n protected isPreviewMode(): boolean {\n return this.mode === 'preview';\n }\n\n subscribeToSubscriptions(): void {\n this.subscribeToAnnotationSavedToServer();\n this.subscribeToNodeSubmitClicked();\n this.subscribeToNotebookItemChosen();\n this.subscribeToNotifyConnectedComponents();\n this.subscribeToAttachStudentAsset();\n this.subscribeToStudentWorkSavedToServer();\n this.subscribeToRequestComponentState();\n }\n\n private subscribeToAnnotationSavedToServer(): void {\n this.subscriptions.add(\n this.annotationService.annotationSavedToServer$.subscribe((annotation: Annotation) => {\n if (this.isForThisComponent(annotation)) {\n this.latestAnnotations = this.annotationService.getLatestComponentAnnotations(\n this.nodeId,\n this.componentId,\n this.workgroupId\n );\n }\n })\n );\n }\n\n subscribeToNodeSubmitClicked() {\n this.subscriptions.add(\n this.nodeService.nodeSubmitClicked$.subscribe(({ nodeId }) => {\n if (this.nodeId === nodeId) {\n this.submit('nodeSubmitButton');\n }\n })\n );\n }\n\n subscribeToNotifyConnectedComponents(): void {\n this.subscriptions.add(\n this.componentService.notifyConnectedComponentSource$.subscribe(\n ({ nodeId, componentId, componentState }) => {\n if (nodeId === this.nodeId && componentId === this.componentId) {\n this.processConnectedComponentState(componentState);\n }\n }\n )\n );\n }\n\n subscribeToNotebookItemChosen() {\n this.subscriptions.add(\n this.notebookService.notebookItemChosen$.subscribe(({ requester, notebookItem }) => {\n if (requester === `${this.nodeId}-${this.componentId}`) {\n const studentWorkId = notebookItem.content.studentWorkIds[0];\n this.importWorkByStudentWorkId(studentWorkId);\n }\n })\n );\n }\n\n importWorkByStudentWorkId(studentWorkId: number): void {\n this.studentDataService.getStudentWorkById(studentWorkId).then((componentState) => {\n if (componentState != null) {\n this.setStudentWork(componentState);\n this.setParentStudentWorkIdToCurrentStudentWork(studentWorkId);\n this.notebookService.closeNotes();\n }\n });\n }\n\n setParentStudentWorkIdToCurrentStudentWork(studentWorkId: number): void {\n this.parentStudentWorkIds = [studentWorkId];\n }\n\n processConnectedComponentState(componentState: any): void {\n // overridden by children\n }\n\n protected isSameComponent(component: Component): boolean {\n return component.nodeId === this.nodeId && component.content.id === this.componentId;\n }\n\n isForThisComponent(object: any): boolean {\n return this.nodeId === object.nodeId && this.componentId === object.componentId;\n }\n\n isWorkFromClassmate(componentState: any): boolean {\n return componentState.workgroupId !== this.configService.getWorkgroupId();\n }\n\n protected subscribeToAttachStudentAsset(): void {\n this.subscriptions.add(\n this.studentAssetService.attachStudentAsset$.subscribe(\n (studentAssetRequest: StudentAssetRequest) => {\n if (this.isSameComponent(studentAssetRequest.component)) {\n this.doAttachStudentAsset(studentAssetRequest);\n }\n }\n )\n );\n }\n\n protected doAttachStudentAsset(studentAssetRequest: StudentAssetRequest): void {\n this.copyAndAttachStudentAsset(studentAssetRequest.asset);\n }\n\n generateStarterState() {}\n\n private copyAndAttachStudentAsset(studentAsset: any): void {\n this.studentAssetService.copyAssetForReference(studentAsset).then((copiedAsset: any) => {\n const attachment = {\n studentAssetId: copiedAsset.id,\n iconURL: copiedAsset.iconURL,\n url: copiedAsset.url,\n type: copiedAsset.type\n };\n this.attachments.push(attachment);\n this.attachStudentAsset(copiedAsset);\n this.studentDataChanged();\n });\n }\n\n attachStudentAsset(studentAsset: any): any {\n return this.studentAssetService.copyAssetForReference(studentAsset).then((copiedAsset) => {\n const attachment = {\n studentAssetId: copiedAsset.id,\n iconURL: copiedAsset.iconURL,\n url: copiedAsset.url,\n type: copiedAsset.type\n };\n this.attachments.push(attachment);\n this.studentDataChanged();\n });\n }\n\n removeAttachment(attachment: any): void {\n if (this.attachments.indexOf(attachment) !== -1) {\n this.attachments.splice(this.attachments.indexOf(attachment), 1);\n this.studentDataChanged();\n }\n }\n\n subscribeToStudentWorkSavedToServer(): void {\n this.subscriptions.add(\n this.studentDataService.studentWorkSavedToServer$.subscribe((componentState: any) => {\n this.handleStudentWorkSavedToServer(componentState);\n if (this.isFromConnectedComponent(componentState)) {\n this.connectedComponentStudentDataSaved();\n }\n })\n );\n }\n\n handleStudentWorkSavedToServer(componentState: any): void {\n if (this.isForThisComponent(componentState)) {\n this.setIsDirty(false);\n this.emitComponentDirty(this.getIsDirty());\n this.latestComponentState = componentState;\n if (componentState.isSubmit) {\n this.lockIfNecessary();\n this.setIsSubmitDirty(false);\n this.emitComponentSubmitDirty(this.isSubmitDirty);\n }\n this.handleStudentWorkSavedToServerAdditionalProcessing(componentState);\n }\n }\n\n getIsDirty(): boolean {\n return this.isDirty;\n }\n\n lockIfNecessary(): void {\n if (this.isLockAfterSubmit()) {\n this.isDisabled = true;\n }\n }\n\n handleStudentWorkSavedToServerAdditionalProcessing(componentState: any): void {}\n\n subscribeToRequestComponentState(): void {\n this.subscriptions.add(\n this.componentService.requestComponentStateSource$.subscribe(\n (request: ComponentStateRequest) => {\n if (this.isForThisComponent(request)) {\n this.componentService.sendComponentState(this.getComponentStateWrapper(request));\n }\n }\n )\n );\n }\n\n getComponentStateWrapper(request: ComponentStateRequest): ComponentStateWrapper {\n return {\n nodeId: this.nodeId,\n componentId: this.componentId,\n componentStatePromise: this.getComponentStatePromise(request)\n };\n }\n\n getComponentStatePromise(request: ComponentStateRequest): Promise {\n if (this.shouldCreateComponentState(request)) {\n return this.createComponentState(this.getAction(request));\n } else {\n return Promise.resolve(null);\n }\n }\n\n shouldCreateComponentState(request: ComponentStateRequest): boolean {\n return this.isDirty || request.isSubmit;\n }\n\n getAction(request: ComponentStateRequest): string {\n return request.isSubmit ? 'submit' : 'save';\n }\n\n broadcastDoneRenderingComponent(): void {\n this.nodeService.broadcastDoneRenderingComponent({\n nodeId: this.nodeId,\n componentId: this.componentId\n });\n }\n\n disableComponentIfNecessary(): void {\n if (this.isLockAfterSubmit()) {\n const componentStates = this.studentDataService.getComponentStatesByNodeIdAndComponentId(\n this.nodeId,\n this.componentId\n );\n if (this.hasAnySubmissions(componentStates)) {\n this.isDisabled = true;\n }\n }\n }\n\n private hasAnySubmissions(componentStates: any): boolean {\n return componentStates.some((componentState) => componentState.isSubmit);\n }\n\n private isLockAfterSubmit(): boolean {\n return this.componentContent.lockAfterSubmit;\n }\n\n handleConnectedComponents(): void {\n const connectedComponents = this.componentContent.connectedComponents;\n if (connectedComponents != null) {\n const componentStates = [];\n for (const connectedComponent of connectedComponents) {\n const componentState =\n this.studentDataService.getLatestComponentStateByNodeIdAndComponentId(\n connectedComponent.nodeId,\n connectedComponent.componentId\n );\n if (componentState != null) {\n componentStates.push(copy(componentState));\n }\n if (connectedComponent.type === 'showWork') {\n this.isDisabled = true;\n }\n }\n if (componentStates.length > 0) {\n this.setStudentWork(this.createMergedComponentState(componentStates));\n this.handleConnectedComponentsPostProcess();\n this.studentDataChanged();\n }\n }\n }\n\n createMergedComponentState(componentStates: any[]): any {\n return componentStates[0];\n }\n\n setStudentWork(componentState: any): void {\n // overridden by children\n }\n\n handleConnectedComponentsPostProcess(): void {\n // overridden by children\n }\n\n incrementSubmitCounter(): void {\n this.submitCounter++;\n }\n\n saveButtonClicked(): void {\n this.isSubmit = false;\n this.studentDataService.broadcastComponentSaveTriggered({\n nodeId: this.nodeId,\n componentId: this.componentId\n });\n if (this.isPreviewMode()) {\n this.saveForAuthoringPreviewMode('save');\n }\n }\n\n saveForAuthoringPreviewMode(action: string): void {\n this.createComponentState(action).then((componentState: any) => {\n this.studentDataService.setDummyIdIntoLocalId(componentState);\n this.studentDataService.setDummyServerSaveTimeIntoLocalServerSaveTime(componentState);\n this.handleStudentWorkSavedToServer(componentState);\n });\n }\n\n submitButtonClicked(): void {\n this.submit('componentSubmitButton');\n }\n\n submit(submitTriggeredBy = null): void {\n if (this.isSubmitDirty) {\n let isPerformSubmit = true;\n if (this.hasMaxSubmitCount()) {\n const numberOfSubmitsLeft = this.getNumberOfSubmitsLeft();\n if (this.hasSubmitMessage()) {\n isPerformSubmit = this.confirmSubmit(numberOfSubmitsLeft);\n } else {\n if (numberOfSubmitsLeft <= 0) {\n isPerformSubmit = false;\n }\n }\n }\n if (isPerformSubmit) {\n this.performSubmit(submitTriggeredBy);\n } else {\n this.setIsSubmit(false);\n }\n }\n }\n\n hasMaxSubmitCount(): boolean {\n return this.getMaxSubmitCount() != null;\n }\n\n hasUsedAllSubmits(): boolean {\n return this.getNumberOfSubmitsLeft() <= 0;\n }\n\n tryDisableComponent(): void {\n if (this.hasMaxSubmitCountAndUsedAllSubmits()) {\n this.isDisabled = true;\n this.isSubmitButtonDisabled = true;\n }\n }\n\n hasMaxSubmitCountAndUsedAllSubmits() {\n return this.hasMaxSubmitCount() && this.hasUsedAllSubmits();\n }\n\n getNumberOfSubmitsLeft(): number {\n return this.getMaxSubmitCount() - this.submitCounter;\n }\n\n getMaxSubmitCount(): number {\n return this.component.content.maxSubmitCount;\n }\n\n setIsSubmit(isSubmit: boolean): void {\n this.isSubmit = isSubmit;\n }\n\n confirmSubmit(numberOfSubmitsLeft: number): boolean {\n return true;\n }\n\n performSubmit(submitTriggeredBy: string): void {\n this.setIsSubmit(true);\n this.incrementSubmitCounter();\n\n if (!this.canSubmit()) {\n this.disableSubmitButton();\n }\n\n if (submitTriggeredBy == null || submitTriggeredBy === 'componentSubmitButton') {\n this.emitComponentSubmitTriggered();\n if (this.isPreviewMode()) {\n this.saveForAuthoringPreviewMode('submit');\n }\n }\n }\n\n canSubmit(): boolean {\n return !this.hasMaxSubmitCount() || this.hasSubmitsLeft();\n }\n\n disableAllInput(): void {\n this.isDisabled = true;\n }\n\n disableSubmitButton(): void {\n this.isSubmitButtonDisabled = true;\n }\n\n hasSubmitsLeft(): boolean {\n return this.getNumberOfSubmitsLeft() > 0;\n }\n\n hasSubmitMessage(): boolean {\n return false;\n }\n\n setIsSubmitDirty(isDirty: boolean): void {\n this.isSubmitDirty = isDirty;\n }\n\n emitComponentSubmitTriggered(): void {\n this.studentDataService.broadcastComponentSubmitTriggered({\n nodeId: this.nodeId,\n componentId: this.componentId\n });\n }\n\n studentDataChanged(): void {\n this.setIsDirtyAndBroadcast();\n this.setIsSubmitDirtyAndBroadcast();\n this.clearLatestComponentState();\n const action = 'change';\n this.createComponentStateAndBroadcast(action);\n }\n\n setIsDirtyAndBroadcast(): void {\n this.setIsDirty(true);\n this.emitComponentDirty(true);\n }\n\n setIsSubmitDirtyAndBroadcast(): void {\n this.setIsSubmitDirty(true);\n this.emitComponentSubmitDirty(true);\n }\n\n setIsDirty(isDirty: boolean): void {\n this.isDirty = isDirty;\n }\n\n emitComponentDirty(isDirty: boolean): void {\n this.studentDataService.broadcastComponentDirty({\n componentId: this.componentId,\n isDirty: isDirty\n });\n }\n\n emitComponentSubmitDirty(isDirty: boolean): void {\n this.studentDataService.broadcastComponentSubmitDirty({\n componentId: this.componentId,\n isDirty: isDirty\n });\n }\n\n clearLatestComponentState(): void {\n this.latestComponentState = null;\n }\n\n createComponentStateAndBroadcast(action: string): void {\n this.createComponentState(action).then((componentState: any) => {\n this.emitComponentStudentDataChanged(componentState);\n if (this.mode === 'preview') {\n this.starterStateChangedEvent.emit(this.generateStarterState());\n }\n });\n }\n\n createComponentState(action: string): Promise {\n return Promise.resolve({});\n }\n\n emitComponentStudentDataChanged(componentState: any): void {\n this.studentDataService.broadcastComponentStudentData({\n nodeId: this.nodeId,\n componentId: this.componentId,\n componentState: componentState\n });\n }\n\n processLatestStudentWork(): void {\n const latestComponentState =\n this.studentDataService.getLatestComponentStateByNodeIdAndComponentId(\n this.nodeId,\n this.componentId\n );\n if (latestComponentState) {\n this.latestComponentState = latestComponentState;\n if (latestComponentState.isSubmit) {\n this.setIsSubmitDirty(false);\n this.emitComponentSubmitDirty(false);\n } else {\n this.setIsSubmitDirty(true);\n this.emitComponentSubmitDirty(true);\n }\n }\n }\n\n createComponentStateAdditionalProcessing(\n promise: any,\n componentState: any,\n action: string\n ): void {\n /*\n * we don't need to perform any additional processing so we can resolve\n * the promise immediately\n */\n promise.resolve(componentState);\n }\n\n /**\n * Render the component state and then generate an image from it.\n * @param componentState The component state to render.\n * @return A promise that will return an image.\n */\n generateImageFromComponentState(componentState: any): any {\n this.studentDataService.generateImageRequest(componentState);\n return new Promise((resolve, reject) => {\n this.studentDataService.generateImageResponse$.subscribe((image) => {\n resolve(image);\n });\n });\n }\n\n isAddToNotebookEnabled() {\n return (\n this.isNotebookEnabled() &&\n this.isStudentNoteClippingEnabled() &&\n this.showAddToNotebookButton\n );\n }\n\n copyPublicNotebookItem() {\n this.notebookService.setInsertMode({\n nodeId: this.nodeId,\n componentId: this.componentId,\n insertMode: true,\n requester: this.nodeId + '-' + this.componentId,\n visibleSpace: 'public'\n });\n this.notebookService.setNotesVisible(true);\n }\n\n isNotebookEnabled() {\n return this.notebookService.isNotebookEnabled();\n }\n\n isStudentNoteClippingEnabled() {\n return this.notebookService.isStudentNoteClippingEnabled();\n }\n\n protected showStudentAssets(): void {\n this.dialog.open(StudentAssetsDialogComponent, {\n data: this.component,\n panelClass: 'dialog-md'\n });\n }\n\n importWorkAsBackground(componentState: any): void {\n const connectedComponent = this.component.getConnectedComponent(\n componentState.nodeId,\n componentState.componentId\n );\n if (connectedComponent.importWorkAsBackground) {\n this.setComponentStateAsBackgroundImage(componentState);\n }\n }\n\n setComponentStateAsBackgroundImage(componentState: any): void {\n this.generateImageFromComponentState(componentState).then((image: any) => {\n this.setBackgroundImage(image.url);\n });\n }\n\n setBackgroundImage(image: string): void {}\n\n hasMaxScore(): boolean {\n return this.componentContent.maxScore != null && this.componentContent.maxScore !== '';\n }\n\n getMaxScore(): number {\n return this.componentContent.maxScore;\n }\n\n getClientSaveTime(componentState: any): number {\n return this.configService.convertToClientTimestamp(componentState.serverSaveTime);\n }\n\n addDefaultFeedback(componentState: any): void {\n const defaultFeedback = this.getDefaultFeedback(this.submitCounter);\n if (defaultFeedback != null) {\n componentState.annotations = [this.createDefaultFeedbackAnnotation(defaultFeedback)];\n }\n }\n\n hasDefaultFeedback(): boolean {\n return (\n this.componentContent.defaultFeedback != null &&\n this.componentContent.defaultFeedback.length > 0\n );\n }\n\n getDefaultFeedback(submitCount: number): string {\n return this.componentContent.defaultFeedback[submitCount - 1];\n }\n\n createDefaultFeedbackAnnotation(feedbackText: string): any {\n const defaultFeedbackAnnotationData: any = {\n autoGrader: 'defaultFeedback',\n value: feedbackText\n };\n return this.createAutoCommentAnnotation(defaultFeedbackAnnotationData);\n }\n\n createAutoScoreAnnotation(data: any): any {\n return this.annotationService.createAutoScoreAnnotation(\n this.configService.getRunId(),\n this.configService.getPeriodId(),\n this.nodeId,\n this.componentId,\n this.configService.getWorkgroupId(),\n data\n );\n }\n\n createAutoCommentAnnotation(data: any): any {\n return this.annotationService.createAutoCommentAnnotation(\n this.configService.getRunId(),\n this.configService.getPeriodId(),\n this.nodeId,\n this.componentId,\n this.configService.getWorkgroupId(),\n data\n );\n }\n\n registerNotebookItemChosenListener(): void {\n this.subscriptions.add(\n this.notebookService.notebookItemChosen$.subscribe(({ requester, notebookItem }) => {\n if (requester === `${this.nodeId}-${this.componentId}`) {\n const studentWorkId = notebookItem.content.studentWorkIds[0];\n this.importWorkByStudentWorkId(studentWorkId);\n }\n })\n );\n }\n\n copyPublicNotebookItemButtonClicked(): void {\n this.notebookService.setInsertMode({\n nodeId: this.nodeId,\n componentId: this.componentId,\n insertMode: true,\n requester: this.nodeId + '-' + this.componentId,\n visibleSpace: 'public'\n });\n this.notebookService.setNotesVisible(true);\n }\n\n getElementById(id: string, getFirstResult: boolean = false): any {\n if (getFirstResult) {\n return $(`#${id}`)[0];\n } else {\n return $(`#${id}`);\n }\n }\n\n isFromConnectedComponent(componentState: any) {\n if (this.componentContent.connectedComponents != null) {\n for (const connectedComponent of this.componentContent.connectedComponents) {\n if (\n connectedComponent.nodeId === componentState.nodeId &&\n connectedComponent.componentId === componentState.componentId\n ) {\n return true;\n }\n }\n }\n return false;\n }\n\n /**\n * This function is called when a connected component of this component saves student data.\n * This was added to handle a race condition when a step has a connected component on a previous\n * step but the connected component student work on the previous step was not being imported\n * because it wasn't being saved in time.\n * Here is an example of what was happening\n * - Student generates work on step 1 but does not click the save button\n * - Student goes to step 2 which triggers a promise to save the student work on step 1\n * - Step 2 is loaded and checks if there is any work it needs to import from step 1\n * - The work in step 1 has not saved yet so step 2 does not import any work and loads without\n * importing any work\n * - The work from step 1 is then saved\n * Here is the additional process that this function performs to fix this problem\n * - Step 2 listens for when work is saved on step 1\n * - When the work for step 1 is saved, step 2 checks to see if it needs to import that work\n */\n connectedComponentStudentDataSaved() {\n if (this.isHandleConnectedComponentAfterConnectedComponentStudentDataSaved()) {\n this.handleConnectedComponents();\n }\n }\n\n isHandleConnectedComponentAfterConnectedComponentStudentDataSaved() {\n const latestComponentState =\n this.studentDataService.getLatestComponentStateByNodeIdAndComponentId(\n this.nodeId,\n this.componentId\n );\n return latestComponentState == null && !this.isDirty;\n }\n\n setSubmitCounter(componentState: any): void {\n const submitCounter = componentState?.studentData?.submitCounter;\n if (submitCounter != null) {\n this.submitCounter = submitCounter;\n }\n }\n\n createNewComponentState(): Partial {\n return {\n clientSaveTime: new Date().getTime()\n };\n }\n}\n", + "providers": [], + "hostDirectives": [], + "standalone": false, + "inputsClass": [ + { + "name": "component", + "deprecated": false, + "deprecationMessage": "", + "line": 24, + "type": "Component", + "decorators": [] + }, + { + "name": "componentState", + "deprecated": false, + "deprecationMessage": "", + "line": 25, + "type": "any", + "decorators": [] + }, + { + "name": "isDisabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "line": 26, + "type": "boolean", + "decorators": [] + }, + { + "name": "mode", + "deprecated": false, + "deprecationMessage": "", + "line": 27, + "type": "string", + "decorators": [] + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 28, + "type": "string", + "decorators": [] + }, + { + "name": "workgroupId", + "deprecated": false, + "deprecationMessage": "", + "line": 29, + "type": "number", + "decorators": [] + } + ], + "outputsClass": [ + { + "name": "saveComponentStateEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 30, + "type": "EventEmitter" + }, + { + "name": "starterStateChangedEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 31, + "type": "EventEmitter" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "propertiesClass": [ + { + "name": "annotationSavedToServerSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 53, + "modifierKind": [ + 124 + ] + }, + { + "name": "attachments", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 33 + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 34 + }, + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 35 + }, + { + "name": "componentType", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 36 + }, + { + "name": "isDirty", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 45 + }, + { + "name": "isSaveButtonVisible", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 38 + }, + { + "name": "isSaveOrSubmitButtonVisible", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 41 + }, + { + "name": "isShowAddToNotebookButton", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 39 + }, + { + "name": "isStudentAttachmentEnabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 46 + }, + { + "name": "isSubmit", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 44 + }, + { + "name": "isSubmitButtonDisabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 42 + }, + { + "name": "isSubmitButtonVisible", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 40 + }, + { + "name": "isSubmitDirty", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 43 + }, + { + "name": "latestAnnotations", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 48 + }, + { + "name": "latestComponentState", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 50 + }, + { + "name": "nodeSubmitClickedSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 54, + "modifierKind": [ + 124 + ] + }, + { + "name": "parentStudentWorkIds", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 49 + }, + { + "name": "prompt", + "deprecated": false, + "deprecationMessage": "", + "type": "SafeHtml", + "indexKey": "", + "optional": false, + "description": "", + "line": 37 + }, + { + "name": "requestComponentStateSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 52, + "modifierKind": [ + 124 + ] + }, + { + "name": "showAddToNotebookButton", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 51 + }, + { + "name": "studentWorkSavedToServerSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 55, + "modifierKind": [ + 124 + ] + }, + { + "name": "submitCounter", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 47 + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 56, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "addDefaultFeedback", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 688, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "attachStudentAsset", + "args": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 232, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "broadcastDoneRenderingComponent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 325, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "canSubmit", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 488, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "clearLatestComponentState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 555, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "confirmSubmit", + "args": [ + { + "name": "numberOfSubmitsLeft", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 468, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "numberOfSubmitsLeft", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "connectedComponentStudentDataSaved", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 796, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nThis function is called when a connected component of this component saves student data.\nThis was added to handle a race condition when a step has a connected component on a previous\nstep but the connected component student work on the previous step was not being imported\nbecause it wasn't being saved in time.\nHere is an example of what was happening\n- Student generates work on step 1 but does not click the save button\n- Student goes to step 2 which triggers a promise to save the student work on step 1\n- Step 2 is loaded and checks if there is any work it needs to import from step 1\n- The work in step 1 has not saved yet so step 2 does not import any work and loads without\n importing any work\n- The work from step 1 is then saved\nHere is the additional process that this function performs to fix this problem\n- Step 2 listens for when work is saved on step 1\n- When the work for step 1 is saved, step 2 checks to see if it needs to import that work\n", + "description": "

This function is called when a connected component of this component saves student data.\nThis was added to handle a race condition when a step has a connected component on a previous\nstep but the connected component student work on the previous step was not being imported\nbecause it wasn't being saved in time.\nHere is an example of what was happening

\n
    \n
  • Student generates work on step 1 but does not click the save button
  • \n
  • Student goes to step 2 which triggers a promise to save the student work on step 1
  • \n
  • Step 2 is loaded and checks if there is any work it needs to import from step 1
  • \n
  • The work in step 1 has not saved yet so step 2 does not import any work and loads without\nimporting any work
  • \n
  • The work from step 1 is then saved\nHere is the additional process that this function performs to fix this problem
  • \n
  • Step 2 listens for when work is saved on step 1
  • \n
  • When the work for step 1 is saved, step 2 checks to see if it needs to import that work
  • \n
\n" + }, + { + "name": "copyAndAttachStudentAsset", + "args": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 218, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "copyPublicNotebookItem", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 632, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "copyPublicNotebookItemButtonClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 747, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "createAutoCommentAnnotation", + "args": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 725, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createAutoScoreAnnotation", + "args": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 714, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createComponentState", + "args": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 568, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createComponentStateAdditionalProcessing", + "args": [ + { + "name": "promise", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 598, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "promise", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createComponentStateAndBroadcast", + "args": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 559, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createDefaultFeedbackAnnotation", + "args": [ + { + "name": "feedbackText", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 706, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "feedbackText", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createMergedComponentState", + "args": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 377, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createNewComponentState", + "args": [], + "optional": false, + "returnType": "Partial", + "typeParameters": [], + "line": 818, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "disableAllInput", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 492, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "disableComponentIfNecessary", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 332, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "disableSubmitButton", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 496, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "doAttachStudentAsset", + "args": [ + { + "name": "studentAssetRequest", + "type": "StudentAssetRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 212, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "studentAssetRequest", + "type": "StudentAssetRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "emitComponentDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 541, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "emitComponentStudentDataChanged", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 572, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "emitComponentSubmitDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 548, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "emitComponentSubmitTriggered", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 512, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "generateImageFromComponentState", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 615, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nRender the component state and then generate an image from it.\n", + "description": "

Render the component state and then generate an image from it.

\n", + "jsdoctags": [ + { + "name": { + "pos": 18804, + "end": 18818, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 18798, + "end": 18803, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The component state to render.

\n" + }, + { + "tagName": { + "pos": 18856, + "end": 18862, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

A promise that will return an image.

\n" + } + ] + }, + { + "name": "generateStarterState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 216, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getAction", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 321, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getClientSaveTime", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 684, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getComponentStatePromise", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 309, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getComponentStateWrapper", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "ComponentStateWrapper", + "typeParameters": [], + "line": 301, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getDefaultFeedback", + "args": [ + { + "name": "submitCount", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 702, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "submitCount", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getElementById", + "args": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getFirstResult", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 758, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "getFirstResult", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getIsDirty", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 277, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getMaxScore", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 680, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getMaxSubmitCount", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 460, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getNumberOfSubmitsLeft", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 456, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "handleConnectedComponents", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 352, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "handleConnectedComponentsPostProcess", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 385, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "handleStudentWorkSavedToServer", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 263, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "handleStudentWorkSavedToServerAdditionalProcessing", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 287, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "hasAnySubmissions", + "args": [ + { + "name": "componentStates", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 344, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentStates", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "hasDefaultFeedback", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 695, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "hasMaxScore", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 676, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "hasMaxSubmitCount", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 437, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "hasMaxSubmitCountAndUsedAllSubmits", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 452, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "hasSubmitMessage", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 504, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "hasSubmitsLeft", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 500, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "hasUsedAllSubmits", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 441, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "importWorkAsBackground", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 658, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "importWorkByStudentWorkId", + "args": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 170, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "incrementSubmitCounter", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 389, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isAddToNotebookEnabled", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 624, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isForThisComponent", + "args": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 192, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isFromConnectedComponent", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 766, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isHandleConnectedComponentAfterConnectedComponentStudentDataSaved", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 802, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isLockAfterSubmit", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 348, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "isNotebookEnabled", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 643, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isPreviewMode", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 109, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "isSameComponent", + "args": [ + { + "name": "component", + "type": "Component", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 188, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "component", + "type": "Component", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isStudentNoteClippingEnabled", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 647, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isWorkFromClassmate", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 196, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "lockIfNecessary", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 281, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 97, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 69, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "performSubmit", + "args": [ + { + "name": "submitTriggeredBy", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 472, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "submitTriggeredBy", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "processConnectedComponentState", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 184, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "processLatestStudentWork", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 580, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "registerNotebookItemChosenListener", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 736, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "removeAttachment", + "args": [ + { + "name": "attachment", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 245, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "attachment", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "saveButtonClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 393, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "saveForAuthoringPreviewMode", + "args": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 404, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setBackgroundImage", + "args": [ + { + "name": "image", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 674, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "image", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setComponentStateAsBackgroundImage", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 668, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setIsDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 537, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setIsDirtyAndBroadcast", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 527, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "setIsSubmit", + "args": [ + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 464, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setIsSubmitDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 508, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setIsSubmitDirtyAndBroadcast", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 532, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "setParentStudentWorkIdToCurrentStudentWork", + "args": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 180, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setStudentWork", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 381, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setSubmitCounter", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 811, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "shouldCreateComponentState", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 317, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "showStudentAssets", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 651, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "studentDataChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 519, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "submit", + "args": [ + { + "name": "submitTriggeredBy", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 416, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "submitTriggeredBy", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "submitButtonClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 412, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "subscribeToAnnotationSavedToServer", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 123, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "subscribeToAttachStudentAsset", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 200, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "subscribeToNodeSubmitClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 137, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "subscribeToNotebookItemChosen", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 159, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "subscribeToNotifyConnectedComponents", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 147, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "subscribeToRequestComponentState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 289, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "subscribeToStudentWorkSavedToServer", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 252, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "subscribeToSubscriptions", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 113, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "tryDisableComponent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 445, + "deprecated": false, + "deprecationMessage": "" + } + ], + "extends": [], + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentService", + "type": "ComponentService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "notebookService", + "type": "NotebookService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentAssetService", + "type": "StudentAssetService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentDataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 56, + "jsdoctags": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentService", + "type": "ComponentService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "notebookService", + "type": "NotebookService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentAssetService", + "type": "StudentAssetService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentDataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + }, + { + "name": "ConfigureStructureComponent", + "id": "directive-ConfigureStructureComponent-5504d527a43a552bce0e96f101ebf10d462fac4fd44291e4d1f59d3d2882454d2ecfffc27fea170ebb98b552de47a82c005509363e3e5a3cd98ae838f71d0e50", + "file": "src/assets/wise5/authoringTool/structure/configure-structure.component.ts", + "type": "directive", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { HttpClient } from '@angular/common/http';\nimport { Directive } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { TeacherProjectService } from '../../services/teacherProjectService';\n\n@Directive()\nexport abstract class ConfigureStructureComponent {\n protected groupsPath: string;\n protected nodesPath: string;\n protected target: string;\n private structure: any = {};\n private structureDir: string = 'assets/wise5/authoringTool/structure';\n protected submitting: boolean;\n\n constructor(\n private http: HttpClient,\n private projectService: TeacherProjectService,\n protected route: ActivatedRoute,\n protected router: Router\n ) {}\n\n ngOnInit(): void {\n this.target = history.state.target;\n this.injectGroupAndNodes();\n }\n\n protected injectGroupAndNodes(): void {\n this.injectGroup();\n this.injectNodes();\n }\n\n protected injectGroup(): void {\n this.fetchGroups();\n }\n\n protected injectNodes(): void {\n this.fetchNodes();\n }\n\n protected fetchGroups(groupsPath: string = this.groupsPath): void {\n this.http.get(`${this.structureDir}/${groupsPath}`).subscribe((group: any) => {\n this.structure.group = group;\n });\n }\n\n protected fetchNodes(nodesPath: string = this.nodesPath): void {\n this.http.get(`${this.structureDir}/${nodesPath}`).subscribe((nodes: any[]) => {\n this.structure.nodes = nodes;\n });\n }\n\n protected chooseLocation(): void {\n this.router.navigate(['../location'], {\n relativeTo: this.route,\n state: { structure: this.structure }\n });\n }\n\n protected submit(): void {\n this.submitting = true;\n this.structure = this.injectUniqueIds(this.structure);\n this.addNodesToProject(this.structure.nodes);\n const target = history.state.target;\n if (target === 'group0' || target === 'inactiveGroups') {\n this.projectService.createNodeInside(this.structure.group, target);\n } else {\n this.projectService.createNodeAfter(this.structure.group, target);\n }\n this.saveAndGoBackToProjectHome();\n }\n\n private injectUniqueIds(structure: any): void {\n structure.group.id = this.projectService.getNextAvailableGroupId();\n const oldToNewIds = this.projectService.getOldToNewIds(structure.nodes);\n return this.projectService.replaceOldIds(structure, oldToNewIds);\n }\n\n private addNodesToProject(nodes: any[]): void {\n for (const node of nodes) {\n this.projectService.setIdToNode(node.id, node);\n this.projectService.addNode(node);\n this.projectService.applicationNodes.push(node);\n }\n }\n\n private saveAndGoBackToProjectHome(): void {\n this.projectService.checkPotentialStartNodeIdChangeThenSaveProject().then(() => {\n this.projectService.refreshProject();\n this.router.navigate(['../../..'], { relativeTo: this.route });\n });\n }\n}\n", + "providers": [], + "hostDirectives": [], + "standalone": false, + "inputsClass": [], + "outputsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "propertiesClass": [ + { + "name": "groupsPath", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 8, + "modifierKind": [ + 124 + ] + }, + { + "name": "nodesPath", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 9, + "modifierKind": [ + 124 + ] + }, + { + "name": "structure", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "modifierKind": [ + 123 + ] + }, + { + "name": "structureDir", + "defaultValue": "'assets/wise5/authoringTool/structure'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "modifierKind": [ + 123 + ] + }, + { + "name": "submitting", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "modifierKind": [ + 124 + ] + }, + { + "name": "target", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "addNodesToProject", + "args": [ + { + "name": "nodes", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 78, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodes", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "chooseLocation", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 52, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "fetchGroups", + "args": [ + { + "name": "groupsPath", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "this.groupsPath" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 40, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "groupsPath", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "this.groupsPath", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "fetchNodes", + "args": [ + { + "name": "nodesPath", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "this.nodesPath" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 46, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodesPath", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "this.nodesPath", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "injectGroup", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 32, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "injectGroupAndNodes", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 27, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "injectNodes", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 36, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "injectUniqueIds", + "args": [ + { + "name": "structure", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 72, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "structure", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "saveAndGoBackToProjectHome", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 86, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "submit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 59, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + } + ], + "extends": [], + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 13, + "jsdoctags": [ + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + }, + { + "name": "ConstraintAuthoringComponent", + "id": "directive-ConstraintAuthoringComponent-1b2542d86cc704846b522188a77f8b19bc0913c46aff43f5c3081cd0b5fa4b2cfc8922950e22f7d2d3a0b2c1584aecb6813c5ba5f3eafd200d5220c6ed9dc857", + "file": "src/assets/wise5/authoringTool/constraint/constraint-authoring/constraint-authoring.component.ts", + "type": "directive", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Directive, Input, OnInit } from '@angular/core';\nimport { ConstraintAction } from '../../../../../app/domain/constraintAction';\nimport { TeacherDataService } from '../../../services/teacherDataService';\nimport { TeacherProjectService } from '../../../services/teacherProjectService';\n\n@Directive()\nexport abstract class ConstraintAuthoringComponent implements OnInit {\n @Input() constraint: any;\n constraintActions = [];\n node: any;\n removalConditionals = [\n { value: 'all', text: $localize`All` },\n { value: 'any', text: $localize`Any` }\n ];\n\n constructor(\n protected dataService: TeacherDataService,\n protected projectService: TeacherProjectService\n ) {}\n\n ngOnInit(): void {\n this.node = this.projectService.getNodeById(this.dataService.getCurrentNodeId());\n this.automaticallySetActionIfPossible();\n }\n\n private automaticallySetActionIfPossible(): void {\n if (this.constraint.action === '') {\n const possibleConstraintActions = this.constraintActions.filter(\n (constraintAction: ConstraintAction) => {\n return constraintAction.value !== '';\n }\n );\n if (possibleConstraintActions.length === 1) {\n this.constraint.action = possibleConstraintActions[0].value;\n }\n }\n }\n\n addRemovalCriteria(constraint: any): void {\n constraint.removalCriteria.push({\n name: '',\n params: {}\n });\n this.saveProject();\n }\n\n protected saveProject(): void {\n this.projectService.saveProject();\n }\n}\n", + "providers": [], + "hostDirectives": [], + "standalone": false, + "inputsClass": [ + { + "name": "constraint", + "deprecated": false, + "deprecationMessage": "", + "line": 8, + "type": "any", + "decorators": [] + } + ], + "outputsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "propertiesClass": [ + { + "name": "constraintActions", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 9 + }, + { + "name": "node", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 10 + }, + { + "name": "removalConditionals", + "defaultValue": "[\n { value: 'all', text: $localize`All` },\n { value: 'any', text: $localize`Any` }\n ]", + "deprecated": false, + "deprecationMessage": "", + "type": "[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 11 + } + ], + "methodsClass": [ + { + "name": "addRemovalCriteria", + "args": [ + { + "name": "constraint", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 39, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "constraint", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "automaticallySetActionIfPossible", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 21, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "saveProject", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 47, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + } + ], + "extends": [], + "implements": [ + "OnInit" + ], + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 14, + "jsdoctags": [ + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + }, + { + "name": "ConstraintsAuthoringComponent", + "id": "directive-ConstraintsAuthoringComponent-185396a94bfad2ef45dcb58600d599195d2164d1ec6c2b6119eeec5ca3bb8233e2148b8e61d529e3fb1c89ce69c942d263359dfd747db6c447b638afc6288464", + "file": "src/assets/wise5/authoringTool/constraint/constraints-authoring/constraints-authoring.component.ts", + "type": "directive", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Directive } from '@angular/core';\nimport { Constraint } from '../../../../../app/domain/constraint';\nimport { TeacherProjectService } from '../../../services/teacherProjectService';\n\n@Directive()\nexport class ConstraintsAuthoringComponent {\n content: any;\n\n constructor(protected projectService: TeacherProjectService) {}\n\n protected addConstraint(): Constraint {\n const newNodeConstraintId = this.getNewNodeConstraintId();\n const constraint = new Constraint({\n id: newNodeConstraintId,\n action: '',\n removalConditional: 'any',\n removalCriteria: [\n {\n name: '',\n params: {}\n }\n ]\n });\n this.content.constraints.push(constraint);\n this.saveProject();\n return constraint;\n }\n\n private getNewNodeConstraintId(): string {\n const usedConstraintIds = this.content.constraints.map(\n (constraint: Constraint) => constraint.id\n );\n let constraintCounter = 1;\n while (true) {\n const newConstraintId = `${this.content.id}Constraint${constraintCounter}`;\n if (!usedConstraintIds.includes(newConstraintId)) {\n return newConstraintId;\n } else {\n constraintCounter++;\n }\n }\n }\n\n protected deleteConstraint(constraintIndex: number): void {\n if (confirm($localize`Are you sure you want to delete this constraint?`)) {\n this.content.constraints.splice(constraintIndex, 1);\n this.saveProject();\n }\n }\n\n protected saveProject(): void {\n this.projectService.saveProject();\n }\n}\n", + "providers": [], + "hostDirectives": [], + "standalone": false, + "inputsClass": [], + "outputsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "propertiesClass": [ + { + "name": "content", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 7 + } + ], + "methodsClass": [ + { + "name": "addConstraint", + "args": [], + "optional": false, + "returnType": "Constraint", + "typeParameters": [], + "line": 11, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "deleteConstraint", + "args": [ + { + "name": "constraintIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 44, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "constraintIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getNewNodeConstraintId", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 29, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "saveProject", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 51, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + } + ], + "extends": [], + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 7, + "jsdoctags": [ + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + }, + { + "name": "DetailsComponent", + "id": "directive-DetailsComponent-4f02b886e7da7a1d0b61471f6da82fbec302838dbac5be1de35a73fcdac96ffaea03fbeb71abb15e41e40a6324e0ee04b84ff316e70a1539d26466df28c3357f", + "file": "src/app/modules/library/public-unit-type-selector/public-unit-type-selector.component.ts", + "type": "directive", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Component, Directive, EventEmitter, Output } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { ProjectFilterValues } from '../../../domain/projectFilterValues';\nimport { MatButtonModule } from '@angular/material/button';\nimport {\n MatDialogTitle,\n MatDialogContent,\n MatDialogActions,\n MatDialogRef,\n MatDialog\n} from '@angular/material/dialog';\nimport { RouterLink } from '@angular/router';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n imports: [FormsModule, MatCheckboxModule, MatIconModule],\n selector: 'public-unit-type-selector',\n styles: [\n `\n a {\n cursor: pointer;\n }\n `\n ],\n templateUrl: './public-unit-type-selector.component.html'\n})\nexport class PublicUnitTypeSelectorComponent {\n protected communityBuilt: boolean;\n @Output() publicUnitTypeUpdatedEvent: EventEmitter =\n new EventEmitter();\n protected wiseTested: boolean;\n\n constructor(\n private dialog: MatDialog,\n private filterValues: ProjectFilterValues\n ) {}\n\n protected updatePublicUnitType(): void {\n this.filterValues.publicUnitTypeValue = [];\n if (this.wiseTested) {\n this.filterValues.publicUnitTypeValue.push('wiseTested');\n }\n if (this.communityBuilt) {\n this.filterValues.publicUnitTypeValue.push('communityBuilt');\n }\n this.publicUnitTypeUpdatedEvent.emit();\n }\n\n protected showInfo(type: 'community' | 'official'): void {\n this.dialog.open(type === 'community' ? CommunityDetailsComponent : OfficialDetailsComponent, {\n panelClass: 'dialog-sm'\n });\n }\n}\n\n@Directive()\nabstract class DetailsComponent {\n constructor(public dialogRef: MatDialogRef) {}\n\n protected close(): void {\n this.dialogRef.close();\n }\n}\n\n@Component({\n imports: [MatButtonModule, MatDialogTitle, MatDialogContent, MatDialogActions, RouterLink],\n templateUrl: './official-library-details.html'\n})\nclass OfficialDetailsComponent extends DetailsComponent {}\n\n@Component({\n imports: [MatButtonModule, MatDialogTitle, MatDialogContent, MatDialogActions, RouterLink],\n templateUrl: './community-library-details.html'\n})\nclass CommunityDetailsComponent extends DetailsComponent {}\n", + "providers": [], + "hostDirectives": [], + "standalone": false, + "inputsClass": [], + "outputsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "propertiesClass": [ + { + "name": "dialogRef", + "deprecated": false, + "deprecationMessage": "", + "type": "MatDialogRef", + "indexKey": "", + "optional": false, + "description": "", + "line": 59, + "modifierKind": [ + 125 + ] + } + ], + "methodsClass": [ + { + "name": "close", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 61, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + } + ], + "extends": [], + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "dialogRef", + "type": "MatDialogRef", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 58, + "jsdoctags": [ + { + "name": "dialogRef", + "type": "MatDialogRef", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + }, + { + "name": "DialogComponent", + "id": "directive-DialogComponent-f69e20f4d29e578c473a4bbd19b4b312e1b5c8bbf3062dda42e562e75a32ad771e85322e2bd9bbbc8af0b82aaae34928e7649d3b76a284044de952dfbbd446e1", + "file": "src/assets/wise5/directives/dialog/dialog.component.ts", + "type": "directive", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Directive, Inject } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { DialogData } from '../../../../app/domain/dialogData';\n\n@Directive()\nexport abstract class DialogComponent {\n constructor(\n @Inject(MAT_DIALOG_DATA) public dialogData: DialogData,\n protected dialogRef: MatDialogRef\n ) {}\n}\n", + "providers": [], + "hostDirectives": [], + "standalone": false, + "inputsClass": [], + "outputsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "propertiesClass": [ + { + "name": "dialogData", + "deprecated": false, + "deprecationMessage": "", + "type": "DialogData", + "indexKey": "", + "optional": false, + "description": "", + "line": 8, + "decorators": [ + { + "name": "Inject", + "stringifiedArguments": "MAT_DIALOG_DATA" + } + ], + "modifierKind": [ + 171, + 125 + ] + } + ], + "methodsClass": [], + "extends": [], + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "dialogData", + "type": "DialogData", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialogRef", + "type": "MatDialogRef", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 6, + "jsdoctags": [ + { + "name": "dialogData", + "type": "DialogData", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialogRef", + "type": "MatDialogRef", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + }, + { + "name": "DiscourseFeedComponent", + "id": "directive-DiscourseFeedComponent-fc0591a86a443c01a74ffe7ddc89c552074dd35d16d72ae6f2477aefcc4412f064f3f6e73b5b1f62a905d84007cb52405e65935ca4883b2f243eabf70811b2bd", + "file": "src/app/discourse-feed/discourse-feed.component.ts", + "type": "directive", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { HttpClient } from '@angular/common/http';\nimport { Directive, Input } from '@angular/core';\n\n@Directive()\nexport abstract class DiscourseFeedComponent {\n @Input() baseUrl: string;\n @Input() category: string;\n protected isLoaded: boolean;\n @Input() queryString: string;\n protected topics: any;\n\n constructor(protected http: HttpClient) {}\n\n ngOnInit(): void {\n this.http.get(this.getUrl()).subscribe(({ topic_list }: any) => {\n this.topics = topic_list.topics\n .filter((topic) => {\n return !topic.pinned_globally;\n })\n .slice(0, 3);\n this.isLoaded = true;\n });\n }\n\n private getUrl(): string {\n return `${this.baseUrl}/${this.category}.json${this.queryString ? `?${this.queryString}` : ``}`;\n }\n}\n", + "providers": [], + "hostDirectives": [], + "standalone": false, + "inputsClass": [ + { + "name": "baseUrl", + "deprecated": false, + "deprecationMessage": "", + "line": 6, + "type": "string", + "decorators": [] + }, + { + "name": "category", + "deprecated": false, + "deprecationMessage": "", + "line": 7, + "type": "string", + "decorators": [] + }, + { + "name": "queryString", + "deprecated": false, + "deprecationMessage": "", + "line": 9, + "type": "string", + "decorators": [] + } + ], + "outputsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "propertiesClass": [ + { + "name": "isLoaded", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 8, + "modifierKind": [ + 124 + ] + }, + { + "name": "topics", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "getUrl", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 25, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 14, + "deprecated": false, + "deprecationMessage": "" + } + ], + "extends": [], + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 10, + "jsdoctags": [ + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + }, + { + "name": "DragAndDropDirective", + "id": "directive-DragAndDropDirective-d1925be1db2d3b3e669c6ef3d4c9da4b82b18dfbebc4b37389169513d8f346ecd6a573961068f02059e5cd202168fd4d4120238c1ac51865195d302655dbf12c", + "file": "src/assets/wise5/common/drag-and-drop/drag-and-drop.directive.ts", + "type": "directive", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Directive, EventEmitter, HostBinding, HostListener, Output } from '@angular/core';\n\n@Directive({ selector: '[dragAndDrop]' })\nexport class DragAndDropDirective {\n constructor() {}\n\n @HostBinding('class.fileover') fileOver: boolean;\n @Output() fileDropped = new EventEmitter();\n\n @HostListener('dragover', ['$event']) onDragOver(event) {\n event.preventDefault();\n event.stopPropagation();\n this.fileOver = true;\n }\n\n @HostListener('dragleave', ['$event']) public onDragLeave(event) {\n event.preventDefault();\n event.stopPropagation();\n this.fileOver = false;\n }\n\n @HostListener('drop', ['$event']) public ondrop(event) {\n event.preventDefault();\n event.stopPropagation();\n this.fileOver = false;\n const files = event.dataTransfer.files;\n if (files.length > 0) {\n this.fileDropped.emit(files);\n }\n }\n}\n", + "selector": "[dragAndDrop]", + "providers": [], + "hostDirectives": [], + "standalone": false, + "inputsClass": [], + "outputsClass": [ + { + "name": "fileDropped", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 8, + "type": "EventEmitter" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [ + { + "name": "class.fileover", + "deprecated": false, + "deprecationMessage": "", + "line": 7, + "type": "boolean", + "decorators": [] + } + ], + "hostListeners": [ + { + "name": "dragleave", + "args": [ + { + "name": "event", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "argsDecorator": [ + "$event" + ], + "deprecated": false, + "deprecationMessage": "", + "line": 16 + }, + { + "name": "dragover", + "args": [ + { + "name": "event", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "argsDecorator": [ + "$event" + ], + "deprecated": false, + "deprecationMessage": "", + "line": 10 + }, + { + "name": "drop", + "args": [ + { + "name": "event", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "argsDecorator": [ + "$event" + ], + "deprecated": false, + "deprecationMessage": "", + "line": 22 + } + ], + "propertiesClass": [ + { + "name": "fileOver", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 7, + "decorators": [ + { + "name": "HostBinding", + "stringifiedArguments": "'class.fileover'" + } + ], + "modifierKind": [ + 171 + ] + } + ], + "methodsClass": [ + { + "name": "onDragLeave", + "args": [ + { + "name": "event", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 16, + "deprecated": false, + "deprecationMessage": "", + "decorators": [ + { + "name": "HostListener", + "stringifiedArguments": "'dragleave', ['$event']" + } + ], + "modifierKind": [ + 171, + 125 + ], + "jsdoctags": [ + { + "name": "event", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "onDragOver", + "args": [ + { + "name": "event", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 10, + "deprecated": false, + "deprecationMessage": "", + "decorators": [ + { + "name": "HostListener", + "stringifiedArguments": "'dragover', ['$event']" + } + ], + "modifierKind": [ + 171 + ], + "jsdoctags": [ + { + "name": "event", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ondrop", + "args": [ + { + "name": "event", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "", + "decorators": [ + { + "name": "HostListener", + "stringifiedArguments": "'drop', ['$event']" + } + ], + "modifierKind": [ + 171, + 125 + ], + "jsdoctags": [ + { + "name": "event", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "extends": [], + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [], + "line": 4 + } + }, + { + "name": "EditAdvancedComponentComponent", + "id": "directive-EditAdvancedComponentComponent-d1966dc568adfba75b139d041f2650fb78c087c4d0b0031ae6e10dae9f4f0d07cd50b98b8195886b34915ff04290ed155132b1b6bf9111d45c6d93e0e4a7abab", + "file": "src/app/authoring-tool/edit-advanced-component/edit-advanced-component.component.ts", + "type": "directive", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Directive, Input } from '@angular/core';\nimport { ComponentContent } from '../../../assets/wise5/common/ComponentContent';\nimport { Component } from '../../../assets/wise5/common/Component';\nimport { NotebookService } from '../../../assets/wise5/services/notebookService';\nimport { TeacherProjectService } from '../../../assets/wise5/services/teacherProjectService';\nimport { TeacherNodeService } from '../../../assets/wise5/services/teacherNodeService';\nimport { moveObjectDown, moveObjectUp } from '../../../assets/wise5/common/array/array';\n\n@Directive()\nexport abstract class EditAdvancedComponentComponent {\n component: Component;\n componentContent: ComponentContent;\n @Input() componentId: string;\n @Input() nodeId: string;\n\n constructor(\n protected nodeService: TeacherNodeService,\n protected notebookService: NotebookService,\n protected teacherProjectService: TeacherProjectService\n ) {}\n\n ngOnInit(): void {\n this.componentContent = this.teacherProjectService.getComponent(this.nodeId, this.componentId);\n this.component = new Component(this.componentContent, this.nodeId);\n this.teacherProjectService.uiChanged();\n }\n\n setShowSubmitButtonValue(show: boolean = false): void {\n this.componentContent.showSaveButton = show;\n this.componentContent.showSubmitButton = show;\n this.nodeService.broadcastComponentShowSubmitButtonValueChanged({\n nodeId: this.nodeId,\n componentId: this.componentId,\n showSubmitButton: show\n });\n }\n\n isNotebookEnabled(): boolean {\n return this.notebookService.isNotebookEnabled();\n }\n\n connectedComponentsChanged(connectedComponents: any[]): void {\n this.componentContent.connectedComponents = connectedComponents;\n this.componentChanged();\n }\n\n componentChanged(): void {\n this.teacherProjectService.nodeChanged();\n }\n\n moveObjectUp(objects: any[], index: number): void {\n moveObjectUp(objects, index);\n this.componentChanged();\n }\n\n moveObjectDown(objects: any[], index: number): void {\n moveObjectDown(objects, index);\n this.componentChanged();\n }\n}\n", + "providers": [], + "hostDirectives": [], + "standalone": false, + "inputsClass": [ + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "line": 13, + "type": "string", + "decorators": [] + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 14, + "type": "string", + "decorators": [] + } + ], + "outputsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "propertiesClass": [ + { + "name": "component", + "deprecated": false, + "deprecationMessage": "", + "type": "Component", + "indexKey": "", + "optional": false, + "description": "", + "line": 11 + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "ComponentContent", + "indexKey": "", + "optional": false, + "description": "", + "line": 12 + } + ], + "methodsClass": [ + { + "name": "componentChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 47, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "connectedComponentsChanged", + "args": [ + { + "name": "connectedComponents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 42, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isNotebookEnabled", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 38, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "moveObjectDown", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 56, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "moveObjectUp", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 51, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "setShowSubmitButtonValue", + "args": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 28, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ] + } + ], + "extends": [], + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "nodeService", + "type": "TeacherNodeService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "notebookService", + "type": "NotebookService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "teacherProjectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 14, + "jsdoctags": [ + { + "name": "nodeService", + "type": "TeacherNodeService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "notebookService", + "type": "NotebookService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "teacherProjectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + }, + { + "name": "EditComponentFieldComponent", + "id": "directive-EditComponentFieldComponent-f22372f19797ca9119b66bc900da873aa98b387af64db16cc2aed34b8305c16a1642b7f58baf5a35eb7a323f0bdec1ace73c4505fc012b4829ca5f6802a53499", + "file": "src/app/authoring-tool/edit-component-field.component.ts", + "type": "directive", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Directive, Input } from '@angular/core';\nimport { Subject, Subscription } from 'rxjs';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport { TeacherProjectService } from '../../assets/wise5/services/teacherProjectService';\n\n@Directive()\nexport abstract class EditComponentFieldComponent {\n @Input() componentContent: any;\n protected inputChanged: Subject = new Subject();\n protected inputChangedSubscription: Subscription;\n\n constructor(private projectService: TeacherProjectService) {}\n\n ngOnInit(): void {\n this.inputChangedSubscription = this.inputChanged\n .pipe(debounceTime(1000), distinctUntilChanged())\n .subscribe(() => {\n this.projectService.componentChanged();\n });\n }\n\n ngOnDestroy(): void {\n this.inputChangedSubscription.unsubscribe();\n }\n}\n", + "providers": [], + "hostDirectives": [], + "standalone": false, + "inputsClass": [ + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "line": 8, + "type": "any", + "decorators": [] + } + ], + "outputsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "propertiesClass": [ + { + "name": "inputChanged", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 9, + "modifierKind": [ + 124 + ] + }, + { + "name": "inputChangedSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 14, + "deprecated": false, + "deprecationMessage": "" + } + ], + "extends": [], + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 10, + "jsdoctags": [ + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + }, + { + "name": "FaqComponent", + "id": "directive-FaqComponent-00f0d0994a9a7014400583c6fb4212882e18b6c2f7bea360aa8ecab31531c9b1890d36c7233334d830cc4910cd14661e59aa4c3da04c2693c7a0d186136f350a", + "file": "src/app/help/faq/faq.component.ts", + "type": "directive", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Directive, OnInit } from '@angular/core';\nimport { ConfigService } from '../../services/config.service';\nimport { filter } from 'rxjs';\n\n@Directive()\nexport abstract class FaqComponent implements OnInit {\n protected contextPath: string;\n\n constructor(private configService: ConfigService) {\n this.configService\n .getConfig()\n .pipe(filter((config) => config != null))\n .subscribe((config) => {\n this.contextPath = config.contextPath;\n });\n }\n\n ngOnInit(): void {}\n\n ngAfterViewInit(): void {\n document.getElementsByTagName('app-help')[0]?.scrollIntoView();\n }\n}\n", + "providers": [], + "hostDirectives": [], + "standalone": false, + "inputsClass": [], + "outputsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "propertiesClass": [ + { + "name": "contextPath", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 7, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "ngAfterViewInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 20, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 18, + "deprecated": false, + "deprecationMessage": "" + } + ], + "extends": [], + "implements": [ + "OnInit" + ], + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 7, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + }, + { + "name": "LibraryComponent", + "id": "directive-LibraryComponent-90241583d2155940c2b97b4ca63c64ce8c2fd65744fe1c6e336bf044393977f1a1a6ed37a6abedfce2d038ea09b93cc24aac07fa61ac257bbbf0d030d3e5be57", + "file": "src/app/modules/library/library/library.component.ts", + "type": "directive", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { OnInit, QueryList, ViewChildren, Directive } from '@angular/core';\nimport { LibraryService } from '../../../services/library.service';\nimport { LibraryProject } from '../libraryProject';\nimport { PageEvent, MatPaginator } from '@angular/material/paginator';\nimport { BehaviorSubject, Subscription } from 'rxjs';\nimport { ProjectFilterValues } from '../../../domain/projectFilterValues';\n\n@Directive()\nexport abstract class LibraryComponent implements OnInit {\n protected filteredProjects: LibraryProject[] = [];\n protected highIndex: number = 0;\n protected lowIndex: number = 0;\n protected pageSizeOptions: number[] = [12, 24, 48, 96];\n protected pageIndex: number = 0;\n protected pageSize: number = 12;\n @ViewChildren(MatPaginator) paginators!: QueryList;\n protected projects: LibraryProject[] = [];\n protected showFilters: boolean = false;\n protected subscriptions: Subscription = new Subscription();\n\n constructor(\n protected filterValues: ProjectFilterValues,\n protected libraryService: LibraryService\n ) {}\n\n ngOnInit(): void {\n this.subscriptions.add(this.filterValues.updated$.subscribe(() => this.filterUpdated()));\n }\n\n ngOnDestroy(): void {\n this.filterValues.clear();\n this.subscriptions.unsubscribe();\n }\n\n protected pageChange(event?: PageEvent, scroll?: boolean): void {\n this.pageIndex = event.pageIndex;\n this.pageSize = event.pageSize;\n this.setPagination();\n if (scroll) {\n document.querySelector('.library').scrollIntoView();\n }\n }\n\n private setPagination(): void {\n if (this.paginators) {\n this.paginators.toArray().forEach((paginator) => (paginator.pageIndex = this.pageIndex));\n this.setPageBounds();\n }\n }\n\n private setPageBounds(): void {\n this.lowIndex = this.pageIndex * this.pageSize;\n this.highIndex = this.lowIndex + this.pageSize;\n }\n\n protected isOnPage(index: number): boolean {\n return this.lowIndex <= index && index < this.highIndex;\n }\n\n protected filterUpdated(): void {\n this.filteredProjects = this.projects\n .map((project) => {\n project.visible = this.filterValues.matches(project);\n return project;\n })\n .filter((project) => project.visible)\n .sort(this.sortUnits);\n this.emitNumberOfProjectsVisible(this.countVisibleProjects(this.filteredProjects));\n this.pageIndex = 0;\n this.setPagination();\n }\n\n protected emitNumberOfProjectsVisible(numProjectsVisible: number): void {\n if (numProjectsVisible) {\n this.getNumVisiblePersonalOrPublicProjects().next(numProjectsVisible);\n } else {\n this.getNumVisiblePersonalOrPublicProjects().next(this.filteredProjects.length);\n }\n }\n\n protected abstract getNumVisiblePersonalOrPublicProjects(): BehaviorSubject;\n\n protected countVisibleProjects(projects: LibraryProject[]): number {\n return projects.filter((project) => project.visible).length;\n }\n\n // Sort units from newest -> oldest in each of these categories\n // WISE Tested (Platform) -> WISE Tested (Other) -> Community (Platform) -> Community (Other)\n private sortUnits(a: LibraryProject, b: LibraryProject): number {\n const unitTypes = [\n 'wiseTestedPlatform',\n 'wiseTestedOther',\n 'communityBuiltPlatform',\n 'communityBuiltOther'\n ];\n const unitTypeIndexA = unitTypes.indexOf(a.metadata.publicUnitType + a.metadata.unitType);\n const unitTypeIndexB = unitTypes.indexOf(b.metadata.publicUnitType + b.metadata.unitType);\n return unitTypeIndexA === unitTypeIndexB ? b.id - a.id : unitTypeIndexA - unitTypeIndexB;\n }\n}\n", + "providers": [], + "hostDirectives": [], + "standalone": false, + "inputsClass": [], + "outputsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "propertiesClass": [ + { + "name": "filteredProjects", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "LibraryProject[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "modifierKind": [ + 124 + ] + }, + { + "name": "highIndex", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "modifierKind": [ + 124 + ] + }, + { + "name": "lowIndex", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "modifierKind": [ + 124 + ] + }, + { + "name": "pageIndex", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "modifierKind": [ + 124 + ] + }, + { + "name": "pageSize", + "defaultValue": "12", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 124 + ] + }, + { + "name": "pageSizeOptions", + "defaultValue": "[12, 24, 48, 96]", + "deprecated": false, + "deprecationMessage": "", + "type": "number[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "modifierKind": [ + 124 + ] + }, + { + "name": "paginators", + "deprecated": false, + "deprecationMessage": "", + "type": "QueryList", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "decorators": [ + { + "name": "ViewChildren", + "stringifiedArguments": "MatPaginator" + } + ], + "modifierKind": [ + 171 + ] + }, + { + "name": "projects", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "LibraryProject[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "modifierKind": [ + 124 + ] + }, + { + "name": "showFilters", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "modifierKind": [ + 124 + ] + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "countVisibleProjects", + "args": [ + { + "name": "projects", + "type": "LibraryProject[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "projects", + "type": "LibraryProject[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "emitNumberOfProjectsVisible", + "args": [ + { + "name": "numProjectsVisible", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 73, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "numProjectsVisible", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "filterUpdated", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 60, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "getNumVisiblePersonalOrPublicProjects", + "args": [], + "optional": false, + "returnType": "BehaviorSubject", + "typeParameters": [], + "line": 81, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124, + 128 + ] + }, + { + "name": "isOnPage", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 56, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 30, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "pageChange", + "args": [ + { + "name": "event", + "type": "PageEvent", + "deprecated": false, + "deprecationMessage": "", + "optional": true + }, + { + "name": "scroll", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "optional": true + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 35, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "event", + "type": "PageEvent", + "deprecated": false, + "deprecationMessage": "", + "optional": true, + "tagName": { + "text": "param" + } + }, + { + "name": "scroll", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "optional": true, + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setPageBounds", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 51, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "setPagination", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 44, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "sortUnits", + "args": [ + { + "name": "a", + "type": "LibraryProject", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "b", + "type": "LibraryProject", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 89, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "a", + "type": "LibraryProject", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "b", + "type": "LibraryProject", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "extends": [], + "implements": [ + "OnInit" + ], + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "filterValues", + "type": "ProjectFilterValues", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "libraryService", + "type": "LibraryService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 19, + "jsdoctags": [ + { + "name": "filterValues", + "type": "ProjectFilterValues", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "libraryService", + "type": "LibraryService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + }, + { + "name": "NotebookParentComponent", + "id": "directive-NotebookParentComponent-df14523fa7460901f7adfc46157bc90397b8ad3ad711c3c88bb8ca791d0d443ba0ba79fdb3e3ef6cc8d90d2422007c1e14e122bb53ab57d1ed7316374ce18d70", + "file": "src/app/notebook/notebook-parent/notebook-parent.component.ts", + "type": "directive", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Directive, Input } from '@angular/core';\nimport { copy } from '../../../assets/wise5/common/object/object';\nimport { ConfigService } from '../../../assets/wise5/services/configService';\nimport { NotebookService } from '../../../assets/wise5/services/notebookService';\n\n@Directive()\nexport class NotebookParentComponent {\n @Input() config: any;\n @Input() mode: string;\n @Input() workgroupId: number;\n notebook: any;\n\n constructor(\n public ConfigService: ConfigService,\n public NotebookService: NotebookService\n ) {}\n\n ngOnInit(): void {\n if (this.workgroupId == null) {\n this.workgroupId = this.ConfigService.getWorkgroupId();\n }\n if (this.config == null) {\n this.setConfig();\n }\n this.notebook = this.NotebookService.getNotebookByWorkgroup(this.workgroupId);\n }\n\n setConfig(): void {\n if (this.isStudentNotebook()) {\n this.config = copy(this.NotebookService.getStudentNotebookConfig());\n } else {\n this.config = copy(this.NotebookService.getTeacherNotebookConfig());\n }\n }\n\n isStudentNotebook(): boolean {\n return (\n this.ConfigService.getMode() === 'studentRun' ||\n this.ConfigService.getMode() === 'preview' ||\n ((this.ConfigService.isRunOwner() || this.ConfigService.isRunSharedTeacher()) &&\n this.ConfigService.getWorkgroupId() !== this.workgroupId)\n );\n }\n}\n", + "providers": [], + "hostDirectives": [], + "standalone": false, + "inputsClass": [ + { + "name": "config", + "deprecated": false, + "deprecationMessage": "", + "line": 8, + "type": "any", + "decorators": [] + }, + { + "name": "mode", + "deprecated": false, + "deprecationMessage": "", + "line": 9, + "type": "string", + "decorators": [] + }, + { + "name": "workgroupId", + "deprecated": false, + "deprecationMessage": "", + "line": 10, + "type": "number", + "decorators": [] + } + ], + "outputsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "propertiesClass": [ + { + "name": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "type": "ConfigService", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "modifierKind": [ + 125 + ] + }, + { + "name": "notebook", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 11 + }, + { + "name": "NotebookService", + "deprecated": false, + "deprecationMessage": "", + "type": "NotebookService", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 125 + ] + } + ], + "methodsClass": [ + { + "name": "isStudentNotebook", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 36, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 18, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "setConfig", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 28, + "deprecated": false, + "deprecationMessage": "" + } + ], + "extends": [], + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "ConfigService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "NotebookService", + "type": "NotebookService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 11, + "jsdoctags": [ + { + "name": "ConfigService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "NotebookService", + "type": "NotebookService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + }, + { + "name": "PeerGroupWorkgroupsContainerComponent", + "id": "directive-PeerGroupWorkgroupsContainerComponent-3d8957370ce60ff12e070268ef4269a9d56cb933bc24696987a6add9fc42ac87edb89fb3032a787628c4cacfc7ef738127b38cac0784090d604a564615aad2ad", + "file": "src/assets/wise5/classroomMonitor/classroomMonitorComponents/peer-group/peer-group-workgroups-container/peer-group-workgroups-container.component.ts", + "type": "directive", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { CdkDragDrop, CdkDragEnter, CdkDragExit } from '@angular/cdk/drag-drop';\nimport { Directive, EventEmitter, OnInit, Output } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { PeerGroupMoveWorkgroupConfirmDialogComponent } from '../peer-group-move-workgroup-confirm-dialog/peer-group-move-workgroup-confirm-dialog.component';\n\n@Directive()\nexport abstract class PeerGroupWorkgroupsContainerComponent implements OnInit {\n @Output()\n moveWorkgroup: EventEmitter = new EventEmitter();\n\n constructor(protected dialog: MatDialog) {}\n\n ngOnInit(): void {}\n\n dragEnter(event: CdkDragEnter) {\n this.addBackgroundColor(event);\n }\n\n dragExit(event: CdkDragExit) {\n this.removeBackgroundColor(event);\n }\n\n dropWorkgroup(event: CdkDragDrop): void {\n if (event.previousContainer !== event.container) {\n this.dialog\n .open(PeerGroupMoveWorkgroupConfirmDialogComponent, {\n data: this.isFromAssignedContainer(event),\n panelClass: 'dialog-sm'\n })\n .afterClosed()\n .subscribe((isMove: boolean) => {\n if (isMove) {\n this.moveWorkgroup.emit(event);\n }\n this.removeBackgroundColor(event);\n });\n } else {\n this.removeBackgroundColor(event);\n }\n }\n\n isFromAssignedContainer(event: CdkDragDrop): boolean {\n return event.previousContainer.data.id !== 0;\n }\n\n addBackgroundColor(event: any): void {\n event.container.element.nativeElement.classList.add('primary-bg');\n }\n\n removeBackgroundColor(event: any): void {\n event.container.element.nativeElement.classList.remove('primary-bg');\n }\n}\n", + "providers": [], + "hostDirectives": [], + "standalone": false, + "inputsClass": [], + "outputsClass": [ + { + "name": "moveWorkgroup", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 9, + "type": "EventEmitter" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "propertiesClass": [], + "methodsClass": [ + { + "name": "addBackgroundColor", + "args": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 46, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "dragEnter", + "args": [ + { + "name": "event", + "type": "CdkDragEnter", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 15, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "event", + "type": "CdkDragEnter", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "dragExit", + "args": [ + { + "name": "event", + "type": "CdkDragExit", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 19, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "event", + "type": "CdkDragExit", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "dropWorkgroup", + "args": [ + { + "name": "event", + "type": "CdkDragDrop", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 23, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "event", + "type": "CdkDragDrop", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isFromAssignedContainer", + "args": [ + { + "name": "event", + "type": "CdkDragDrop", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 42, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "event", + "type": "CdkDragDrop", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 13, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "removeBackgroundColor", + "args": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 50, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "extends": [], + "implements": [ + "OnInit" + ], + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 9, + "jsdoctags": [ + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + }, + { + "name": "ShareItemDialogComponent", + "id": "directive-ShareItemDialogComponent-1a74cb43a6c56513bb2a5accd0bf35b16298ad62e6c8aba8c8f2be3b353917916d831757f7cbe8a77acf55f257ca0d04608c22fe0dc6601463888c1fdc1c5404", + "file": "src/app/modules/library/share-item-dialog/share-item-dialog.component.ts", + "type": "directive", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { OnInit, Inject, Directive } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { TeacherService } from '../../../teacher/teacher.service';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { map, debounceTime } from 'rxjs/operators';\nimport { Project } from '../../../domain/project';\nimport { copy } from '../../../../assets/wise5/common/object/object';\n\n@Directive()\nexport abstract class ShareItemDialogComponent implements OnInit {\n project: Project;\n projectId: number;\n runId: number;\n teacherSearchControl = new FormControl();\n allTeacherUsernames: string[] = [];\n filteredTeacherUsernames: Observable;\n owner: any;\n sharedOwners: any[] = [];\n private sharedOwners$: BehaviorSubject = new BehaviorSubject(this.sharedOwners);\n\n constructor(\n public dialogRef: MatDialogRef,\n @Inject(MAT_DIALOG_DATA) public data: any,\n public teacherService: TeacherService,\n public snackBar: MatSnackBar\n ) {\n this.teacherService.retrieveAllTeacherUsernames().subscribe((teacherUsernames) => {\n this.allTeacherUsernames = teacherUsernames;\n });\n }\n\n ngOnInit() {\n this.filteredTeacherUsernames = this.teacherSearchControl.valueChanges.pipe(\n debounceTime(1000),\n map((value) => this._filter(value))\n );\n }\n\n getSharedOwners(): BehaviorSubject {\n return this.sharedOwners$;\n }\n\n public _filter(value: string): string[] {\n const filterValue = value.toLowerCase();\n if (filterValue == '') {\n return [];\n }\n return this.allTeacherUsernames.filter((option) => option.toLowerCase().includes(filterValue));\n }\n\n populateSharedOwners(sharedOwners) {\n for (let sharedOwner of sharedOwners) {\n const localSharedOwner = copy(sharedOwner);\n this.populatePermissions(localSharedOwner);\n this.sharedOwners.push(localSharedOwner);\n }\n this.sharedOwners$.next(this.sharedOwners);\n }\n\n abstract populatePermissions(sharedOwner);\n\n addProjectPermissions(sharedOwner) {\n this.setDefaultProjectPermissions(sharedOwner);\n const sharedProjectOwner = this.getSharedProjectOwner(sharedOwner.id, this.project);\n for (let permission of sharedProjectOwner.permissions) {\n sharedOwner.projectPermissions[permission] = true;\n }\n }\n\n abstract setDefaultProjectPermissions(sharedOwner);\n\n getSharedProjectOwner(userId, item) {\n for (let sharedOwner of item.sharedOwners) {\n if (sharedOwner.id == userId) {\n return sharedOwner;\n }\n }\n return { permissions: [] };\n }\n\n getSharedOwner(sharedOwnerId): any {\n for (let sharedOwner of this.sharedOwners) {\n if (sharedOwner.id == sharedOwnerId) {\n return sharedOwner;\n }\n }\n return { permissions: [] };\n }\n\n projectPermissionChanged(project, sharedOwnerId, permissionId, isAddingPermission) {\n if (isAddingPermission) {\n this.teacherService\n .addSharedOwnerProjectPermission(project.id, sharedOwnerId, permissionId)\n .subscribe((response: any) => {\n if (response.status == 'success') {\n this.addProjectPermissionToSharedOwner(sharedOwnerId, permissionId);\n }\n });\n } else {\n this.teacherService\n .removeSharedOwnerProjectPermission(project.id, sharedOwnerId, permissionId)\n .subscribe((response: any) => {\n if (response.status == 'success') {\n this.removeProjectPermissionFromSharedOwner(sharedOwnerId, permissionId);\n }\n });\n }\n }\n\n addProjectPermissionToSharedOwner(sharedOwnerId, permissionId) {\n const sharedOwner = this.getSharedOwner(sharedOwnerId);\n sharedOwner.projectPermissions[permissionId] = true;\n this.notifyRunPermissionChange(sharedOwner);\n }\n\n removeProjectPermissionFromSharedOwner(sharedOwnerId, permissionId) {\n const sharedOwner = this.getSharedOwner(sharedOwnerId);\n sharedOwner.projectPermissions[permissionId] = false;\n this.notifyRunPermissionChange(sharedOwner);\n }\n\n notifyRunPermissionChange(sharedOwner) {\n this.snackBar.open(\n $localize`Sharing permissions updated for ${sharedOwner.firstName}:firstName: ${sharedOwner.lastName}:lastName:.`\n );\n }\n\n isSharedOwner(username) {\n for (let sharedOwner of this.sharedOwners) {\n if (sharedOwner.username == username) {\n return true;\n }\n }\n return false;\n }\n\n addSharedOwner(sharedOwner) {\n this.sharedOwners.push(sharedOwner);\n this.sharedOwners$.next(this.sharedOwners);\n this.snackBar.open(\n $localize`Added shared teacher: ${sharedOwner.firstName}:firstName: ${sharedOwner.lastName}:lastName:.`\n );\n }\n\n removeSharedOwner(sharedOwner) {\n for (let i = 0; i < this.sharedOwners.length; i++) {\n if (this.sharedOwners[i].id == sharedOwner.id) {\n this.sharedOwners.splice(i, 1);\n this.sharedOwners$.next(this.sharedOwners);\n this.snackBar.open(\n $localize`Removed shared teacher: ${sharedOwner.firstName}:firstName: ${sharedOwner.lastName}:lastName:.`\n );\n return;\n }\n }\n }\n}\n", + "providers": [], + "hostDirectives": [], + "standalone": false, + "inputsClass": [], + "outputsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "propertiesClass": [ + { + "name": "allTeacherUsernames", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 17 + }, + { + "name": "data", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 25, + "decorators": [ + { + "name": "Inject", + "stringifiedArguments": "MAT_DIALOG_DATA" + } + ], + "modifierKind": [ + 171, + 125 + ] + }, + { + "name": "dialogRef", + "deprecated": false, + "deprecationMessage": "", + "type": "MatDialogRef", + "indexKey": "", + "optional": false, + "description": "", + "line": 24, + "modifierKind": [ + 125 + ] + }, + { + "name": "filteredTeacherUsernames", + "deprecated": false, + "deprecationMessage": "", + "type": "Observable", + "indexKey": "", + "optional": false, + "description": "", + "line": 18 + }, + { + "name": "owner", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 19 + }, + { + "name": "project", + "deprecated": false, + "deprecationMessage": "", + "type": "Project", + "indexKey": "", + "optional": false, + "description": "", + "line": 13 + }, + { + "name": "projectId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 14 + }, + { + "name": "runId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 15 + }, + { + "name": "sharedOwners", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 20 + }, + { + "name": "sharedOwners$", + "defaultValue": "new BehaviorSubject(this.sharedOwners)", + "deprecated": false, + "deprecationMessage": "", + "type": "BehaviorSubject", + "indexKey": "", + "optional": false, + "description": "", + "line": 21, + "modifierKind": [ + 123 + ] + }, + { + "name": "snackBar", + "deprecated": false, + "deprecationMessage": "", + "type": "MatSnackBar", + "indexKey": "", + "optional": false, + "description": "", + "line": 27, + "modifierKind": [ + 125 + ] + }, + { + "name": "teacherSearchControl", + "defaultValue": "new FormControl()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 16 + }, + { + "name": "teacherService", + "deprecated": false, + "deprecationMessage": "", + "type": "TeacherService", + "indexKey": "", + "optional": false, + "description": "", + "line": 26, + "modifierKind": [ + 125 + ] + } + ], + "methodsClass": [ + { + "name": "_filter", + "args": [ + { + "name": "value", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string[]", + "typeParameters": [], + "line": 45, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 125 + ], + "jsdoctags": [ + { + "name": "value", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addProjectPermissions", + "args": [ + { + "name": "sharedOwner", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 64, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "sharedOwner", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addProjectPermissionToSharedOwner", + "args": [ + { + "name": "sharedOwnerId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "permissionId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 112, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "sharedOwnerId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "permissionId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addSharedOwner", + "args": [ + { + "name": "sharedOwner", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 139, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "sharedOwner", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getSharedOwner", + "args": [ + { + "name": "sharedOwnerId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "sharedOwnerId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getSharedOwners", + "args": [], + "optional": false, + "returnType": "BehaviorSubject", + "typeParameters": [], + "line": 41, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getSharedProjectOwner", + "args": [ + { + "name": "userId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "item", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 74, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "userId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "item", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isSharedOwner", + "args": [ + { + "name": "username", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 130, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "username", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 34, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "notifyRunPermissionChange", + "args": [ + { + "name": "sharedOwner", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 124, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "sharedOwner", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "populatePermissions", + "args": [ + { + "name": "sharedOwner", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 62, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 128 + ], + "jsdoctags": [ + { + "name": "sharedOwner", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "populateSharedOwners", + "args": [ + { + "name": "sharedOwners", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 53, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "sharedOwners", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "projectPermissionChanged", + "args": [ + { + "name": "project", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "sharedOwnerId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "permissionId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isAddingPermission", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 92, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "project", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "sharedOwnerId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "permissionId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "isAddingPermission", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "removeProjectPermissionFromSharedOwner", + "args": [ + { + "name": "sharedOwnerId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "permissionId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 118, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "sharedOwnerId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "permissionId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "removeSharedOwner", + "args": [ + { + "name": "sharedOwner", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 147, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "sharedOwner", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setDefaultProjectPermissions", + "args": [ + { + "name": "sharedOwner", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 72, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 128 + ], + "jsdoctags": [ + { + "name": "sharedOwner", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "extends": [], + "implements": [ + "OnInit" + ], + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "dialogRef", + "type": "MatDialogRef", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "teacherService", + "type": "TeacherService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "snackBar", + "type": "MatSnackBar", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 21, + "jsdoctags": [ + { + "name": "dialogRef", + "type": "MatDialogRef", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "teacherService", + "type": "TeacherService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "snackBar", + "type": "MatSnackBar", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + }, + { + "name": "SummaryDisplayComponent", + "id": "directive-SummaryDisplayComponent-11c89eab5445aa918a6a1b8df0e2e8072f6084a684dcab82da86cabe4d38eebdd9e34f77f8dbfb4a30d5bc85cccbcbe5b982bfc47f5219c3ec78fbf43d814a79", + "file": "src/assets/wise5/directives/summary-display/summary-display.component.ts", + "type": "directive", + "description": "", + "rawdescription": "\n", + "sourceCode": "import * as Highcharts from 'highcharts';\nimport { Annotation } from '../../common/Annotation';\nimport { AnnotationService } from '../../services/annotationService';\nimport { Directive, Input, SimpleChanges } from '@angular/core';\nimport { ComponentContent } from '../../common/ComponentContent';\nimport { ComponentState } from '../../../../app/domain/componentState';\nimport { ConfigService } from '../../services/configService';\nimport { DataService } from '../../../../app/services/data.service';\nimport { MultipleChoiceContent } from '../../components/multipleChoice/MultipleChoiceContent';\nimport { Observable } from 'rxjs';\nimport { ProjectService } from '../../services/projectService';\nimport { rgbToHex } from '../../common/color/color';\nimport { SummaryService } from '../../components/summary/summaryService';\nimport { tap } from 'rxjs/operators';\nimport { SeriesData } from '../../common/SeriesData';\nimport { SeriesDataPoint } from '../../common/SeriesDataPoint';\nimport { MultipleChoiceSummaryData } from './summary-data/MultipleChoiceSummaryData';\nimport { ScoreSummaryData } from './summary-data/ScoreSummaryData';\nimport { TableSummaryData } from './summary-data/TableSummaryData';\nimport { Choice } from '../../components/multipleChoice/Choice';\nimport { SummaryData } from './summary-data/SummaryData';\nimport { CRaterService } from '../../services/cRaterService';\n\n@Directive()\nexport abstract class SummaryDisplayComponent {\n chartConfig: any;\n colors = {\n palette: [\n '#1a237e',\n '#701e82',\n '#aa187b',\n '#d72c6c',\n '#f65158',\n '#ff7d43',\n '#ffab32',\n '#fdd835',\n '#ffee58',\n '#ade563',\n '#50d67f',\n '#00c29d',\n '#00aab3',\n '#0090bc',\n '#0074b4',\n '#01579b'\n ],\n singleHue: 'rgb(170, 24, 123)',\n correct: '#00C853',\n incorrect: '#C62828'\n };\n private defaultMaxScore: number = 0;\n hasCorrectness: boolean = false;\n protected Highcharts: typeof Highcharts = Highcharts;\n maxScore: number = 0;\n studentMaxScore: number = 0;\n studentMinScore: number = 1;\n private meanScore: number = 0;\n\n numResponses: number;\n otherComponent: ComponentContent;\n otherComponentType: string;\n percentResponded: number;\n totalWorkgroups: number;\n\n @Input() nodeId: string;\n @Input() componentId: string;\n @Input() highlightCorrectAnswer: boolean;\n @Input() studentDataType: string;\n @Input() source: string;\n @Input() periodId: number;\n @Input() chartType: string;\n @Input() hasWarning: boolean;\n @Input() warningMessage: string;\n @Input() customLabelColors: any[];\n @Input() doRender: boolean;\n\n constructor(\n protected annotationService: AnnotationService,\n protected configService: ConfigService,\n protected cRaterService: CRaterService,\n protected dataService: DataService,\n protected projectService: ProjectService,\n protected summaryService: SummaryService\n ) {}\n\n ngOnInit(): void {\n this.initializeOtherComponent();\n this.initializeCustomLabelColors();\n if (this.doRender) {\n this.renderDisplay();\n }\n }\n\n initializeOtherComponent(): void {\n this.otherComponent = this.projectService.getComponent(this.nodeId, this.componentId);\n if (this.otherComponent != null) {\n this.otherComponentType = this.otherComponent.type;\n }\n }\n\n private initializeCustomLabelColors(): void {\n if (this.customLabelColors == null) {\n this.customLabelColors = [];\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.doRender != null && !changes.doRender.firstChange) {\n this.renderDisplay();\n } else if (changes.componentId || changes.periodId) {\n this.initializeOtherComponent();\n this.initializeCustomLabelColors();\n this.renderDisplay();\n }\n }\n\n isVLEPreview(): boolean {\n return this.configService.isPreview();\n }\n\n isAuthoringPreview(): boolean {\n return this.configService.isAuthoring();\n }\n\n isStudentRun(): boolean {\n return this.configService.isStudentRun();\n }\n\n protected renderDisplay(): void {\n if (this.isSourceSelf()) {\n this.renderSelfDisplay();\n } else {\n switch (this.studentDataType) {\n case 'responses':\n this.renderClassResponses();\n break;\n case 'scores':\n this.renderClassScores();\n }\n }\n }\n\n protected abstract renderSelfDisplay(): void;\n\n protected renderClassResponses(): void {\n this.getLatestWork().subscribe((componentStates = []) => {\n const [seriesData, count] = this.processComponentStates(componentStates);\n this.renderGraph(seriesData, count);\n });\n }\n\n protected abstract getLatestScores(): Observable;\n\n protected getLatestStudentScores(): Observable {\n return this.summaryService\n .getLatestClassmateScores(\n this.configService.getRunId(),\n this.periodId,\n this.nodeId,\n this.componentId,\n this.source\n )\n .pipe(\n tap((scoreAnnotations) => {\n return this.filterLatestScoreAnnotations(scoreAnnotations);\n })\n );\n }\n\n protected getLatestScoreAnnotationForWorkgroup(): Annotation {\n return this.annotationService.getLatestScoreAnnotation(\n this.nodeId,\n this.componentId,\n this.configService.getWorkgroupId()\n );\n }\n\n protected renderClassScores(): void {\n this.setMaxScore();\n this.getLatestScores().subscribe((annotations) => this.processScoreAnnotations(annotations));\n }\n\n protected setMaxScore(): void {\n const isCRaterEnabled = this.cRaterService.isCRaterEnabled(\n this.projectService.getComponent(this.nodeId, this.componentId)\n );\n this.maxScore = this.otherComponent?.maxScore ?? (isCRaterEnabled ? 5 : this.defaultMaxScore);\n }\n\n protected abstract getLatestWork(): Observable;\n\n protected getLatestStudentWork(): Observable {\n return this.summaryService.getLatestClassmateStudentWork(\n this.configService.getRunId(),\n this.periodId,\n this.nodeId,\n this.componentId,\n this.source\n );\n }\n\n filterLatestScoreAnnotations(annotations: Annotation[]): any[] {\n const latestAnnotations = new Annotation();\n for (const annotation of annotations) {\n if (annotation.type === 'score' || annotation.type === 'autoScore') {\n this.setLatestAnnotationIfNewer(latestAnnotations, annotation);\n }\n }\n return this.convertObjectToArray(latestAnnotations);\n }\n\n setLatestAnnotationIfNewer(latestAnnotations: Annotation, annotation: Annotation): void {\n const workgroupId = annotation.toWorkgroupId;\n const latestAnnotation = latestAnnotations[workgroupId];\n if (latestAnnotation == null || annotation.serverSaveTime > latestAnnotation.serverSaveTime) {\n latestAnnotations[workgroupId] = annotation;\n }\n }\n\n convertObjectToArray(obj: any): any[] {\n return Object.keys(obj).map((key) => {\n return obj[key];\n });\n }\n\n protected processComponentStates(componentStates: ComponentState[]): [SeriesData, number] {\n let seriesData: SeriesData;\n let count: number;\n if (this.otherComponentType === 'MultipleChoice') {\n const summaryData = new MultipleChoiceSummaryData(\n this.otherComponent as MultipleChoiceContent,\n componentStates\n );\n seriesData = this.createChoicesSeriesData(\n this.otherComponent as MultipleChoiceContent,\n summaryData\n );\n count = componentStates.length;\n } else if (this.otherComponentType === 'Table') {\n const summaryData = new TableSummaryData(componentStates, this.summaryService);\n seriesData = this.createTableSeriesData(summaryData);\n count = this.getTotalTableCount(seriesData);\n }\n this.calculateCountsAndPercentage(componentStates.length);\n return [seriesData, count];\n }\n\n createTableSeriesData(summaryData: TableSummaryData): SeriesData {\n const seriesData = new SeriesData();\n for (const key of Object.keys(summaryData)) {\n summaryData.getDataPoints().forEach((summaryDataPoint) => {\n const key = summaryDataPoint.getId();\n const count = summaryDataPoint.getCount();\n const seriesDataPoint = new SeriesDataPoint(key, count);\n seriesData.addDataPoint(seriesDataPoint);\n });\n }\n return seriesData;\n }\n\n getTotalTableCount(seriesData: SeriesData): number {\n let total = 0;\n seriesData.getDataPoints().forEach((dataPoint) => (total += dataPoint.y));\n return total;\n }\n\n protected processScoreAnnotations(annotations: Annotation[]): void {\n this.setMinMaxScore(annotations);\n const summaryData = new ScoreSummaryData(annotations, this.studentMaxScore);\n const [seriesData, total] = this.createScoresSeriesData(summaryData);\n this.calculateCountsAndPercentage(annotations.length);\n this.renderGraph(seriesData, total);\n }\n\n setMinMaxScore(annotations: Annotation[]): void {\n let maxScoreSoFar = this.maxScore;\n let minScoreSoFar = this.studentMinScore;\n for (const annotation of annotations) {\n const score = this.getScoreFromAnnotation(annotation);\n maxScoreSoFar = Math.max(maxScoreSoFar, score);\n minScoreSoFar = Math.min(minScoreSoFar, score);\n }\n this.studentMaxScore = maxScoreSoFar;\n this.studentMinScore = minScoreSoFar;\n }\n\n createChoicesSeriesData(\n component: MultipleChoiceContent,\n summaryData: MultipleChoiceSummaryData\n ): SeriesData {\n let seriesData = new SeriesData();\n this.hasCorrectness = this.hasCorrectAnswer(component);\n component.choices.forEach((choice) => {\n const count = this.getSummaryDataCount(summaryData, choice.id);\n const color = this.getDataPointColor(choice);\n let text = choice.text;\n if (this.highlightCorrectAnswer && this.chartType === 'pie') {\n text = text + ' (' + (choice.isCorrect ? $localize`Correct` : $localize`Incorrect`) + ')';\n }\n const dataPoint = new SeriesDataPoint(text, count, color);\n seriesData.addDataPoint(dataPoint);\n });\n return seriesData;\n }\n\n hasCorrectAnswer(component: MultipleChoiceContent): boolean {\n return component.choices.some((choice) => choice.isCorrect);\n }\n\n getDataPointColor(choice: Choice): string | null {\n let color = null;\n if (this.highlightCorrectAnswer) {\n if (choice.isCorrect) {\n color = this.colors.correct;\n } else {\n color = this.colors.incorrect;\n }\n }\n return color;\n }\n\n private getScoreFromAnnotation(annotation: Annotation): number {\n return annotation.data.value;\n }\n\n private createScoresSeriesData(summaryData: ScoreSummaryData): [SeriesData, number] {\n const seriesData = new SeriesData();\n let sum = 0;\n let total = 0;\n for (let scoreValue = this.studentMinScore; scoreValue <= this.studentMaxScore; scoreValue++) {\n const count = this.getSummaryDataCount(summaryData, scoreValue);\n const dataPoint = new SeriesDataPoint(scoreValue, count);\n seriesData.addDataPoint(dataPoint);\n sum += count * scoreValue;\n total += count;\n }\n this.meanScore = Math.round((sum / total) * 100) / 100;\n return [seriesData, total];\n }\n\n protected renderGraph(seriesData: SeriesData, total: number): void {\n const chartType = this.chartType;\n const title = this.getGraphTitle();\n const xAxisType = 'category';\n const series = this.createSeries(seriesData);\n const colors = this.getChartColors();\n this.setCustomLabelColors(series, colors, this.customLabelColors);\n this.chartConfig = this.createChartConfig(chartType, title, xAxisType, total, series, colors);\n }\n\n createSeries(seriesData: SeriesData): any[] {\n const series: any[] = [\n {\n data: seriesData.getDataPoints(),\n dataLabels: {\n enabled: true\n }\n }\n ];\n if (this.highlightCorrectAnswer && this.chartType === 'column') {\n series[0].showInLegend = false;\n series.push(\n {\n name: $localize`Correct`,\n color: this.colors.correct\n },\n {\n name: $localize`Incorrect`,\n color: this.colors.incorrect\n }\n );\n }\n return series;\n }\n\n getGraphTitle(): string {\n let graphTitle: string;\n switch (this.source) {\n case 'self':\n graphTitle = this.getGraphTitleForSelf();\n break;\n default:\n graphTitle = this.getGraphTitleForClass();\n }\n return graphTitle;\n }\n\n private getGraphTitleForSelf(): string {\n if (this.isStudentDataTypeResponses()) {\n return $localize`Your Response`;\n } else if (this.isStudentDataTypeScores()) {\n return $localize`Your Score`;\n }\n }\n\n getGraphTitleForClass(): string {\n if (this.isStudentDataTypeResponses()) {\n return $localize`Responses`;\n } else if (this.isStudentDataTypeScores()) {\n return this.maxScore\n ? `${$localize`Scores`} (${$localize`Mean: `}${this.meanScore}/${this.maxScore})`\n : `${$localize`Scores`} (${$localize`Mean: `}${this.meanScore})`;\n }\n }\n\n getChartColors(): string[] {\n if (this.studentDataType === 'responses') {\n return this.colors.palette;\n } else {\n let colors: string[] = [];\n const rangeMax = this.studentMinScore === 0 ? this.studentMaxScore + 1 : this.studentMaxScore;\n const step = (100 / rangeMax / 100) * 0.9;\n let opacity = 0.1;\n for (let i = 0; i < rangeMax; i++) {\n opacity = opacity + step;\n const color = rgbToHex(this.colors.singleHue, opacity);\n colors.push(color);\n }\n return colors;\n }\n }\n\n setCustomLabelColors(series: any[], colors: string[], customLabelColors: any[]): void {\n for (const customLabelColor of customLabelColors) {\n const index = this.getIndexByName(series, customLabelColor.label);\n if (index !== -1) {\n colors[index] = customLabelColor.color;\n }\n }\n }\n\n private getIndexByName(series: any[], name: string): number {\n let index;\n series\n .filter((singleSeries) => singleSeries.data != null)\n .forEach((singleSeries) => {\n index = singleSeries.data.findIndex(\n (dataPoint) =>\n this.summaryService.cleanLabel(dataPoint.name) === this.summaryService.cleanLabel(name)\n );\n });\n return index;\n }\n\n private isStudentDataTypeResponses(): boolean {\n return this.isStudentDataType('responses');\n }\n\n private isStudentDataTypeScores(): boolean {\n return this.isStudentDataType('scores');\n }\n\n private isStudentDataType(studentDataType: string): boolean {\n return this.studentDataType === studentDataType;\n }\n\n createChartConfig(\n chartType: string,\n title: string,\n xAxisType: string,\n total: number,\n series: any[],\n colors: string[]\n ): any {\n const thisSummaryDisplay: any = this;\n thisSummaryDisplay.total = total;\n const fontFamily = 'Roboto,Helvetica Neue,sans-serif';\n const options: any = {\n chart: {\n type: chartType\n },\n colors: colors,\n credits: {\n enabled: false\n },\n exporting: {\n enabled: false\n },\n legend: {\n enabled: function () {\n return chartType === 'pie' ? true : false;\n }\n },\n plotOptions: {\n series: {\n colorByPoint: true,\n dataLabels: {\n formatter: function () {\n if (chartType === 'pie') {\n const pct = Math.round((this.y / this.total) * 100);\n return pct + '%';\n } else {\n const pct = Math.round((this.y / thisSummaryDisplay.total) * 100);\n return this.y + ' (' + pct + '%)';\n }\n },\n style: { fontSize: '12px' },\n enabled: true\n }\n },\n column: {\n maxPointWidth: 80\n },\n pie: {\n allowPointSelect: true,\n cursor: 'pointer',\n showInLegend: true,\n dataLabels: {\n distance: -30\n }\n }\n },\n series: series,\n title: {\n text: title,\n style: {\n fontFamily: fontFamily,\n fontSize: '16px',\n fontWeight: '500'\n }\n },\n tooltip: {\n formatter: function (s, point) {\n if (chartType === 'pie') {\n const pct = Math.round((this.y / this.total) * 100);\n return this.key + '
' + this.y + ' (' + pct + '%)
';\n } else {\n const pct = Math.round((this.y / thisSummaryDisplay.total) * 100);\n return '' + this.key + '
Count:' + this.y + '';\n }\n }\n },\n xAxis: {\n type: xAxisType,\n labels: {\n style: { fontFamily: fontFamily, fontSize: '14px' }\n }\n },\n yAxis: {\n title: {\n text: $localize`Count`,\n style: { fontFamily: fontFamily, fontSize: '14px' }\n }\n }\n };\n if (this.highlightCorrectAnswer) {\n options.legend.enabled = true;\n options.plotOptions.series.colorByPoint = false;\n options.plotOptions.series.grouping = false;\n options.plotOptions.series.events = {\n legendItemClick: function () {\n return false;\n }\n };\n }\n return options;\n }\n\n calculateCountsAndPercentage(dataCount: number): void {\n this.numResponses = dataCount;\n this.totalWorkgroups = this.getTotalWorkgroups(dataCount);\n this.percentResponded = this.getPercentResponded(dataCount, this.totalWorkgroups);\n }\n\n getTotalWorkgroups(dataCount: number): number {\n if (this.isVLEPreview() || this.isAuthoringPreview()) {\n return dataCount;\n } else {\n const numWorkgroups = this.configService.getNumberOfWorkgroupsInPeriod(this.periodId);\n return Math.max(numWorkgroups, dataCount);\n }\n }\n\n getPercentResponded(numResponses: number, totalWorkgroups: number): number {\n return Math.floor((100 * numResponses) / totalWorkgroups);\n }\n\n getSummaryDataCount(summaryData: SummaryData, id: any): number {\n return summaryData.getDataPointCountById(id);\n }\n\n protected isSourceSelf(): boolean {\n return this.source === 'self';\n }\n}\n", + "providers": [], + "hostDirectives": [], + "standalone": false, + "inputsClass": [ + { + "name": "chartType", + "deprecated": false, + "deprecationMessage": "", + "line": 70, + "type": "string", + "decorators": [] + }, + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "line": 65, + "type": "string", + "decorators": [] + }, + { + "name": "customLabelColors", + "deprecated": false, + "deprecationMessage": "", + "line": 73, + "type": "any[]", + "decorators": [] + }, + { + "name": "doRender", + "deprecated": false, + "deprecationMessage": "", + "line": 74, + "type": "boolean", + "decorators": [] + }, + { + "name": "hasWarning", + "deprecated": false, + "deprecationMessage": "", + "line": 71, + "type": "boolean", + "decorators": [] + }, + { + "name": "highlightCorrectAnswer", + "deprecated": false, + "deprecationMessage": "", + "line": 66, + "type": "boolean", + "decorators": [] + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 64, + "type": "string", + "decorators": [] + }, + { + "name": "periodId", + "deprecated": false, + "deprecationMessage": "", + "line": 69, + "type": "number", + "decorators": [] + }, + { + "name": "source", + "deprecated": false, + "deprecationMessage": "", + "line": 68, + "type": "string", + "decorators": [] + }, + { + "name": "studentDataType", + "deprecated": false, + "deprecationMessage": "", + "line": 67, + "type": "string", + "decorators": [] + }, + { + "name": "warningMessage", + "deprecated": false, + "deprecationMessage": "", + "line": 72, + "type": "string", + "decorators": [] + } + ], + "outputsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "propertiesClass": [ + { + "name": "chartConfig", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 26 + }, + { + "name": "colors", + "defaultValue": "{\n palette: [\n '#1a237e',\n '#701e82',\n '#aa187b',\n '#d72c6c',\n '#f65158',\n '#ff7d43',\n '#ffab32',\n '#fdd835',\n '#ffee58',\n '#ade563',\n '#50d67f',\n '#00c29d',\n '#00aab3',\n '#0090bc',\n '#0074b4',\n '#01579b'\n ],\n singleHue: 'rgb(170, 24, 123)',\n correct: '#00C853',\n incorrect: '#C62828'\n }", + "deprecated": false, + "deprecationMessage": "", + "type": "object", + "indexKey": "", + "optional": false, + "description": "", + "line": 27 + }, + { + "name": "defaultMaxScore", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 50, + "modifierKind": [ + 123 + ] + }, + { + "name": "hasCorrectness", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 51 + }, + { + "name": "Highcharts", + "defaultValue": "Highcharts", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 52, + "modifierKind": [ + 124 + ] + }, + { + "name": "maxScore", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 53 + }, + { + "name": "meanScore", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 56, + "modifierKind": [ + 123 + ] + }, + { + "name": "numResponses", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 58 + }, + { + "name": "otherComponent", + "deprecated": false, + "deprecationMessage": "", + "type": "ComponentContent", + "indexKey": "", + "optional": false, + "description": "", + "line": 59 + }, + { + "name": "otherComponentType", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 60 + }, + { + "name": "percentResponded", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 61 + }, + { + "name": "studentMaxScore", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 54 + }, + { + "name": "studentMinScore", + "defaultValue": "1", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 55 + }, + { + "name": "totalWorkgroups", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 62 + } + ], + "methodsClass": [ + { + "name": "calculateCountsAndPercentage", + "args": [ + { + "name": "dataCount", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 558, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "dataCount", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "convertObjectToArray", + "args": [ + { + "name": "obj", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 219, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "obj", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createChartConfig", + "args": [ + { + "name": "chartType", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "title", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "xAxisType", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "total", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "series", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "colors", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 456, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "chartType", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "title", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "xAxisType", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "total", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "series", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "colors", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createChoicesSeriesData", + "args": [ + { + "name": "component", + "type": "MultipleChoiceContent", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "summaryData", + "type": "MultipleChoiceSummaryData", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "SeriesData", + "typeParameters": [], + "line": 286, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "component", + "type": "MultipleChoiceContent", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "summaryData", + "type": "MultipleChoiceSummaryData", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createScoresSeriesData", + "args": [ + { + "name": "summaryData", + "type": "ScoreSummaryData", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "unknown", + "typeParameters": [], + "line": 325, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "summaryData", + "type": "ScoreSummaryData", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createSeries", + "args": [ + { + "name": "seriesData", + "type": "SeriesData", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 350, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "seriesData", + "type": "SeriesData", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createTableSeriesData", + "args": [ + { + "name": "summaryData", + "type": "TableSummaryData", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "SeriesData", + "typeParameters": [], + "line": 247, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "summaryData", + "type": "TableSummaryData", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "filterLatestScoreAnnotations", + "args": [ + { + "name": "annotations", + "type": "Annotation[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 201, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "annotations", + "type": "Annotation[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getChartColors", + "args": [], + "optional": false, + "returnType": "string[]", + "typeParameters": [], + "line": 405, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getDataPointColor", + "args": [ + { + "name": "choice", + "type": "Choice", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string | null", + "typeParameters": [], + "line": 309, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "choice", + "type": "Choice", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getGraphTitle", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 375, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getGraphTitleForClass", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 395, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getGraphTitleForSelf", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 387, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "getIndexByName", + "args": [ + { + "name": "series", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "name", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 431, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "series", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "name", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getLatestScoreAnnotationForWorkgroup", + "args": [], + "optional": false, + "returnType": "Annotation", + "typeParameters": [], + "line": 169, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "getLatestScores", + "args": [], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 151, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124, + 128 + ] + }, + { + "name": "getLatestStudentScores", + "args": [], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 153, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "getLatestStudentWork", + "args": [], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 191, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "getLatestWork", + "args": [], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 189, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124, + 128 + ] + }, + { + "name": "getPercentResponded", + "args": [ + { + "name": "numResponses", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "totalWorkgroups", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 573, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "numResponses", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "totalWorkgroups", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getScoreFromAnnotation", + "args": [ + { + "name": "annotation", + "type": "Annotation", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 321, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "annotation", + "type": "Annotation", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getSummaryDataCount", + "args": [ + { + "name": "summaryData", + "type": "SummaryData", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "id", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 577, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "summaryData", + "type": "SummaryData", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "id", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getTotalTableCount", + "args": [ + { + "name": "seriesData", + "type": "SeriesData", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 260, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "seriesData", + "type": "SeriesData", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getTotalWorkgroups", + "args": [ + { + "name": "dataCount", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 564, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "dataCount", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "hasCorrectAnswer", + "args": [ + { + "name": "component", + "type": "MultipleChoiceContent", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 305, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "component", + "type": "MultipleChoiceContent", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "initializeCustomLabelColors", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 100, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "initializeOtherComponent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 93, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isAuthoringPreview", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 120, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isSourceSelf", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 581, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "isStudentDataType", + "args": [ + { + "name": "studentDataType", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 452, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "studentDataType", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isStudentDataTypeResponses", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 444, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "isStudentDataTypeScores", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 448, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "isStudentRun", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 124, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isVLEPreview", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 116, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnChanges", + "args": [ + { + "name": "changes", + "type": "SimpleChanges", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 106, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "changes", + "type": "SimpleChanges", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 85, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "processComponentStates", + "args": [ + { + "name": "componentStates", + "type": "ComponentState[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "unknown", + "typeParameters": [], + "line": 225, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "componentStates", + "type": "ComponentState[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "processScoreAnnotations", + "args": [ + { + "name": "annotations", + "type": "Annotation[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 266, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "annotations", + "type": "Annotation[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "renderClassResponses", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 144, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "renderClassScores", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 177, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "renderDisplay", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 128, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "renderGraph", + "args": [ + { + "name": "seriesData", + "type": "SeriesData", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "total", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 340, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "seriesData", + "type": "SeriesData", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "total", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "renderSelfDisplay", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 142, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124, + 128 + ] + }, + { + "name": "setCustomLabelColors", + "args": [ + { + "name": "series", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "colors", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "customLabelColors", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 422, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "series", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "colors", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "customLabelColors", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setLatestAnnotationIfNewer", + "args": [ + { + "name": "latestAnnotations", + "type": "Annotation", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "annotation", + "type": "Annotation", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 211, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "latestAnnotations", + "type": "Annotation", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "annotation", + "type": "Annotation", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setMaxScore", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 182, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "setMinMaxScore", + "args": [ + { + "name": "annotations", + "type": "Annotation[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 274, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "annotations", + "type": "Annotation[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "extends": [], + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "cRaterService", + "type": "CRaterService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dataService", + "type": "DataService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "summaryService", + "type": "SummaryService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 74, + "jsdoctags": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "cRaterService", + "type": "CRaterService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dataService", + "type": "DataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "summaryService", + "type": "SummaryService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + }, + { + "name": "TimelineItemContent", + "id": "directive-TimelineItemContent-2a6927d4b48b3b31d524344dcfb7697528b14b8e6b0d96b8a13a293065138e043f60ec903e9f410382902b7f95102f6e44519489b35ad8f258537681b0661917", + "file": "src/app/modules/timeline/timeline-item/timeline-item.component.ts", + "type": "directive", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Component, Input, Directive, ViewEncapsulation } from '@angular/core';\n\n@Directive({\n selector: 'app-timeline-item-label',\n host: { class: 'timeline-item__label' }\n})\nexport class TimelineItemLabel {}\n\n@Directive({\n selector: 'app-timeline-item-content',\n host: { class: 'timeline-item__content' }\n})\nexport class TimelineItemContent {}\n\n@Component({\n encapsulation: ViewEncapsulation.None,\n selector: 'app-timeline-item',\n styleUrl: './timeline-item.component.scss',\n template: `
\n \n
`\n})\nexport class TimelineItemComponent {\n @Input() active: boolean;\n}\n", + "selector": "app-timeline-item-content", + "providers": [], + "hostDirectives": [], + "standalone": false, + "inputsClass": [], + "outputsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "propertiesClass": [], + "methodsClass": [], + "extends": [] + }, + { + "name": "TimelineItemLabel", + "id": "directive-TimelineItemLabel-2a6927d4b48b3b31d524344dcfb7697528b14b8e6b0d96b8a13a293065138e043f60ec903e9f410382902b7f95102f6e44519489b35ad8f258537681b0661917", + "file": "src/app/modules/timeline/timeline-item/timeline-item.component.ts", + "type": "directive", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Component, Input, Directive, ViewEncapsulation } from '@angular/core';\n\n@Directive({\n selector: 'app-timeline-item-label',\n host: { class: 'timeline-item__label' }\n})\nexport class TimelineItemLabel {}\n\n@Directive({\n selector: 'app-timeline-item-content',\n host: { class: 'timeline-item__content' }\n})\nexport class TimelineItemContent {}\n\n@Component({\n encapsulation: ViewEncapsulation.None,\n selector: 'app-timeline-item',\n styleUrl: './timeline-item.component.scss',\n template: `
\n \n
`\n})\nexport class TimelineItemComponent {\n @Input() active: boolean;\n}\n", + "selector": "app-timeline-item-label", + "providers": [], + "hostDirectives": [], + "standalone": false, + "inputsClass": [], + "outputsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "propertiesClass": [], + "methodsClass": [], + "extends": [] + }, + { + "name": "TrackScrollDirective", + "id": "directive-TrackScrollDirective-014136d966db194f60580ff79837f32a56133a4210b72142a10f12f3b1656aa07e75f82093fa13b4363d4fb8b749979a45dd7107c0776ddcbd24408300d64e46", + "file": "src/app/track-scroll.directive.ts", + "type": "directive", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Directive, Output, EventEmitter, HostListener, ElementRef } from '@angular/core';\n\n@Directive({\n selector: '[track-scroll]',\n standalone: false\n})\nexport class TrackScrollDirective {\n @Output() yPositionChange: EventEmitter = new EventEmitter();\n\n constructor(private el: ElementRef) {}\n\n @HostListener('scroll', ['$event'])\n track(event: any) {\n this.yPositionChange.emit(this.el.nativeElement);\n }\n}\n", + "selector": "[track-scroll]", + "providers": [], + "hostDirectives": [], + "standalone": false, + "inputsClass": [], + "outputsClass": [ + { + "name": "yPositionChange", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 8, + "type": "EventEmitter" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [ + { + "name": "scroll", + "args": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "argsDecorator": [ + "$event" + ], + "deprecated": false, + "deprecationMessage": "", + "line": 13 + } + ], + "propertiesClass": [], + "methodsClass": [ + { + "name": "track", + "args": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 13, + "deprecated": false, + "deprecationMessage": "", + "decorators": [ + { + "name": "HostListener", + "stringifiedArguments": "'scroll', ['$event']" + } + ], + "modifierKind": [ + 171 + ], + "jsdoctags": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "extends": [], + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "el", + "type": "ElementRef", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 8, + "jsdoctags": [ + { + "name": "el", + "type": "ElementRef", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + }, + { + "name": "WorkgroupSelectComponent", + "id": "directive-WorkgroupSelectComponent-32ce4e900e481f35cc1f7067ddddf217015dd594f1b986ce1f1263d0cd91fb970361a0330394ecbefff5f610f272b88ee52c4cf50f971874afae1ba0fa020aa6", + "file": "src/app/classroom-monitor/workgroup-select/workgroup-select.component.ts", + "type": "directive", + "description": "", + "rawdescription": "\n", + "sourceCode": "import { Directive, Input } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { ConfigService } from '../../../assets/wise5/services/configService';\nimport { TeacherDataService } from '../../../assets/wise5/services/teacherDataService';\n\n@Directive()\nexport class WorkgroupSelectComponent {\n @Input() customClass: string;\n protected canViewStudentNames: boolean;\n protected periodId: number;\n protected selectedItem: any;\n protected subscriptions: Subscription = new Subscription();\n protected workgroups: any;\n\n constructor(\n protected configService: ConfigService,\n protected dataService: TeacherDataService\n ) {}\n\n ngOnInit(): void {\n this.canViewStudentNames = this.configService.getPermissions().canViewStudentNames;\n this.periodId = this.dataService.getCurrentPeriod().periodId;\n this.setWorkgroups();\n this.subscriptions.add(\n this.dataService.currentWorkgroupChanged$.subscribe(({ currentWorkgroup }) => {\n if (currentWorkgroup != null) {\n this.setWorkgroups();\n this.setWorkgroup(currentWorkgroup);\n }\n })\n );\n this.subscriptions.add(\n this.dataService.currentPeriodChanged$.subscribe(({ currentPeriod }) => {\n this.periodId = currentPeriod.periodId;\n this.setWorkgroups();\n this.currentPeriodChanged();\n })\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n protected setWorkgroups() {}\n\n protected setWorkgroup(workgroup: any): void {}\n\n protected currentPeriodChanged() {}\n\n protected sortByField(arr: any[], field: string): any[] {\n return arr.sort((workgroup1, workgroup2) => {\n return workgroup1[field] - workgroup2[field];\n });\n }\n\n protected sortByDisplayNames(arr: any[]): any[] {\n return arr.sort((workgroup1, workgroup2) => {\n return workgroup1.displayNames.localeCompare(workgroup2.displayNames);\n });\n }\n\n protected filterWorkgroupsBySelectedPeriod(): void {\n this.workgroups = this.configService.getClassmateUserInfos().filter((workgroup) => {\n return (\n (this.periodId === -1 || workgroup.periodId === this.periodId) &&\n workgroup.workgroupId != null\n );\n });\n }\n\n protected setCurrentWorkgroup(workgroup): void {\n this.dataService.setCurrentWorkgroup(workgroup);\n }\n}\n", + "providers": [], + "hostDirectives": [], + "standalone": false, + "inputsClass": [ + { + "name": "customClass", + "deprecated": false, + "deprecationMessage": "", + "line": 8, + "type": "string", + "decorators": [] + } + ], + "outputsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "propertiesClass": [ + { + "name": "canViewStudentNames", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 9, + "modifierKind": [ + 124 + ] + }, + { + "name": "periodId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "modifierKind": [ + 124 + ] + }, + { + "name": "selectedItem", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "modifierKind": [ + 124 + ] + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "modifierKind": [ + 124 + ] + }, + { + "name": "workgroups", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "currentPeriodChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 49, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "filterWorkgroupsBySelectedPeriod", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 63, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 41, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 20, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "setCurrentWorkgroup", + "args": [ + { + "name": "workgroup", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 72, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "workgroup", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setWorkgroup", + "args": [ + { + "name": "workgroup", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 47, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "workgroup", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setWorkgroups", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 45, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "sortByDisplayNames", + "args": [ + { + "name": "arr", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 57, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "arr", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "sortByField", + "args": [ + { + "name": "arr", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "field", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 51, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "arr", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "field", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "extends": [], + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 13, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + } + ], + "components": [ + { + "name": "AboutComponent", + "id": "component-AboutComponent-1d7a30e61a27ac692a578a21ab8649ee275184d4c582254f3e7c1b2da755f495d983909c508c4f77ba15be16b550d704eeeca498be784fb8f8f3393a040699b9", + "file": "src/app/about/about.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "app-about", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./about.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [], + "methodsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n imports: [MatButtonModule, MatIconModule],\n selector: 'app-about',\n styleUrl: './about.component.scss',\n templateUrl: './about.component.html'\n})\nexport class AboutComponent {}\n", + "styleUrl": "./about.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [], + "templateData": "
\n
\n
\n

\n info\n About Us\n

\n
\n
\n
\n

\n WISE is the product of more than 25 years of research on teaching and learning with\n educational technologies\n

\n
\n
\n
\n \n \n \n \n \n
\n
\n
\n \n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n
\n

Based on Research, Refined Through Practice

\n

\n Through our collaborations with teachers, administrators, technology designers, and\n education researchers, we have refined a set of principles which guide the design of all\n WISE curriculum materials and tools.\n

\n

\n This means that when implementing WISE units, you can be assured that what you're using\n is grown from a solid foundation, advised by real teachers' experiences, and tested in\n classrooms with real students.\n

\n Our Research + Team\n

\n
\n \n
\n
\n

Knowledge Integration

\n

\n As students grapple with multiple conflicting and confusing ideas, research has shown that\n instruction is most effective when student views are used as a starting point for\n scientific investigations.\n

\n

\n The Knowledge Integration (KI) perspective emphasizes building on and\n strengthening science understanding by incorporating new ideas and sorting out alternative\n perspectives using evidence. This framework forms the basis of WISE curriculum design,\n assessments, and evaluation.\n

\n
\n
\n
\n
\n

The KI Processes:

\n
    \n
  • \n \n Elicit Ideas\n
  • \n
  • \n \n Discover Ideas\n
  • \n
  • \n \n Distinguish Ideas\n
  • \n
  • \n \n Connect Ideas and Reflect\n
  • \n
\n
\n
\n
\n
\n

~ WISE Goals ~

\n
\n
\n
\n

Make Science Meaningful

\n

\n WISE units introduce students to complex science concepts through personally and\n socially relevant topics. Each unit uses a classroom-tested pattern of instruction that\n values the ideas students bring with them, helps them connect new information to their\n personal experiences, and integrates their ideas into a coherent understanding of\n science.\n

\n
\n
\n

Support Diverse Learners

\n

\n Individual students differ in their experiences, interests, and abilities. WISE provides\n a variety of tools, activity patterns, and instructional scaffolds that afford multiple\n ways for expressing and assessing understanding. That way, no students' abilities go\n unrecognized, and all have the chance to succeed.\n

\n
\n
\n
\n
\n

Accessible to All

\n

\n WISE is free and open source! WISE subsists on\n generous support from the National Science Foundation, which means it's available to\n anyone with an internet connection. Driven by an active community of developers, WISE is\n continually being expanded and improved. Bring science inquiry into the classroom, the\n museum, the after-school, or the home-school environment!\n

\n
\n
\n

Increase Participation in Science

\n

\n WISE gives more teachers and students the opportunity to do inquiry-based science. Our\n units make difficult concepts accessible both for teachers to teach and students to\n learn. WISE curricula help students see themselves as capable of doing science and\n realize that, no matter their backgrounds, science can be a potential career.\n

\n
\n
\n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n
\n
\n" + }, + { + "name": "AddChoiceButtonComponent", + "id": "component-AddChoiceButtonComponent-22d978d1384ce1126c4b6f838f922745bc9b7827231cd442c02e3b044714a26b7d9fd9eab199fd1f05040c108565fe1c19018345ac4be93687d6ceba81fff5a0", + "file": "src/assets/wise5/components/match/match-student/add-choice-button/add-choice-button.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "add-choice-button", + "styleUrls": [], + "styles": [], + "template": "\n add\n\n", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "isDisabled", + "deprecated": false, + "deprecationMessage": "", + "line": 24, + "type": "boolean", + "decorators": [] + } + ], + "outputsClass": [ + { + "name": "onClick", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 25, + "type": "EventEmitter" + } + ], + "propertiesClass": [], + "methodsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@Component({\n imports: [MatButtonModule, MatIconModule, MatTooltipModule],\n selector: 'add-choice-button',\n template: `\n \n add\n \n `\n})\nexport class AddChoiceButtonComponent {\n @Input() isDisabled: boolean;\n @Output() onClick = new EventEmitter();\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [] + }, + { + "name": "AddComponentButtonComponent", + "id": "component-AddComponentButtonComponent-615b7e2244211bb5ddfbc72344ac6c6664d6662d6c74bcb489393b058c5b47efb9f512b890364579713f17fab4f29b66627d135a14c2450a1975f9776fd28132", + "file": "src/assets/wise5/authoringTool/node/add-component-button/add-component-button.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "add-component-button", + "styleUrls": [], + "styles": [ + "\n .rotate-180 {\n transform: rotate(180deg);\n }\n .flip-vertical {\n transform: scaleY(-1);\n }\n " + ], + "templateUrl": [ + "./add-component-button.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "insertAfterComponentId", + "defaultValue": "null", + "deprecated": false, + "deprecationMessage": "", + "line": 31, + "type": "string", + "decorators": [] + }, + { + "name": "node", + "deprecated": false, + "deprecationMessage": "", + "line": 33, + "type": "Node", + "decorators": [] + } + ], + "outputsClass": [ + { + "name": "newComponentsEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 32, + "type": "EventEmitter" + } + ], + "propertiesClass": [ + { + "name": "firstComponent", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 30, + "modifierKind": [ + 124 + ] + }, + { + "name": "tooltipText", + "defaultValue": "$localize`Add component`", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 34, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "addComponent", + "args": [ + { + "name": "afterComponent", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "this.insertAfterComponentId" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 55, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "afterComponent", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "this.insertAfterComponentId", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 44, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "updateUI", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 48, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatMenuModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { CreateComponentService } from '../../../services/createComponentService';\nimport { TeacherProjectService } from '../../../services/teacherProjectService';\nimport { MatDialog } from '@angular/material/dialog';\nimport { ChooseNewComponent } from '../../../../../app/authoring-tool/add-component/choose-new-component/choose-new-component.component';\nimport { filter } from 'rxjs';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Node } from '../../../common/Node';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatMenuModule } from '@angular/material/menu';\n\n@Component({\n imports: [MatButtonModule, MatIconModule, MatMenuModule, MatTooltipModule],\n selector: 'add-component-button',\n styles: [\n `\n .rotate-180 {\n transform: rotate(180deg);\n }\n .flip-vertical {\n transform: scaleY(-1);\n }\n `\n ],\n templateUrl: './add-component-button.component.html'\n})\nexport class AddComponentButtonComponent {\n protected firstComponent = false;\n @Input() insertAfterComponentId: string = null;\n @Output() newComponentsEvent: EventEmitter = new EventEmitter();\n @Input() node: Node;\n protected tooltipText = $localize`Add component`;\n\n constructor(\n private createComponentService: CreateComponentService,\n private dialog: MatDialog,\n private projectService: TeacherProjectService,\n private route: ActivatedRoute,\n private router: Router\n ) {}\n\n ngOnInit(): void {\n this.updateUI();\n }\n\n private updateUI(): void {\n this.firstComponent = this.node.getComponentPosition(this.insertAfterComponentId) === 0;\n if (this.node.components.length > 0 && !this.firstComponent) {\n this.tooltipText = $localize`Add component after`;\n }\n }\n\n protected addComponent(afterComponent = this.insertAfterComponentId): void {\n this.dialog\n .open(ChooseNewComponent, {\n data: afterComponent,\n width: '80%'\n })\n .afterClosed()\n .pipe(filter((componentType) => componentType != null))\n .subscribe(({ action, componentType }) => {\n if (action === 'import') {\n this.router.navigate(['import-component/choose-unit'], {\n relativeTo: this.route,\n state: {\n importType: 'component',\n insertAfterComponentId: afterComponent\n }\n });\n } else {\n const component = this.createComponentService.create(\n this.node.id,\n componentType,\n afterComponent\n );\n this.projectService.saveProject();\n this.newComponentsEvent.emit([component]);\n this.updateUI();\n }\n });\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "\n .rotate-180 {\n transform: rotate(180deg);\n }\n .flip-vertical {\n transform: scaleY(-1);\n }\n \n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "createComponentService", + "type": "CreateComponentService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 34, + "jsdoctags": [ + { + "name": "createComponentService", + "type": "CreateComponentService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "\n add_circle\n\n" + }, + { + "name": "AddComponentComponent", + "id": "component-AddComponentComponent-164e36f9f657b57e12bd0fde848551c8e9c036ae3f4821bc78b9da5fc0f436fd1beb769e136feab6771c96f41219deac712718d72740596b881aee705714cf38", + "file": "src/assets/wise5/authoringTool/node/add-component/add-component.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "add-component", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./add-component.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "afterComponentId", + "deprecated": false, + "deprecationMessage": "", + "line": 14, + "type": "string", + "decorators": [] + }, + { + "name": "node", + "deprecated": false, + "deprecationMessage": "", + "line": 17, + "type": "Node", + "decorators": [] + } + ], + "outputsClass": [ + { + "name": "newComponentsEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 16, + "type": "EventEmitter" + } + ], + "propertiesClass": [ + { + "name": "focus", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "AddComponentButtonComponent", + "type": "component" + }, + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "MatDividerModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { AddComponentButtonComponent } from '../add-component-button/add-component-button.component';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { Node } from '../../../common/Node';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'add-component',\n imports: [AddComponentButtonComponent, CommonModule, MatDividerModule],\n templateUrl: './add-component.component.html',\n styleUrl: './add-component.component.scss'\n})\nexport class AddComponentComponent {\n @Input() afterComponentId: string;\n protected focus: boolean;\n @Output() newComponentsEvent: EventEmitter = new EventEmitter();\n @Input() node: Node;\n}\n", + "styleUrl": "./add-component.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [], + "templateData": "
\n \n \n
\n" + }, + { + "name": "AddLessonButtonComponent", + "id": "component-AddLessonButtonComponent-794914b34b9ae86b5585fecd7bc4f5fdb3668714cb99c38e42ce16bbba67f5a9227720dccc30fe7cf151f0a119942aad2f4c493b4d886ae324e3619115a678e2", + "file": "src/assets/wise5/authoringTool/add-lesson-button/add-lesson-button.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "add-lesson-button", + "styleUrls": [], + "styles": [ + "\n .rotate-180 {\n transform: rotate(180deg);\n }\n .flip-vertical {\n transform: scaleY(-1);\n }\n " + ], + "templateUrl": [ + "./add-lesson-button.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "active", + "deprecated": false, + "deprecationMessage": "", + "line": 24, + "type": "boolean", + "decorators": [] + }, + { + "name": "first", + "deprecated": false, + "deprecationMessage": "", + "line": 25, + "type": "boolean", + "decorators": [] + }, + { + "name": "lessonId", + "deprecated": false, + "deprecationMessage": "", + "line": 26, + "type": "string", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "menuTrigger", + "deprecated": false, + "deprecationMessage": "", + "type": "MatMenuTrigger", + "indexKey": "", + "optional": false, + "description": "", + "line": 27, + "decorators": [ + { + "name": "ViewChild", + "stringifiedArguments": "MatMenuTrigger" + } + ], + "modifierKind": [ + 171 + ] + } + ], + "methodsClass": [ + { + "name": "addFirstLesson", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 34, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "goToAddLessonView", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 38, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatMenuModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input, ViewChild } from '@angular/core';\nimport { MatMenuModule, MatMenuTrigger } from '@angular/material/menu';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { ActivatedRoute, Router } from '@angular/router';\n\n@Component({\n imports: [MatButtonModule, MatIconModule, MatMenuModule, MatTooltipModule],\n selector: 'add-lesson-button',\n styles: [\n `\n .rotate-180 {\n transform: rotate(180deg);\n }\n .flip-vertical {\n transform: scaleY(-1);\n }\n `\n ],\n templateUrl: './add-lesson-button.component.html'\n})\nexport class AddLessonButtonComponent {\n @Input() active: boolean;\n @Input() first: boolean;\n @Input() lessonId: string;\n @ViewChild(MatMenuTrigger) menuTrigger: MatMenuTrigger;\n\n constructor(\n private route: ActivatedRoute,\n private router: Router\n ) {}\n\n protected addFirstLesson(): void {\n this.goToAddLessonView(this.active ? 'group0' : 'inactiveGroups');\n }\n\n private goToAddLessonView(nodeId: string): void {\n this.router.navigate(['add-lesson'], {\n relativeTo: this.route,\n state: { target: nodeId }\n });\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "\n .rotate-180 {\n transform: rotate(180deg);\n }\n .flip-vertical {\n transform: scaleY(-1);\n }\n \n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 27, + "jsdoctags": [ + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "@if (lessonId == null) {\n \n add_circle\n \n}\n@if (lessonId != null) {\n @if (first) {\n \n add_circle\n \n \n \n \n \n }\n @if (!first) {\n \n add_circle\n \n }\n}\n" + }, + { + "name": "AddLessonChooseTemplateComponent", + "id": "component-AddLessonChooseTemplateComponent-1dd49db8ac7e864df8bdd038e50489b4a890fca09adb553311d3da7b1983b9bff73c4c66f69739b9989f8fc5f20540284251de120c5f36b74f25aa8c5398f820", + "file": "src/assets/wise5/authoringTool/addLesson/add-lesson-choose-template/add-lesson-choose-template.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [ + "./add-lesson-choose-template.component.scss", + "../../add-content.scss" + ], + "styles": [], + "templateUrl": [ + "./add-lesson-choose-template.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "templates", + "defaultValue": "[\n {\n label: $localize`Create Your Own`,\n icon: 'mode_edit',\n route: 'configure'\n },\n {\n label: $localize`Jigsaw`,\n icon: 'extension',\n route: 'structure/jigsaw'\n },\n {\n label: $localize`Self-Directed Investigation`,\n icon: 'contact_support',\n route: 'structure/self-directed-investigation'\n },\n {\n label: $localize`Peer Review & Revision`,\n icon: 'question_answer',\n route: 'structure/peer-review-and-revision'\n },\n {\n label: $localize`KI Lesson with OER`,\n icon: 'autorenew',\n route: 'structure/ki-cycle-using-oer'\n }\n ]", + "deprecated": false, + "deprecationMessage": "", + "type": "[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "chooseTemplate", + "args": [ + { + "name": "template", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 47, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "template", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatCardModule", + "type": "module" + }, + { + "name": "MatDividerModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "RouterModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatIconModule } from '@angular/material/icon';\nimport { ActivatedRoute, Router, RouterModule } from '@angular/router';\n\n@Component({\n imports: [MatButtonModule, MatCardModule, MatDividerModule, MatIconModule, RouterModule],\n styleUrls: ['./add-lesson-choose-template.component.scss', '../../add-content.scss'],\n templateUrl: './add-lesson-choose-template.component.html'\n})\nexport class AddLessonChooseTemplateComponent {\n protected templates = [\n {\n label: $localize`Create Your Own`,\n icon: 'mode_edit',\n route: 'configure'\n },\n {\n label: $localize`Jigsaw`,\n icon: 'extension',\n route: 'structure/jigsaw'\n },\n {\n label: $localize`Self-Directed Investigation`,\n icon: 'contact_support',\n route: 'structure/self-directed-investigation'\n },\n {\n label: $localize`Peer Review & Revision`,\n icon: 'question_answer',\n route: 'structure/peer-review-and-revision'\n },\n {\n label: $localize`KI Lesson with OER`,\n icon: 'autorenew',\n route: 'structure/ki-cycle-using-oer'\n }\n ];\n\n constructor(\n private route: ActivatedRoute,\n private router: Router\n ) {}\n\n protected chooseTemplate(template: any): void {\n this.router.navigate([...template.route.split('/')], {\n relativeTo: this.route,\n state: {\n target: history.state.target\n }\n });\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": [ + { + "data": "mat-card {\n width: 280px;\n margin: 8px;\n}\n", + "styleUrl": "./add-lesson-choose-template.component.scss" + }, + { + "data": ".nav-controls {\n background-color: white;\n position: sticky;\n bottom: 0;\n padding-bottom: 8px;\n z-index: 1;\n\n .mat-divider {\n margin: 16px 0 8px 0;\n }\n}\n", + "styleUrl": "../../add-content.scss" + } + ], + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 40, + "jsdoctags": [ + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "
Start from scratch or choose a Lesson Structure*:
\n
\n @for (template of templates; track template.route) {\n \n \n
\n {{ template.label }}\n
\n
\n \n {{ template.icon }}\n \n \n \n Select\n \n \n
\n }\n
\n

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

\n
\n \n
\n \n
\n
\n" + }, + { + "name": "AddLessonConfigureComponent", + "id": "component-AddLessonConfigureComponent-fbcf105a89d3755e956b4a91ccaf71c72adf5bfe27d75fe7c87cb6a84b2fdddd06af4f67702736456f7a0a4255f26486e425525cc5d55174fd8b714751a3fcb6", + "file": "src/assets/wise5/authoringTool/addLesson/add-lesson-configure/add-lesson-configure.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [ + "./add-lesson-configure.component.scss", + "../../add-content.scss" + ], + "styles": [], + "templateUrl": [ + "./add-lesson-configure.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "addLessonFormGroup", + "defaultValue": "this.fb.group({\n title: new FormControl('', [Validators.required])\n })", + "deprecated": false, + "deprecationMessage": "", + "type": "FormGroup", + "indexKey": "", + "optional": false, + "description": "", + "line": 32, + "modifierKind": [ + 124 + ] + }, + { + "name": "submitting", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 35, + "modifierKind": [ + 124 + ] + }, + { + "name": "target", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 36, + "modifierKind": [ + 124 + ] + }, + { + "name": "titleField", + "deprecated": false, + "deprecationMessage": "", + "type": "ElementRef", + "indexKey": "", + "optional": false, + "description": "", + "line": 37, + "decorators": [ + { + "name": "ViewChild", + "stringifiedArguments": "'titleField'" + } + ], + "modifierKind": [ + 171 + ] + } + ], + "methodsClass": [ + { + "name": "ngAfterViewInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 50, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 46, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "submit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 54, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "updateProject", + "args": [ + { + "name": "newNodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 67, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "newNodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatDividerModule", + "type": "module" + }, + { + "name": "MatInputModule", + "type": "module" + }, + { + "name": "MatProgressBarModule", + "type": "module" + }, + { + "name": "ReactiveFormsModule", + "type": "module" + }, + { + "name": "RouterModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, ElementRef, ViewChild } from '@angular/core';\nimport {\n FormBuilder,\n FormControl,\n FormGroup,\n ReactiveFormsModule,\n Validators\n} from '@angular/forms';\nimport { ActivatedRoute, Router, RouterModule } from '@angular/router';\nimport { TeacherProjectService } from '../../../services/teacherProjectService';\nimport { temporarilyHighlightElement } from '../../../common/dom/dom';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\n\n@Component({\n imports: [\n MatButtonModule,\n MatFormFieldModule,\n MatDividerModule,\n MatInputModule,\n MatProgressBarModule,\n ReactiveFormsModule,\n RouterModule\n ],\n styleUrls: ['./add-lesson-configure.component.scss', '../../add-content.scss'],\n templateUrl: './add-lesson-configure.component.html'\n})\nexport class AddLessonConfigureComponent {\n protected addLessonFormGroup: FormGroup = this.fb.group({\n title: new FormControl('', [Validators.required])\n });\n protected submitting: boolean;\n protected target: string;\n @ViewChild('titleField') titleField: ElementRef;\n\n constructor(\n private fb: FormBuilder,\n private route: ActivatedRoute,\n private projectService: TeacherProjectService,\n private router: Router\n ) {}\n\n ngOnInit(): void {\n this.target = history.state.target;\n }\n\n ngAfterViewInit(): void {\n this.titleField.nativeElement.focus();\n }\n\n protected submit(): void {\n this.submitting = true;\n const newLesson = this.projectService.createGroup(\n this.addLessonFormGroup.controls['title'].value\n );\n if (this.target === 'group0' || this.target === 'inactiveGroups') {\n this.projectService.createNodeInside(newLesson, this.target);\n } else {\n this.projectService.createNodeAfter(newLesson, this.target);\n }\n this.updateProject(newLesson.id);\n }\n\n private updateProject(newNodeId: string): void {\n this.projectService.checkPotentialStartNodeIdChangeThenSaveProject().then(() => {\n this.projectService.refreshProject();\n this.router.navigate(['../..'], { relativeTo: this.route });\n // This timeout is used to allow the lesson to be added to the DOM before we highlight it\n setTimeout(() => {\n temporarilyHighlightElement(newNodeId);\n });\n });\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": [ + { + "data": ".title-field {\n width: 360px;\n max-width: 100%;\n}\n", + "styleUrl": "./add-lesson-configure.component.scss" + }, + { + "data": ".nav-controls {\n background-color: white;\n position: sticky;\n bottom: 0;\n padding-bottom: 8px;\n z-index: 1;\n\n .mat-divider {\n margin: 16px 0 8px 0;\n }\n}\n", + "styleUrl": "../../add-content.scss" + } + ], + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "fb", + "type": "FormBuilder", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 37, + "jsdoctags": [ + { + "name": "fb", + "type": "FormBuilder", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "
Enter a title for the new lesson
\n\n \n Lesson Title\n \n @if (addLessonFormGroup.controls['title'].hasError('required')) {\n Lesson Title is required \n }\n \n
\n \n
\n \n \n \n \n @if (submitting) {\n \n }\n Submit\n \n
\n
\n\n" + }, + { + "name": "AddMatchChoiceDialogComponent", + "id": "component-AddMatchChoiceDialogComponent-a68e78ca798c8311c247109e8296cbf408af846f3213f1393823ab72ed508b40f48fe9c9ca9354c534e23dd2f500485693b5e2d97f9f663d5e72cfdb04252405", + "file": "src/assets/wise5/components/match/match-student/add-match-choice-dialog/add-match-choice-dialog.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "add-match-choice-dialog.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "addChoiceFormGroup", + "defaultValue": "this.fb.group({\n choiceText: new FormControl('', [Validators.required])\n })", + "deprecated": false, + "deprecationMessage": "", + "type": "FormGroup", + "indexKey": "", + "optional": false, + "description": "", + "line": 26, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "closeDialog", + "args": [ + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "optional": true + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 42, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "optional": true, + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "save", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 35, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatDialogModule", + "type": "module" + }, + { + "name": "MatError" + }, + { + "name": "MatFormField" + }, + { + "name": "MatInputModule", + "type": "module" + }, + { + "name": "ReactiveFormsModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport {\n FormBuilder,\n FormControl,\n FormGroup,\n Validators,\n ReactiveFormsModule\n} from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { MatError, MatFormField } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\n\n@Component({\n imports: [\n MatButtonModule,\n MatDialogModule,\n MatError,\n MatFormField,\n MatInputModule,\n ReactiveFormsModule\n ],\n templateUrl: 'add-match-choice-dialog.html'\n})\nexport class AddMatchChoiceDialogComponent {\n protected addChoiceFormGroup: FormGroup = this.fb.group({\n choiceText: new FormControl('', [Validators.required])\n });\n\n constructor(\n private fb: FormBuilder,\n private dialogRef: MatDialogRef\n ) {}\n\n protected save(): void {\n const choiceText: string = this.addChoiceFormGroup.get('choiceText').value;\n if (choiceText) {\n this.closeDialog(choiceText);\n }\n }\n\n protected closeDialog(text?: string): void {\n this.dialogRef.close(text);\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "fb", + "type": "FormBuilder", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialogRef", + "type": "MatDialogRef", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 28, + "jsdoctags": [ + { + "name": "fb", + "type": "FormBuilder", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialogRef", + "type": "MatDialogRef", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "
\n

Enter Item Text

\n \n \n \n @if (addChoiceFormGroup.controls['choiceText'].hasError('required')) {\n Item Text required\n }\n \n \n \n \n \n OK\n \n \n
\n" + }, + { + "name": "AddProjectComponent", + "id": "component-AddProjectComponent-2b5eaee81e3008fe130f8458698f12a3ee17d890aa27350bbb92663d6c90804892b0608be3aaee34426a94d47f8977d7ea702aef06025b6260d1563af3ec7e77", + "file": "src/assets/wise5/authoringTool/add-project/add-project.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./add-project.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "addProjectFormGroup", + "defaultValue": "this.fb.group({\n title: new FormControl('', [Validators.required])\n })", + "deprecated": false, + "deprecationMessage": "", + "type": "FormGroup", + "indexKey": "", + "optional": false, + "description": "", + "line": 36, + "modifierKind": [ + 124 + ] + }, + { + "name": "titleField", + "deprecated": false, + "deprecationMessage": "", + "type": "ElementRef", + "indexKey": "", + "optional": false, + "description": "", + "line": 39, + "decorators": [ + { + "name": "ViewChild", + "stringifiedArguments": "'titleField'" + } + ], + "modifierKind": [ + 171, + 124 + ] + } + ], + "methodsClass": [ + { + "name": "cancel", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 52, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "create", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 56, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "handleRegisterError", + "args": [], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 75, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "ngAfterViewInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 48, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatDividerModule", + "type": "module" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatInputModule", + "type": "module" + }, + { + "name": "ReactiveFormsModule", + "type": "module" + }, + { + "name": "RouterModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, ElementRef, ViewChild } from '@angular/core';\nimport {\n FormBuilder,\n FormControl,\n FormGroup,\n FormsModule,\n ReactiveFormsModule,\n Validators\n} from '@angular/forms';\nimport { RegisterProjectService } from '../../services/registerProjectService';\nimport { MatDialog } from '@angular/material/dialog';\nimport { DialogWithSpinnerComponent } from '../../directives/dialog-with-spinner/dialog-with-spinner.component';\nimport { Router, RouterModule } from '@angular/router';\nimport { copy } from '../../common/object/object';\nimport { newProjectTemplate } from '../new-project-template';\nimport { catchError, Observable, throwError } from 'rxjs';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n imports: [\n FormsModule,\n MatButtonModule,\n MatDividerModule,\n MatFormFieldModule,\n MatInputModule,\n ReactiveFormsModule,\n RouterModule\n ],\n styleUrl: './add-project.component.scss',\n templateUrl: './add-project.component.html'\n})\nexport class AddProjectComponent {\n protected addProjectFormGroup: FormGroup = this.fb.group({\n title: new FormControl('', [Validators.required])\n });\n @ViewChild('titleField') protected titleField: ElementRef;\n\n constructor(\n private dialog: MatDialog,\n private fb: FormBuilder,\n private registerProjectService: RegisterProjectService,\n private router: Router\n ) {}\n\n ngAfterViewInit(): void {\n this.titleField.nativeElement.focus();\n }\n\n protected cancel(): void {\n this.router.navigate(['/teacher/edit/home']);\n }\n\n protected create(): void {\n this.dialog.open(DialogWithSpinnerComponent, {\n data: {\n title: $localize`Creating Unit...`\n },\n disableClose: true\n });\n const project = copy(newProjectTemplate);\n project.metadata.title = this.addProjectFormGroup.controls['title'].value;\n const projectJSONString = JSON.stringify(project, null, 4);\n this.registerProjectService\n .register(project.metadata.title, projectJSONString)\n .pipe(catchError(this.handleRegisterError))\n .subscribe((projectId) => {\n this.dialog.closeAll();\n this.router.navigate([`/teacher/edit/unit/${projectId}`]);\n });\n }\n\n private handleRegisterError(): Observable {\n this.dialog.closeAll;\n const errorMsg = $localize`There was an error creating this unit. Please contact WISE staff.`;\n alert(errorMsg);\n return throwError(() => new Error(errorMsg));\n }\n}\n", + "styleUrl": "./add-project.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "fb", + "type": "FormBuilder", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "registerProjectService", + "type": "RegisterProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 39, + "jsdoctags": [ + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "fb", + "type": "FormBuilder", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "registerProjectService", + "type": "RegisterProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "
\n
\n
\n
Enter a title for the new unit
\n \n \n Unit Title\n \n @if (addProjectFormGroup.controls['title'].hasError('required')) {\n Unit Title is required \n }\n \n \n
\n \n Cancel\n \n \n Create\n \n
\n \n
\n
\n
\n" + }, + { + "name": "AddProjectDialogComponent", + "id": "component-AddProjectDialogComponent-50d7d4011c7302f004478f59c12b4201a9591305cd62d505ce03220cd8becccc7c90ee3fba93df49280ed5348b07fc97650fa2770ff5de9f4df71fe0d056b64d", + "file": "src/app/student/add-project-dialog/add-project-dialog.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./add-project-dialog.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "accessCode", + "defaultValue": "null", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 16 + }, + { + "name": "addProjectForm", + "defaultValue": "new FormGroup({\n runCode: this.runCodeFormControl,\n period: new FormControl({ value: '', disabled: true }, Validators.required)\n })", + "deprecated": false, + "deprecationMessage": "", + "type": "FormGroup", + "indexKey": "", + "optional": false, + "description": "", + "line": 18 + }, + { + "name": "dialog", + "deprecated": false, + "deprecationMessage": "", + "type": "MatDialog", + "indexKey": "", + "optional": false, + "description": "", + "line": 25, + "modifierKind": [ + 125 + ] + }, + { + "name": "isAdding", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 22 + }, + { + "name": "registerRunPeriods", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 14 + }, + { + "name": "registerRunRunCode", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 13 + }, + { + "name": "runCodeFormControl", + "defaultValue": "new FormControl('', [runCodeValidator(this.validRunCodeSyntaxRegEx)])", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 17 + }, + { + "name": "selectedPeriod", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 15 + }, + { + "name": "validRunCodeSyntaxRegEx", + "defaultValue": "/^[a-zA-Z]*\\d{3,4}$/", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 12 + } + ], + "methodsClass": [ + { + "name": "checkRunCode", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 68, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "clearPeriods", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 62, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "handleRunCodeResponse", + "args": [ + { + "name": "runInfo", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 80, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "runInfo", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isValidRunCodeSyntax", + "args": [ + { + "name": "runCode", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 99, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "runCode", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 30, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "setInvalidRunCode", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 95, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "submit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 40, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, OnInit } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { StudentService } from '../student.service';\nimport { AbstractControl, FormControl, FormGroup, ValidatorFn, Validators } from '@angular/forms';\nimport { ActivatedRoute } from '@angular/router';\n\n@Component({\n standalone: false,\n templateUrl: './add-project-dialog.component.html'\n})\nexport class AddProjectDialogComponent implements OnInit {\n validRunCodeSyntaxRegEx: any = /^[a-zA-Z]*\\d{3,4}$/;\n registerRunRunCode: string = '';\n registerRunPeriods: string[] = [];\n selectedPeriod: string = '';\n accessCode: string = null;\n runCodeFormControl = new FormControl('', [runCodeValidator(this.validRunCodeSyntaxRegEx)]);\n addProjectForm: FormGroup = new FormGroup({\n runCode: this.runCodeFormControl,\n period: new FormControl({ value: '', disabled: true }, Validators.required)\n });\n isAdding = false;\n\n constructor(\n public dialog: MatDialog,\n private studentService: StudentService,\n private route: ActivatedRoute\n ) {}\n\n ngOnInit(): void {\n this.route.queryParams.subscribe((params) => {\n if (params['accessCode'] != null) {\n this.accessCode = params['accessCode'];\n this.addProjectForm.controls['runCode'].setValue(params['accessCode']);\n this.checkRunCode();\n }\n });\n }\n\n submit(): void {\n this.isAdding = true;\n this.studentService\n .addRun(this.registerRunRunCode, this.selectedPeriod)\n .subscribe((studentRun) => {\n if (studentRun.status === 'error') {\n if (studentRun.messageCode === 'alreadyAddedRun') {\n this.addProjectForm.controls['runCode'].setErrors({ alreadyAddedRun: true });\n } else if (studentRun.messageCode === 'runHasEnded') {\n this.addProjectForm.controls['runCode'].setErrors({ runHasEnded: true });\n } else if (studentRun.messageCode === 'runCodeNotFound') {\n this.addProjectForm.controls['runCode'].setErrors({ invalidRunCode: true });\n }\n this.isAdding = false;\n } else {\n this.studentService.addNewProject(studentRun);\n this.dialog.closeAll();\n this.isAdding = false;\n }\n });\n }\n\n clearPeriods(): void {\n this.selectedPeriod = '';\n this.registerRunPeriods = [];\n this.addProjectForm.controls['period'].disable();\n }\n\n checkRunCode(): void {\n const runCode = this.addProjectForm.controls['runCode'].value;\n this.registerRunRunCode = runCode;\n if (this.isValidRunCodeSyntax(runCode)) {\n this.studentService.getRunInfo(runCode).subscribe((runInfo) => {\n this.handleRunCodeResponse(runInfo);\n });\n } else {\n this.clearPeriods();\n }\n }\n\n handleRunCodeResponse(runInfo): void {\n if (runInfo.error) {\n this.clearPeriods();\n this.setInvalidRunCode();\n } else {\n if (runInfo.wiseVersion === 4) {\n this.setInvalidRunCode();\n } else {\n this.addProjectForm.controls['runCode'].setErrors(null);\n this.registerRunPeriods = runInfo.periods;\n this.addProjectForm.controls['period'].enable();\n }\n }\n }\n\n setInvalidRunCode(): void {\n this.addProjectForm.controls['runCode'].setErrors({ invalidRunCode: true });\n }\n\n isValidRunCodeSyntax(runCode: string): any {\n return this.validRunCodeSyntaxRegEx.test(runCode);\n }\n}\n\nexport function runCodeValidator(validRunCodeSyntaxRegEx: any): ValidatorFn {\n return (control: AbstractControl): { [key: string]: any } | null => {\n const valid = validRunCodeSyntaxRegEx.test(control.value);\n return valid ? null : { invalidRunCodeSyntax: true };\n };\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentService", + "type": "StudentService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 22, + "jsdoctags": [ + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentService", + "type": "StudentService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "

Add Unit

\n
\n \n

\n \n Access Code\n \n @if (\n runCodeFormControl.hasError('invalidRunCodeSyntax') ||\n runCodeFormControl.hasError('invalidRunCode')\n ) {\n Invalid Access Code\n }\n @if (runCodeFormControl.hasError('alreadyAddedRun')) {\n You have already added this unit.\n }\n @if (runCodeFormControl.hasError('runHasEnded')) {\n This run has ended. Please talk to your teacher.\n }\n \n

\n

\n \n Choose Period\n \n @for (period of registerRunPeriods; track period) {\n {{ period }}\n }\n \n \n

\n
\n \n \n \n @if (isAdding) {\n \n }\n Add\n \n \n
\n" + }, + { + "name": "AddStepButtonComponent", + "id": "component-AddStepButtonComponent-012b1b51d148dd7102e61f30f7dd731457ab1e89fa5b1dcb69bb5c2b246bdb402d8eeae731722276e7db51b7e96a68f6248e1548f5456702a98da78787c61b58", + "file": "src/assets/wise5/authoringTool/add-step-button/add-step-button.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "add-step-button", + "styleUrls": [], + "styles": [ + "\n .rotate-180 {\n transform: rotate(180deg);\n }\n .flip-vertical {\n transform: scaleY(-1);\n }\n " + ], + "templateUrl": [ + "./add-step-button.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 29, + "type": "string", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "canAddAfter", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 26, + "modifierKind": [ + 124 + ] + }, + { + "name": "canAddBefore", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 27, + "modifierKind": [ + 124 + ] + }, + { + "name": "canBranch", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 28, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "addStepBefore", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 45, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "goToAddStepViewForAfter", + "args": [ + { + "name": "previousNodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 66, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "previousNodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "goToAddStepViewForFirstStepInBranchPath", + "args": [ + { + "name": "previousNodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nextNodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 73, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "previousNodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nextNodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "goToAddStepViewForIn", + "args": [ + { + "name": "groupId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 59, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "groupId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "goToCreateBranchView", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 37, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatMenuModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input } from '@angular/core';\nimport { TeacherProjectService } from '../../services/teacherProjectService';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { AddStepTarget } from '../../../../app/domain/addStepTarget';\n\n@Component({\n imports: [MatButtonModule, MatIconModule, MatMenuModule, MatTooltipModule],\n selector: 'add-step-button',\n styles: [\n `\n .rotate-180 {\n transform: rotate(180deg);\n }\n .flip-vertical {\n transform: scaleY(-1);\n }\n `\n ],\n templateUrl: './add-step-button.component.html'\n})\nexport class AddStepButtonComponent {\n protected canAddAfter: boolean;\n protected canAddBefore: boolean;\n protected canBranch: boolean;\n @Input() nodeId: string;\n\n constructor(\n private projectService: TeacherProjectService,\n private route: ActivatedRoute,\n private router: Router\n ) {}\n\n ngOnInit(): void {\n this.canAddBefore = this.projectService.isFirstStepInLesson(this.nodeId);\n const isBranchPoint = this.projectService.isBranchPoint(this.nodeId);\n const isBranchPathStep = this.projectService.isNodeInAnyBranchPath(this.nodeId);\n this.canAddAfter = !isBranchPoint;\n this.canBranch = !(isBranchPoint || isBranchPathStep);\n }\n\n protected addStepBefore(): void {\n if (this.projectService.isFirstStepInLesson(this.nodeId)) {\n this.goToAddStepViewForIn(this.projectService.getParentGroupId(this.nodeId));\n } else {\n const previousNodes = this.projectService.getNodesByToNodeId(this.nodeId);\n const previousNodeId: string = previousNodes[0].id;\n if (this.projectService.isFirstNodeInBranchPath(this.nodeId)) {\n this.goToAddStepViewForFirstStepInBranchPath(previousNodeId, this.nodeId);\n } else {\n this.goToAddStepViewForAfter(previousNodeId);\n }\n }\n }\n\n private goToAddStepViewForIn(groupId: string): void {\n this.router.navigate(['add-node', 'choose-template'], {\n relativeTo: this.route,\n state: new AddStepTarget('in', groupId)\n });\n }\n\n protected goToAddStepViewForAfter(previousNodeId: string): void {\n this.router.navigate(['add-node', 'choose-template'], {\n relativeTo: this.route,\n state: new AddStepTarget('after', previousNodeId)\n });\n }\n\n private goToAddStepViewForFirstStepInBranchPath(\n previousNodeId: string,\n nextNodeId: string\n ): void {\n this.router.navigate(['add-node', 'choose-template'], {\n relativeTo: this.route,\n state: new AddStepTarget('firstStepInBranchPath', null, previousNodeId, nextNodeId)\n });\n }\n\n protected goToCreateBranchView(): void {\n this.router.navigate(['create-branch'], {\n relativeTo: this.route,\n state: {\n targetId: this.nodeId\n }\n });\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "\n .rotate-180 {\n transform: rotate(180deg);\n }\n .flip-vertical {\n transform: scaleY(-1);\n }\n \n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 29, + "jsdoctags": [ + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "\n add_circle\n\n\n @if (canAddBefore) {\n \n }\n @if (canAddAfter) {\n \n }\n @if (canBranch) {\n \n }\n\n" + }, + { + "name": "AddTeamButtonComponent", + "id": "component-AddTeamButtonComponent-a731f7aef12bde5c116ac676fd6575ccd0973e8d6508c892285a9b2644c9e69e3f1f3704ad7f813f12156c850e6c4acb86bb1fceee141f891be2af2cfecf5c1f", + "file": "src/assets/wise5/classroomMonitor/classroomMonitorComponents/manageStudents/add-team-button/add-team-button.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "add-team-button", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./add-team-button.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "period", + "deprecated": false, + "deprecationMessage": "", + "line": 14, + "type": "any", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [], + "methodsClass": [ + { + "name": "openAddTeamDialog", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 18, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatButton" + }, + { + "name": "MatIcon" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { AddTeamDialogComponent } from '../add-team-dialog/add-team-dialog.component';\nimport { MatButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\n\n@Component({\n imports: [MatButton, MatIcon],\n selector: 'add-team-button',\n styleUrl: './add-team-button.component.scss',\n templateUrl: './add-team-button.component.html'\n})\nexport class AddTeamButtonComponent {\n @Input() period: any;\n\n constructor(private dialog: MatDialog) {}\n\n protected openAddTeamDialog(): void {\n this.dialog.open(AddTeamDialogComponent, {\n panelClass: 'dialog-md',\n data: this.period\n });\n }\n}\n", + "styleUrl": "./add-team-button.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 14, + "jsdoctags": [ + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "\n group_add New Team\n\n" + }, + { + "name": "AddTeamDialogComponent", + "id": "component-AddTeamDialogComponent-47fc66dd883676f28bc4ed5f454a9679fbaa17d28f33e1d79ca50044273a24eec54389422c4849af08b674efd39dff59fe3b3413f26a82295dfd2d1756b52612", + "file": "src/assets/wise5/classroomMonitor/classroomMonitorComponents/manageStudents/add-team-dialog/add-team-dialog.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./add-team-dialog.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "allUsersInPeriod", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 37 + }, + { + "name": "initialTeamMembers", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 38 + }, + { + "name": "isAnyUnassignedStudent", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 40 + }, + { + "name": "isProcessing", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 39 + }, + { + "name": "period", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 44, + "decorators": [ + { + "name": "Inject", + "stringifiedArguments": "MAT_DIALOG_DATA" + } + ], + "modifierKind": [ + 171, + 125 + ] + } + ], + "methodsClass": [ + { + "name": "addTeamMember", + "args": [ + { + "name": "user", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 61, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "user", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createTeam", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 69, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "createTeamAfterConfirm", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 78, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "createTeamOnServer", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 94, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "deleteTeamMember", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 65, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isAnyMemberInWorkgroup", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 118, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "isUserInAnyWorkgroup", + "args": [ + { + "name": "user", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 124, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "user", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 50, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatDialogTitle" + }, + { + "name": "CdkScrollable" + }, + { + "name": "MatDialogContent" + }, + { + "name": "ShowStudentInfoComponent", + "type": "component" + }, + { + "name": "MatIconButton" + }, + { + "name": "MatIcon" + }, + { + "name": "MatButton" + }, + { + "name": "MatDialogActions" + }, + { + "name": "MatDialogClose" + }, + { + "name": "MatProgressBar" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Inject } from '@angular/core';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { ConfigService } from '../../../../services/configService';\nimport {\n MatDialog,\n MAT_DIALOG_DATA,\n MatDialogTitle,\n MatDialogContent,\n MatDialogActions,\n MatDialogClose\n} from '@angular/material/dialog';\nimport { MoveUserConfirmDialogComponent } from '../move-user-confirm-dialog/move-user-confirm-dialog.component';\nimport { WorkgroupService } from '../../../../../../app/services/workgroup.service';\nimport { CdkScrollable } from '@angular/cdk/scrolling';\nimport { ShowStudentInfoComponent } from '../show-student-info/show-student-info.component';\nimport { MatIconButton, MatButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatProgressBar } from '@angular/material/progress-bar';\n\n@Component({\n imports: [\n MatDialogTitle,\n CdkScrollable,\n MatDialogContent,\n ShowStudentInfoComponent,\n MatIconButton,\n MatIcon,\n MatButton,\n MatDialogActions,\n MatDialogClose,\n MatProgressBar\n ],\n styleUrl: './add-team-dialog.component.scss',\n templateUrl: './add-team-dialog.component.html'\n})\nexport class AddTeamDialogComponent {\n allUsersInPeriod: any[] = [];\n initialTeamMembers: any[] = [];\n isProcessing: boolean;\n isAnyUnassignedStudent: boolean;\n\n constructor(\n protected dialog: MatDialog,\n @Inject(MAT_DIALOG_DATA) public period: any,\n private configService: ConfigService,\n private snackBar: MatSnackBar,\n private workgroupService: WorkgroupService\n ) {}\n\n ngOnInit(): void {\n this.allUsersInPeriod = this.configService\n .getAllUsersInPeriod(this.period.periodId)\n .sort((userA, userB) => {\n return userA.name.localeCompare(userB.name);\n });\n this.isAnyUnassignedStudent = this.allUsersInPeriod.some((student) => {\n return !this.isUserInAnyWorkgroup(student);\n });\n }\n\n addTeamMember(user: any) {\n this.initialTeamMembers.push(user);\n }\n\n deleteTeamMember(index: number) {\n this.initialTeamMembers.splice(index, 1)[0];\n }\n\n createTeam(): void {\n this.isProcessing = true;\n if (this.isAnyMemberInWorkgroup()) {\n this.createTeamAfterConfirm();\n } else {\n this.createTeamOnServer();\n }\n }\n\n private createTeamAfterConfirm() {\n this.dialog\n .open(MoveUserConfirmDialogComponent, {\n panelClass: 'dialog-sm',\n data: true\n })\n .afterClosed()\n .subscribe((doMoveUser: boolean) => {\n if (doMoveUser) {\n this.createTeamOnServer();\n } else {\n this.isProcessing = false;\n }\n });\n }\n\n private createTeamOnServer(): void {\n this.workgroupService\n .createWorkgroup(\n this.period.periodId,\n this.initialTeamMembers.map((member) => member.id)\n )\n .subscribe({\n next: (newWorkgroupId: number) => {\n this.configService\n .retrieveConfig(`/api/config/classroomMonitor/${this.configService.getRunId()}`)\n .subscribe({\n next: () => {\n this.snackBar.open($localize`New Team ${newWorkgroupId} has been created.`);\n this.isProcessing = false;\n this.dialog.closeAll();\n }\n });\n },\n error: () => {\n this.snackBar.open($localize`Error: Could not create team.`);\n }\n });\n }\n\n private isAnyMemberInWorkgroup(): boolean {\n return this.initialTeamMembers.some((user) => {\n return this.isUserInAnyWorkgroup(user);\n });\n }\n\n isUserInAnyWorkgroup(user: any): boolean {\n return this.workgroupService.isUserInAnyWorkgroup(user);\n }\n}\n", + "styleUrl": "./add-team-dialog.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "period", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "snackBar", + "type": "MatSnackBar", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "workgroupService", + "type": "WorkgroupService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 40, + "jsdoctags": [ + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "period", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "snackBar", + "type": "MatSnackBar", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "workgroupService", + "type": "WorkgroupService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "

Create New Team (Period {{ period.periodName }})

\n\n

Select students to add to the new team:

\n
\n
\n @if (initialTeamMembers.length == 0) {\n
No team members added
\n }\n @if (initialTeamMembers.length > 0) {\n
\n @for (member of initialTeamMembers; track member; let i = $index) {\n
\n \n \n \n close\n \n
\n }\n
\n }\n
\n
\n
\n @for (user of allUsersInPeriod; track user; let i = $index) {\n
\n \n \n \n
\n }\n
\n @if (isAnyUnassignedStudent) {\n

\n stop = Student\n without a current team\n

\n }\n
\n
\n
\n\n \n \n @if (isProcessing) {\n \n }\n Create\n \n\n" + }, + { + "name": "AddToNotebookButtonComponent", + "id": "component-AddToNotebookButtonComponent-8a5ae1ab17b3b54c6526f2030c5b436b3a2ea7d311ef9d887457d82b2159ac573d081b261a70fc43cae1da1b0003d331c89026939fe4a57e7cf753902c4a9880", + "file": "src/assets/wise5/directives/add-to-notebook-button/add-to-notebook-button.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "add-to-notebook-button", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "add-to-notebook-button.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "isDisabled", + "deprecated": false, + "deprecationMessage": "", + "line": 11, + "type": "boolean", + "decorators": [] + } + ], + "outputsClass": [ + { + "name": "snipImage", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 12, + "type": "EventEmitter" + } + ], + "propertiesClass": [], + "methodsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n imports: [MatButtonModule, MatIconModule],\n selector: 'add-to-notebook-button',\n templateUrl: 'add-to-notebook-button.component.html'\n})\nexport class AddToNotebookButtonComponent {\n @Input() isDisabled: boolean;\n @Output() snipImage = new EventEmitter();\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [], + "templateData": "\n" + }, + { + "name": "AddYourOwnNodeComponent", + "id": "component-AddYourOwnNodeComponent-fff868d713236735f2d9486e9550e5d4f27a34acb0972eb77b46d560a40e1b2a02e0712b5c2de9d451cfb711a7a73957a59c531fc951214c7d840c7e9eee706e", + "file": "src/assets/wise5/authoringTool/addNode/add-your-own-node/add-your-own-node.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [ + "add-your-own-node.component.scss", + "../../add-content.scss" + ], + "styles": [], + "templateUrl": [ + "add-your-own-node.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "addNodeFormGroup", + "defaultValue": "this.fb.group({\n title: new FormControl($localize`New Step`, [Validators.required])\n })", + "deprecated": false, + "deprecationMessage": "", + "type": "FormGroup", + "indexKey": "", + "optional": false, + "description": "", + "line": 43, + "modifierKind": [ + 124 + ] + }, + { + "name": "componentTypes", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 46, + "modifierKind": [ + 124 + ] + }, + { + "name": "initialComponents", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 47, + "modifierKind": [ + 124 + ] + }, + { + "name": "submitting", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 48, + "modifierKind": [ + 124 + ] + }, + { + "name": "target", + "deprecated": false, + "deprecationMessage": "", + "type": "AddStepTarget", + "indexKey": "", + "optional": false, + "description": "", + "line": 49, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "addComponent", + "args": [ + { + "name": "componentType", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 67, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "componentType", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addInitialComponents", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "components", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 107, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "components", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "deleteComponent", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 71, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "drop", + "args": [ + { + "name": "event", + "type": "CdkDragDrop", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 75, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "event", + "type": "CdkDragDrop", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isGroupNode", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 103, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 63, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "save", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 113, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "submit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 79, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "ComponentTypeButtonComponent", + "type": "component" + }, + { + "name": "DragDropModule", + "type": "module" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatDividerModule", + "type": "module" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatInputModule", + "type": "module" + }, + { + "name": "MatProgressBarModule", + "type": "module" + }, + { + "name": "ReactiveFormsModule", + "type": "module" + }, + { + "name": "RouterModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { CdkDragDrop, DragDropModule, moveItemInArray } from '@angular/cdk/drag-drop';\nimport {\n FormControl,\n FormGroup,\n Validators,\n FormBuilder,\n FormsModule,\n ReactiveFormsModule\n} from '@angular/forms';\nimport { ComponentTypeService } from '../../../services/componentTypeService';\nimport { CreateComponentService } from '../../../services/createComponentService';\nimport { ActivatedRoute, Router, RouterModule } from '@angular/router';\nimport { TeacherProjectService } from '../../../services/teacherProjectService';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { ComponentTypeButtonComponent } from '../../components/component-type-button/component-type-button.component';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatInputModule } from '@angular/material/input';\nimport { InsertFirstNodeInBranchPathService } from '../../../services/insertFirstNodeInBranchPathService';\nimport { AddStepTarget } from '../../../../../app/domain/addStepTarget';\n\n@Component({\n imports: [\n ComponentTypeButtonComponent,\n DragDropModule,\n FormsModule,\n MatButtonModule,\n MatDividerModule,\n MatFormFieldModule,\n MatIconModule,\n MatInputModule,\n MatProgressBarModule,\n ReactiveFormsModule,\n RouterModule\n ],\n styleUrls: ['add-your-own-node.component.scss', '../../add-content.scss'],\n templateUrl: 'add-your-own-node.component.html'\n})\nexport class AddYourOwnNodeComponent {\n protected addNodeFormGroup: FormGroup = this.fb.group({\n title: new FormControl($localize`New Step`, [Validators.required])\n });\n protected componentTypes: any[];\n protected initialComponents: string[] = [];\n protected submitting: boolean;\n protected target: AddStepTarget;\n\n constructor(\n private componentTypeService: ComponentTypeService,\n private createComponentService: CreateComponentService,\n private fb: FormBuilder,\n private insertFirstNodeInBranchPathService: InsertFirstNodeInBranchPathService,\n private projectService: TeacherProjectService,\n private route: ActivatedRoute,\n private router: Router\n ) {\n this.componentTypes = this.componentTypeService.getComponentTypes();\n }\n\n ngOnInit(): void {\n this.target = history.state;\n }\n\n protected addComponent(componentType: any): void {\n this.initialComponents.push(componentType);\n }\n\n protected deleteComponent(index: number): void {\n this.initialComponents.splice(index, 1);\n }\n\n protected drop(event: CdkDragDrop): void {\n moveItemInArray(this.initialComponents, event.previousIndex, event.currentIndex);\n }\n\n protected submit(): void {\n this.submitting = true;\n const newNode = this.projectService.createNode(this.addNodeFormGroup.controls['title'].value);\n switch (this.target.type) {\n case 'in':\n this.projectService.createNodeInside(newNode, this.target.targetId);\n break;\n case 'after':\n this.projectService.createNodeAfter(newNode, this.target.targetId);\n break;\n case 'firstStepInBranchPath':\n this.insertFirstNodeInBranchPathService.insertNode(\n newNode,\n this.target.branchNodeId,\n this.target.firstNodeIdInBranchPath\n );\n break;\n }\n this.addInitialComponents(newNode.id, this.initialComponents);\n this.save().then(() => {\n this.router.navigate(['../..'], { relativeTo: this.route });\n });\n }\n\n protected isGroupNode(nodeId: string): boolean {\n return this.projectService.isGroupNode(nodeId);\n }\n\n private addInitialComponents(nodeId: string, components: any[]): void {\n components\n .reverse()\n .forEach((component) => this.createComponentService.create(nodeId, component.type));\n }\n\n private save(): any {\n return this.projectService.checkPotentialStartNodeIdChangeThenSaveProject().then(() => {\n this.projectService.refreshProject();\n });\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": [ + { + "data": "@use '@angular/material' as mat;\n\n$border-color: #dddddd;\n$transform: transform 250ms cubic-bezier(0, 0, 0.2, 1);\n\n.title-field {\n margin-top: 16px;\n width: 360px;\n max-width: 100%;\n}\n\n.initial-components {\n padding: 8px;\n margin: 4px;\n}\n\n.component-list {\n border: 1px solid $border-color;\n}\n\n.component-list-item {\n background-color: white;\n border-bottom: 1px solid $border-color;\n cursor: move;\n padding: 0 8px;\n\n &:last-of-type {\n border-bottom: 0 none;\n }\n}\n\n.component-type {\n width: 250px;\n padding: 4px;\n\n button {\n text-transform: none;\n }\n}\n\n.cdk-drag-preview {\n box-sizing: border-box;\n border: 0 none;\n @include mat.elevation-transition;\n @include mat.elevation(4);\n}\n\n.cdk-drag-placeholder {\n opacity: 0;\n}\n\n.cdk-drag-animating {\n transition: $transform;\n}\n\n.component-list.cdk-drop-list-dragging .component-list-item:not(.cdk-drag-placeholder) {\n transition: $transform;\n}\n", + "styleUrl": "add-your-own-node.component.scss" + }, + { + "data": ".nav-controls {\n background-color: white;\n position: sticky;\n bottom: 0;\n padding-bottom: 8px;\n z-index: 1;\n\n .mat-divider {\n margin: 16px 0 8px 0;\n }\n}\n", + "styleUrl": "../../add-content.scss" + } + ], + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "componentTypeService", + "type": "ComponentTypeService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "createComponentService", + "type": "CreateComponentService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "fb", + "type": "FormBuilder", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "insertFirstNodeInBranchPathService", + "type": "InsertFirstNodeInBranchPathService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 49, + "jsdoctags": [ + { + "name": "componentTypeService", + "type": "ComponentTypeService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "createComponentService", + "type": "CreateComponentService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "fb", + "type": "FormBuilder", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "insertFirstNodeInBranchPathService", + "type": "InsertFirstNodeInBranchPathService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "
\n \n Step Title\n \n @if (addNodeFormGroup.controls['title'].hasError('required')) {\n Step Title is required \n }\n \n
Select components to add to your new step (optional):
\n
\n
\n @if (initialComponents.length == 0) {\n
No components added
\n }\n @if (initialComponents.length > 0) {\n
\n @for (component of initialComponents; track component.id) {\n
\n reorder\n {{ component.name }}\n \n \n close\n \n
\n }\n
\n }\n
\n
\n
\n @for (componentType of componentTypes; track componentType.type) {\n
\n \n
\n }\n
\n

\n *Note: You can always add or remove content later by editing the step.\n

\n
\n
\n
\n \n
\n \n \n \n \n @if (submitting) {\n \n }\n Submit\n \n
\n
\n
\n" + }, + { + "name": "AdvancedProjectAuthoringComponent", + "id": "component-AdvancedProjectAuthoringComponent-06db76b9196feb33d2838875fe3086db83a0c692a57f537de3d87085cf0e0569cddffa00793557728c794a4caeea93958a9868a278d10c51c06b0a4e38b15a90", + "file": "src/assets/wise5/authoringTool/advanced/advanced-project-authoring.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [ + "\n .rubric-div {\n margin-bottom: 20px;\n }\n\n .mat-icon {\n margin: 0px;\n }\n " + ], + "templateUrl": [ + "advanced-project-authoring.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "jsonDisplayed", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 45, + "modifierKind": [ + 124 + ] + }, + { + "name": "navigationType", + "defaultValue": "'default'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 46, + "modifierKind": [ + 124 + ] + }, + { + "name": "projectId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 47, + "modifierKind": [ + 123 + ] + }, + { + "name": "projectJSONString", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 48, + "modifierKind": [ + 124 + ] + }, + { + "name": "projectScriptFilename", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 49, + "modifierKind": [ + 124 + ] + }, + { + "name": "rubricDisplayed", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 50, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "assetSelected", + "args": [ + { + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 129, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "autoSaveProjectJSONString", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 99, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "chooseProjectScriptFile", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 119, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "copyProjectURL", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 144, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "downloadProject", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 134, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "getProjectURL", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 153, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "hideJSON", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 79, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 61, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "openProjectURLInNewTab", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 140, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "projectScriptFilenameChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 157, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "saveProjectJSON", + "args": [ + { + "name": "projectJSONString", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 108, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "projectJSONString", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setProjectScriptFilename", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 115, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "showJSON", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 93, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "toggleJSON", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 70, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "toggleRubric", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 65, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "updateNavigationType", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 165, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CdkTextareaAutosize" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatInputModule", + "type": "module" + }, + { + "name": "MatRadioModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + }, + { + "name": "RubricAuthoringComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { CdkTextareaAutosize } from '@angular/cdk/text-field';\nimport { Component } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { filter } from 'rxjs/operators';\nimport { isValidJSONString } from '../../common/string/string';\nimport { ConfigService } from '../../services/configService';\nimport { NotificationService } from '../../services/notificationService';\nimport { TeacherProjectService } from '../../services/teacherProjectService';\nimport { AssetChooser } from '../project-asset-authoring/asset-chooser';\nimport { RubricAuthoringComponent } from '../rubric/rubric-authoring.component';\n\n@Component({\n imports: [\n CdkTextareaAutosize,\n FormsModule,\n MatButtonModule,\n MatFormFieldModule,\n MatIconModule,\n MatInputModule,\n MatRadioModule,\n MatTooltipModule,\n RubricAuthoringComponent\n ],\n styles: [\n `\n .rubric-div {\n margin-bottom: 20px;\n }\n\n .mat-icon {\n margin: 0px;\n }\n `\n ],\n templateUrl: 'advanced-project-authoring.component.html'\n})\nexport class AdvancedProjectAuthoringComponent {\n protected jsonDisplayed: boolean;\n protected navigationType: string = 'default';\n private projectId: number;\n protected projectJSONString: string;\n protected projectScriptFilename: string;\n protected rubricDisplayed: boolean;\n\n constructor(\n private dialog: MatDialog,\n private configService: ConfigService,\n private notificationService: NotificationService,\n private projectService: TeacherProjectService\n ) {\n this.projectId = this.configService.getProjectId();\n }\n\n ngOnInit(): void {\n this.setProjectScriptFilename();\n }\n\n protected toggleRubric(): void {\n this.jsonDisplayed = false;\n this.rubricDisplayed = !this.rubricDisplayed;\n }\n\n protected toggleJSON(): void {\n this.rubricDisplayed = false;\n if (this.jsonDisplayed) {\n this.hideJSON();\n } else {\n this.showJSON();\n }\n }\n\n private hideJSON(): void {\n if (isValidJSONString(this.projectJSONString)) {\n this.jsonDisplayed = false;\n this.notificationService.hideJSONValidMessage();\n } else if (\n confirm(\n $localize`The JSON is invalid. Invalid JSON will not be saved.\\nClick \"OK\" to revert back to the last valid JSON.\\nClick \"Cancel\" to keep the invalid JSON open so you can fix it.`\n )\n ) {\n this.jsonDisplayed = false;\n this.notificationService.hideJSONValidMessage();\n }\n }\n\n private showJSON(): void {\n this.jsonDisplayed = true;\n this.projectJSONString = JSON.stringify(this.projectService.project, null, 4);\n this.notificationService.showJSONValidMessage();\n }\n\n protected autoSaveProjectJSONString(): void {\n try {\n this.saveProjectJSON(this.projectJSONString);\n this.notificationService.showJSONValidMessage();\n } catch (e) {\n this.notificationService.showJSONInvalidMessage();\n }\n }\n\n private saveProjectJSON(projectJSONString: string): void {\n const project = JSON.parse(projectJSONString);\n this.projectService.setProject(project);\n this.setProjectScriptFilename();\n this.projectService.checkPotentialStartNodeIdChangeThenSaveProject();\n }\n\n private setProjectScriptFilename(): void {\n this.projectScriptFilename = this.projectService.getProjectScriptFilename();\n }\n\n protected chooseProjectScriptFile(): void {\n new AssetChooser(this.dialog, null, null, this.projectId)\n .open('scriptFilename')\n .afterClosed()\n .pipe(filter((data) => data != null))\n .subscribe((data: any) => {\n this.assetSelected(data);\n });\n }\n\n private assetSelected({ assetItem }): void {\n this.projectScriptFilename = assetItem.fileName;\n this.projectScriptFilenameChanged();\n }\n\n protected downloadProject(): void {\n window.location.href = `${this.configService.getWISEBaseURL()}/api/project/export/${\n this.projectId\n }`;\n }\n\n protected openProjectURLInNewTab(): void {\n window.open(this.getProjectURL(), '_blank');\n }\n\n protected copyProjectURL(): void {\n const textArea = document.createElement('textarea');\n textArea.value = this.getProjectURL();\n document.body.appendChild(textArea);\n textArea.select();\n document.execCommand('copy');\n document.body.removeChild(textArea);\n }\n\n protected getProjectURL(): string {\n return window.location.origin + this.configService.getConfigParam('projectURL');\n }\n\n protected projectScriptFilenameChanged(): void {\n this.projectService.setProjectScriptFilename(this.projectScriptFilename);\n if (this.showJSON) {\n this.projectJSONString = JSON.stringify(this.projectService.project, null, 4);\n }\n this.projectService.saveProject();\n }\n\n protected updateNavigationType(): void {\n this.projectService.project.theme = this.navigationType;\n this.projectService.saveProject();\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "\n .rubric-div {\n margin-bottom: 20px;\n }\n\n .mat-icon {\n margin: 0px;\n }\n \n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "notificationService", + "type": "NotificationService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 50, + "jsdoctags": [ + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "notificationService", + "type": "NotificationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "
\n \n message\n \n \n code\n \n \n file_download\n \n
\n
\n@if (rubricDisplayed) {\n
\n \n
\n}\n@if (jsonDisplayed) {\n
\n \n Edit Unit JSON\n \n \n
\n}\n
\n \n \n Default (lessons appear in drop-down list and unit plan)\n Tabbed (lessons appear as tabs)\n \n \n
\n
\n \n Unit URL\n \n \n \n content_paste\n \n \n open_in_new\n \n
\n" + }, + { + "name": "AiChatAuthoringComponent", + "id": "component-AiChatAuthoringComponent-4010c5e787b42d54716610ae00c7a97332d078324a3f9e238cc7c913e5b1051c35f195603b8f4e5211c395f943a495731b8a036b7ea210819088d2b97b7cbf8c", + "file": "src/assets/wise5/components/aiChat/ai-chat-authoring/ai-chat-authoring.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./ai-chat-authoring.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "showSystemPromptHelp", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 31, + "modifierKind": [ + 124 + ] + }, + { + "name": "allowedConnectedComponentTypes", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "idToOrder", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "inputChange", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "promptChange", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + } + ], + "methodsClass": [ + { + "name": "assetSelected", + "args": [ + { + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 100, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "componentChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 73, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "confirmAndRemove", + "args": [ + { + "name": "message", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "array", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 110, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "message", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "array", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "deleteStarterState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 81, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "getComponent", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 106, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "getComponents", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 102, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "isForThisComponent", + "args": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 77, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "moveObjectDown", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 122, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "moveObjectUp", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 117, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 65, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 28, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "promptChanged", + "args": [ + { + "name": "prompt", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 69, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "prompt", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "saveStarterState", + "args": [ + { + "name": "starterState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "starterState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "setShowSubmitButtonValue", + "args": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 85, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatTooltip" + }, + { + "name": "MatIcon" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatInput" + }, + { + "name": "CdkTextareaAutosize" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "EditComponentPrompt", + "type": "component" + }, + { + "name": "MatCheckbox" + }, + { + "name": "EditDialogGuidanceComputerAvatarComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { CdkTextareaAutosize } from '@angular/cdk/text-field';\nimport { Component } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckbox } from '@angular/material/checkbox';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInput } from '@angular/material/input';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { EditComponentPrompt } from '../../../../../app/authoring-tool/edit-component-prompt/edit-component-prompt.component';\nimport { AbstractComponentAuthoring } from '../../../authoringTool/components/AbstractComponentAuthoring';\nimport { EditDialogGuidanceComputerAvatarComponent } from '../../dialogGuidance/edit-dialog-guidance-computer-avatar/edit-dialog-guidance-computer-avatar.component';\n\n@Component({\n templateUrl: './ai-chat-authoring.component.html',\n styleUrl: './ai-chat-authoring.component.scss',\n imports: [\n MatButtonModule,\n MatTooltip,\n MatIcon,\n MatFormFieldModule,\n MatInput,\n CdkTextareaAutosize,\n FormsModule,\n EditComponentPrompt,\n MatCheckbox,\n EditDialogGuidanceComputerAvatarComponent\n ]\n})\nexport class AiChatAuthoringComponent extends AbstractComponentAuthoring {\n protected showSystemPromptHelp = false;\n}\n", + "styleUrl": "./ai-chat-authoring.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [ + "AbstractComponentAuthoring" + ], + "templateData": "
\n \n Use the system prompt to instruct the chat bot how to behave. Students will not see the system\n prompt.\n \n \n help\n \n
\n@if (showSystemPromptHelp) {\n
\n System Prompt Instructions\n

\n Provide context, instructions, and other relevant information to help the chat bot act the way\n you want it to. Be as specific as possible.\n

\n Example System Prompt\n

\n You are a teacher helping a student understand the greenhouse effect by using the example of a\n car that has been sitting in the sun on a cold day. The student is asked how the temperature\n inside the car will feel. Do not tell them the correct answer, but guide them to better\n understand the science by asking questions. Also make sure they explain their reasoning. Limit\n your response to 100 words or less.\n

\n
\n}\n\n System Prompt\n \n \n\n

Use the prompt to introduce the chatbot activity. Students will see the prompt.

\n\nEnable Computer Avatar\n@if (componentContent.isComputerAvatarEnabled) {\n \n}\n" + }, + { + "name": "AiChatBotMessageComponent", + "id": "component-AiChatBotMessageComponent-79e0ff4e44333047efedd97089dadda5cb1dd0ef68ed0ad8ad97b835c4a282627f073287fde4791c2317fb17c16c4fe9cec0bcbc8c1cca18b6fc99c9e6c0eeea", + "file": "src/assets/wise5/components/aiChat/ai-chat-bot-message/ai-chat-bot-message.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "ai-chat-bot-message", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./ai-chat-bot-message.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "computerAvatar", + "deprecated": false, + "deprecationMessage": "", + "line": 12, + "type": "ComputerAvatar", + "decorators": [] + }, + { + "name": "message", + "deprecated": false, + "deprecationMessage": "", + "line": 14, + "type": "AiChatMessage", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "computerAvatarImageSrc", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 18, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input } from '@angular/core';\nimport { AiChatMessage } from '../AiChatMessage';\nimport { ComputerAvatar } from '../../../common/computer-avatar/ComputerAvatar';\nimport { ComputerAvatarService } from '../../../services/computerAvatarService';\n\n@Component({\n selector: 'ai-chat-bot-message',\n styleUrl: './ai-chat-bot-message.component.scss',\n templateUrl: './ai-chat-bot-message.component.html'\n})\nexport class AiChatBotMessageComponent {\n @Input() computerAvatar: ComputerAvatar;\n protected computerAvatarImageSrc: string;\n @Input() message: AiChatMessage;\n\n constructor(private computerAvatarService: ComputerAvatarService) {}\n\n ngOnInit(): void {\n this.computerAvatarImageSrc =\n this.computerAvatarService.getAvatarsPath() +\n this.computerAvatarService.getAvatar(this.computerAvatar.id).image;\n }\n}\n", + "styleUrl": "./ai-chat-bot-message.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "computerAvatarService", + "type": "ComputerAvatarService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 14, + "jsdoctags": [ + { + "name": "computerAvatarService", + "type": "ComputerAvatarService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "
\n \n
\n
\n
{{ computerAvatar.name }}
\n
\n
\n
\n
\n" + }, + { + "name": "AiChatGradingComponent", + "id": "component-AiChatGradingComponent-29dddc30cc691c79cf736e0123bfa64f39f7d0557ce9046d5e37247a98ae4b73e74ad0aa2102a8336c488f6f6144107871d729dc36d242da2fc724a93552feab", + "file": "src/assets/wise5/components/aiChat/ai-chat-grading/ai-chat-grading.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "template": "", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "line": 8, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "componentState", + "deprecated": false, + "deprecationMessage": "", + "line": 9, + "type": "any", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "isRevision", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "line": 10, + "type": "boolean", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 7, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "computerAvatar", + "deprecated": false, + "deprecationMessage": "", + "type": "ComputerAvatar", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AiChatShowWorkComponent" + } + }, + { + "name": "messages", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AiChatShowWorkComponent" + } + }, + { + "name": "workgroupId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AiChatShowWorkComponent" + } + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "inheritance": { + "file": "ComponentShowWorkDirective" + } + } + ], + "methodsClass": [ + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 27, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "ngAfterViewInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 33, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentShowWorkDirective" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "AiChatShowWorkComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { AiChatShowWorkComponent } from '../ai-chat-show-work/ai-chat-show-work.component';\n\n@Component({\n imports: [AiChatShowWorkComponent],\n template: ` `\n})\nexport class AiChatGradingComponent extends AiChatShowWorkComponent {}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [ + "AiChatShowWorkComponent" + ] + }, + { + "name": "AiChatMessagesComponent", + "id": "component-AiChatMessagesComponent-f70ef864f96cfe949de8317d625a5bdf19592f13da3e2f048c311fa92eb977bb06c8eb377900915368f4e2969545d5167e64103fc632795400496970187a8681", + "file": "src/assets/wise5/components/aiChat/ai-chat-messages/ai-chat-messages.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "ai-chat-messages", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./ai-chat-messages.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "computerAvatar", + "deprecated": false, + "deprecationMessage": "", + "line": 14, + "type": "ComputerAvatar", + "decorators": [] + }, + { + "name": "messages", + "deprecated": false, + "deprecationMessage": "", + "line": 15, + "type": "AiChatMessage[]", + "decorators": [] + }, + { + "name": "waitingForComputerResponse", + "deprecated": false, + "deprecationMessage": "", + "line": 16, + "type": "boolean", + "decorators": [] + }, + { + "name": "workgroupId", + "deprecated": false, + "deprecationMessage": "", + "line": 17, + "type": "number", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [], + "methodsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "AiChatStudentMessageComponent", + "type": "component" + }, + { + "name": "AiChatBotMessageComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input } from '@angular/core';\nimport { AiChatMessage } from '../AiChatMessage';\nimport { ComputerAvatar } from '../../../common/computer-avatar/ComputerAvatar';\nimport { AiChatStudentMessageComponent } from '../ai-chat-student-message/ai-chat-student-message.component';\nimport { AiChatBotMessageComponent } from '../ai-chat-bot-message/ai-chat-bot-message.component';\n\n@Component({\n imports: [AiChatStudentMessageComponent, AiChatBotMessageComponent],\n selector: 'ai-chat-messages',\n styleUrl: './ai-chat-messages.component.scss',\n templateUrl: './ai-chat-messages.component.html'\n})\nexport class AiChatMessagesComponent {\n @Input() computerAvatar: ComputerAvatar;\n @Input() messages: AiChatMessage[];\n @Input() waitingForComputerResponse: boolean;\n @Input() workgroupId: number;\n}\n", + "styleUrl": "./ai-chat-messages.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [], + "templateData": "@for (message of messages; track message) {\n @if (message.role === 'user' && !message.hidden) {\n \n }\n @if (message.role === 'assistant') {\n \n }\n}\n@if (waitingForComputerResponse) {\n \n}\n" + }, + { + "name": "AiChatShowWorkComponent", + "id": "component-AiChatShowWorkComponent-f8a469710eb5d743a6178e6e87329e635d9bae52fbc3edf8d9b68a0a9982de90d31b8ab5bce442025fe2a3128803edb0bb010adad8c0ae1fdf65818c3e8cb9d2", + "file": "src/assets/wise5/components/aiChat/ai-chat-show-work/ai-chat-show-work.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "ai-chat-show-work", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./ai-chat-show-work.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "line": 8, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "componentState", + "deprecated": false, + "deprecationMessage": "", + "line": 9, + "type": "any", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "isRevision", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "line": 10, + "type": "boolean", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 7, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "computerAvatar", + "deprecated": false, + "deprecationMessage": "", + "type": "ComputerAvatar", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 124 + ] + }, + { + "name": "messages", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "modifierKind": [ + 124 + ] + }, + { + "name": "workgroupId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "modifierKind": [ + 124 + ] + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "inheritance": { + "file": "ComponentShowWorkDirective" + } + } + ], + "methodsClass": [ + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 27, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "ngAfterViewInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 33, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentShowWorkDirective" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "AiChatMessagesComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { ComponentShowWorkDirective } from '../../component-show-work.directive';\nimport { ComputerAvatarService } from '../../../services/computerAvatarService';\nimport { NodeService } from '../../../services/nodeService';\nimport { ProjectService } from '../../../services/projectService';\nimport { ComputerAvatar } from '../../../common/computer-avatar/ComputerAvatar';\nimport { AiChatMessagesComponent } from '../ai-chat-messages/ai-chat-messages.component';\n\n@Component({\n imports: [AiChatMessagesComponent],\n selector: 'ai-chat-show-work',\n templateUrl: './ai-chat-show-work.component.html'\n})\nexport class AiChatShowWorkComponent extends ComponentShowWorkDirective {\n protected computerAvatar: ComputerAvatar;\n protected messages: any[] = [];\n protected workgroupId: number;\n\n constructor(\n private computerAvatarService: ComputerAvatarService,\n protected nodeService: NodeService,\n protected projectService: ProjectService\n ) {\n super(nodeService, projectService);\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n this.computerAvatar = this.computerAvatarService.getAvatar(\n this.componentState.studentData.computerAvatarId\n );\n this.messages = this.componentState.studentData.messages;\n this.workgroupId = this.componentState.workgroupId;\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "computerAvatarService", + "type": "ComputerAvatarService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 17, + "jsdoctags": [ + { + "name": "computerAvatarService", + "type": "ComputerAvatarService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "ComponentShowWorkDirective" + ], + "templateData": "
\n \n
\n" + }, + { + "name": "AiChatStudentComponent", + "id": "component-AiChatStudentComponent-bfc293483776c7bdeea3e3e3a52f3bf242bed69c3c9781b554b8bbd47ae138cb6a6e212ca866ee9c4b80b32eced39ad02d7971d14d2de111ed1e0217af0da817", + "file": "src/assets/wise5/components/aiChat/ai-chat-student/ai-chat-student.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./ai-chat-student.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "component", + "deprecated": false, + "deprecationMessage": "", + "line": 24, + "type": "Component", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentState", + "deprecated": false, + "deprecationMessage": "", + "line": 25, + "type": "any", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isDisabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "line": 26, + "type": "boolean", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "mode", + "deprecated": false, + "deprecationMessage": "", + "line": 27, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 28, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "workgroupId", + "deprecated": false, + "deprecationMessage": "", + "line": 29, + "type": "number", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "outputsClass": [ + { + "name": "saveComponentStateEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 30, + "type": "EventEmitter", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "starterStateChangedEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 31, + "type": "EventEmitter", + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "propertiesClass": [ + { + "name": "component", + "deprecated": false, + "deprecationMessage": "", + "type": "AiChatComponent", + "indexKey": "", + "optional": false, + "description": "", + "line": 38 + }, + { + "name": "computerAvatar", + "deprecated": false, + "deprecationMessage": "", + "type": "ComputerAvatar", + "indexKey": "", + "optional": false, + "description": "", + "line": 39, + "modifierKind": [ + 124 + ] + }, + { + "name": "computerAvatarSelectorVisible", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 40, + "modifierKind": [ + 124 + ] + }, + { + "name": "connectedComponentResponse", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 41, + "modifierKind": [ + 123 + ] + }, + { + "name": "initializeComputerAvatar", + "deprecated": false, + "deprecationMessage": "", + "type": "function", + "indexKey": "", + "optional": false, + "description": "", + "line": 144 + }, + { + "name": "messages", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "AiChatMessage[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 42, + "modifierKind": [ + 124 + ] + }, + { + "name": "messagesContainer", + "deprecated": false, + "deprecationMessage": "", + "type": "ElementRef", + "indexKey": "", + "optional": false, + "description": "", + "line": 43, + "decorators": [ + { + "name": "ViewChild", + "stringifiedArguments": "'messagesContainer'" + } + ], + "modifierKind": [ + 171, + 123 + ] + }, + { + "name": "studentResponse", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 44, + "modifierKind": [ + 124 + ] + }, + { + "name": "submitEnabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 45, + "modifierKind": [ + 124 + ] + }, + { + "name": "waitingForComputerResponse", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 46, + "modifierKind": [ + 124 + ] + }, + { + "name": "annotationSavedToServerSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 53, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "attachments", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 33, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 34, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 35, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentType", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 36, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isDirty", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 45, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSaveButtonVisible", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 38, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSaveOrSubmitButtonVisible", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 41, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isShowAddToNotebookButton", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 39, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isStudentAttachmentEnabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 46, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmit", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 44, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmitButtonDisabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 42, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmitButtonVisible", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 40, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmitDirty", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 43, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "latestAnnotations", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 48, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "latestComponentState", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 50, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "nodeSubmitClickedSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 54, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "parentStudentWorkIds", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 49, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "prompt", + "deprecated": false, + "deprecationMessage": "", + "type": "SafeHtml", + "indexKey": "", + "optional": false, + "description": "", + "line": 37, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "requestComponentStateSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 52, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "showAddToNotebookButton", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 51, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "studentWorkSavedToServerSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 55, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "submitCounter", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 47, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 56, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "methodsClass": [ + { + "name": "createComponentState", + "args": [ + { + "name": "action", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 118, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "action", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "initializeMessages", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 89, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 74, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "processConnectedComponentState", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 140, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "scrollToBottom", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 146, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "showInitialMessage", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "submitStudentResponse", + "args": [ + { + "name": "response", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 95, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124, + 134 + ], + "jsdoctags": [ + { + "name": "response", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addDefaultFeedback", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 688, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "attachStudentAsset", + "args": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 232, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "broadcastDoneRenderingComponent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 325, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "canSubmit", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 488, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "clearLatestComponentState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 555, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "confirmSubmit", + "args": [ + { + "name": "numberOfSubmitsLeft", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 468, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "numberOfSubmitsLeft", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "connectedComponentStudentDataSaved", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 796, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nThis function is called when a connected component of this component saves student data.\nThis was added to handle a race condition when a step has a connected component on a previous\nstep but the connected component student work on the previous step was not being imported\nbecause it wasn't being saved in time.\nHere is an example of what was happening\n- Student generates work on step 1 but does not click the save button\n- Student goes to step 2 which triggers a promise to save the student work on step 1\n- Step 2 is loaded and checks if there is any work it needs to import from step 1\n- The work in step 1 has not saved yet so step 2 does not import any work and loads without\n importing any work\n- The work from step 1 is then saved\nHere is the additional process that this function performs to fix this problem\n- Step 2 listens for when work is saved on step 1\n- When the work for step 1 is saved, step 2 checks to see if it needs to import that work\n", + "description": "

This function is called when a connected component of this component saves student data.\nThis was added to handle a race condition when a step has a connected component on a previous\nstep but the connected component student work on the previous step was not being imported\nbecause it wasn't being saved in time.\nHere is an example of what was happening

\n
    \n
  • Student generates work on step 1 but does not click the save button
  • \n
  • Student goes to step 2 which triggers a promise to save the student work on step 1
  • \n
  • Step 2 is loaded and checks if there is any work it needs to import from step 1
  • \n
  • The work in step 1 has not saved yet so step 2 does not import any work and loads without\nimporting any work
  • \n
  • The work from step 1 is then saved\nHere is the additional process that this function performs to fix this problem
  • \n
  • Step 2 listens for when work is saved on step 1
  • \n
  • When the work for step 1 is saved, step 2 checks to see if it needs to import that work
  • \n
\n", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "copyAndAttachStudentAsset", + "args": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 218, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "copyPublicNotebookItem", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 632, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "copyPublicNotebookItemButtonClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 747, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createAutoCommentAnnotation", + "args": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 725, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createAutoScoreAnnotation", + "args": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 714, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createComponentStateAdditionalProcessing", + "args": [ + { + "name": "promise", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 598, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "promise", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createComponentStateAndBroadcast", + "args": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 559, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createDefaultFeedbackAnnotation", + "args": [ + { + "name": "feedbackText", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 706, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "feedbackText", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createMergedComponentState", + "args": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 377, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createNewComponentState", + "args": [], + "optional": false, + "returnType": "Partial", + "typeParameters": [], + "line": 818, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "disableAllInput", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 492, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "disableComponentIfNecessary", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 332, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "disableSubmitButton", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 496, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "doAttachStudentAsset", + "args": [ + { + "name": "studentAssetRequest", + "type": "StudentAssetRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 212, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "studentAssetRequest", + "type": "StudentAssetRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 541, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentStudentDataChanged", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 572, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentSubmitDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 548, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentSubmitTriggered", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 512, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "generateImageFromComponentState", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 615, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nRender the component state and then generate an image from it.\n", + "description": "

Render the component state and then generate an image from it.

\n", + "jsdoctags": [ + { + "name": { + "pos": 18804, + "end": 18818, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 18798, + "end": 18803, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The component state to render.

\n" + }, + { + "tagName": { + "pos": 18856, + "end": 18862, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

A promise that will return an image.

\n" + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "generateStarterState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 216, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getAction", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 321, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getClientSaveTime", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 684, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getComponentStatePromise", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 309, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getComponentStateWrapper", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "ComponentStateWrapper", + "typeParameters": [], + "line": 301, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getDefaultFeedback", + "args": [ + { + "name": "submitCount", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 702, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "submitCount", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getElementById", + "args": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getFirstResult", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 758, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "getFirstResult", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getIsDirty", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 277, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getMaxScore", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 680, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getMaxSubmitCount", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 460, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getNumberOfSubmitsLeft", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 456, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "handleConnectedComponents", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 352, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "handleConnectedComponentsPostProcess", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 385, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "handleStudentWorkSavedToServer", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 263, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "handleStudentWorkSavedToServerAdditionalProcessing", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 287, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasAnySubmissions", + "args": [ + { + "name": "componentStates", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 344, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentStates", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasDefaultFeedback", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 695, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasMaxScore", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 676, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasMaxSubmitCount", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 437, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasMaxSubmitCountAndUsedAllSubmits", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 452, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasSubmitMessage", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 504, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasSubmitsLeft", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 500, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasUsedAllSubmits", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 441, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "importWorkAsBackground", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 658, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "importWorkByStudentWorkId", + "args": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 170, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "incrementSubmitCounter", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 389, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isAddToNotebookEnabled", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 624, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isForThisComponent", + "args": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 192, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isFromConnectedComponent", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 766, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isHandleConnectedComponentAfterConnectedComponentStudentDataSaved", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 802, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isLockAfterSubmit", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 348, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isNotebookEnabled", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 643, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isPreviewMode", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 109, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSameComponent", + "args": [ + { + "name": "component", + "type": "Component", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 188, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "component", + "type": "Component", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isStudentNoteClippingEnabled", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 647, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isWorkFromClassmate", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 196, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "lockIfNecessary", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 281, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 97, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "performSubmit", + "args": [ + { + "name": "submitTriggeredBy", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 472, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "submitTriggeredBy", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "processLatestStudentWork", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 580, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "registerNotebookItemChosenListener", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 736, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "removeAttachment", + "args": [ + { + "name": "attachment", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 245, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "attachment", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "saveButtonClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 393, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "saveForAuthoringPreviewMode", + "args": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 404, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setBackgroundImage", + "args": [ + { + "name": "image", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 674, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "image", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setComponentStateAsBackgroundImage", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 668, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 537, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsDirtyAndBroadcast", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 527, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsSubmit", + "args": [ + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 464, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsSubmitDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 508, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsSubmitDirtyAndBroadcast", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 532, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setParentStudentWorkIdToCurrentStudentWork", + "args": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 180, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setStudentWork", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 381, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setSubmitCounter", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 811, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "shouldCreateComponentState", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 317, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "showStudentAssets", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 651, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "studentDataChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 519, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "submit", + "args": [ + { + "name": "submitTriggeredBy", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 416, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "submitTriggeredBy", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "submitButtonClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 412, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToAnnotationSavedToServer", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 123, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToAttachStudentAsset", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 200, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToNodeSubmitClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 137, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToNotebookItemChosen", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 159, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToNotifyConnectedComponents", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 147, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToRequestComponentState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 289, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToStudentWorkSavedToServer", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 252, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToSubscriptions", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 113, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "tryDisableComponent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 445, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "AiChatMessagesComponent", + "type": "component" + }, + { + "name": "ChatInputComponent", + "type": "component" + }, + { + "name": "ComponentHeaderComponent", + "type": "component" + }, + { + "name": "ComputerAvatarSelectorComponent", + "type": "component" + }, + { + "name": "MatCard" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, ElementRef, ViewChild } from '@angular/core';\nimport { ComponentStudent } from '../../component-student.component';\nimport { ConfigService } from '../../../services/configService';\nimport { AnnotationService } from '../../../services/annotationService';\nimport { ComponentService } from '../../componentService';\nimport { MatDialog } from '@angular/material/dialog';\nimport { NodeService } from '../../../services/nodeService';\nimport { NotebookService } from '../../../services/notebookService';\nimport { StudentAssetService } from '../../../services/studentAssetService';\nimport { StudentDataService } from '../../../services/studentDataService';\nimport { AiChatMessage } from '../AiChatMessage';\nimport { AiChatService } from '../aiChatService';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { AiChatComponent } from '../AiChatComponent';\nimport { ComputerAvatar } from '../../../common/computer-avatar/ComputerAvatar';\nimport { applyMixins } from '../../../common/apply-mixins';\nimport { ComputerAvatarInitializer } from '../../../common/computer-avatar/computer-avatar-initializer';\nimport { ComputerAvatarService } from '../../../services/computerAvatarService';\nimport { StudentStatusService } from '../../../services/studentStatusService';\nimport { ComputerAvatarSelectorComponent } from '../../../vle/computer-avatar-selector/computer-avatar-selector.component';\nimport { MatCard } from '@angular/material/card';\nimport { ComponentHeaderComponent } from '../../../directives/component-header/component-header.component';\nimport { ChatInputComponent } from '../../../common/chat-input/chat-input.component';\nimport { AiChatMessagesComponent } from '../ai-chat-messages/ai-chat-messages.component';\n\n@Component({\n imports: [\n AiChatMessagesComponent,\n ChatInputComponent,\n ComponentHeaderComponent,\n ComputerAvatarSelectorComponent,\n MatCard\n ],\n styleUrl: './ai-chat-student.component.scss',\n templateUrl: './ai-chat-student.component.html'\n})\nexport class AiChatStudentComponent extends ComponentStudent {\n component: AiChatComponent;\n protected computerAvatar: ComputerAvatar;\n protected computerAvatarSelectorVisible: boolean = false;\n private connectedComponentResponse: string;\n protected messages: AiChatMessage[] = [];\n @ViewChild('messagesContainer') private messagesContainer: ElementRef;\n protected studentResponse: string = '';\n protected submitEnabled: boolean = false;\n protected waitingForComputerResponse: boolean = false;\n\n constructor(\n private aiChatService: AiChatService,\n protected annotationService: AnnotationService,\n protected computerAvatarService: ComputerAvatarService,\n protected componentService: ComponentService,\n protected configService: ConfigService,\n protected dataService: StudentDataService,\n protected dialog: MatDialog,\n protected nodeService: NodeService,\n protected notebookService: NotebookService,\n private snackBar: MatSnackBar,\n protected studentAssetService: StudentAssetService,\n protected studentStatusService: StudentStatusService\n ) {\n super(\n annotationService,\n componentService,\n configService,\n dialog,\n nodeService,\n notebookService,\n studentAssetService,\n dataService\n );\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n this.initializeComputerAvatar();\n if (this.componentState != null) {\n this.messages = this.componentState.studentData.messages;\n }\n this.initializeMessages();\n }\n\n showInitialMessage(): void {\n this.messages.push(\n new AiChatMessage('assistant', this.component.getComputerAvatarInitialResponse())\n );\n }\n\n private initializeMessages(): void {\n if (this.messages.length === 0) {\n this.messages.push(new AiChatMessage('system', this.componentContent.systemPrompt));\n }\n }\n\n protected async submitStudentResponse(response: string): Promise {\n this.waitingForComputerResponse = true;\n if (this.connectedComponentResponse != null) {\n this.messages.push(new AiChatMessage('user', this.connectedComponentResponse, true));\n this.connectedComponentResponse = null;\n }\n this.messages.push(new AiChatMessage('user', response));\n this.scrollToBottom();\n try {\n const response = await this.aiChatService.sendChatMessage(\n this.messages,\n this.componentContent.model\n );\n this.waitingForComputerResponse = false;\n this.messages.push(new AiChatMessage('assistant', response.choices[0].message.content));\n this.scrollToBottom();\n this.emitComponentSubmitTriggered();\n } catch (error) {\n this.waitingForComputerResponse = false;\n this.snackBar.open($localize`An error occurred.`);\n }\n }\n\n createComponentState(action: any): any {\n const componentState: any = this.createNewComponentState();\n componentState.studentData = {\n messages: this.messages,\n model: this.componentContent.model\n };\n if (this.computerAvatar != null) {\n componentState.studentData.computerAvatarId = this.computerAvatar.id;\n }\n componentState.componentType = 'AiChat';\n componentState.nodeId = this.nodeId;\n componentState.componentId = this.component.id;\n const promise = new Promise((resolve, reject) => {\n return this.createComponentStateAdditionalProcessing(\n { resolve: resolve, reject: reject },\n componentState,\n action\n );\n });\n return promise;\n }\n\n processConnectedComponentState(componentState: any): void {\n this.connectedComponentResponse = componentState.studentData.response;\n }\n\n initializeComputerAvatar: () => void;\n\n private scrollToBottom(): void {\n setTimeout(() => {\n this.messagesContainer.nativeElement.scroll({\n top: this.messagesContainer.nativeElement.scrollHeight,\n behavior: 'smooth'\n });\n }, 100);\n }\n}\n\napplyMixins(AiChatStudentComponent, [ComputerAvatarInitializer]);\n", + "styleUrl": "./ai-chat-student.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "aiChatService", + "type": "AiChatService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "computerAvatarService", + "type": "ComputerAvatarService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentService", + "type": "ComponentService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "notebookService", + "type": "NotebookService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "snackBar", + "type": "MatSnackBar", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentAssetService", + "type": "StudentAssetService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentStatusService", + "type": "StudentStatusService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 46, + "jsdoctags": [ + { + "name": "aiChatService", + "type": "AiChatService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "computerAvatarService", + "type": "ComputerAvatarService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentService", + "type": "ComponentService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "notebookService", + "type": "NotebookService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "snackBar", + "type": "MatSnackBar", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentAssetService", + "type": "StudentAssetService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentStatusService", + "type": "StudentStatusService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "ComponentStudent" + ], + "templateData": "@if (computerAvatarSelectorVisible) {\n \n}\n@if (!computerAvatarSelectorVisible) {\n \n \n
\n \n
\n \n
\n}\n" + }, + { + "name": "AiChatStudentMessageComponent", + "id": "component-AiChatStudentMessageComponent-75f012570429e4b3008d18d33afa5cb4001e58616579ecb863037d76825e00eac78fae020ecdcc735dae5cade265cbaa460ea3f8b058df04d2bca4cc8de98dc2", + "file": "src/assets/wise5/components/aiChat/ai-chat-student-message/ai-chat-student-message.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "ai-chat-student-message", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./ai-chat-student-message.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "message", + "deprecated": false, + "deprecationMessage": "", + "line": 17, + "type": "AiChatMessage", + "decorators": [] + }, + { + "name": "workgroupId", + "deprecated": false, + "deprecationMessage": "", + "line": 18, + "type": "number", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "avatarColor", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 124 + ] + }, + { + "name": "displayNames", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatIcon" + }, + { + "name": "NgStyle" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input } from '@angular/core';\nimport { AiChatMessage } from '../AiChatMessage';\nimport { ConfigService } from '../../../services/configService';\nimport { getAvatarColorForWorkgroupId } from '../../../common/workgroup/workgroup';\nimport { MatIcon } from '@angular/material/icon';\nimport { NgStyle } from '@angular/common';\n\n@Component({\n imports: [MatIcon, NgStyle],\n selector: 'ai-chat-student-message',\n styleUrl: './ai-chat-student-message.component.scss',\n templateUrl: './ai-chat-student-message.component.html'\n})\nexport class AiChatStudentMessageComponent {\n protected avatarColor: string;\n protected displayNames: string;\n @Input() message: AiChatMessage;\n @Input() workgroupId: number;\n\n constructor(private configService: ConfigService) {}\n\n ngOnInit(): void {\n const firstNames = this.configService.getStudentFirstNamesByWorkgroupId(this.workgroupId);\n this.displayNames = firstNames.join(', ');\n this.avatarColor = getAvatarColorForWorkgroupId(this.workgroupId);\n }\n}\n", + "styleUrl": "./ai-chat-student-message.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 18, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "
\n account_circle\n
\n
\n
{{ displayNames }}
\n
\n
\n
\n
\n" + }, + { + "name": "AlertStatusCornerComponent", + "id": "component-AlertStatusCornerComponent-5d53529474777856dc0ac3118fee492363debd91f4231ff4f22015b1d395e58d8457dc990aa799cf178589f37892d9d18f22be1af795b29646c162d5053976e1", + "file": "src/app/classroom-monitor/alert-status-corner/alert-status-corner.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "alert-status-corner", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "alert-status-corner.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "hasNewAlert", + "deprecated": false, + "deprecationMessage": "", + "line": 12, + "type": "boolean", + "decorators": [] + }, + { + "name": "message", + "deprecated": false, + "deprecationMessage": "", + "line": 13, + "type": "string", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [], + "methodsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@Component({\n imports: [CommonModule, MatTooltipModule],\n selector: 'alert-status-corner',\n styleUrl: 'alert-status-corner.scss',\n templateUrl: 'alert-status-corner.component.html'\n})\nexport class AlertStatusCornerComponent {\n @Input() hasNewAlert: boolean;\n @Input() message: string;\n}\n", + "styleUrl": "alert-status-corner.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [], + "templateData": "
\n
\n\n" + }, + { + "name": "AnimationAuthoring", + "id": "component-AnimationAuthoring-655615a416f1a2b7bca3e0fbcf544bd59cec9a40a34e2a71a4508d7a968aadcc468757e496517351ee242815e64e0df2a3f7e60031ba217be79dda7420d1bd00", + "file": "src/assets/wise5/components/animation/animation-authoring/animation-authoring.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "animation-authoring.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "availableDataSourceComponentTypes", + "defaultValue": "['Graph']", + "deprecated": false, + "deprecationMessage": "", + "type": "[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 41 + }, + { + "name": "inputChange", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 42, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "inputChangeSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 43 + }, + { + "name": "stepNodesDetails", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 40 + }, + { + "name": "allowedConnectedComponentTypes", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "idToOrder", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "promptChange", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + } + ], + "methodsClass": [ + { + "name": "addDataPointToObject", + "args": [ + { + "name": "authoredObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 72, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "authoredObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addDataSource", + "args": [ + { + "name": "authoredObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 174, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "authoredObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addDataSourceToAuthoredObject", + "args": [ + { + "name": "authoredObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 202, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "authoredObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addNewDataPoint", + "args": [ + { + "name": "authoredObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 100, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "authoredObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addObject", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 60, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "askIfWantToDeleteDataSource", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 88, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "authoredObjectHasData", + "args": [ + { + "name": "authoredObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 189, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "authoredObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "authoredObjectHasDataSource", + "args": [ + { + "name": "authoredObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 84, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "authoredObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "authoredObjectTypeChanged", + "args": [ + { + "name": "authoredObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 259, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "authoredObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "canMoveDown", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "length", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 159, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "length", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "canMoveUp", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 155, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "confirmDeleteAnimationObject", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 163, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "confirmDeleteAnimationObjectDataPoint", + "args": [ + { + "name": "animationObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 106, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "animationObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "confirmDeleteDataSource", + "args": [ + { + "name": "animationObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 206, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "animationObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "dataSourceComponentChanged", + "args": [ + { + "name": "authoredObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 234, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "authoredObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "dataSourceNodeChanged", + "args": [ + { + "name": "authoredObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 217, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "authoredObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "deleteAnimationObject", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 169, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "deleteAnimationObjectDataPoint", + "args": [ + { + "name": "animationObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 112, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "animationObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "deleteDataAndAddDataSource", + "args": [ + { + "name": "authoredObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 193, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "authoredObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "deleteDataFromAuthoredObject", + "args": [ + { + "name": "authoredObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 198, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "authoredObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "deleteDataSource", + "args": [ + { + "name": "animationObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 212, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "animationObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getComponent", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 286, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "initializeAuthoredObjectDataIfNecessary", + "args": [ + { + "name": "authoredObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 94, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "authoredObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isAvailableDataSourceComponentType", + "args": [ + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 248, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "moveAuthoredObjectDataPointDown", + "args": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 126, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "moveAuthoredObjectDataPointUp", + "args": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 117, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "moveAuthoredObjectDown", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 145, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "moveAuthoredObjectUp", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 135, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "removeImageFromAuthoredObject", + "args": [ + { + "name": "authoredObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 272, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "authoredObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "removeTextFromAuthoredObject", + "args": [ + { + "name": "authoredObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 268, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "authoredObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setDefaultParamsForGraphDataSource", + "args": [ + { + "name": "authoredObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 252, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "authoredObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "assetSelected", + "args": [ + { + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 100, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "componentChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 73, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "confirmAndRemove", + "args": [ + { + "name": "message", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "array", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 110, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "message", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "array", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "deleteStarterState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 81, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "getComponents", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 102, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "isForThisComponent", + "args": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 77, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "moveObjectDown", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 122, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "moveObjectUp", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 117, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 65, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 28, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "promptChanged", + "args": [ + { + "name": "prompt", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 69, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "prompt", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "saveStarterState", + "args": [ + { + "name": "starterState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "starterState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "setShowSubmitButtonValue", + "args": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 85, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "EditComponentPrompt", + "type": "component" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatInput" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatRadioModule", + "type": "module" + }, + { + "name": "MatButton" + }, + { + "name": "MatTooltip" + }, + { + "name": "MatIcon" + }, + { + "name": "TranslatableInputComponent", + "type": "component" + }, + { + "name": "TranslatableAssetChooserComponent", + "type": "component" + }, + { + "name": "MatSelectModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatButton } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInput } from '@angular/material/input';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { Subject, Subscription } from 'rxjs';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport { EditComponentPrompt } from '../../../../../app/authoring-tool/edit-component-prompt/edit-component-prompt.component';\nimport { ProjectAssetService } from '../../../../../app/services/projectAssetService';\nimport { AbstractComponentAuthoring } from '../../../authoringTool/components/AbstractComponentAuthoring';\nimport { TranslatableAssetChooserComponent } from '../../../authoringTool/components/translatable-asset-chooser/translatable-asset-chooser.component';\nimport { TranslatableInputComponent } from '../../../authoringTool/components/translatable-input/translatable-input.component';\nimport { generateRandomKey } from '../../../common/string/string';\nimport { ConfigService } from '../../../services/configService';\nimport { TeacherNodeService } from '../../../services/teacherNodeService';\nimport { TeacherProjectService } from '../../../services/teacherProjectService';\n\n@Component({\n templateUrl: 'animation-authoring.component.html',\n styleUrl: 'animation-authoring.component.scss',\n imports: [\n EditComponentPrompt,\n MatFormFieldModule,\n MatInput,\n FormsModule,\n MatRadioModule,\n MatButton,\n MatTooltip,\n MatIcon,\n TranslatableInputComponent,\n TranslatableAssetChooserComponent,\n MatSelectModule\n ]\n})\nexport class AnimationAuthoring extends AbstractComponentAuthoring {\n stepNodesDetails: string[];\n availableDataSourceComponentTypes = ['Graph'];\n inputChange: Subject = new Subject();\n inputChangeSubscription: Subscription;\n\n constructor(\n protected configService: ConfigService,\n protected nodeService: TeacherNodeService,\n protected projectAssetService: ProjectAssetService,\n protected projectService: TeacherProjectService\n ) {\n super(configService, nodeService, projectAssetService, projectService);\n this.stepNodesDetails = this.projectService.getStepNodesDetailsInOrder();\n this.inputChangeSubscription = this.inputChange\n .pipe(debounceTime(1000), distinctUntilChanged())\n .subscribe(() => {\n this.componentChanged();\n });\n }\n\n addObject(): void {\n if (this.componentContent.objects == null) {\n this.componentContent.objects = [];\n }\n const newObject = {\n id: generateRandomKey(),\n type: 'image'\n };\n this.componentContent.objects.push(newObject);\n this.componentChanged();\n }\n\n addDataPointToObject(authoredObject: any): void {\n if (this.authoredObjectHasDataSource(authoredObject)) {\n if (this.askIfWantToDeleteDataSource()) {\n delete authoredObject.dataSource;\n this.addNewDataPoint(authoredObject);\n }\n } else {\n this.addNewDataPoint(authoredObject);\n }\n this.componentChanged();\n }\n\n authoredObjectHasDataSource(authoredObject: any): boolean {\n return authoredObject.dataSource != null;\n }\n\n askIfWantToDeleteDataSource(): boolean {\n return confirm(\n $localize`You can only have Data Points or a Data Source. If you add a Data Point, the Data Source will be deleted. Are you sure you want to add a Data Point?`\n );\n }\n\n initializeAuthoredObjectDataIfNecessary(authoredObject: any): void {\n if (authoredObject.data == null) {\n authoredObject.data = [];\n }\n }\n\n addNewDataPoint(authoredObject: any): void {\n this.initializeAuthoredObjectDataIfNecessary(authoredObject);\n const newDataPoint = {};\n authoredObject.data.push(newDataPoint);\n }\n\n confirmDeleteAnimationObjectDataPoint(animationObject: any, index: number): void {\n if (confirm($localize`Are you sure you want to delete this data point?`)) {\n this.deleteAnimationObjectDataPoint(animationObject, index);\n }\n }\n\n deleteAnimationObjectDataPoint(animationObject: any, index: number): void {\n animationObject.data.splice(index, 1);\n this.componentChanged();\n }\n\n moveAuthoredObjectDataPointUp(object: any, index: number): void {\n if (this.canMoveUp(index)) {\n const dataPoint = object.data[index];\n object.data.splice(index, 1);\n object.data.splice(index - 1, 0, dataPoint);\n this.componentChanged();\n }\n }\n\n moveAuthoredObjectDataPointDown(object: any, index: number): void {\n if (this.canMoveDown(index, object.data.length)) {\n const dataPoint = object.data[index];\n object.data.splice(index, 1);\n object.data.splice(index + 1, 0, dataPoint);\n this.componentChanged();\n }\n }\n\n moveAuthoredObjectUp(index: number): void {\n if (this.canMoveUp(index)) {\n const objects = this.componentContent.objects;\n const object = objects[index];\n objects.splice(index, 1);\n objects.splice(index - 1, 0, object);\n this.componentChanged();\n }\n }\n\n moveAuthoredObjectDown(index: number): void {\n const objects = this.componentContent.objects;\n if (this.canMoveDown(index, objects.length)) {\n const object = objects[index];\n objects.splice(index, 1);\n objects.splice(index + 1, 0, object);\n this.componentChanged();\n }\n }\n\n canMoveUp(index: number): boolean {\n return index > 0;\n }\n\n canMoveDown(index: number, length: number): boolean {\n return index < length - 1;\n }\n\n confirmDeleteAnimationObject(index: number): void {\n if (confirm($localize`Are you sure you want to delete this object?`)) {\n this.deleteAnimationObject(index);\n }\n }\n\n deleteAnimationObject(index: number): void {\n this.componentContent.objects.splice(index, 1);\n this.componentChanged();\n }\n\n addDataSource(authoredObject: any): void {\n if (this.authoredObjectHasData(authoredObject)) {\n if (\n confirm(\n $localize`You can only have Data Points or a Data Source. If you add a Data Source, the Data Points will be deleted. Are you sure you want to add a Data Source?`\n )\n ) {\n this.deleteDataAndAddDataSource(authoredObject);\n }\n } else {\n this.deleteDataAndAddDataSource(authoredObject);\n }\n this.componentChanged();\n }\n\n authoredObjectHasData(authoredObject: any): boolean {\n return authoredObject.data != null && authoredObject.data.length > 0;\n }\n\n deleteDataAndAddDataSource(authoredObject: any): void {\n this.deleteDataFromAuthoredObject(authoredObject);\n this.addDataSourceToAuthoredObject(authoredObject);\n }\n\n deleteDataFromAuthoredObject(authoredObject: any): void {\n delete authoredObject.data;\n }\n\n addDataSourceToAuthoredObject(authoredObject: any): void {\n authoredObject.dataSource = {};\n }\n\n confirmDeleteDataSource(animationObject: any): void {\n if (confirm($localize`Are you sure you want to delete the Data Source?`)) {\n this.deleteDataSource(animationObject);\n }\n }\n\n deleteDataSource(animationObject: any): void {\n delete animationObject.dataSource;\n this.componentChanged();\n }\n\n dataSourceNodeChanged(authoredObject: any): void {\n const nodeId = authoredObject.dataSource.nodeId;\n authoredObject.dataSource = {\n nodeId: nodeId\n };\n const components = this.getComponents(nodeId);\n const availableDataSourceComponents = components.filter((component) => {\n return this.availableDataSourceComponentTypes.includes(component.type);\n });\n if (availableDataSourceComponents.length === 1) {\n authoredObject.dataSource.componentId = availableDataSourceComponents[0].id;\n this.dataSourceComponentChanged(authoredObject);\n } else {\n this.componentChanged();\n }\n }\n\n dataSourceComponentChanged(authoredObject: any): void {\n const nodeId = authoredObject.dataSource.nodeId;\n const componentId = authoredObject.dataSource.componentId;\n const component = this.getComponent(nodeId, componentId);\n authoredObject.dataSource = {\n nodeId: nodeId,\n componentId: componentId\n };\n if (this.isAvailableDataSourceComponentType(component.type)) {\n this.setDefaultParamsForGraphDataSource(authoredObject);\n }\n this.componentChanged();\n }\n\n isAvailableDataSourceComponentType(componentType: string) {\n return this.availableDataSourceComponentTypes.includes(componentType);\n }\n\n setDefaultParamsForGraphDataSource(authoredObject: any): void {\n authoredObject.dataSource.trialIndex = 0;\n authoredObject.dataSource.seriesIndex = 0;\n authoredObject.dataSource.tColumnIndex = 0;\n authoredObject.dataSource.xColumnIndex = 1;\n }\n\n authoredObjectTypeChanged(authoredObject: any): void {\n if (authoredObject.type === 'image') {\n this.removeTextFromAuthoredObject(authoredObject);\n } else if (authoredObject.type === 'text') {\n this.removeImageFromAuthoredObject(authoredObject);\n }\n this.componentChanged();\n }\n\n removeTextFromAuthoredObject(authoredObject: any): void {\n delete authoredObject.text;\n }\n\n removeImageFromAuthoredObject(authoredObject: any): void {\n [\n 'image',\n 'width',\n 'height',\n 'imageMovingLeft',\n 'imageMovingRight',\n 'imageMovingUp',\n 'imageMovingDown'\n ].forEach((field) => {\n delete authoredObject[field];\n });\n }\n\n getComponent(nodeId: string, componentId: string): any {\n if (nodeId != null && componentId != null) {\n const component = super.getComponent(nodeId, componentId);\n if (component != null) {\n return component;\n }\n }\n return {};\n }\n}\n", + "styleUrl": "animation-authoring.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeService", + "type": "TeacherNodeService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectAssetService", + "type": "ProjectAssetService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 43, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeService", + "type": "TeacherNodeService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectAssetService", + "type": "ProjectAssetService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "AbstractComponentAuthoring" + ], + "templateData": "\n
\n \n Width (Pixels)\n \n \n \n Height (Pixels)\n \n \n
\n
\n \n Width (Units)\n \n \n \n Height (Units)\n \n \n
\n
\n \n Data Origin X (Pixels)\n \n \n \n Data Origin Y (Pixels)\n \n \n
\n
\n \n \n Screen\n \n \n Cartesian\n \n \n
\n
\n Objects\n \n add\n \n
\n@for (\n object of componentContent.objects;\n track object;\n let objectIndex = $index;\n let isFirst = $first;\n let isLast = $last\n) {\n
\n
\n
\n \n \n Image\n \n \n Text\n \n \n
\n @if (object.type === 'image') {\n
\n \n \n
\n }\n @if (object.type === 'text') {\n \n }\n \n \n arrow_upward\n \n \n arrow_downward\n \n \n delete\n \n
\n @if (object.type === 'image') {\n
\n \n Image Width (Pixels)\n \n \n \n Image Height (Pixels)\n \n \n
\n }\n @if (object.type === 'image') {\n
\n \n \n \n \n
\n }\n
\n \n Location X (Pixels)\n \n \n \n Location Y (Pixels)\n \n \n \n Data X (Units)\n \n \n \n Data Y (Units)\n \n \n
\n
\n Data Points\n \n add\n \n
\n
\n @for (\n dataPoint of object.data;\n track dataPoint;\n let dataPointIndex = $index;\n let isFirst = $first;\n let isLast = $last\n ) {\n
\n \n Time\n \n \n \n X\n \n \n \n Y\n \n \n \n \n
\n \n arrow_upward\n \n \n arrow_downward\n \n \n delete\n \n
\n
\n }\n
\n
\n Data Source\n @if (object.dataSource == null) {\n \n add\n \n }\n @if (object.dataSource != null) {\n \n delete\n \n }\n
\n @if (object.dataSource != null) {\n
\n \n Step\n \n @for (stepNodeDetails of stepNodesDetails; track stepNodeDetails) {\n \n {{ stepNodeDetails.nodePositionAndTitle }}\n \n }\n \n \n \n Component\n \n @for (\n component of getComponents(object.dataSource.nodeId);\n track component;\n let componentIndex = $index\n ) {\n \n {{ componentIndex + 1 }}. {{ component.type }}\n \n }\n \n \n @if (\n getComponent(object.dataSource.nodeId, object.dataSource.componentId).type === 'Graph'\n ) {\n
\n \n Trial Index\n \n \n \n Series Index\n \n \n \n Time Column Index\n \n \n \n X Column Index\n \n \n \n Y Column Index\n \n \n
\n }\n
\n }\n
\n
\n}\n" + }, + { + "name": "AnimationShowWorkComponent", + "id": "component-AnimationShowWorkComponent-77a3d59d70f454e1bc0ebe62da297415c25b03d9d377a991549a4b49fd462479a136cf90fa2443bbc48e8b57f197ae512ee50d0493fd9e4e1e5085905c576166", + "file": "src/assets/wise5/components/animation/animation-show-work/animation-show-work.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "animation-show-work", + "styleUrls": [], + "styles": [], + "template": "@if (playCount != null) {\n
Number of Times Animation Played: {{ playCount }}
\n}\n", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "line": 8, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "componentState", + "deprecated": false, + "deprecationMessage": "", + "line": 9, + "type": "any", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "isRevision", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "line": 10, + "type": "boolean", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 7, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "playCount", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "modifierKind": [ + 124 + ] + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "inheritance": { + "file": "ComponentShowWorkDirective" + } + } + ], + "methodsClass": [ + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 15, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "ngAfterViewInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 33, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentShowWorkDirective" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { ComponentShowWorkDirective } from '../../component-show-work.directive';\n\n@Component({\n selector: 'animation-show-work',\n template: `\n @if (playCount != null) {\n
Number of Times Animation Played: {{ playCount }}
\n }\n `\n})\nexport class AnimationShowWorkComponent extends ComponentShowWorkDirective {\n protected playCount: number;\n\n ngOnInit(): void {\n super.ngOnInit();\n this.playCount = this.componentState.studentData.numTimesPlayClicked;\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [ + "ComponentShowWorkDirective" + ] + }, + { + "name": "AnimationStudent", + "id": "component-AnimationStudent-3b80ec7f1b19b873ace82d528cb5827de67178ec495ccdd55fa711ae6331d8e5b66aee02ad56fdb721cbaa75f1ace487bc0fc34c29d9323dbd8e802c8e1e341b", + "file": "src/assets/wise5/components/animation/animation-student/animation-student.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [ + ".mat-icon { margin: 0px; } " + ], + "templateUrl": [ + "animation-student.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "component", + "deprecated": false, + "deprecationMessage": "", + "line": 24, + "type": "Component", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentState", + "deprecated": false, + "deprecationMessage": "", + "line": 25, + "type": "any", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isDisabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "line": 26, + "type": "boolean", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "mode", + "deprecated": false, + "deprecationMessage": "", + "line": 27, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 28, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "workgroupId", + "deprecated": false, + "deprecationMessage": "", + "line": 29, + "type": "number", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "outputsClass": [ + { + "name": "saveComponentStateEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 30, + "type": "EventEmitter", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "starterStateChangedEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 31, + "type": "EventEmitter", + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "propertiesClass": [ + { + "name": "animationState", + "defaultValue": "'stopped'", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 41 + }, + { + "name": "coordinateSystem", + "defaultValue": "'screen'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 42 + }, + { + "name": "dataXOriginInPixels", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 44 + }, + { + "name": "dataYOriginInPixels", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 45 + }, + { + "name": "draw", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 43 + }, + { + "name": "height", + "defaultValue": "600", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 46 + }, + { + "name": "idToSVGObject", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 47 + }, + { + "name": "idToWhetherAuthoredObjectIsAnimating", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 48 + }, + { + "name": "lastBroadcastTime", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 49 + }, + { + "name": "millisecondsPerDataTime", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 50 + }, + { + "name": "numTimesPlayClicked", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 51 + }, + { + "name": "pixelsPerXUnit", + "defaultValue": "1", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 52 + }, + { + "name": "pixelsPerYUnit", + "defaultValue": "1", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 53 + }, + { + "name": "speedToMillisecondsPerDataTime", + "defaultValue": "{\n 1: 10000,\n 2: 1000,\n 3: 100,\n 4: 10,\n 5: 1\n }", + "deprecated": false, + "deprecationMessage": "", + "type": "object", + "indexKey": "", + "optional": false, + "description": "", + "line": 54 + }, + { + "name": "svgId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 61 + }, + { + "name": "timerText", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 62 + }, + { + "name": "width", + "defaultValue": "800", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 63 + }, + { + "name": "annotationSavedToServerSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 53, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "attachments", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 33, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 34, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 35, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentType", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 36, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isDirty", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 45, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSaveButtonVisible", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 38, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSaveOrSubmitButtonVisible", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 41, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isShowAddToNotebookButton", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 39, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isStudentAttachmentEnabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 46, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmit", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 44, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmitButtonDisabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 42, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmitButtonVisible", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 40, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmitDirty", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 43, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "latestAnnotations", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 48, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "latestComponentState", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 50, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "nodeSubmitClickedSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 54, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "parentStudentWorkIds", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 49, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "prompt", + "deprecated": false, + "deprecationMessage": "", + "type": "SafeHtml", + "indexKey": "", + "optional": false, + "description": "", + "line": 37, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "requestComponentStateSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 52, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "showAddToNotebookButton", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 51, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "studentWorkSavedToServerSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 55, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "submitCounter", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 47, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 56, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "methodsClass": [ + { + "name": "addIdToSVGObject", + "args": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "svgObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 239, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "svgObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addIdToWhetherAuthoredObjectIsAnimating", + "args": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isAnimating", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 243, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "isAnimating", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "animateObject", + "args": [ + { + "name": "authoredObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 554, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "authoredObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "animationCompletedPostProcessing", + "args": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "animateObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 656, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "animateObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "areAnyObjectsAnimating", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 902, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "authoredObjectHasData", + "args": [ + { + "name": "authoredObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 1111, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "authoredObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "authoredObjectHasDataSource", + "args": [ + { + "name": "authoredObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 1115, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "authoredObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "broadcastTime", + "args": [ + { + "name": "t", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 756, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "t", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "calculateTimeDiff", + "args": [ + { + "name": "currentTime", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "futureTime", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 701, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "currentTime", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "futureTime", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "checkIfCanStop", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 896, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "confirmSubmit", + "args": [ + { + "name": "numberOfSubmitsLeft", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 923, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "numberOfSubmitsLeft", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "convertSeriesDataToAnimationData", + "args": [ + { + "name": "seriesData", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "tColumnIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "xColumnIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "yColumnIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 526, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "seriesData", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "tColumnIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "xColumnIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "yColumnIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "convertToCartesianCoordinateSystem", + "args": [ + { + "name": "y", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 1098, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nConvert the y value to the cartesian coordinate system\n", + "description": "

Convert the y value to the cartesian coordinate system

\n", + "jsdoctags": [ + { + "name": { + "pos": 33988, + "end": 33989, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "y" + }, + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 33972, + "end": 33977, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the pixel y value in the screen coordinate system

\n", + "typeExpression": { + "pos": 33978, + "end": 33987, + "kind": 310, + "id": 0, + "flags": 16842752, + "modifierFlagsCache": 0, + "transformFlags": 0, + "type": { + "pos": 33979, + "end": 33986, + "kind": 184, + "id": 0, + "flags": 16777216, + "modifierFlagsCache": 0, + "transformFlags": 1, + "typeName": { + "pos": 33979, + "end": 33986, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "integer" + } + } + } + }, + { + "tagName": { + "pos": 34046, + "end": 34052, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

the pixel y value in the cartesian coordinate system

\n", + "returnType": "unknown" + } + ] + }, + { + "name": "createAutoCommentAnnotation", + "args": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 1011, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\n", + "description": "", + "jsdoctags": [ + { + "name": { + "pos": 31134, + "end": 31138, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "data" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 31119, + "end": 31124, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The annotation data.

\n", + "typeExpression": { + "pos": 31125, + "end": 31133, + "kind": 310, + "id": 0, + "flags": 16842752, + "modifierFlagsCache": 0, + "transformFlags": 0, + "type": { + "pos": 31126, + "end": 31132, + "kind": 151, + "id": 0, + "flags": 16777216, + "transformFlags": 1 + } + } + }, + { + "tagName": { + "pos": 31166, + "end": 31173, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

The auto comment annotation.

\n", + "returnType": "object" + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createAutoScoreAnnotation", + "args": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 991, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\n", + "description": "", + "jsdoctags": [ + { + "name": { + "pos": 30571, + "end": 30575, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "data" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 30556, + "end": 30561, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The annotation data.

\n", + "typeExpression": { + "pos": 30562, + "end": 30570, + "kind": 310, + "id": 0, + "flags": 16842752, + "modifierFlagsCache": 0, + "transformFlags": 0, + "type": { + "pos": 30563, + "end": 30569, + "kind": 151, + "id": 0, + "flags": 16777216, + "transformFlags": 1 + } + } + }, + { + "tagName": { + "pos": 30603, + "end": 30610, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

The auto score annotation.

\n", + "returnType": "object" + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createComponentState", + "args": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 954, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCreate a new component state populated with the student data.\ne.g. 'submit', 'save', 'change'.\n", + "description": "

Create a new component state populated with the student data.\ne.g. 'submit', 'save', 'change'.

\n", + "jsdoctags": [ + { + "name": { + "pos": 29280, + "end": 29286, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "action" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 29265, + "end": 29270, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The action that is triggering creating of this component state\ne.g. 'submit', 'save', 'change'.

\n", + "typeExpression": { + "pos": 29271, + "end": 29279, + "kind": 310, + "id": 0, + "flags": 16842752, + "modifierFlagsCache": 0, + "transformFlags": 0, + "type": { + "pos": 29272, + "end": 29278, + "kind": 154, + "id": 0, + "flags": 16777216, + "transformFlags": 1 + } + } + }, + { + "tagName": { + "pos": 29394, + "end": 29400, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

A promise that will return a component state.

\n", + "returnType": "unknown" + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createComponentStateObject", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 971, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "createSVGImage", + "args": [ + { + "name": "image", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "width", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "height", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 228, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "image", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "width", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "height", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createSVGObjects", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 211, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "createSVGText", + "args": [ + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 232, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "dataXToPixelX", + "args": [ + { + "name": "x", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 252, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nConvert a data x value to a pixel x value.\n", + "description": "

Convert a data x value to a pixel x value.

\n", + "jsdoctags": [ + { + "name": { + "pos": 7555, + "end": 7556, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "x" + }, + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 7539, + "end": 7544, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

An x value in data units.

\n", + "typeExpression": { + "pos": 7545, + "end": 7554, + "kind": 310, + "id": 0, + "flags": 16842752, + "modifierFlagsCache": 0, + "transformFlags": 0, + "type": { + "pos": 7546, + "end": 7553, + "kind": 184, + "id": 0, + "flags": 16777216, + "modifierFlagsCache": 0, + "transformFlags": 1, + "typeName": { + "pos": 7546, + "end": 7553, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "integer" + } + } + } + }, + { + "tagName": { + "pos": 7589, + "end": 7595, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

The x value converted to a pixel coordinate.

\n", + "returnType": "unknown" + } + ] + }, + { + "name": "dataYToPixelY", + "args": [ + { + "name": "y", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 265, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nConvert a data y value to a pixel y value.\n", + "description": "

Convert a data y value to a pixel y value.

\n", + "jsdoctags": [ + { + "name": { + "pos": 7919, + "end": 7920, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "y" + }, + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 7903, + "end": 7908, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

A y value in data units.

\n", + "typeExpression": { + "pos": 7909, + "end": 7918, + "kind": 310, + "id": 0, + "flags": 16842752, + "modifierFlagsCache": 0, + "transformFlags": 0, + "type": { + "pos": 7910, + "end": 7917, + "kind": 184, + "id": 0, + "flags": 16777216, + "modifierFlagsCache": 0, + "transformFlags": 1, + "typeName": { + "pos": 7910, + "end": 7917, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "integer" + } + } + } + }, + { + "tagName": { + "pos": 7952, + "end": 7958, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

The y value converted to a pixel coordinate.

\n", + "returnType": "unknown" + } + ] + }, + { + "name": "displayAndBroadcastTime", + "args": [ + { + "name": "t", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 720, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\n", + "description": "", + "jsdoctags": [ + { + "name": { + "pos": 21538, + "end": 21539, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "t" + }, + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 21523, + "end": 21528, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The time in seconds.

\n", + "typeExpression": { + "pos": 21529, + "end": 21537, + "kind": 310, + "id": 0, + "flags": 16842752, + "modifierFlagsCache": 0, + "transformFlags": 0, + "type": { + "pos": 21530, + "end": 21536, + "kind": 150, + "id": 0, + "flags": 16777216, + "transformFlags": 1 + } + } + } + ] + }, + { + "name": "getDataFromDataSourceComponentState", + "args": [ + { + "name": "dataSource", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 492, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "dataSource", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getDataFromSeries", + "args": [ + { + "name": "series", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 522, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "series", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getImageBasedOnMovement", + "args": [ + { + "name": "authoredObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentDataPoint", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nextDataPoint", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 775, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the image based upon the movement of the object.\n", + "description": "

Get the image based upon the movement of the object.

\n", + "jsdoctags": [ + { + "name": { + "pos": 22945, + "end": 22959, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "authoredObject" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 22930, + "end": 22935, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The object that is being moved.

\n", + "typeExpression": { + "pos": 22936, + "end": 22944, + "kind": 310, + "id": 0, + "flags": 16842752, + "modifierFlagsCache": 0, + "transformFlags": 0, + "type": { + "pos": 22937, + "end": 22943, + "kind": 151, + "id": 0, + "flags": 16777216, + "transformFlags": 1 + } + } + }, + { + "name": { + "pos": 23013, + "end": 23029, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "currentDataPoint" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 22998, + "end": 23003, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

Contains x and y fields.

\n", + "typeExpression": { + "pos": 23004, + "end": 23012, + "kind": 310, + "id": 0, + "flags": 16842752, + "modifierFlagsCache": 0, + "transformFlags": 0, + "type": { + "pos": 23005, + "end": 23011, + "kind": 151, + "id": 0, + "flags": 16777216, + "transformFlags": 1 + } + } + }, + { + "name": "nextDataPoint", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getImageMovingDown", + "args": [ + { + "name": "authoredObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 872, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "authoredObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getImageMovingInX", + "args": [ + { + "name": "authoredObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentDataPoint", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nextDataPoint", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 806, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "authoredObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentDataPoint", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nextDataPoint", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getImageMovingInY", + "args": [ + { + "name": "authoredObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentDataPoint", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nextDataPoint", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 815, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "authoredObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentDataPoint", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nextDataPoint", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getImageMovingLeft", + "args": [ + { + "name": "authoredObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 880, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "authoredObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getImageMovingRight", + "args": [ + { + "name": "authoredObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 888, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "authoredObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getImageMovingUp", + "args": [ + { + "name": "authoredObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 864, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "authoredObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getImageYDecreasing", + "args": [ + { + "name": "authoredObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 856, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "authoredObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getImageYIncreasing", + "args": [ + { + "name": "authoredObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 848, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "authoredObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getPixelXForAuthoredObject", + "args": [ + { + "name": "authoredObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 292, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "authoredObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getPixelYForAuthoredObject", + "args": [ + { + "name": "authoredObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 302, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "authoredObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getSeriesFromTrial", + "args": [ + { + "name": "trial", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "seriesIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 518, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "trial", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "seriesIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getSVGObject", + "args": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 312, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getTimerTextX", + "args": [ + { + "name": "time", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 399, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the x pixel coordinate based upon the number of digits of the time.\n", + "description": "

Get the x pixel coordinate based upon the number of digits of the time.

\n", + "jsdoctags": [ + { + "name": { + "pos": 11786, + "end": 11790, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "time" + }, + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 11771, + "end": 11776, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The time in seconds.

\n", + "typeExpression": { + "pos": 11777, + "end": 11785, + "kind": 310, + "id": 0, + "flags": 16842752, + "modifierFlagsCache": 0, + "transformFlags": 0, + "type": { + "pos": 11778, + "end": 11784, + "kind": 150, + "id": 0, + "flags": 16777216, + "transformFlags": 1 + } + } + }, + { + "tagName": { + "pos": 11818, + "end": 11825, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

The x pixel coordinate.

\n", + "returnType": "number" + } + ] + }, + { + "name": "getTrialFromComponentState", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "trialIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 509, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "trialIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "hasDataPointAtTimeZero", + "args": [ + { + "name": "data", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 316, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "data", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "incrementNumTimesPlayClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1034, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "initializeCoordinates", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 151, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "initializeCoordinateSystem", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 196, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "initializeDataXOrigin", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 178, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "initializeDataYOrigin", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 187, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "initializeHeightValues", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 167, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "initializeObjectImages", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 364, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "initializeObjectPosition", + "args": [ + { + "name": "authoredObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 273, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "authoredObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "initializeObjectPositions", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 373, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "initializeTimerText", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 390, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "initializeWidthValues", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 159, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isComponentStateFromDataSource", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dataSource", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 466, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dataSource", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isFieldDecreasing", + "args": [ + { + "name": "currentDataPoint", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nextDataPoint", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "fieldName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 844, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "currentDataPoint", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nextDataPoint", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "fieldName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isFieldIncreasing", + "args": [ + { + "name": "currentDataPoint", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nextDataPoint", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "fieldName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 840, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "currentDataPoint", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nextDataPoint", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "fieldName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isFirstDataPoint", + "args": [ + { + "name": "d", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 709, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "d", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isLastDataPoint", + "args": [ + { + "name": "data", + "type": "number[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "d", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 713, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "data", + "type": "number[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "d", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isMovingLeft", + "args": [ + { + "name": "currentDataPoint", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nextDataPoint", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 828, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "currentDataPoint", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nextDataPoint", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isMovingRight", + "args": [ + { + "name": "currentDataPoint", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nextDataPoint", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 824, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "currentDataPoint", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nextDataPoint", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isObjectMovingOnlyInXDirection", + "args": [ + { + "name": "currentDataPoint", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nextDataPoint", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 784, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "currentDataPoint", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nextDataPoint", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isObjectMovingOnlyInYDirection", + "args": [ + { + "name": "currentDataPoint", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nextDataPoint", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 791, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "currentDataPoint", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nextDataPoint", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isPerformBroadcast", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 746, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if we want to broadcast the time. We want to make sure we don't broadcast the time too\nfrequently because that may slow down the student's computer significantly. We will wait 100\nmilliseconds before each broadcast.\n", + "description": "

Check if we want to broadcast the time. We want to make sure we don't broadcast the time too\nfrequently because that may slow down the student's computer significantly. We will wait 100\nmilliseconds before each broadcast.

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 22298, + "end": 22305, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "", + "returnType": "boolean" + } + ] + }, + { + "name": "isUsingCartesianCoordinateSystem", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 1089, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isXDataPointSame", + "args": [ + { + "name": "currentDataPoint", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nextDataPoint", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 798, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "currentDataPoint", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nextDataPoint", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isYDataPointSame", + "args": [ + { + "name": "currentDataPoint", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nextDataPoint", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 802, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "currentDataPoint", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nextDataPoint", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isYDecreasing", + "args": [ + { + "name": "currentDataPoint", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nextDataPoint", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 836, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "currentDataPoint", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nextDataPoint", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isYIncreasing", + "args": [ + { + "name": "currentDataPoint", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nextDataPoint", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 832, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "currentDataPoint", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nextDataPoint", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngAfterViewInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 115, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 119, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 88, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "pauseButtonClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1038, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "playButtonClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1027, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "processConnectedComponentState", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 451, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "resetButtonClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1059, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "resumeButtonClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1046, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "setAnimationState", + "args": [ + { + "name": "state", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 123, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "state", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setAnimationStateToPaused", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 131, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "setAnimationStateToPlaying", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 127, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "setAnimationStateToStopped", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 135, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "setCoordinateSystem", + "args": [ + { + "name": "coordinateSystem", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 139, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "coordinateSystem", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setCoordinateSystemToCartesian", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 147, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "setCoordinateSystemToScreen", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 143, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "setDataFromGraphComponentState", + "args": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 484, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setDataFromTableComponentState", + "args": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 488, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setInitialPositionOfSVGObject", + "args": [ + { + "name": "t", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "svgObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "xPixel", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "yPixel", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 616, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "t", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "svgObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "xPixel", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "yPixel", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setPositionFromDataPoint", + "args": [ + { + "name": "svgObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dataPoint", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 325, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "svgObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dataPoint", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setPositionOfSVGObject", + "args": [ + { + "name": "svgObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "x", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "y", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 344, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "svgObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "x", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "y", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setSpeed", + "args": [ + { + "name": "speedSliderValue", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1107, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "speedSliderValue", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setStudentWork", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 915, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nPopulate the student work into the component.\n", + "description": "

Populate the student work into the component.

\n", + "jsdoctags": [ + { + "name": { + "pos": 27765, + "end": 27779, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 27750, + "end": 27755, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The component state to populate into the component.

\n", + "typeExpression": { + "pos": 27756, + "end": 27764, + "kind": 310, + "id": 0, + "flags": 16842752, + "modifierFlagsCache": 0, + "transformFlags": 0, + "type": { + "pos": 27757, + "end": 27763, + "kind": 151, + "id": 0, + "flags": 16777216, + "transformFlags": 1 + } + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setTimerPosition", + "args": [ + { + "name": "x", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "y", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 423, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\n", + "description": "", + "jsdoctags": [ + { + "name": { + "pos": 12374, + "end": 12375, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "x" + }, + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 12358, + "end": 12363, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The x pixel coordinate.

\n", + "typeExpression": { + "pos": 12364, + "end": 12373, + "kind": 310, + "id": 0, + "flags": 16842752, + "modifierFlagsCache": 0, + "transformFlags": 0, + "type": { + "pos": 12365, + "end": 12372, + "kind": 184, + "id": 0, + "flags": 16777216, + "modifierFlagsCache": 0, + "transformFlags": 1, + "typeName": { + "pos": 12365, + "end": 12372, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "integer" + } + } + } + }, + { + "name": { + "pos": 12422, + "end": 12423, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "y" + }, + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 12406, + "end": 12411, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The y pixel coordinate.

\n", + "typeExpression": { + "pos": 12412, + "end": 12421, + "kind": 310, + "id": 0, + "flags": 16842752, + "modifierFlagsCache": 0, + "transformFlags": 0, + "type": { + "pos": 12413, + "end": 12420, + "kind": 184, + "id": 0, + "flags": 16777216, + "modifierFlagsCache": 0, + "transformFlags": 1, + "typeName": { + "pos": 12413, + "end": 12420, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "integer" + } + } + } + } + ] + }, + { + "name": "setTimerText", + "args": [ + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 415, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setupSVG", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 205, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "setXPositionOfSVGObject", + "args": [ + { + "name": "svgObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "x", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 348, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "svgObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "x", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setYPositionOfSVGObject", + "args": [ + { + "name": "svgObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "y", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 352, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "svgObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "y", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "showTimeInSVG", + "args": [ + { + "name": "time", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 379, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "time", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "speedSliderChanged", + "args": [ + { + "name": "speedValue", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1102, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "speedValue", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "startAnimation", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 356, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentDataChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 939, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "truncateToOneDecimalPlace", + "args": [ + { + "name": "timeInSeconds", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 736, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\n", + "description": "", + "jsdoctags": [ + { + "name": { + "pos": 21915, + "end": 21928, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "timeInSeconds" + }, + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 21900, + "end": 21905, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "", + "typeExpression": { + "pos": 21906, + "end": 21914, + "kind": 310, + "id": 0, + "flags": 16842752, + "modifierFlagsCache": 0, + "transformFlags": 0, + "type": { + "pos": 21907, + "end": 21913, + "kind": 150, + "id": 0, + "flags": 16777216, + "transformFlags": 1 + } + } + } + ] + }, + { + "name": "updateImageOfSVGObject", + "args": [ + { + "name": "image", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "animateObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "svgObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "authoredObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentDataPoint", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nextDataPoint", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 663, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "image", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "animateObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "svgObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "authoredObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentDataPoint", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nextDataPoint", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "updateObjectDataFromDataSource", + "args": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 435, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "updateObjectDataFromDataSourceComponentState", + "args": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 478, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "updateObjectDatasFromDataSourceComponentState", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 455, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "updateObjectDatasFromDataSources", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 427, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "updatePositionOfSVGObject", + "args": [ + { + "name": "svgObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "animateObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "t", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "tDiff", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nextXPixel", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nextYPixel", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 637, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "svgObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "animateObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "t", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "tDiff", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nextXPixel", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nextYPixel", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "updateSVGObjectImage", + "args": [ + { + "name": "image", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "svgObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "animateObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 688, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "image", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "svgObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "animateObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addDefaultFeedback", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 688, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "attachStudentAsset", + "args": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 232, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "broadcastDoneRenderingComponent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 325, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "canSubmit", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 488, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "clearLatestComponentState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 555, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "connectedComponentStudentDataSaved", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 796, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nThis function is called when a connected component of this component saves student data.\nThis was added to handle a race condition when a step has a connected component on a previous\nstep but the connected component student work on the previous step was not being imported\nbecause it wasn't being saved in time.\nHere is an example of what was happening\n- Student generates work on step 1 but does not click the save button\n- Student goes to step 2 which triggers a promise to save the student work on step 1\n- Step 2 is loaded and checks if there is any work it needs to import from step 1\n- The work in step 1 has not saved yet so step 2 does not import any work and loads without\n importing any work\n- The work from step 1 is then saved\nHere is the additional process that this function performs to fix this problem\n- Step 2 listens for when work is saved on step 1\n- When the work for step 1 is saved, step 2 checks to see if it needs to import that work\n", + "description": "

This function is called when a connected component of this component saves student data.\nThis was added to handle a race condition when a step has a connected component on a previous\nstep but the connected component student work on the previous step was not being imported\nbecause it wasn't being saved in time.\nHere is an example of what was happening

\n
    \n
  • Student generates work on step 1 but does not click the save button
  • \n
  • Student goes to step 2 which triggers a promise to save the student work on step 1
  • \n
  • Step 2 is loaded and checks if there is any work it needs to import from step 1
  • \n
  • The work in step 1 has not saved yet so step 2 does not import any work and loads without\nimporting any work
  • \n
  • The work from step 1 is then saved\nHere is the additional process that this function performs to fix this problem
  • \n
  • Step 2 listens for when work is saved on step 1
  • \n
  • When the work for step 1 is saved, step 2 checks to see if it needs to import that work
  • \n
\n", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "copyAndAttachStudentAsset", + "args": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 218, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "copyPublicNotebookItem", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 632, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "copyPublicNotebookItemButtonClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 747, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createComponentStateAdditionalProcessing", + "args": [ + { + "name": "promise", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 598, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "promise", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createComponentStateAndBroadcast", + "args": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 559, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createDefaultFeedbackAnnotation", + "args": [ + { + "name": "feedbackText", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 706, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "feedbackText", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createMergedComponentState", + "args": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 377, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createNewComponentState", + "args": [], + "optional": false, + "returnType": "Partial", + "typeParameters": [], + "line": 818, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "disableAllInput", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 492, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "disableComponentIfNecessary", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 332, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "disableSubmitButton", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 496, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "doAttachStudentAsset", + "args": [ + { + "name": "studentAssetRequest", + "type": "StudentAssetRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 212, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "studentAssetRequest", + "type": "StudentAssetRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 541, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentStudentDataChanged", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 572, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentSubmitDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 548, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentSubmitTriggered", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 512, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "generateImageFromComponentState", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 615, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nRender the component state and then generate an image from it.\n", + "description": "

Render the component state and then generate an image from it.

\n", + "jsdoctags": [ + { + "name": { + "pos": 18804, + "end": 18818, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 18798, + "end": 18803, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The component state to render.

\n" + }, + { + "tagName": { + "pos": 18856, + "end": 18862, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

A promise that will return an image.

\n" + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "generateStarterState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 216, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getAction", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 321, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getClientSaveTime", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 684, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getComponentStatePromise", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 309, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getComponentStateWrapper", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "ComponentStateWrapper", + "typeParameters": [], + "line": 301, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getDefaultFeedback", + "args": [ + { + "name": "submitCount", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 702, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "submitCount", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getElementById", + "args": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getFirstResult", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 758, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "getFirstResult", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getIsDirty", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 277, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getMaxScore", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 680, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getMaxSubmitCount", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 460, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getNumberOfSubmitsLeft", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 456, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "handleConnectedComponents", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 352, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "handleConnectedComponentsPostProcess", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 385, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "handleStudentWorkSavedToServer", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 263, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "handleStudentWorkSavedToServerAdditionalProcessing", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 287, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasAnySubmissions", + "args": [ + { + "name": "componentStates", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 344, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentStates", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasDefaultFeedback", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 695, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasMaxScore", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 676, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasMaxSubmitCount", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 437, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasMaxSubmitCountAndUsedAllSubmits", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 452, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasSubmitMessage", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 504, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasSubmitsLeft", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 500, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasUsedAllSubmits", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 441, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "importWorkAsBackground", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 658, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "importWorkByStudentWorkId", + "args": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 170, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "incrementSubmitCounter", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 389, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isAddToNotebookEnabled", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 624, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isForThisComponent", + "args": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 192, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isFromConnectedComponent", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 766, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isHandleConnectedComponentAfterConnectedComponentStudentDataSaved", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 802, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isLockAfterSubmit", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 348, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isNotebookEnabled", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 643, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isPreviewMode", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 109, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSameComponent", + "args": [ + { + "name": "component", + "type": "Component", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 188, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "component", + "type": "Component", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isStudentNoteClippingEnabled", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 647, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isWorkFromClassmate", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 196, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "lockIfNecessary", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 281, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "performSubmit", + "args": [ + { + "name": "submitTriggeredBy", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 472, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "submitTriggeredBy", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "processLatestStudentWork", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 580, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "registerNotebookItemChosenListener", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 736, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "removeAttachment", + "args": [ + { + "name": "attachment", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 245, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "attachment", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "saveButtonClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 393, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "saveForAuthoringPreviewMode", + "args": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 404, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setBackgroundImage", + "args": [ + { + "name": "image", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 674, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "image", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setComponentStateAsBackgroundImage", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 668, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 537, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsDirtyAndBroadcast", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 527, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsSubmit", + "args": [ + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 464, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsSubmitDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 508, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsSubmitDirtyAndBroadcast", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 532, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setParentStudentWorkIdToCurrentStudentWork", + "args": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 180, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setSubmitCounter", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 811, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "shouldCreateComponentState", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 317, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "showStudentAssets", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 651, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "submit", + "args": [ + { + "name": "submitTriggeredBy", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 416, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "submitTriggeredBy", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "submitButtonClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 412, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToAnnotationSavedToServer", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 123, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToAttachStudentAsset", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 200, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToNodeSubmitClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 137, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToNotebookItemChosen", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 159, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToNotifyConnectedComponents", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 147, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToRequestComponentState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 289, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToStudentWorkSavedToServer", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 252, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToSubscriptions", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 113, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "tryDisableComponent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 445, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "ComponentHeaderComponent", + "type": "component" + }, + { + "name": "MatButton" + }, + { + "name": "MatTooltip" + }, + { + "name": "MatIcon" + }, + { + "name": "MatSlider" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatSliderThumb" + }, + { + "name": "NgStyle" + }, + { + "name": "ComponentSaveSubmitButtonsComponent", + "type": "component" + }, + { + "name": "ComponentAnnotationsComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import SVG from 'svg.js';\nimport { Component } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { AnnotationService } from '../../../services/annotationService';\nimport { ConfigService } from '../../../services/configService';\nimport { NodeService } from '../../../services/nodeService';\nimport { NotebookService } from '../../../services/notebookService';\nimport { StudentAssetService } from '../../../services/studentAssetService';\nimport { StudentDataService } from '../../../services/studentDataService';\nimport { ComponentStudent } from '../../component-student.component';\nimport { ComponentService } from '../../componentService';\nimport { AnimationService } from '../animationService';\nimport { hasConnectedComponent } from '../../../common/ComponentContent';\nimport { ComponentHeaderComponent } from '../../../directives/component-header/component-header.component';\nimport { MatButton } from '@angular/material/button';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatSlider, MatSliderThumb } from '@angular/material/slider';\nimport { FormsModule } from '@angular/forms';\nimport { NgStyle } from '@angular/common';\nimport { ComponentSaveSubmitButtonsComponent } from '../../../directives/component-save-submit-buttons/component-save-submit-buttons.component';\nimport { ComponentAnnotationsComponent } from '../../../directives/componentAnnotations/component-annotations.component';\n\n@Component({\n imports: [\n ComponentHeaderComponent,\n MatButton,\n MatTooltip,\n MatIcon,\n MatSlider,\n FormsModule,\n MatSliderThumb,\n NgStyle,\n ComponentSaveSubmitButtonsComponent,\n ComponentAnnotationsComponent\n ],\n styles: ['.mat-icon { margin: 0px; } '],\n templateUrl: 'animation-student.component.html'\n})\nexport class AnimationStudent extends ComponentStudent {\n animationState: any = 'stopped';\n coordinateSystem: string = 'screen';\n draw: any;\n dataXOriginInPixels: number = 0;\n dataYOriginInPixels: number = 0;\n height: number = 600;\n idToSVGObject: any = {};\n idToWhetherAuthoredObjectIsAnimating: any = {};\n lastBroadcastTime: number;\n millisecondsPerDataTime: number;\n numTimesPlayClicked: number = 0;\n pixelsPerXUnit: number = 1;\n pixelsPerYUnit: number = 1;\n speedToMillisecondsPerDataTime = {\n 1: 10000,\n 2: 1000,\n 3: 100,\n 4: 10,\n 5: 1\n };\n svgId: string;\n timerText: any;\n width: number = 800;\n\n constructor(\n private animationService: AnimationService,\n protected annotationService: AnnotationService,\n protected componentService: ComponentService,\n protected configService: ConfigService,\n protected dialog: MatDialog,\n protected nodeService: NodeService,\n protected notebookService: NotebookService,\n protected studentAssetService: StudentAssetService,\n protected studentDataService: StudentDataService\n ) {\n super(\n annotationService,\n componentService,\n configService,\n dialog,\n nodeService,\n notebookService,\n studentAssetService,\n studentDataService\n );\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n const domIdEnding = this.animationService.getDomIdEnding(\n this.nodeId,\n this.componentId,\n this.componentState\n );\n this.svgId = this.animationService.getSvgId(domIdEnding);\n this.initializeCoordinates();\n\n if (hasConnectedComponent(this.componentContent, 'showWork')) {\n this.handleConnectedComponents();\n } else if (\n this.animationService.componentStateHasStudentWork(this.componentState, this.componentContent)\n ) {\n this.setStudentWork(this.componentState);\n } else if (this.component.hasConnectedComponent()) {\n this.handleConnectedComponents();\n }\n\n if (this.hasMaxSubmitCountAndUsedAllSubmits()) {\n this.disableSubmitButton();\n }\n this.disableComponentIfNecessary();\n this.broadcastDoneRenderingComponent();\n }\n\n ngAfterViewInit(): void {\n this.setupSVG();\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n\n setAnimationState(state: string): void {\n this.animationState = state;\n }\n\n setAnimationStateToPlaying(): void {\n this.setAnimationState('playing');\n }\n\n setAnimationStateToPaused(): void {\n this.setAnimationState('paused');\n }\n\n setAnimationStateToStopped(): void {\n this.setAnimationState('stopped');\n }\n\n setCoordinateSystem(coordinateSystem: string): void {\n this.coordinateSystem = coordinateSystem;\n }\n\n setCoordinateSystemToScreen(): void {\n this.setCoordinateSystem('screen');\n }\n\n setCoordinateSystemToCartesian(): void {\n this.setCoordinateSystem('cartesian');\n }\n\n initializeCoordinates(): void {\n this.initializeWidthValues();\n this.initializeHeightValues();\n this.initializeDataXOrigin();\n this.initializeDataYOrigin();\n this.initializeCoordinateSystem();\n }\n\n initializeWidthValues(): void {\n if (this.componentContent.widthInPixels != null && this.componentContent.widthInPixels !== '') {\n this.width = this.componentContent.widthInPixels;\n this.pixelsPerXUnit =\n this.componentContent.widthInPixels / this.componentContent.widthInUnits;\n }\n }\n\n initializeHeightValues(): void {\n if (\n this.componentContent.heightInPixels != null &&\n this.componentContent.heightInPixels !== ''\n ) {\n this.height = this.componentContent.heightInPixels;\n this.pixelsPerYUnit =\n this.componentContent.heightInPixels / this.componentContent.heightInUnits;\n }\n }\n\n initializeDataXOrigin(): void {\n if (\n this.componentContent.dataXOriginInPixels != null &&\n this.componentContent.dataXOriginInPixels !== ''\n ) {\n this.dataXOriginInPixels = this.componentContent.dataXOriginInPixels;\n }\n }\n\n initializeDataYOrigin(): void {\n if (\n this.componentContent.dataYOriginInPixels != null &&\n this.componentContent.dataYOriginInPixels !== ''\n ) {\n this.dataYOriginInPixels = this.componentContent.dataYOriginInPixels;\n }\n }\n\n initializeCoordinateSystem(): void {\n if (\n this.componentContent.coordinateSystem != null &&\n this.componentContent.coordinateSystem !== ''\n ) {\n this.coordinateSystem = this.componentContent.coordinateSystem;\n }\n }\n\n setupSVG(): void {\n this.draw = SVG(this.svgId);\n this.createSVGObjects();\n this.updateObjectDatasFromDataSources();\n }\n\n createSVGObjects(): void {\n for (const object of this.componentContent.objects) {\n let svgObject = null;\n const type = object.type;\n if (type === 'image') {\n svgObject = this.createSVGImage(object.image, object.width, object.height);\n } else if (type === 'text') {\n svgObject = this.createSVGText(object.text);\n }\n\n const id = object.id;\n this.addIdToSVGObject(id, svgObject);\n this.addIdToWhetherAuthoredObjectIsAnimating(id, false);\n this.initializeObjectPosition(object);\n }\n }\n\n createSVGImage(image: string, width: number, height: number): any {\n return this.draw.image(image, width, height);\n }\n\n createSVGText(text: string): any {\n if (text == null) {\n text = '';\n }\n return this.draw.text(text);\n }\n\n addIdToSVGObject(id: string, svgObject: any): void {\n this.idToSVGObject[id] = svgObject;\n }\n\n addIdToWhetherAuthoredObjectIsAnimating(id: string, isAnimating: boolean): void {\n this.idToWhetherAuthoredObjectIsAnimating[id] = isAnimating;\n }\n\n /**\n * Convert a data x value to a pixel x value.\n * @param {integer} x An x value in data units.\n * @return {integer} The x value converted to a pixel coordinate.\n */\n dataXToPixelX(x: number): number {\n if (x == null) {\n return this.dataXOriginInPixels;\n } else {\n return this.dataXOriginInPixels + x * this.pixelsPerXUnit;\n }\n }\n\n /**\n * Convert a data y value to a pixel y value.\n * @param {integer} y A y value in data units.\n * @return {integer} The y value converted to a pixel coordinate.\n */\n dataYToPixelY(y: number): number {\n if (y == null) {\n return this.dataYOriginInPixels;\n } else {\n return this.dataYOriginInPixels + y * this.pixelsPerYUnit;\n }\n }\n\n initializeObjectPosition(authoredObject: any): void {\n const x = this.getPixelXForAuthoredObject(authoredObject);\n let y = this.getPixelYForAuthoredObject(authoredObject);\n if (this.isUsingCartesianCoordinateSystem()) {\n y = this.convertToCartesianCoordinateSystem(y);\n }\n\n const svgObject = this.getSVGObject(authoredObject.id);\n this.setPositionOfSVGObject(svgObject, x, y);\n\n if (this.authoredObjectHasData(authoredObject)) {\n const data = authoredObject.data;\n if (this.hasDataPointAtTimeZero(data)) {\n const firstDataPoint = data[0];\n this.setPositionFromDataPoint(svgObject, firstDataPoint);\n }\n }\n }\n\n getPixelXForAuthoredObject(authoredObject: any): number {\n const dataX = authoredObject.dataX;\n const pixelX = authoredObject.pixelX;\n if (dataX != null) {\n return this.dataXToPixelX(dataX);\n } else if (pixelX != null) {\n return pixelX;\n }\n }\n\n getPixelYForAuthoredObject(authoredObject: any): number {\n const dataY = authoredObject.dataY;\n const pixelY = authoredObject.pixelY;\n if (dataY != null) {\n return this.dataYToPixelY(dataY);\n } else if (pixelY != null) {\n return pixelY;\n }\n }\n\n getSVGObject(id: string): any {\n return this.idToSVGObject[id];\n }\n\n hasDataPointAtTimeZero(data: any[]): boolean {\n const firstDataPoint = data[0];\n if (firstDataPoint != null && firstDataPoint.t === 0) {\n return true;\n } else {\n return false;\n }\n }\n\n setPositionFromDataPoint(svgObject: any, dataPoint: any): void {\n let dataPointX = dataPoint.x;\n let dataPointY = dataPoint.y;\n if (dataPointX != null && dataPointX != '' && typeof dataPointX != 'undefined') {\n const dataPointXInPixels = this.dataXToPixelX(dataPointX);\n this.setXPositionOfSVGObject(svgObject, dataPointXInPixels);\n }\n\n if (dataPointY != null && dataPointY != '' && typeof dataPointY != 'undefined') {\n let dataPointYInPixels = this.dataYToPixelY(dataPointY);\n\n if (this.isUsingCartesianCoordinateSystem()) {\n dataPointYInPixels = this.convertToCartesianCoordinateSystem(dataPointYInPixels);\n }\n\n this.setYPositionOfSVGObject(svgObject, dataPointYInPixels);\n }\n }\n\n setPositionOfSVGObject(svgObject: any, x: number, y: number): void {\n svgObject.attr({ x: x, y: y });\n }\n\n setXPositionOfSVGObject(svgObject: any, x: number) {\n svgObject.attr('x', x);\n }\n\n setYPositionOfSVGObject(svgObject: any, y: number) {\n svgObject.attr('y', y);\n }\n\n startAnimation() {\n this.initializeObjectImages();\n this.initializeObjectPositions();\n for (const authoredObject of this.componentContent.objects) {\n this.animateObject(authoredObject);\n }\n }\n\n initializeObjectImages(): void {\n for (const object of this.componentContent.objects) {\n if (object.type === 'image') {\n const svgObject = this.idToSVGObject[object.id];\n svgObject.load(object.image);\n }\n }\n }\n\n initializeObjectPositions(): void {\n for (const object of this.componentContent.objects) {\n this.initializeObjectPosition(object);\n }\n }\n\n showTimeInSVG(time: number): void {\n if (this.timerText == null) {\n this.initializeTimerText();\n }\n\n this.setTimerText(time + '');\n const x = this.getTimerTextX(time);\n const y = 0;\n this.setTimerPosition(x, y);\n }\n\n initializeTimerText(): void {\n this.timerText = this.draw.text('0').attr({ fill: '#f03' });\n }\n\n /**\n * Get the x pixel coordinate based upon the number of digits of the time.\n * @param {number} time The time in seconds.\n * @returns {number} The x pixel coordinate.\n */\n getTimerTextX(time: number): number {\n const width = this.width;\n\n // set the x position near the top right of the svg div\n let x = width - 30;\n\n if (time >= 100) {\n // shift the text to the left if there are three digits\n x = width - 46;\n } else if (time >= 10) {\n // shift the text a little to the left if there are two digits\n x = width - 38;\n }\n return x;\n }\n\n setTimerText(text: string): void {\n this.timerText.text(text);\n }\n\n /**\n * @param {integer} x The x pixel coordinate.\n * @param {integer} y The y pixel coordinate.\n */\n setTimerPosition(x: number, y: number): void {\n this.timerText.attr({ x: x, y: y });\n }\n\n updateObjectDatasFromDataSources(): void {\n for (const object of this.componentContent.objects) {\n if (this.authoredObjectHasDataSource(object)) {\n this.updateObjectDataFromDataSource(object);\n }\n }\n }\n\n updateObjectDataFromDataSource(object: any): void {\n const dataSource = object.dataSource;\n const componentState = this.studentDataService.getLatestComponentStateByNodeIdAndComponentId(\n dataSource.nodeId,\n dataSource.componentId\n );\n\n if (componentState != null) {\n if (componentState.componentType == 'Graph') {\n this.setDataFromGraphComponentState(object, componentState);\n } else if (componentState.componentType == 'Table') {\n this.setDataFromTableComponentState(object, componentState);\n }\n }\n }\n\n processConnectedComponentState(componentState: any): void {\n this.updateObjectDatasFromDataSourceComponentState(componentState);\n }\n\n updateObjectDatasFromDataSourceComponentState(componentState: any): void {\n for (const object of this.componentContent.objects) {\n if (\n this.authoredObjectHasDataSource(object) &&\n this.isComponentStateFromDataSource(componentState, object.dataSource)\n ) {\n this.updateObjectDataFromDataSourceComponentState(object, componentState);\n }\n }\n }\n\n isComponentStateFromDataSource(componentState: any, dataSource: any): boolean {\n if (\n dataSource != null &&\n dataSource.nodeId == componentState.nodeId &&\n dataSource.componentId == componentState.componentId\n ) {\n return true;\n } else {\n return false;\n }\n }\n\n updateObjectDataFromDataSourceComponentState(object: any, componentState: any): void {\n if (componentState.componentType === 'Graph') {\n this.setDataFromGraphComponentState(object, componentState);\n }\n }\n\n setDataFromGraphComponentState(object: any, componentState: any): void {\n object.data = this.getDataFromDataSourceComponentState(object.dataSource, componentState);\n }\n\n setDataFromTableComponentState(object: any, componentState: any): void {\n // TODO\n }\n\n getDataFromDataSourceComponentState(dataSource: any, componentState: any): any {\n const trialIndex = dataSource.trialIndex;\n const seriesIndex = dataSource.seriesIndex;\n const tColumnIndex = dataSource.tColumnIndex;\n const xColumnIndex = dataSource.xColumnIndex;\n const yColumnIndex = dataSource.yColumnIndex;\n const trial = this.getTrialFromComponentState(componentState, trialIndex);\n const singleSeries = this.getSeriesFromTrial(trial, seriesIndex);\n const seriesData = this.getDataFromSeries(singleSeries);\n return this.convertSeriesDataToAnimationData(\n seriesData,\n tColumnIndex,\n xColumnIndex,\n yColumnIndex\n );\n }\n\n getTrialFromComponentState(componentState: any, trialIndex: number): any {\n let trial = null;\n const studentData = componentState.studentData;\n if (studentData.trials != null) {\n trial = studentData.trials[trialIndex];\n }\n return trial;\n }\n\n getSeriesFromTrial(trial: any, seriesIndex: number): any {\n return trial.series[seriesIndex];\n }\n\n getDataFromSeries(series: any): any {\n return series.data;\n }\n\n convertSeriesDataToAnimationData(\n seriesData: any[],\n tColumnIndex: number,\n xColumnIndex: number,\n yColumnIndex: number\n ): any {\n const data = [];\n\n for (const seriesDataPoint of seriesData) {\n const animationDataPoint: any = {};\n\n if (tColumnIndex != null) {\n animationDataPoint.t = seriesDataPoint[tColumnIndex];\n }\n\n if (xColumnIndex != null) {\n animationDataPoint.x = seriesDataPoint[xColumnIndex];\n }\n\n if (yColumnIndex != null) {\n animationDataPoint.y = seriesDataPoint[yColumnIndex];\n }\n\n data.push(animationDataPoint);\n }\n return data;\n }\n\n animateObject(authoredObject: any): void {\n if (this.authoredObjectHasData(authoredObject)) {\n const id = authoredObject.id;\n const data = authoredObject.data;\n const svgObject = this.idToSVGObject[id];\n let animateObject = null;\n\n for (let d = 0; d < data.length; d++) {\n const currentDataPoint = data[d];\n const nextDataPoint = data[d + 1];\n const image = currentDataPoint.image;\n const t = currentDataPoint.t;\n const xPixel = this.dataXToPixelX(currentDataPoint.x);\n let yPixel = this.dataYToPixelY(currentDataPoint.y);\n if (this.isUsingCartesianCoordinateSystem()) {\n yPixel = this.convertToCartesianCoordinateSystem(yPixel);\n }\n this.idToWhetherAuthoredObjectIsAnimating[id] = true;\n\n if (this.isFirstDataPoint(d)) {\n animateObject = this.setInitialPositionOfSVGObject(t, svgObject, xPixel, yPixel);\n }\n\n animateObject = this.updateImageOfSVGObject(\n image,\n animateObject,\n svgObject,\n authoredObject,\n currentDataPoint,\n nextDataPoint\n );\n\n if (!this.isLastDataPoint(data, d)) {\n let nextT = null;\n let nextXPixel = null;\n let nextYPixel = null;\n\n if (nextDataPoint != null) {\n nextT = nextDataPoint.t;\n nextXPixel = this.dataXToPixelX(nextDataPoint.x);\n nextYPixel = this.dataYToPixelY(nextDataPoint.y);\n }\n if (this.isUsingCartesianCoordinateSystem()) {\n nextYPixel = this.convertToCartesianCoordinateSystem(nextYPixel);\n }\n\n const tDiff = this.calculateTimeDiff(t, nextT);\n animateObject = this.updatePositionOfSVGObject(\n svgObject,\n animateObject,\n t,\n tDiff,\n nextXPixel,\n nextYPixel\n );\n } else {\n this.animationCompletedPostProcessing(id, animateObject);\n }\n }\n }\n }\n\n setInitialPositionOfSVGObject(t: number, svgObject: any, xPixel: number, yPixel: number): any {\n let animateObject = null;\n if (t == 0) {\n svgObject.attr({ x: xPixel, y: yPixel });\n } else {\n // The first data point is not at time 0 so we will need to wait some time before we set the\n // position of the object.\n const thisAnimationController = this;\n animateObject = svgObject\n .animate(t * this.millisecondsPerDataTime)\n .during(function (pos, morph, eased, situation) {\n let totalElapsedTime = t * pos;\n thisAnimationController.displayAndBroadcastTime(totalElapsedTime);\n })\n .after(function () {\n this.attr({ x: xPixel, y: yPixel });\n });\n }\n return animateObject;\n }\n\n updatePositionOfSVGObject(\n svgObject: any,\n animateObject: any,\n t: number,\n tDiff: number,\n nextXPixel: number,\n nextYPixel: number\n ): any {\n // move the image to the next position in the given amount of time\n const thisAnimationController = this;\n return svgObject\n .animate(tDiff * this.millisecondsPerDataTime)\n .move(nextXPixel, nextYPixel)\n .during(function (pos, morph, eased, situation) {\n let totalElapsedTime = t + tDiff * pos;\n thisAnimationController.displayAndBroadcastTime(totalElapsedTime);\n });\n }\n\n animationCompletedPostProcessing(id: string, animateObject: any): void {\n animateObject.afterAll(() => {\n this.idToWhetherAuthoredObjectIsAnimating[id] = false;\n this.checkIfCanStop();\n });\n }\n\n updateImageOfSVGObject(\n image: string,\n animateObject: any,\n svgObject: any,\n authoredObject: any,\n currentDataPoint: any,\n nextDataPoint: any\n ): any {\n if (image != null && image !== '') {\n this.updateSVGObjectImage(image, svgObject, animateObject);\n } else if (nextDataPoint != null) {\n // There is a next data point so we will see if we can determine what image to show based upon\n // the movement of the object.\n const dynamicallyCalculatedImage = this.getImageBasedOnMovement(\n authoredObject,\n currentDataPoint,\n nextDataPoint\n );\n if (dynamicallyCalculatedImage != null) {\n this.updateSVGObjectImage(dynamicallyCalculatedImage, svgObject, animateObject);\n }\n }\n return animateObject;\n }\n\n updateSVGObjectImage(image: string, svgObject: any, animateObject: any): any {\n if (animateObject == null) {\n // change the image immediately\n svgObject.load(image);\n } else {\n // change the image after all the existing animations\n animateObject = animateObject.after(function () {\n this.load(image);\n });\n }\n return animateObject;\n }\n\n calculateTimeDiff(currentTime: number, futureTime: number): number {\n if (futureTime == null) {\n return 0;\n } else {\n return futureTime - currentTime;\n }\n }\n\n isFirstDataPoint(d: number): boolean {\n return d == 0;\n }\n\n isLastDataPoint(data: number[], d: number): boolean {\n return d == data.length - 1;\n }\n\n /**\n * @param {number} t The time in seconds.\n */\n displayAndBroadcastTime(t: number): void {\n const displayTime = this.truncateToOneDecimalPlace(t);\n this.showTimeInSVG(displayTime);\n\n if (this.isPerformBroadcast()) {\n this.broadcastTime(t);\n }\n\n if (this.lastBroadcastTime == null) {\n this.lastBroadcastTime = new Date().getTime();\n }\n }\n\n /**\n * @param {number} timeInSeconds\n */\n truncateToOneDecimalPlace(timeInSeconds: number): number {\n return Math.floor(timeInSeconds * 10) / 10;\n }\n\n /**\n * Check if we want to broadcast the time. We want to make sure we don't broadcast the time too\n * frequently because that may slow down the student's computer significantly. We will wait 100\n * milliseconds before each broadcast.\n * @returns {boolean}\n */\n isPerformBroadcast(): boolean {\n let currentTime = new Date().getTime();\n\n if (this.lastBroadcastTime == null || currentTime - this.lastBroadcastTime > 100) {\n return true;\n } else {\n return false;\n }\n }\n\n broadcastTime(t: number): void {\n const componentState = {\n t: t\n };\n\n this.studentDataService.broadcastComponentStudentData({\n nodeId: this.nodeId,\n componentId: this.componentId,\n componentState: componentState\n });\n this.lastBroadcastTime = new Date().getTime();\n }\n\n /**\n * Get the image based upon the movement of the object.\n * @param {object} authoredObject The object that is being moved.\n * @param {object} currentDataPoint Contains x and y fields.\n * @param {object} extDataPoint Contains x and y fields.\n */\n getImageBasedOnMovement(authoredObject: any, currentDataPoint: any, nextDataPoint: any): string {\n if (this.isObjectMovingOnlyInXDirection(currentDataPoint, nextDataPoint)) {\n return this.getImageMovingInX(authoredObject, currentDataPoint, nextDataPoint);\n } else if (this.isObjectMovingOnlyInYDirection(currentDataPoint, nextDataPoint)) {\n return this.getImageMovingInY(authoredObject, currentDataPoint, nextDataPoint);\n }\n return null;\n }\n\n isObjectMovingOnlyInXDirection(currentDataPoint: any, nextDataPoint: any): boolean {\n return (\n this.isYDataPointSame(currentDataPoint, nextDataPoint) &&\n !this.isXDataPointSame(currentDataPoint, nextDataPoint)\n );\n }\n\n isObjectMovingOnlyInYDirection(currentDataPoint: any, nextDataPoint: any): boolean {\n return (\n this.isXDataPointSame(currentDataPoint, nextDataPoint) &&\n !this.isYDataPointSame(currentDataPoint, nextDataPoint)\n );\n }\n\n isXDataPointSame(currentDataPoint: any, nextDataPoint: any): boolean {\n return currentDataPoint.x == nextDataPoint.x;\n }\n\n isYDataPointSame(currentDataPoint: any, nextDataPoint: any): boolean {\n return currentDataPoint.y == nextDataPoint.y;\n }\n\n getImageMovingInX(authoredObject: any, currentDataPoint: any, nextDataPoint: any): string {\n if (this.isMovingRight(currentDataPoint, nextDataPoint)) {\n return this.getImageMovingRight(authoredObject);\n } else if (this.isMovingLeft(currentDataPoint, nextDataPoint)) {\n return this.getImageMovingLeft(authoredObject);\n }\n return null;\n }\n\n getImageMovingInY(authoredObject: any, currentDataPoint: any, nextDataPoint: any): string {\n if (this.isYIncreasing(currentDataPoint, nextDataPoint)) {\n return this.getImageYIncreasing(authoredObject);\n } else if (this.isYDecreasing(currentDataPoint, nextDataPoint)) {\n return this.getImageYDecreasing(authoredObject);\n }\n return null;\n }\n\n isMovingRight(currentDataPoint: any, nextDataPoint: any): boolean {\n return this.isFieldIncreasing(currentDataPoint, nextDataPoint, 'x');\n }\n\n isMovingLeft(currentDataPoint: any, nextDataPoint: any): boolean {\n return this.isFieldDecreasing(currentDataPoint, nextDataPoint, 'x');\n }\n\n isYIncreasing(currentDataPoint: any, nextDataPoint: any): boolean {\n return this.isFieldIncreasing(currentDataPoint, nextDataPoint, 'y');\n }\n\n isYDecreasing(currentDataPoint: any, nextDataPoint: any): boolean {\n return this.isFieldDecreasing(currentDataPoint, nextDataPoint, 'y');\n }\n\n isFieldIncreasing(currentDataPoint: any, nextDataPoint: any, fieldName: string): boolean {\n return currentDataPoint[fieldName] < nextDataPoint[fieldName];\n }\n\n isFieldDecreasing(currentDataPoint: any, nextDataPoint: any, fieldName: string): boolean {\n return currentDataPoint[fieldName] > nextDataPoint[fieldName];\n }\n\n getImageYIncreasing(authoredObject: any): any {\n if (this.isUsingCartesianCoordinateSystem()) {\n return this.getImageMovingUp(authoredObject);\n } else {\n return this.getImageMovingDown(authoredObject);\n }\n }\n\n getImageYDecreasing(authoredObject: any): any {\n if (this.isUsingCartesianCoordinateSystem()) {\n return this.getImageMovingDown(authoredObject);\n } else {\n return this.getImageMovingUp(authoredObject);\n }\n }\n\n getImageMovingUp(authoredObject: any): string {\n if (authoredObject.imageMovingUp != null && authoredObject.imageMovingUp != '') {\n return authoredObject.imageMovingUp;\n } else {\n return null;\n }\n }\n\n getImageMovingDown(authoredObject: any): string {\n if (authoredObject.imageMovingDown != null && authoredObject.imageMovingDown != '') {\n return authoredObject.imageMovingDown;\n } else {\n return null;\n }\n }\n\n getImageMovingLeft(authoredObject: any): string {\n if (authoredObject.imageMovingLeft != null && authoredObject.imageMovingLeft != '') {\n return authoredObject.imageMovingLeft;\n } else {\n return null;\n }\n }\n\n getImageMovingRight(authoredObject: any): string {\n if (authoredObject.imageMovingRight != null && authoredObject.imageMovingRight != '') {\n return authoredObject.imageMovingRight;\n } else {\n return null;\n }\n }\n\n checkIfCanStop(): void {\n if (!this.areAnyObjectsAnimating()) {\n this.setAnimationStateToStopped();\n }\n }\n\n areAnyObjectsAnimating(): boolean {\n for (const object of this.componentContent.objects) {\n if (this.idToWhetherAuthoredObjectIsAnimating[object.id]) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Populate the student work into the component.\n * @param {object} componentState The component state to populate into the component.\n */\n setStudentWork(componentState: any): void {\n this.submitCounter = componentState.studentData.submitCounter;\n if (componentState.studentData.numTimesPlayClicked != null) {\n this.numTimesPlayClicked = componentState.studentData.numTimesPlayClicked;\n }\n this.processLatestStudentWork();\n }\n\n confirmSubmit(numberOfSubmitsLeft: number): boolean {\n let isPerformSubmit = false;\n if (numberOfSubmitsLeft <= 0) {\n alert($localize`You do not have any more chances to receive feedback on your answer.`);\n } else if (numberOfSubmitsLeft == 1) {\n isPerformSubmit = confirm(\n $localize`You have 1 chance to receive feedback on your answer so this this should be your best work.\\n\\nAre you ready to receive feedback on this answer?`\n );\n } else if (numberOfSubmitsLeft > 1) {\n isPerformSubmit = confirm(\n $localize`You have ${numberOfSubmitsLeft} chances to receive feedback on your answer so this this should be your best work.\\n\\nAre you ready to receive feedback on this answer?`\n );\n }\n return isPerformSubmit;\n }\n\n studentDataChanged(): void {\n this.setIsDirty(true);\n this.emitComponentDirty(true);\n this.setIsSubmitDirty(true);\n this.emitComponentSubmitDirty(true);\n this.clearLatestComponentState();\n this.createComponentStateAndBroadcast('change');\n }\n\n /**\n * Create a new component state populated with the student data.\n * @param {string} action The action that is triggering creating of this component state\n * e.g. 'submit', 'save', 'change'.\n * @return {promise} A promise that will return a component state.\n */\n createComponentState(action: string): Promise {\n const componentState = this.createComponentStateObject();\n this.setIsSubmit(false);\n if (this.hasMaxSubmitCountAndUsedAllSubmits()) {\n this.isDisabled = true;\n this.isSubmitButtonDisabled = true;\n }\n componentState.componentType = 'Animation';\n return new Promise((resolve, reject) => {\n this.createComponentStateAdditionalProcessing(\n { resolve: resolve, reject: reject },\n componentState,\n action\n );\n });\n }\n\n createComponentStateObject(): any {\n const componentState: any = this.createNewComponentState();\n componentState.nodeId = this.nodeId;\n componentState.componentId = this.componentId;\n const studentData = {\n numTimesPlayClicked: this.numTimesPlayClicked,\n submitCounter: this.submitCounter\n };\n componentState.studentData = studentData;\n componentState.isSubmit = this.isSubmit;\n if (this.isSubmit && this.hasDefaultFeedback()) {\n this.addDefaultFeedback(componentState);\n }\n return componentState;\n }\n\n /**\n * @param {object} data The annotation data.\n * @returns {object} The auto score annotation.\n */\n createAutoScoreAnnotation(data: any): any {\n const runId = this.configService.getRunId();\n const periodId = this.configService.getPeriodId();\n const nodeId = this.nodeId;\n const componentId = this.componentId;\n const toWorkgroupId = this.configService.getWorkgroupId();\n return this.annotationService.createAutoScoreAnnotation(\n runId,\n periodId,\n nodeId,\n componentId,\n toWorkgroupId,\n data\n );\n }\n\n /**\n * @param {object} data The annotation data.\n * @returns {object} The auto comment annotation.\n */\n createAutoCommentAnnotation(data: any): any {\n const runId = this.configService.getRunId();\n const periodId = this.configService.getPeriodId();\n const nodeId = this.nodeId;\n const componentId = this.componentId;\n const toWorkgroupId = this.configService.getWorkgroupId();\n return this.annotationService.createAutoCommentAnnotation(\n runId,\n periodId,\n nodeId,\n componentId,\n toWorkgroupId,\n data\n );\n }\n\n playButtonClicked(): void {\n this.incrementNumTimesPlayClicked();\n this.setAnimationStateToPlaying();\n this.startAnimation();\n this.studentDataChanged();\n }\n\n incrementNumTimesPlayClicked(): void {\n this.numTimesPlayClicked++;\n }\n\n pauseButtonClicked(): void {\n this.setAnimationStateToPaused();\n for (const object of this.componentContent.objects) {\n const svgObject = this.idToSVGObject[object.id];\n svgObject.pause();\n }\n }\n\n resumeButtonClicked(): void {\n this.setAnimationStateToPlaying();\n for (const object of this.componentContent.objects) {\n const id = object.id;\n const svgObject = this.idToSVGObject[id];\n // Check if the object still needs to be animated or if it has already finished performing all\n // of its animation. We only need to play it if it still has more animating.\n if (this.idToWhetherAuthoredObjectIsAnimating[id]) {\n svgObject.play();\n }\n }\n }\n\n resetButtonClicked(): void {\n this.setAnimationStateToStopped();\n\n for (const object of this.componentContent.objects) {\n const id = object.id;\n const svgObject = this.idToSVGObject[id];\n // Check if the object still needs to be animated or if it has already finished performing all\n // of its animation. We only need to play it if it still has more animating.\n if (this.idToWhetherAuthoredObjectIsAnimating[id]) {\n // We need to play it in case it is currently paused. There is a minor bug in the animation\n // library which is caused if you pause an animation and then stop the animation. Then if\n // you try to play the animation, the animation will not play. We avoid this problem by\n // making sure the object animation is playing when we stop it.\n svgObject.play();\n }\n\n const jumpToEnd = true;\n const clearQueue = true;\n\n // stop the object from animating\n svgObject.stop(jumpToEnd, clearQueue);\n }\n\n setTimeout(() => {\n this.displayAndBroadcastTime(0);\n this.initializeObjectImages();\n this.initializeObjectPositions();\n }, 100);\n }\n\n isUsingCartesianCoordinateSystem(): boolean {\n return this.coordinateSystem == 'cartesian';\n }\n\n /**\n * Convert the y value to the cartesian coordinate system\n * @param {integer} y the pixel y value in the screen coordinate system\n * @return {integer} the pixel y value in the cartesian coordinate system\n */\n convertToCartesianCoordinateSystem(y: number): number {\n return this.height - y;\n }\n\n speedSliderChanged(speedValue: number): void {\n this.setSpeed(speedValue);\n this.resetButtonClicked();\n }\n\n setSpeed(speedSliderValue: number): void {\n this.millisecondsPerDataTime = this.speedToMillisecondsPerDataTime[speedSliderValue];\n }\n\n authoredObjectHasData(authoredObject: any): boolean {\n return authoredObject.data != null && authoredObject.data.length > 0;\n }\n\n authoredObjectHasDataSource(authoredObject: any): boolean {\n return authoredObject.dataSource != null;\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": ".mat-icon { margin: 0px; } \n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "animationService", + "type": "AnimationService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentService", + "type": "ComponentService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "notebookService", + "type": "NotebookService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentAssetService", + "type": "StudentAssetService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentDataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 63, + "jsdoctags": [ + { + "name": "animationService", + "type": "AnimationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentService", + "type": "ComponentService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "notebookService", + "type": "NotebookService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentAssetService", + "type": "StudentAssetService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentDataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "ComponentStudent" + ], + "templateData": "
\n \n
\n @if (animationState === 'stopped') {\n \n play_arrow\n \n }\n @if (animationState === 'playing') {\n \n pause\n \n }\n @if (animationState === 'paused') {\n \n play_arrow\n \n }\n \n replay\n \n \n Slower\n \n \n Faster\n \n @if (isStudentAttachmentEnabled) {\n
\n
\n \n image\n Add File\n \n
\n @for (attachment of attachments; track attachment) {\n
\n \n @if (!isDisabled) {\n \n cancel\n \n }\n
\n }\n
\n }\n
\n \n @if (isSaveOrSubmitButtonVisible) {\n \n }\n @if (mode === 'student') {\n \n }\n
\n" + }, + { + "name": "AnnouncementComponent", + "id": "component-AnnouncementComponent-c9631caee2ef0422916ce84f0f015c470b20091cd733d578171c13a4ec35deb21263c8e90010c0046c09c27a00b2709434ae6153edbbadbace9e6dae9333a95f", + "file": "src/app/announcement/announcement.component.ts", + "encapsulation": [ + "ViewEncapsulation.None" + ], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "app-announcement", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./announcement.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "announcement", + "defaultValue": "new Announcement()", + "deprecated": false, + "deprecationMessage": "", + "line": 20, + "type": "Announcement", + "decorators": [] + } + ], + "outputsClass": [ + { + "name": "dismiss", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 21, + "type": "EventEmitter" + } + ], + "propertiesClass": [ + { + "name": "dialog", + "deprecated": false, + "deprecationMessage": "", + "type": "MatDialog", + "indexKey": "", + "optional": false, + "description": "", + "line": 23, + "modifierKind": [ + 125 + ] + } + ], + "methodsClass": [ + { + "name": "showAnnouncementDetails", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 25, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatDialogModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, EventEmitter, Input, Output, ViewEncapsulation, Inject } from '@angular/core';\nimport { Announcement } from '../domain/announcement';\nimport {\n MatDialogRef,\n MAT_DIALOG_DATA,\n MatDialog,\n MatDialogModule\n} from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n encapsulation: ViewEncapsulation.None,\n imports: [MatButtonModule, MatDialogModule, MatIconModule],\n selector: 'app-announcement',\n styleUrl: './announcement.component.scss',\n templateUrl: './announcement.component.html'\n})\nexport class AnnouncementComponent {\n @Input() announcement: Announcement = new Announcement();\n @Output() dismiss: EventEmitter = new EventEmitter();\n\n constructor(public dialog: MatDialog) {}\n\n protected showAnnouncementDetails(): void {\n this.dialog.open(AnnouncementDialogComponent, {\n data: this.announcement,\n panelClass: 'dialog-md'\n });\n }\n}\n\n@Component({\n selector: 'announcement-dialog',\n templateUrl: 'announcement-dialog.component.html',\n standalone: false\n})\nexport class AnnouncementDialogComponent {\n constructor(\n public dialogRef: MatDialogRef,\n @Inject(MAT_DIALOG_DATA) public data: Announcement\n ) {}\n}\n", + "styleUrl": "./announcement.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 21, + "jsdoctags": [ + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "
\n \n {{ announcement.bannerText }}\n @if (announcement.bannerButton) {\n \n }\n \n \n close\n \n
\n" + }, + { + "name": "AnnouncementDialogComponent", + "id": "component-AnnouncementDialogComponent-c9631caee2ef0422916ce84f0f015c470b20091cd733d578171c13a4ec35deb21263c8e90010c0046c09c27a00b2709434ae6153edbbadbace9e6dae9333a95f", + "file": "src/app/announcement/announcement.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "announcement-dialog", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "announcement-dialog.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "data", + "deprecated": false, + "deprecationMessage": "", + "type": "Announcement", + "indexKey": "", + "optional": false, + "description": "", + "line": 41, + "decorators": [ + { + "name": "Inject", + "stringifiedArguments": "MAT_DIALOG_DATA" + } + ], + "modifierKind": [ + 171, + 125 + ] + }, + { + "name": "dialogRef", + "deprecated": false, + "deprecationMessage": "", + "type": "MatDialogRef", + "indexKey": "", + "optional": false, + "description": "", + "line": 40, + "modifierKind": [ + 125 + ] + } + ], + "methodsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, EventEmitter, Input, Output, ViewEncapsulation, Inject } from '@angular/core';\nimport { Announcement } from '../domain/announcement';\nimport {\n MatDialogRef,\n MAT_DIALOG_DATA,\n MatDialog,\n MatDialogModule\n} from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n encapsulation: ViewEncapsulation.None,\n imports: [MatButtonModule, MatDialogModule, MatIconModule],\n selector: 'app-announcement',\n styleUrl: './announcement.component.scss',\n templateUrl: './announcement.component.html'\n})\nexport class AnnouncementComponent {\n @Input() announcement: Announcement = new Announcement();\n @Output() dismiss: EventEmitter = new EventEmitter();\n\n constructor(public dialog: MatDialog) {}\n\n protected showAnnouncementDetails(): void {\n this.dialog.open(AnnouncementDialogComponent, {\n data: this.announcement,\n panelClass: 'dialog-md'\n });\n }\n}\n\n@Component({\n selector: 'announcement-dialog',\n templateUrl: 'announcement-dialog.component.html',\n standalone: false\n})\nexport class AnnouncementDialogComponent {\n constructor(\n public dialogRef: MatDialogRef,\n @Inject(MAT_DIALOG_DATA) public data: Announcement\n ) {}\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "dialogRef", + "type": "MatDialogRef", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "data", + "type": "Announcement", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 38, + "jsdoctags": [ + { + "name": "dialogRef", + "type": "MatDialogRef", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "data", + "type": "Announcement", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "

{{ data.title }}

\n\n
\n
\n\n @for (button of data.buttons; track button) {\n \n {{ button.text }}\n \n }\n \n\n" + }, + { + "name": "AppComponent", + "id": "component-AppComponent-077ad938deb27998c70394125576a82f7bfd090252e19098a0147cd2aa4f817b84468fc8192783eeaef7f3bc9ea02a2746db2b8d7c16d8d3ca5b2b9c61cb2cb0", + "file": "src/app/app.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "app-root", + "styleUrls": [ + "./app.component.scss" + ], + "styles": [], + "templateUrl": [ + "./app.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "announcement", + "defaultValue": "new Announcement()", + "deprecated": false, + "deprecationMessage": "", + "type": "Announcement", + "indexKey": "", + "optional": false, + "description": "", + "line": 32 + }, + { + "name": "googleAnalyticsId", + "defaultValue": "null", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 24 + }, + { + "name": "hasAnnouncement", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 25 + }, + { + "name": "pageY", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 29 + }, + { + "name": "popstate", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 28 + }, + { + "name": "prevPageY", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 30 + }, + { + "name": "scroll", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 31 + }, + { + "name": "showDefaultMode", + "defaultValue": "true", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 26 + }, + { + "name": "showHeaderAndFooter", + "defaultValue": "true", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 27 + }, + { + "name": "showMobileMenu", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 22 + }, + { + "name": "theme", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 23 + }, + { + "name": "themeClasses", + "defaultValue": "{\n '/teacher/manage': 'monitor-theme',\n '/teacher/edit': 'author-theme'\n }", + "deprecated": false, + "deprecationMessage": "", + "type": "object", + "indexKey": "", + "optional": false, + "description": "", + "line": 33 + }, + { + "name": "title", + "defaultValue": "'app'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 21 + } + ], + "methodsClass": [ + { + "name": "activateGTM", + "args": [ + { + "name": "w", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "d", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "s", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "l", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "i", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 159, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "w", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "d", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "s", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "l", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "i", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "dismissAnnouncement", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 221, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "fixScrollTop", + "args": [ + { + "name": "ev", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 170, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "ev", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isAngularJSRoute", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 199, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isShowDefaultMode", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 185, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isShowHeaderAndFooter", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 195, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isStudentAngularJSPath", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 203, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "isTeacherAngularJSPath", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 207, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 106, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "onYPositionChange", + "args": [ + { + "name": "event", + "type": "Event", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 225, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "event", + "type": "Event", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "scrollToTop", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 232, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "setGTagManager", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 140, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "setTheme", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 211, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "subscribeToRouterEvents", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 123, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Inject, DOCUMENT } from '@angular/core';\n\nimport { Router, NavigationEnd, NavigationStart } from '@angular/router';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { MatIconRegistry } from '@angular/material/icon';\nimport { Subscription } from 'rxjs';\nimport { UtilService } from './services/util.service';\nimport { ConfigService } from './services/config.service';\nimport { Announcement } from './domain/announcement';\nimport { environment } from '../environments/environment';\nimport { BreakpointObserver } from '@angular/cdk/layout';\ndeclare let gtag: Function;\n\n@Component({\n selector: 'app-root',\n templateUrl: './app.component.html',\n styleUrls: ['./app.component.scss'],\n standalone: false\n})\nexport class AppComponent {\n title = 'app';\n showMobileMenu: boolean = false;\n theme: string = '';\n googleAnalyticsId: string = null;\n hasAnnouncement: boolean = false;\n showDefaultMode: boolean = true;\n showHeaderAndFooter: boolean = true;\n popstate: boolean = false;\n pageY: number = 0;\n prevPageY: number = 0;\n scroll: boolean = false;\n announcement: Announcement = new Announcement();\n themeClasses = {\n '/teacher/manage': 'monitor-theme',\n '/teacher/edit': 'author-theme'\n };\n\n constructor(\n private breakpointObserver: BreakpointObserver,\n private configService: ConfigService,\n @Inject(DOCUMENT) private document: Document,\n iconRegistry: MatIconRegistry,\n private router: Router,\n sanitizer: DomSanitizer,\n utilService: UtilService\n ) {\n iconRegistry.addSvgIcon(\n 'ki-elicit',\n sanitizer.bypassSecurityTrustResourceUrl('assets/img/icons/ki-elicit.svg')\n );\n iconRegistry.addSvgIcon(\n 'ki-add',\n sanitizer.bypassSecurityTrustResourceUrl('assets/img/icons/ki-add.svg')\n );\n iconRegistry.addSvgIcon(\n 'ki-distinguish',\n sanitizer.bypassSecurityTrustResourceUrl('assets/img/icons/ki-distinguish.svg')\n );\n iconRegistry.addSvgIcon(\n 'ki-connect',\n sanitizer.bypassSecurityTrustResourceUrl('assets/img/icons/ki-connect.svg')\n );\n iconRegistry.addSvgIcon(\n 'facebook',\n sanitizer.bypassSecurityTrustResourceUrl('assets/img/icons/facebook.svg')\n );\n iconRegistry.addSvgIcon(\n 'facebook-ffffff',\n sanitizer.bypassSecurityTrustResourceUrl('assets/img/icons/facebook-ffffff.svg')\n );\n iconRegistry.addSvgIcon(\n 'twitter',\n sanitizer.bypassSecurityTrustResourceUrl('assets/img/icons/twitter.svg')\n );\n iconRegistry.addSvgIcon(\n 'twitter-ffffff',\n sanitizer.bypassSecurityTrustResourceUrl('assets/img/icons/twitter-ffffff.svg')\n );\n iconRegistry.addSvgIcon(\n 'github',\n sanitizer.bypassSecurityTrustResourceUrl('assets/img/icons/github.svg')\n );\n iconRegistry.addSvgIcon(\n 'github-ffffff',\n sanitizer.bypassSecurityTrustResourceUrl('assets/img/icons/github-ffffff.svg')\n );\n iconRegistry.addSvgIcon(\n 'google-classroom',\n sanitizer.bypassSecurityTrustResourceUrl('assets/img/icons/google-classroom.svg')\n );\n iconRegistry.addSvgIcon(\n 'google',\n sanitizer.bypassSecurityTrustResourceUrl('assets/img/icons/google-logo.svg')\n );\n utilService.getMobileMenuState().subscribe((state) => {\n this.showMobileMenu = state;\n });\n this.breakpointObserver.observe(['(max-width: 40rem)']).subscribe((result) => {\n utilService.showMobileMenu(false);\n });\n router.events.subscribe((event) => {\n utilService.showMobileMenu(false);\n });\n }\n\n ngOnInit() {\n if (environment.production) {\n this.configService.getConfig().subscribe((config) => {\n if (config) {\n this.setGTagManager();\n }\n });\n }\n\n this.configService.getAnnouncement().subscribe((announcement: Announcement) => {\n this.announcement = announcement;\n this.hasAnnouncement = announcement.visible;\n });\n\n this.subscribeToRouterEvents();\n }\n\n subscribeToRouterEvents() {\n this.router.events.subscribe((ev: any) => {\n if (ev instanceof NavigationEnd) {\n this.showDefaultMode = this.isShowDefaultMode();\n this.showHeaderAndFooter = this.isShowHeaderAndFooter();\n this.setTheme();\n this.scroll = false;\n }\n\n /** Temporary hack to ensure scroll to top on router navigation (excluding\n * back/forward browser button presses)\n * TODO: remove when https://github.com/angular/material2/issues/4280 is resolved\n */\n this.fixScrollTop(ev);\n });\n }\n\n private setGTagManager(): void {\n const googleTagManagerId = this.configService.getGoogleTagManagerId();\n if (googleTagManagerId) {\n this.activateGTM(window, document, 'script', 'dataLayer', googleTagManagerId);\n }\n this.googleAnalyticsId = this.configService.getGoogleAnalyticsId();\n if (this.googleAnalyticsId) {\n const gtagScript = this.document.createElement('script');\n gtagScript.src = `https://www.googletagmanager.com/gtag/js?id=${this.googleAnalyticsId}`;\n this.document.head.appendChild(gtagScript);\n const script = this.document.createElement('script');\n script.innerHTML = `window.dataLayer = window.dataLayer || [];\n function gtag(){dataLayer.push(arguments);}\n gtag('js', new Date());\n gtag('config', '${this.googleAnalyticsId}');`;\n this.document.head.appendChild(script);\n }\n }\n\n private activateGTM(w, d, s, l, i): void {\n w[l] = w[l] || [];\n w[l].push({ 'gtm.start': new Date().getTime(), event: 'gtm.js' });\n var f = d.getElementsByTagName(s)[0],\n j = d.createElement(s),\n dl = l != 'dataLayer' ? '&l=' + l : '';\n j.async = true;\n j.src = 'https://www.googletagmanager.com/gtm.js?id=' + i + dl;\n f.parentNode.insertBefore(j, f);\n }\n\n fixScrollTop(ev: any) {\n const topElement = document.querySelector('.top-content');\n if (!topElement) {\n return;\n }\n if (ev instanceof NavigationStart) {\n this.popstate = ev.navigationTrigger === 'popstate';\n }\n if (ev instanceof NavigationEnd) {\n if (!this.popstate) {\n topElement.scrollIntoView();\n }\n }\n }\n\n isShowDefaultMode(): boolean {\n return (\n !this.router.url.includes('/login') &&\n !this.router.url.includes('/join') &&\n !this.router.url.includes('/contact') &&\n !this.router.url.includes('/forgot') &&\n !this.router.url.includes('/survey')\n );\n }\n\n isShowHeaderAndFooter() {\n return this.isShowDefaultMode() && !this.isAngularJSRoute();\n }\n\n isAngularJSRoute(): boolean {\n return this.isTeacherAngularJSPath() || this.isStudentAngularJSPath();\n }\n\n private isStudentAngularJSPath(): boolean {\n return this.router.url.includes('/student/unit') || this.router.url.includes('/preview/unit');\n }\n\n private isTeacherAngularJSPath(): boolean {\n return this.router.url.includes('/teacher/edit') || this.router.url.includes('/teacher/manage');\n }\n\n setTheme() {\n Object.keys(this.themeClasses).forEach((path) => {\n if (this.router.url.includes(path)) {\n document.body.classList.add(this.themeClasses[path]);\n } else {\n document.body.classList.remove(this.themeClasses[path]);\n }\n });\n }\n\n dismissAnnouncement() {\n this.hasAnnouncement = false;\n }\n\n onYPositionChange(event: Event) {\n const target = event.target as HTMLElement;\n this.pageY = target.scrollTop;\n this.scroll = this.pageY > 360 && this.pageY < this.prevPageY;\n this.prevPageY = this.pageY;\n }\n\n scrollToTop() {\n document.querySelector('.top-content').scrollIntoView();\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": [ + { + "data": "@use 'style/abstracts/functions';\n\napp-announcement {\n z-index: 3;\n}\n\napp-header {\n z-index: 2;\n}\n\n.to-top {\n position: fixed;\n bottom: 20px;\n right: 20px;\n z-index: 1;\n\n @media (min-width: functions.breakpoint('sm.min')) {\n bottom: 32px;\n right: 32px;\n }\n\n button {\n border-radius: 24px;\n }\n}\n", + "styleUrl": "./app.component.scss" + } + ], + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "breakpointObserver", + "type": "BreakpointObserver", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "document", + "type": "Document", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "iconRegistry", + "type": "MatIconRegistry", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "sanitizer", + "type": "DomSanitizer", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "utilService", + "type": "UtilService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 36, + "jsdoctags": [ + { + "name": "breakpointObserver", + "type": "BreakpointObserver", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "document", + "type": "Document", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "iconRegistry", + "type": "MatIconRegistry", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "sanitizer", + "type": "DomSanitizer", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "utilService", + "type": "UtilService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "\n \n \n \n \n @if (hasAnnouncement && showHeaderAndFooter) {\n \n }\n @if (showHeaderAndFooter) {\n \n }\n
\n \n
\n @if (showHeaderAndFooter) {\n \n }\n @if (showHeaderAndFooter) {\n
\n \n
\n }\n
\n
\n" + }, + { + "name": "ApplyTagsButtonComponent", + "id": "component-ApplyTagsButtonComponent-c8884f2b4987660d6015e9b40f8927906d8e8b4013645e44ab629f330f1644885c0ce3a8af99647d4d446c816971fc983cffccba9c8189a5931027ac8494031c", + "file": "src/app/teacher/apply-tags-button/apply-tags-button.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [ + { + "name": "}" + } + ], + "selector": "apply-tags-button", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./apply-tags-button.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "selectedProjects", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "line": 35, + "type": "Project[]", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "filteredTags", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "Tag[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractTagsMenuComponent" + } + }, + { + "name": "searchText", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractTagsMenuComponent" + } + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "AbstractTagsMenuComponent" + } + }, + { + "name": "tags", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "Tag[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractTagsMenuComponent" + } + } + ], + "methodsClass": [ + { + "name": "addTagToProjects", + "args": [ + { + "name": "tag", + "type": "Tag", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 69, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "tag", + "type": "Tag", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "afterNewTag", + "args": [ + { + "name": "tag", + "type": "Tag", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 59, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "tag", + "type": "Tag", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractTagsMenuComponent" + } + }, + { + "name": "afterRetrieveUserTags", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 49, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractTagsMenuComponent" + } + }, + { + "name": "ngOnChanges", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 45, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "removeTagFromProjects", + "args": [ + { + "name": "tag", + "type": "Tag", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 79, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "tag", + "type": "Tag", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "updateAllTagsCheckedValues", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 53, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "updateTagCheckedValue", + "args": [ + { + "name": "tag", + "type": "Tag", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 63, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "tag", + "type": "Tag", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "filterTags", + "args": [ + { + "name": "searchText", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 74, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "searchText", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractTagsMenuComponent" + } + }, + { + "name": "manageTags", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 81, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractTagsMenuComponent" + } + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 27, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractTagsMenuComponent" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 20, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractTagsMenuComponent" + } + }, + { + "name": "retrieveUserTags", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 31, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "AbstractTagsMenuComponent" + } + }, + { + "name": "subscribeToNewTag", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 52, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "AbstractTagsMenuComponent" + } + }, + { + "name": "subscribeToTagDeleted", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 65, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "AbstractTagsMenuComponent" + } + }, + { + "name": "subscribeToTagUpdated", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 41, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "AbstractTagsMenuComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatDividerModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatMenuModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + }, + { + "name": "SearchBarComponent", + "type": "component" + }, + { + "name": "SelectAllItemsCheckboxComponent", + "type": "component" + }, + { + "name": "TagComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input } from '@angular/core';\nimport { Project } from '../../domain/project';\nimport { Tag } from '../../domain/tag';\nimport { MAT_CHECKBOX_DEFAULT_OPTIONS } from '@angular/material/checkbox';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { SelectAllItemsCheckboxComponent } from '../../modules/library/select-all-items-checkbox/select-all-items-checkbox.component';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { AbstractTagsMenuComponent } from '../abstract-tags-menu/abstract-tags-menu.component';\nimport { SearchBarComponent } from '../../modules/shared/search-bar/search-bar.component';\nimport { TagComponent } from '../tag/tag.component';\nimport { MatDialog } from '@angular/material/dialog';\nimport { ProjectTagService } from '../../../assets/wise5/services/projectTagService';\nimport { MatSnackBar } from '@angular/material/snack-bar';\n\n@Component({\n imports: [\n MatButtonModule,\n MatDividerModule,\n MatIconModule,\n MatMenuModule,\n MatTooltipModule,\n SearchBarComponent,\n SelectAllItemsCheckboxComponent,\n TagComponent\n ],\n providers: [{ provide: MAT_CHECKBOX_DEFAULT_OPTIONS, useValue: { clickAction: 'noop' } }],\n selector: 'apply-tags-button',\n styleUrl: './apply-tags-button.component.scss',\n templateUrl: './apply-tags-button.component.html'\n})\nexport class ApplyTagsButtonComponent extends AbstractTagsMenuComponent {\n @Input() selectedProjects: Project[] = [];\n\n constructor(\n dialog: MatDialog,\n protected projectTagService: ProjectTagService,\n private snackBar: MatSnackBar\n ) {\n super(dialog, projectTagService);\n }\n\n ngOnChanges(): void {\n this.updateAllTagsCheckedValues();\n }\n\n protected afterRetrieveUserTags(): void {\n this.updateAllTagsCheckedValues();\n }\n\n private updateAllTagsCheckedValues(): void {\n for (const tag of this.tags) {\n this.updateTagCheckedValue(tag);\n }\n }\n\n protected afterNewTag(tag: Tag): void {\n this.updateTagCheckedValue(tag);\n }\n\n private updateTagCheckedValue(tag: Tag): void {\n tag.numProjectsWithTag = this.selectedProjects.filter((project) =>\n project.tags.some((projectTag) => projectTag.id === tag.id)\n ).length;\n }\n\n protected addTagToProjects(tag: Tag): void {\n this.projectTagService.applyTagToProjects(tag, this.selectedProjects).subscribe(() => {\n for (const project of this.selectedProjects) {\n project.addTag(tag);\n }\n this.updateTagCheckedValue(tag);\n this.snackBar.open($localize`Successfully applied tag`);\n });\n }\n\n protected removeTagFromProjects(tag: Tag): void {\n this.projectTagService.removeTagFromProjects(tag, this.selectedProjects).subscribe(() => {\n for (const project of this.selectedProjects) {\n project.tags = project.tags.filter((projectTag: Tag) => projectTag.id !== tag.id);\n }\n this.updateTagCheckedValue(tag);\n this.snackBar.open($localize`Successfully removed tag`);\n });\n }\n}\n", + "styleUrl": "./apply-tags-button.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectTagService", + "type": "ProjectTagService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "snackBar", + "type": "MatSnackBar", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 35, + "jsdoctags": [ + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectTagService", + "type": "ProjectTagService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "snackBar", + "type": "MatSnackBar", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "AbstractTagsMenuComponent" + ], + "templateData": "\n sell\n\n\n
Apply tags
\n \n @for (tag of filteredTags; track tag.id) {\n
\n \n \n \n
\n }\n \n
Manage Tags
\n
\n" + }, + { + "name": "ArchiveProjectsButtonComponent", + "id": "component-ArchiveProjectsButtonComponent-b413605f3a251b43df14522d6ffa46b72d00530ad6e8d453c7e3cde9dc3e2dd5b767f2b6767ecc214a0f0bb7a9742a8b47c579283da8902c55abf038dd633304", + "file": "src/app/teacher/archive-projects-button/archive-projects-button.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "archive-projects-button", + "styleUrls": [ + "./archive-projects-button.component.scss" + ], + "styles": [], + "templateUrl": [ + "./archive-projects-button.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "showArchive", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "line": 14, + "type": "boolean", + "decorators": [] + } + ], + "outputsClass": [ + { + "name": "archiveProjectsEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 13, + "type": "EventEmitter" + } + ], + "propertiesClass": [], + "methodsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@Component({\n imports: [MatButtonModule, MatIconModule, MatTooltipModule],\n selector: 'archive-projects-button',\n templateUrl: './archive-projects-button.component.html',\n styleUrls: ['./archive-projects-button.component.scss']\n})\nexport class ArchiveProjectsButtonComponent {\n @Output() archiveProjectsEvent = new EventEmitter();\n @Input() showArchive: boolean = false;\n}\n", + "assetsDirs": [], + "styleUrlsData": [ + { + "data": "", + "styleUrl": "./archive-projects-button.component.scss" + } + ], + "stylesData": "", + "extends": [], + "templateData": "@if (showArchive) {\n \n archive\n \n}\n@if (!showArchive) {\n \n unarchive\n \n}\n" + }, + { + "name": "AudioOscillatorAuthoring", + "id": "component-AudioOscillatorAuthoring-f80d4e43960f6fd5efa4d844ab66d62015fe0e960b172d08f3a959e96e5b23b2c1160093335d989043135b10c0816657eaa87febf56beb0a4f47781b1bc58cd2", + "file": "src/assets/wise5/components/audioOscillator/audio-oscillator-authoring/audio-oscillator-authoring.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "audio-oscillator-authoring.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "maxAmplitude", + "defaultValue": "this.audioOscillatorService.maxAmplitude", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 20 + }, + { + "name": "sawtoothChecked", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 21 + }, + { + "name": "sineChecked", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 22 + }, + { + "name": "squareChecked", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 23 + }, + { + "name": "triangleChecked", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 24 + }, + { + "name": "allowedConnectedComponentTypes", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "idToOrder", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "inputChange", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "promptChange", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + } + ], + "methodsClass": [ + { + "name": "initializeStartingAmplitude", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 49, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 36, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "oscillatorTypeClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 64, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "populateCheckedOscillatorTypes", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 42, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "showAmplitudeInputChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 59, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "showFrequencyInputChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 54, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "assetSelected", + "args": [ + { + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 100, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "componentChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 73, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "confirmAndRemove", + "args": [ + { + "name": "message", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "array", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 110, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "message", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "array", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "deleteStarterState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 81, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "getComponent", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 106, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "getComponents", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 102, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "isForThisComponent", + "args": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 77, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "moveObjectDown", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 122, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "moveObjectUp", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 117, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 65, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "promptChanged", + "args": [ + { + "name": "prompt", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 69, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "prompt", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "saveStarterState", + "args": [ + { + "name": "starterState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "starterState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "setShowSubmitButtonValue", + "args": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 85, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "EditComponentPrompt", + "type": "component" + }, + { + "name": "MatCheckbox" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatInput" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatCheckbox } from '@angular/material/checkbox';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInput } from '@angular/material/input';\nimport { EditComponentPrompt } from '../../../../../app/authoring-tool/edit-component-prompt/edit-component-prompt.component';\nimport { ProjectAssetService } from '../../../../../app/services/projectAssetService';\nimport { AbstractComponentAuthoring } from '../../../authoringTool/components/AbstractComponentAuthoring';\nimport { ConfigService } from '../../../services/configService';\nimport { TeacherNodeService } from '../../../services/teacherNodeService';\nimport { TeacherProjectService } from '../../../services/teacherProjectService';\nimport { AudioOscillatorService } from '../audioOscillatorService';\n\n@Component({\n templateUrl: 'audio-oscillator-authoring.component.html',\n styleUrl: 'audio-oscillator-authoring.component.scss',\n imports: [EditComponentPrompt, MatCheckbox, FormsModule, MatFormFieldModule, MatInput]\n})\nexport class AudioOscillatorAuthoring extends AbstractComponentAuthoring {\n maxAmplitude: number = this.audioOscillatorService.maxAmplitude;\n sawtoothChecked: boolean;\n sineChecked: boolean;\n squareChecked: boolean;\n triangleChecked: boolean;\n\n constructor(\n protected audioOscillatorService: AudioOscillatorService,\n protected configService: ConfigService,\n protected nodeService: TeacherNodeService,\n protected projectAssetService: ProjectAssetService,\n protected projectService: TeacherProjectService\n ) {\n super(configService, nodeService, projectAssetService, projectService);\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n this.populateCheckedOscillatorTypes();\n this.initializeStartingAmplitude();\n }\n\n populateCheckedOscillatorTypes(): void {\n this.sineChecked = this.componentContent.oscillatorTypes.includes('sine');\n this.squareChecked = this.componentContent.oscillatorTypes.includes('square');\n this.triangleChecked = this.componentContent.oscillatorTypes.includes('triangle');\n this.sawtoothChecked = this.componentContent.oscillatorTypes.includes('sawtooth');\n }\n\n initializeStartingAmplitude(): void {\n this.componentContent.startingAmplitude ??=\n this.audioOscillatorService.defaultStartingAmplitude;\n }\n\n showFrequencyInputChanged(): void {\n this.componentContent.canStudentEditFrequency = false;\n this.componentChanged();\n }\n\n showAmplitudeInputChanged(): void {\n this.componentContent.canStudentEditAmplitude = false;\n this.componentChanged();\n }\n\n oscillatorTypeClicked(): void {\n this.componentContent.oscillatorTypes = [];\n if (this.sineChecked) {\n this.componentContent.oscillatorTypes.push('sine');\n }\n if (this.squareChecked) {\n this.componentContent.oscillatorTypes.push('square');\n }\n if (this.triangleChecked) {\n this.componentContent.oscillatorTypes.push('triangle');\n }\n if (this.sawtoothChecked) {\n this.componentContent.oscillatorTypes.push('sawtooth');\n }\n this.componentChanged();\n }\n}\n", + "styleUrl": "audio-oscillator-authoring.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "audioOscillatorService", + "type": "AudioOscillatorService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeService", + "type": "TeacherNodeService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectAssetService", + "type": "ProjectAssetService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 24, + "jsdoctags": [ + { + "name": "audioOscillatorService", + "type": "AudioOscillatorService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeService", + "type": "TeacherNodeService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectAssetService", + "type": "ProjectAssetService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "AbstractComponentAuthoring" + ], + "templateData": "\nOscillator Types\n@if (componentContent.oscillatorTypes == null || componentContent.oscillatorTypes.length === 0) {\n \n (There are no oscillator types selected. Please select at least one oscillator type.)\n \n}\n
\n \n Sine\n \n
\n \n Square\n \n
\n \n Triangle\n \n
\n \n Sawtooth\n \n
\n\n Frequency\n \n Starting Frequency (Hz)\n \n \n \n Show Frequency Input\n \n \n Allow Student to Edit Frequency\n \n\n\n Amplitude\n \n Starting Amplitude (dB)\n \n \n \n Show Amplitude Input\n \n
\n \n Allow Student to Edit Amplitude\n \n
\n\n\n Grid Dimensions\n \n Oscillator Width (Pixels)\n \n \n \n Oscillator Height (Pixels)\n \n \n \n Oscillator Grid Size (Pixels)\n \n \n\n" + }, + { + "name": "AudioOscillatorShowWorkComponent", + "id": "component-AudioOscillatorShowWorkComponent-7a46a7df3dc4f7a5568a370ef84a5c2217018da2a63fb5cf8980616df34f8773c34e57713b41430409c02ca65de42b117a6659f77526704cc7f7d4b6a643d38f", + "file": "src/assets/wise5/components/audioOscillator/audio-oscillator-show-work/audio-oscillator-show-work.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "audio-oscillator-show-work", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "audio-oscillator-show-work.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "line": 8, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "componentState", + "deprecated": false, + "deprecationMessage": "", + "line": 9, + "type": "any", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "isRevision", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "line": 10, + "type": "boolean", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 7, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "amplitudesPlayed", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "modifierKind": [ + 124 + ] + }, + { + "name": "amplitudesPlayedSorted", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "modifierKind": [ + 124 + ] + }, + { + "name": "frequenciesPlayed", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "modifierKind": [ + 124 + ] + }, + { + "name": "frequenciesPlayedSorted", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "modifierKind": [ + 124 + ] + }, + { + "name": "isAmplitudeDataPresent", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 124 + ] + }, + { + "name": "maxAmplitudePlayed", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "modifierKind": [ + 124 + ] + }, + { + "name": "maxFrequencyPlayed", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "modifierKind": [ + 124 + ] + }, + { + "name": "minAmplitudePlayed", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "modifierKind": [ + 124 + ] + }, + { + "name": "minFrequencyPlayed", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "modifierKind": [ + 124 + ] + }, + { + "name": "numberOfAmplitudesPlayed", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 20, + "modifierKind": [ + 124 + ] + }, + { + "name": "numberOfFrequenciesPlayed", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 21, + "modifierKind": [ + 124 + ] + }, + { + "name": "numberOfUniqueAmplitudesPlayed", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 22, + "modifierKind": [ + 124 + ] + }, + { + "name": "numberOfUniqueFrequenciesPlayed", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 23, + "modifierKind": [ + 124 + ] + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "inheritance": { + "file": "ComponentShowWorkDirective" + } + } + ], + "methodsClass": [ + { + "name": "initializeAmplitudes", + "args": [ + { + "name": "studentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 41, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "studentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "initializeFrequencies", + "args": [ + { + "name": "studentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 32, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "studentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 25, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "ngAfterViewInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 33, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentShowWorkDirective" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { ComponentShowWorkDirective } from '../../component-show-work.directive';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n imports: [CommonModule],\n selector: 'audio-oscillator-show-work',\n templateUrl: 'audio-oscillator-show-work.component.html'\n})\nexport class AudioOscillatorShowWorkComponent extends ComponentShowWorkDirective {\n protected amplitudesPlayed: string;\n protected amplitudesPlayedSorted: string;\n protected frequenciesPlayed: string;\n protected frequenciesPlayedSorted: string;\n protected isAmplitudeDataPresent: boolean;\n protected maxAmplitudePlayed: number;\n protected maxFrequencyPlayed: number;\n protected minAmplitudePlayed: number;\n protected minFrequencyPlayed: number;\n protected numberOfAmplitudesPlayed: number;\n protected numberOfFrequenciesPlayed: number;\n protected numberOfUniqueAmplitudesPlayed: number;\n protected numberOfUniqueFrequenciesPlayed: number;\n\n ngOnInit(): void {\n super.ngOnInit();\n const studentData = this.componentState.studentData;\n this.initializeFrequencies(studentData);\n this.initializeAmplitudes(studentData);\n }\n\n protected initializeFrequencies(studentData: any): void {\n this.frequenciesPlayed = studentData.frequenciesPlayed.join(', ');\n this.frequenciesPlayedSorted = studentData.frequenciesPlayedSorted.join(', ');\n this.numberOfFrequenciesPlayed = studentData.numberOfFrequenciesPlayed;\n this.numberOfUniqueFrequenciesPlayed = studentData.numberOfUniqueFrequenciesPlayed;\n this.minFrequencyPlayed = studentData.minFrequencyPlayed;\n this.maxFrequencyPlayed = studentData.maxFrequencyPlayed;\n }\n\n protected initializeAmplitudes(studentData: any): void {\n if (studentData.amplitudesPlayed != null) {\n this.amplitudesPlayed = studentData.amplitudesPlayed.join(', ');\n this.amplitudesPlayedSorted = studentData.amplitudesPlayedSorted.join(', ');\n this.numberOfAmplitudesPlayed = studentData.numberOfAmplitudesPlayed;\n this.numberOfUniqueAmplitudesPlayed = studentData.numberOfUniqueAmplitudesPlayed;\n this.minAmplitudePlayed = studentData.minAmplitudePlayed;\n this.maxAmplitudePlayed = studentData.maxAmplitudePlayed;\n }\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [ + "ComponentShowWorkDirective" + ], + "templateData": "
\n
Frequencies (Hz)
\n
\n Frequencies Played: {{ frequenciesPlayed }}\n
\n
\n Frequencies Played Sorted: {{ frequenciesPlayedSorted }}\n
\n
\n Number of Frequencies Played: {{ numberOfFrequenciesPlayed }}\n
\n @if (numberOfUniqueFrequenciesPlayed != null) {\n
\n Number of Unique Frequencies Played:\n {{ numberOfUniqueFrequenciesPlayed }}\n
\n }\n
\n Minimum Frequency Played: {{ minFrequencyPlayed }}\n
\n
\n Maximum Frequency Played: {{ maxFrequencyPlayed }}\n
\n @if (amplitudesPlayed != null) {\n
Amplitudes (dB)
\n
\n Amplitudes Played: {{ amplitudesPlayed }}\n
\n
\n Amplitudes Played Sorted: {{ amplitudesPlayedSorted }}\n
\n
\n Number of Amplitudes Played: {{ numberOfAmplitudesPlayed }}\n
\n
\n Number of Unique Amplitudes Played:\n {{ numberOfUniqueAmplitudesPlayed }}\n
\n
\n Min Amplitude Played: {{ minAmplitudePlayed }}\n
\n
\n Max Amplitude Played: {{ maxAmplitudePlayed }}\n
\n }\n
\n" + }, + { + "name": "AudioOscillatorStudent", + "id": "component-AudioOscillatorStudent-58823e6bfe17118d7f7ff4eaa19ee27599d49522bb4fa3b9816d031f75fd2b9423cd2f277ff7439097e185eb17e048d976a16608770e94611b7f9e17c54b9a02", + "file": "src/assets/wise5/components/audioOscillator/audio-oscillator-student/audio-oscillator-student.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "audio-oscillator-student.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "component", + "deprecated": false, + "deprecationMessage": "", + "line": 24, + "type": "Component", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentState", + "deprecated": false, + "deprecationMessage": "", + "line": 25, + "type": "any", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isDisabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "line": 26, + "type": "boolean", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "mode", + "deprecated": false, + "deprecationMessage": "", + "line": 27, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 28, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "workgroupId", + "deprecated": false, + "deprecationMessage": "", + "line": 29, + "type": "number", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "outputsClass": [ + { + "name": "saveComponentStateEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 30, + "type": "EventEmitter", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "starterStateChangedEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 31, + "type": "EventEmitter", + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "propertiesClass": [ + { + "name": "amplitude", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 45 + }, + { + "name": "amplitudesPlayed", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "number[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 46 + }, + { + "name": "amplitudesPlayedSorted", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "number[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 47 + }, + { + "name": "analyser", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 48 + }, + { + "name": "audioContext", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 49 + }, + { + "name": "canStudentEditAmplitude", + "defaultValue": "true", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 50 + }, + { + "name": "canStudentEditFrequency", + "defaultValue": "true", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 51 + }, + { + "name": "canStudentViewAmplitudeInput", + "defaultValue": "true", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 52 + }, + { + "name": "canStudentViewFrequencyInput", + "defaultValue": "true", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 53 + }, + { + "name": "defaultDBSPL", + "defaultValue": "44", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 54 + }, + { + "name": "destination", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 55 + }, + { + "name": "frequenciesPlayed", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "number[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 56 + }, + { + "name": "frequenciesPlayedSorted", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "number[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 57 + }, + { + "name": "frequency", + "defaultValue": "440", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 58 + }, + { + "name": "gain", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 59 + }, + { + "name": "goodDraw", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 60 + }, + { + "name": "gridCellSize", + "defaultValue": "50", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 61 + }, + { + "name": "isPlaying", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 62 + }, + { + "name": "maxAmplitude", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 63 + }, + { + "name": "maxAmplitudePlayed", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 64 + }, + { + "name": "maxDBSPL", + "defaultValue": "this.audioOscillatorService.maxAmplitude", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 73 + }, + { + "name": "maxFrequencyPlayed", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 65 + }, + { + "name": "minAmplitude", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 74 + }, + { + "name": "minAmplitudePlayed", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 75 + }, + { + "name": "minDBSPL", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 76 + }, + { + "name": "minFrequencyPlayed", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 77 + }, + { + "name": "numberOfAmplitudesPlayed", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 78 + }, + { + "name": "numberOfFrequenciesPlayed", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 79 + }, + { + "name": "oscillator", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 80 + }, + { + "name": "oscillatorType", + "defaultValue": "'sine'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 81 + }, + { + "name": "oscillatorTypes", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 82 + }, + { + "name": "oscilloscopeHeight", + "defaultValue": "400", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 83 + }, + { + "name": "oscilloscopeId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 84 + }, + { + "name": "oscilloscopeWidth", + "defaultValue": "800", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 85 + }, + { + "name": "playStopButtonText", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 86 + }, + { + "name": "stopAfterGoodDraw", + "defaultValue": "true", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 87 + }, + { + "name": "annotationSavedToServerSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 53, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "attachments", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 33, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 34, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 35, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentType", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 36, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isDirty", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 45, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSaveButtonVisible", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 38, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSaveOrSubmitButtonVisible", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 41, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isShowAddToNotebookButton", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 39, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isStudentAttachmentEnabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 46, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmit", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 44, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmitButtonDisabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 42, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmitButtonVisible", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 40, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmitDirty", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 43, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "latestAnnotations", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 48, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "latestComponentState", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 50, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "nodeSubmitClickedSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 54, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "parentStudentWorkIds", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 49, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "prompt", + "deprecated": false, + "deprecationMessage": "", + "type": "SafeHtml", + "indexKey": "", + "optional": false, + "description": "", + "line": 37, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "requestComponentStateSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 52, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "showAddToNotebookButton", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 51, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "studentWorkSavedToServerSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 55, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "submitCounter", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 47, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 56, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "methodsClass": [ + { + "name": "addAmplitudeDataToStudentData", + "args": [ + { + "name": "studentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 284, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addAmplitudePlayed", + "args": [ + { + "name": "amplitude", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 400, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "amplitude", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addFrequencyDataToStudentData", + "args": [ + { + "name": "studentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 275, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addFrequencyPlayed", + "args": [ + { + "name": "frequency", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 396, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "frequency", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "amplitudeChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 363, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "amplitudeKeyUp", + "args": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 368, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "convertDBFSToGainValue", + "args": [ + { + "name": "dbfs", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 359, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nThe decibel FS to gain conversion function was obtained from\nhttps://www.w3.org/TR/webaudio/#linear-to-decibel\n", + "description": "

The decibel FS to gain conversion function was obtained from\nhttps://www.w3.org/TR/webaudio/#linear-to-decibel

\n", + "jsdoctags": [ + { + "name": "dbfs", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "convertDBSPLToDBFS", + "args": [ + { + "name": "dbspl", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 347, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nThere is no actual decibel FS (dBFS) to decibel SPL (dBSPL) conversion because it does not\nexist.\n- dBFS is a computer signal measurement that ranges from negative infinity to 0, where 0 is the\nloudest the computer can output.\n- dBSPL is a sound pressure measurement that ranges from 0 to 194, where 194 is the loudest\npossible sound in air.\nWe will use a conversion function that will do its best to convert from dBFS to dBSPL in our\ncontext to get the basic idea across.\n", + "description": "

There is no actual decibel FS (dBFS) to decibel SPL (dBSPL) conversion because it does not\nexist.

\n
    \n
  • dBFS is a computer signal measurement that ranges from negative infinity to 0, where 0 is the\nloudest the computer can output.
  • \n
  • dBSPL is a sound pressure measurement that ranges from 0 to 194, where 194 is the loudest\npossible sound in air.\nWe will use a conversion function that will do its best to convert from dBFS to dBSPL in our\ncontext to get the basic idea across.
  • \n
\n", + "jsdoctags": [ + { + "name": "dbspl", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createComponentState", + "args": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 239, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createMergedComponentState", + "args": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 617, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCreate a component state with the merged student responses.\n", + "description": "

Create a component state with the merged student responses.

\n", + "jsdoctags": [ + { + "name": { + "pos": 20599, + "end": 20614, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentStates" + }, + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 20593, + "end": 20598, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

An array of component states.

\n" + }, + { + "tagName": { + "pos": 20651, + "end": 20657, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

A component state with the merged student responses.

\n" + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createStudentData", + "args": [ + { + "name": "amplitudesPlayed", + "type": "number[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]" + }, + { + "name": "frequenciesPlayed", + "type": "number[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]" + }, + { + "name": "submitCounter", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "0" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 263, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "amplitudesPlayed", + "type": "number[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]", + "tagName": { + "text": "param" + } + }, + { + "name": "frequenciesPlayed", + "type": "number[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]", + "tagName": { + "text": "param" + } + }, + { + "name": "submitCounter", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "0", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "drawHorizontalLine", + "args": [ + { + "name": "ctx", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "y", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "width", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 595, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "ctx", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "y", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "width", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "drawHorizontalLines", + "args": [ + { + "name": "ctx", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "width", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "height", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "gridCellSize", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 564, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "ctx", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "width", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "height", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "gridCellSize", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "drawHorizontalLinesAboveMiddle", + "args": [ + { + "name": "ctx", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "width", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "height", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "gridCellSize", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 569, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "ctx", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "width", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "height", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "gridCellSize", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "drawHorizontalLinesBelowMiddle", + "args": [ + { + "name": "ctx", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "width", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "height", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "gridCellSize", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 582, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "ctx", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "width", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "height", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "gridCellSize", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "drawOscilloscope", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 411, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "drawOscilloscopeGrid", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 536, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "drawOscilloscopePoints", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 457, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "drawPoint", + "args": [ + { + "name": "ctx", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isFirstPointDrawn", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "x", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "y", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 520, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "ctx", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "isFirstPointDrawn", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "x", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "y", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "drawVerticalLine", + "args": [ + { + "name": "ctx", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "x", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "height", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 559, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "ctx", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "x", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "height", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "drawVerticalLines", + "args": [ + { + "name": "ctx", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "width", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "height", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "gridCellSize", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 551, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "ctx", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "width", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "height", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "gridCellSize", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getGain", + "args": [ + { + "name": "dbspl", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 332, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "dbspl", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getSliceWidth", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 450, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getTimeData", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 436, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "initializeAudioContext", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 155, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isAmplitudeInStudentWork", + "args": [ + { + "name": "studentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 228, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isDrawAgain", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 532, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isFirstRisingZeroCrossingIndexCloseToZero", + "args": [ + { + "name": "firstRisingZeroCrossingIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 528, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "firstRisingZeroCrossingIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isFirstRisingZeroCrossingPoint", + "args": [ + { + "name": "foundFirstRisingZeroCrossing", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentY", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nextY", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 512, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "foundFirstRisingZeroCrossing", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentY", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nextY", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isNumberEvent", + "args": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 374, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isNumPadNumber", + "args": [ + { + "name": "keyCode", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 383, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "keyCode", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isTopRowNumber", + "args": [ + { + "name": "keyCode", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 379, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "keyCode", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "limitAmplitudeIfNecessary", + "args": [ + { + "name": "amplitude", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 387, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "amplitude", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "mergeAmplitudesPlayed", + "args": [ + { + "name": "existingStudentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "newStudentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 645, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "existingStudentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "newStudentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "mergeFrequenciesPlayed", + "args": [ + { + "name": "existingStudentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "newStudentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 639, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "existingStudentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "newStudentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "mergeStudentData", + "args": [ + { + "name": "existingStudentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "newStudentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 633, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nMerge the values in the student data.\n", + "description": "

Merge the values in the student data.

\n", + "jsdoctags": [ + { + "name": { + "pos": 21194, + "end": 21213, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "existingStudentData" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 21188, + "end": 21193, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The old student data we will merge into.

\n" + }, + { + "name": { + "pos": 21267, + "end": 21281, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "newStudentData" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 21261, + "end": 21266, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The new student data we will merge.

\n" + }, + { + "tagName": { + "pos": 21324, + "end": 21330, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

The merged student data.

\n" + } + ] + }, + { + "name": "ngAfterViewInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 145, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 149, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 112, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "play", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 311, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "refreshOscilloscope", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 600, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "restartPlayer", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 607, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "setAmplitude", + "args": [ + { + "name": "amplitude", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 186, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "amplitude", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setAmplitudeStudentWork", + "args": [ + { + "name": "studentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 232, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setButtonTextToPlay", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 303, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "setButtonTextToStop", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 307, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "setCanStudentEditAmplitude", + "args": [ + { + "name": "canStudentEditAmplitude", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "true" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 194, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "canStudentEditAmplitude", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "true", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setCanStudentEditFrequency", + "args": [ + { + "name": "canStudentEditFrequency", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "true" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 198, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "canStudentEditFrequency", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "true", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setCanStudentViewAmplitudeInput", + "args": [ + { + "name": "canStudentViewAmplitudeInput", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "true" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 202, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "canStudentViewAmplitudeInput", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "true", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setCanStudentViewFrequencyInput", + "args": [ + { + "name": "canStudentViewFrequencyInput", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "true" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 206, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "canStudentViewFrequencyInput", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "true", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setFieldMininum1", + "args": [ + { + "name": "field", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "value", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 177, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "field", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "value", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setFrequencyStudentWork", + "args": [ + { + "name": "studentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 221, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setMinMaxAmplitude", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 181, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "setParametersFromComponentContent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 159, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "setStudentWork", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 210, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "startDrawingAudioSignalLine", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 443, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "stop", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 404, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "togglePlay", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 293, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "addDefaultFeedback", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 688, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "attachStudentAsset", + "args": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 232, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "broadcastDoneRenderingComponent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 325, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "canSubmit", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 488, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "clearLatestComponentState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 555, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "confirmSubmit", + "args": [ + { + "name": "numberOfSubmitsLeft", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 468, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "numberOfSubmitsLeft", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "connectedComponentStudentDataSaved", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 796, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nThis function is called when a connected component of this component saves student data.\nThis was added to handle a race condition when a step has a connected component on a previous\nstep but the connected component student work on the previous step was not being imported\nbecause it wasn't being saved in time.\nHere is an example of what was happening\n- Student generates work on step 1 but does not click the save button\n- Student goes to step 2 which triggers a promise to save the student work on step 1\n- Step 2 is loaded and checks if there is any work it needs to import from step 1\n- The work in step 1 has not saved yet so step 2 does not import any work and loads without\n importing any work\n- The work from step 1 is then saved\nHere is the additional process that this function performs to fix this problem\n- Step 2 listens for when work is saved on step 1\n- When the work for step 1 is saved, step 2 checks to see if it needs to import that work\n", + "description": "

This function is called when a connected component of this component saves student data.\nThis was added to handle a race condition when a step has a connected component on a previous\nstep but the connected component student work on the previous step was not being imported\nbecause it wasn't being saved in time.\nHere is an example of what was happening

\n
    \n
  • Student generates work on step 1 but does not click the save button
  • \n
  • Student goes to step 2 which triggers a promise to save the student work on step 1
  • \n
  • Step 2 is loaded and checks if there is any work it needs to import from step 1
  • \n
  • The work in step 1 has not saved yet so step 2 does not import any work and loads without\nimporting any work
  • \n
  • The work from step 1 is then saved\nHere is the additional process that this function performs to fix this problem
  • \n
  • Step 2 listens for when work is saved on step 1
  • \n
  • When the work for step 1 is saved, step 2 checks to see if it needs to import that work
  • \n
\n", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "copyAndAttachStudentAsset", + "args": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 218, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "copyPublicNotebookItem", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 632, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "copyPublicNotebookItemButtonClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 747, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createAutoCommentAnnotation", + "args": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 725, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createAutoScoreAnnotation", + "args": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 714, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createComponentStateAdditionalProcessing", + "args": [ + { + "name": "promise", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 598, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "promise", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createComponentStateAndBroadcast", + "args": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 559, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createDefaultFeedbackAnnotation", + "args": [ + { + "name": "feedbackText", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 706, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "feedbackText", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createNewComponentState", + "args": [], + "optional": false, + "returnType": "Partial", + "typeParameters": [], + "line": 818, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "disableAllInput", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 492, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "disableComponentIfNecessary", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 332, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "disableSubmitButton", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 496, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "doAttachStudentAsset", + "args": [ + { + "name": "studentAssetRequest", + "type": "StudentAssetRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 212, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "studentAssetRequest", + "type": "StudentAssetRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 541, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentStudentDataChanged", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 572, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentSubmitDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 548, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentSubmitTriggered", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 512, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "generateImageFromComponentState", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 615, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nRender the component state and then generate an image from it.\n", + "description": "

Render the component state and then generate an image from it.

\n", + "jsdoctags": [ + { + "name": { + "pos": 18804, + "end": 18818, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 18798, + "end": 18803, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The component state to render.

\n" + }, + { + "tagName": { + "pos": 18856, + "end": 18862, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

A promise that will return an image.

\n" + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "generateStarterState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 216, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getAction", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 321, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getClientSaveTime", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 684, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getComponentStatePromise", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 309, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getComponentStateWrapper", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "ComponentStateWrapper", + "typeParameters": [], + "line": 301, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getDefaultFeedback", + "args": [ + { + "name": "submitCount", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 702, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "submitCount", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getElementById", + "args": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getFirstResult", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 758, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "getFirstResult", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getIsDirty", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 277, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getMaxScore", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 680, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getMaxSubmitCount", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 460, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getNumberOfSubmitsLeft", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 456, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "handleConnectedComponents", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 352, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "handleConnectedComponentsPostProcess", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 385, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "handleStudentWorkSavedToServer", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 263, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "handleStudentWorkSavedToServerAdditionalProcessing", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 287, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasAnySubmissions", + "args": [ + { + "name": "componentStates", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 344, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentStates", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasDefaultFeedback", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 695, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasMaxScore", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 676, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasMaxSubmitCount", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 437, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasMaxSubmitCountAndUsedAllSubmits", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 452, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasSubmitMessage", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 504, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasSubmitsLeft", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 500, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasUsedAllSubmits", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 441, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "importWorkAsBackground", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 658, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "importWorkByStudentWorkId", + "args": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 170, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "incrementSubmitCounter", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 389, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isAddToNotebookEnabled", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 624, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isForThisComponent", + "args": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 192, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isFromConnectedComponent", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 766, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isHandleConnectedComponentAfterConnectedComponentStudentDataSaved", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 802, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isLockAfterSubmit", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 348, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isNotebookEnabled", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 643, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isPreviewMode", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 109, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSameComponent", + "args": [ + { + "name": "component", + "type": "Component", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 188, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "component", + "type": "Component", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isStudentNoteClippingEnabled", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 647, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isWorkFromClassmate", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 196, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "lockIfNecessary", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 281, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "performSubmit", + "args": [ + { + "name": "submitTriggeredBy", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 472, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "submitTriggeredBy", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "processConnectedComponentState", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 184, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "processLatestStudentWork", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 580, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "registerNotebookItemChosenListener", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 736, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "removeAttachment", + "args": [ + { + "name": "attachment", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 245, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "attachment", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "saveButtonClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 393, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "saveForAuthoringPreviewMode", + "args": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 404, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setBackgroundImage", + "args": [ + { + "name": "image", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 674, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "image", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setComponentStateAsBackgroundImage", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 668, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 537, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsDirtyAndBroadcast", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 527, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsSubmit", + "args": [ + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 464, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsSubmitDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 508, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsSubmitDirtyAndBroadcast", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 532, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setParentStudentWorkIdToCurrentStudentWork", + "args": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 180, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setSubmitCounter", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 811, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "shouldCreateComponentState", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 317, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "showStudentAssets", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 651, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "studentDataChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 519, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "submit", + "args": [ + { + "name": "submitTriggeredBy", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 416, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "submitTriggeredBy", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "submitButtonClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 412, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToAnnotationSavedToServer", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 123, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToAttachStudentAsset", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 200, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToNodeSubmitClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 137, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToNotebookItemChosen", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 159, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToNotifyConnectedComponents", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 147, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToRequestComponentState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 289, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToStudentWorkSavedToServer", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 252, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToSubscriptions", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 113, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "tryDisableComponent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 445, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "ComponentHeaderComponent", + "type": "component" + }, + { + "name": "MatFormField" + }, + { + "name": "MatLabel" + }, + { + "name": "MatSelect" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatOption" + }, + { + "name": "MatInput" + }, + { + "name": "MatButton" + }, + { + "name": "MatTooltip" + }, + { + "name": "MatIcon" + }, + { + "name": "ComponentSaveSubmitButtonsComponent", + "type": "component" + }, + { + "name": "ComponentAnnotationsComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { copy } from '../../../common/object/object';\nimport { AnnotationService } from '../../../services/annotationService';\nimport { ConfigService } from '../../../services/configService';\nimport { NodeService } from '../../../services/nodeService';\nimport { NotebookService } from '../../../services/notebookService';\nimport { StudentAssetService } from '../../../services/studentAssetService';\nimport { StudentDataService } from '../../../services/studentDataService';\nimport { ComponentStudent } from '../../component-student.component';\nimport { ComponentService } from '../../componentService';\nimport { AudioOscillatorService } from '../audioOscillatorService';\nimport { hasConnectedComponent } from '../../../common/ComponentContent';\nimport { ComponentHeaderComponent } from '../../../directives/component-header/component-header.component';\nimport { MatFormField, MatLabel } from '@angular/material/form-field';\nimport { MatSelect } from '@angular/material/select';\nimport { FormsModule } from '@angular/forms';\nimport { MatOption } from '@angular/material/autocomplete';\nimport { MatInput } from '@angular/material/input';\nimport { MatButton } from '@angular/material/button';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { MatIcon } from '@angular/material/icon';\nimport { ComponentSaveSubmitButtonsComponent } from '../../../directives/component-save-submit-buttons/component-save-submit-buttons.component';\nimport { ComponentAnnotationsComponent } from '../../../directives/componentAnnotations/component-annotations.component';\n\n@Component({\n imports: [\n ComponentHeaderComponent,\n MatFormField,\n MatLabel,\n MatSelect,\n FormsModule,\n MatOption,\n MatInput,\n MatButton,\n MatTooltip,\n MatIcon,\n ComponentSaveSubmitButtonsComponent,\n ComponentAnnotationsComponent\n ],\n styleUrl: 'audio-oscillator-student.component.scss',\n templateUrl: 'audio-oscillator-student.component.html'\n})\nexport class AudioOscillatorStudent extends ComponentStudent {\n amplitude: number;\n amplitudesPlayed: number[] = [];\n amplitudesPlayedSorted: number[] = [];\n analyser: any;\n audioContext: any;\n canStudentEditAmplitude: boolean = true;\n canStudentEditFrequency: boolean = true;\n canStudentViewAmplitudeInput: boolean = true;\n canStudentViewFrequencyInput: boolean = true;\n defaultDBSPL: number = 44;\n destination: any;\n frequenciesPlayed: number[] = [];\n frequenciesPlayedSorted: number[] = [];\n frequency: number = 440;\n gain: any;\n goodDraw: boolean;\n gridCellSize: number = 50;\n isPlaying: boolean = false;\n maxAmplitude: number;\n maxAmplitudePlayed: number;\n maxFrequencyPlayed: number;\n // We have strategically chosen the max dBSPL to be 50 so that when the student lowers the\n // amplitude to 0 it coincides with the sound curve being completely flat and no more sound being\n // emitted. If we chose a value much higher, the student could lower the amplitude to something\n // low like 20 and no longer see a curve in the sound wave and no longer hear the sound even when\n // they should still be able to see and hear 20 dBSPL. If we chose a value much lower, the student\n // could set the amplitude to 0 but still see a curve in the sound wave and also still hear the\n // sound when they should not be able to see or hear anything.\n maxDBSPL: number = this.audioOscillatorService.maxAmplitude;\n minAmplitude: number;\n minAmplitudePlayed: number;\n minDBSPL: number = 0;\n minFrequencyPlayed: number;\n numberOfAmplitudesPlayed: number = 0;\n numberOfFrequenciesPlayed: number = 0;\n oscillator: any;\n oscillatorType: string = 'sine';\n oscillatorTypes: string[] = [];\n oscilloscopeHeight: number = 400;\n oscilloscopeId: string;\n oscilloscopeWidth: number = 800;\n playStopButtonText: string;\n stopAfterGoodDraw: boolean = true;\n\n constructor(\n protected annotationService: AnnotationService,\n private audioOscillatorService: AudioOscillatorService,\n protected componentService: ComponentService,\n protected configService: ConfigService,\n protected dialog: MatDialog,\n protected nodeService: NodeService,\n protected notebookService: NotebookService,\n protected studentAssetService: StudentAssetService,\n protected studentDataService: StudentDataService\n ) {\n super(\n annotationService,\n componentService,\n configService,\n dialog,\n nodeService,\n notebookService,\n studentAssetService,\n studentDataService\n );\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n const domIdEnding = this.audioOscillatorService.getDomIdEnding(\n this.nodeId,\n this.componentId,\n this.componentState\n );\n this.oscilloscopeId = this.audioOscillatorService.getOscilloscopeId(domIdEnding);\n this.setButtonTextToPlay();\n this.setParametersFromComponentContent();\n\n if (hasConnectedComponent(this.componentContent, 'showWork')) {\n this.handleConnectedComponents();\n } else if (\n this.audioOscillatorService.componentStateHasStudentWork(\n this.componentState,\n this.componentContent\n )\n ) {\n this.setStudentWork(this.componentState);\n } else if (this.component.hasConnectedComponent()) {\n this.handleConnectedComponents();\n }\n\n if (this.hasMaxSubmitCountAndUsedAllSubmits()) {\n this.disableSubmitButton();\n }\n\n this.disableComponentIfNecessary();\n this.initializeAudioContext();\n this.broadcastDoneRenderingComponent();\n }\n\n ngAfterViewInit(): void {\n this.drawOscilloscopeGrid();\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n this.stop();\n this.audioContext.close();\n }\n\n initializeAudioContext(): void {\n this.audioContext = new AudioContext();\n }\n\n setParametersFromComponentContent(): void {\n this.frequency = this.componentContent.startingFrequency;\n this.oscillatorTypes = this.componentContent.oscillatorTypes;\n if (this.componentContent.oscillatorTypes.length > 0) {\n this.oscillatorType = this.componentContent.oscillatorTypes[0];\n }\n this.setFieldMininum1('oscilloscopeWidth', this.componentContent.oscilloscopeWidth);\n this.setFieldMininum1('oscilloscopeHeight', this.componentContent.oscilloscopeHeight);\n this.setFieldMininum1('gridCellSize', this.componentContent.gridCellSize);\n this.stopAfterGoodDraw = this.componentContent.stopAfterGoodDraw;\n this.setMinMaxAmplitude();\n this.setAmplitude(this.componentContent.startingAmplitude);\n this.setCanStudentEditAmplitude(this.componentContent.canStudentEditAmplitude);\n this.setCanStudentViewAmplitudeInput(this.componentContent.canStudentViewAmplitudeInput);\n this.setCanStudentEditFrequency(this.componentContent.canStudentEditFrequency);\n this.setCanStudentViewFrequencyInput(this.componentContent.canStudentViewFrequencyInput);\n }\n\n setFieldMininum1(field: string, value: number): void {\n this[field] = value < 1 ? 1 : value;\n }\n\n setMinMaxAmplitude(): void {\n this.maxAmplitude = this.maxDBSPL;\n this.minAmplitude = this.minDBSPL;\n }\n\n setAmplitude(amplitude: number): void {\n if (amplitude == null) {\n this.amplitude = this.defaultDBSPL;\n } else {\n this.amplitude = amplitude;\n }\n }\n\n setCanStudentEditAmplitude(canStudentEditAmplitude: boolean = true): void {\n this.canStudentEditAmplitude = canStudentEditAmplitude;\n }\n\n setCanStudentEditFrequency(canStudentEditFrequency: boolean = true): void {\n this.canStudentEditFrequency = canStudentEditFrequency;\n }\n\n setCanStudentViewAmplitudeInput(canStudentViewAmplitudeInput: boolean = true): void {\n this.canStudentViewAmplitudeInput = canStudentViewAmplitudeInput;\n }\n\n setCanStudentViewFrequencyInput(canStudentViewFrequencyInput: boolean = true): void {\n this.canStudentViewFrequencyInput = canStudentViewFrequencyInput;\n }\n\n setStudentWork(componentState: any): void {\n const studentData = componentState.studentData;\n this.setFrequencyStudentWork(studentData);\n if (this.isAmplitudeInStudentWork(studentData)) {\n this.setAmplitudeStudentWork(studentData);\n }\n this.submitCounter = studentData.submitCounter;\n this.attachments = studentData.attachments;\n this.processLatestStudentWork();\n }\n\n setFrequencyStudentWork(studentData: any): void {\n this.frequenciesPlayed = studentData.frequenciesPlayed;\n if (this.frequenciesPlayed.length > 0) {\n this.frequency = this.frequenciesPlayed[this.frequenciesPlayed.length - 1];\n }\n }\n\n isAmplitudeInStudentWork(studentData: any): boolean {\n return studentData.amplitudesPlayed != null;\n }\n\n setAmplitudeStudentWork(studentData: any): void {\n this.amplitudesPlayed = studentData.amplitudesPlayed;\n if (this.amplitudesPlayed.length > 0) {\n this.amplitude = this.amplitudesPlayed[this.amplitudesPlayed.length - 1];\n }\n }\n\n createComponentState(action: string): Promise {\n const componentState: any = this.createNewComponentState();\n componentState.isSubmit = this.isSubmit;\n componentState.componentType = 'AudioOscillator';\n componentState.nodeId = this.nodeId;\n componentState.componentId = this.componentId;\n const studentData = {\n submitCounter: this.submitCounter\n };\n this.addFrequencyDataToStudentData(studentData);\n this.addAmplitudeDataToStudentData(studentData);\n componentState.studentData = studentData;\n if (this.isSubmit && this.hasDefaultFeedback()) {\n this.addDefaultFeedback(componentState);\n }\n return new Promise((resolve, reject) => {\n this.createComponentStateAdditionalProcessing(\n { resolve: resolve, reject: reject },\n componentState,\n action\n );\n });\n }\n\n createStudentData(\n amplitudesPlayed: number[] = [],\n frequenciesPlayed: number[] = [],\n submitCounter: number = 0\n ): any {\n return {\n amplitudesPlayed: amplitudesPlayed,\n frequenciesPlayed: frequenciesPlayed,\n submitCounter: submitCounter\n };\n }\n\n addFrequencyDataToStudentData(studentData: any): void {\n studentData.frequenciesPlayed = this.frequenciesPlayed;\n studentData.frequenciesPlayedSorted = copy(this.frequenciesPlayed).sort();\n studentData.numberOfFrequenciesPlayed = this.frequenciesPlayed.length;\n studentData.numberOfUniqueFrequenciesPlayed = [...new Set(this.frequenciesPlayed)].length;\n studentData.minFrequencyPlayed = Math.min(...this.frequenciesPlayed);\n studentData.maxFrequencyPlayed = Math.max(...this.frequenciesPlayed);\n }\n\n addAmplitudeDataToStudentData(studentData: any): void {\n studentData.amplitudesPlayed = this.amplitudesPlayed;\n studentData.amplitudesPlayedSorted = copy(this.amplitudesPlayed).sort();\n studentData.numberOfAmplitudesPlayed = this.amplitudesPlayed.length;\n studentData.numberOfUniqueAmplitudesPlayed = [...new Set(this.amplitudesPlayed)].length;\n studentData.minAmplitudePlayed = Math.min(...this.amplitudesPlayed);\n studentData.maxAmplitudePlayed = Math.max(...this.amplitudesPlayed);\n }\n\n togglePlay(): void {\n if (this.isPlaying) {\n this.stop();\n this.setButtonTextToPlay();\n } else {\n this.play();\n this.setButtonTextToStop();\n }\n }\n\n setButtonTextToPlay(): void {\n this.playStopButtonText = $localize`Play`;\n }\n\n setButtonTextToStop(): void {\n this.playStopButtonText = $localize`Stop`;\n }\n\n play(): void {\n this.oscillator = this.audioContext.createOscillator();\n this.oscillator.type = this.oscillatorType;\n this.oscillator.frequency.value = this.frequency;\n this.gain = this.audioContext.createGain();\n this.gain.gain.value = this.getGain(this.amplitude);\n this.destination = this.audioContext.destination;\n this.analyser = this.audioContext.createAnalyser();\n this.analyser.fftSize = 2048;\n this.oscillator.connect(this.gain);\n this.gain.connect(this.destination);\n this.gain.connect(this.analyser);\n this.oscillator.start();\n this.goodDraw = false;\n this.isPlaying = true;\n this.drawOscilloscope();\n this.addFrequencyPlayed(this.frequency);\n this.addAmplitudePlayed(this.amplitude);\n this.studentDataChanged();\n }\n\n getGain(dbspl: number): number {\n const dbfs = this.convertDBSPLToDBFS(dbspl);\n return this.convertDBFSToGainValue(dbfs);\n }\n\n /**\n * There is no actual decibel FS (dBFS) to decibel SPL (dBSPL) conversion because it does not\n * exist.\n * - dBFS is a computer signal measurement that ranges from negative infinity to 0, where 0 is the\n * loudest the computer can output.\n * - dBSPL is a sound pressure measurement that ranges from 0 to 194, where 194 is the loudest\n * possible sound in air.\n * We will use a conversion function that will do its best to convert from dBFS to dBSPL in our\n * context to get the basic idea across.\n */\n convertDBSPLToDBFS(dbspl: number): number {\n // Since we need a number that is negative or 0, we will take the dBSPL the student has chosen\n // and subtract the max dBSPL that we allow. This means the higher the dBSPL the student chose,\n // the closer the dBFS will be to 0 and therefore louder. The lower the dBSPL the student\n // chose, the more negative the dBFS will be and therefore quieter.\n return dbspl - this.maxDBSPL;\n }\n\n /**\n * The decibel FS to gain conversion function was obtained from\n * https://www.w3.org/TR/webaudio/#linear-to-decibel\n */\n convertDBFSToGainValue(dbfs: number): number {\n return Math.pow(10, dbfs / 20);\n }\n\n amplitudeChanged(): void {\n this.amplitude = this.limitAmplitudeIfNecessary(this.amplitude);\n this.refreshOscilloscope();\n }\n\n amplitudeKeyUp(event: any): void {\n if (this.isNumberEvent(event)) {\n this.amplitudeChanged();\n }\n }\n\n isNumberEvent(event: any): boolean {\n const keyCode = event.keyCode;\n return this.isTopRowNumber(keyCode) || this.isNumPadNumber(keyCode);\n }\n\n isTopRowNumber(keyCode: number): boolean {\n return 48 <= keyCode && keyCode <= 57;\n }\n\n isNumPadNumber(keyCode: number): boolean {\n return 96 <= keyCode && keyCode <= 105;\n }\n\n limitAmplitudeIfNecessary(amplitude: number): number {\n if (amplitude > this.maxAmplitude) {\n return this.maxAmplitude;\n } else if (amplitude < this.minAmplitude) {\n return this.minAmplitude;\n }\n return amplitude;\n }\n\n addFrequencyPlayed(frequency: number): void {\n this.frequenciesPlayed.push(frequency);\n }\n\n addAmplitudePlayed(amplitude: number): void {\n this.amplitudesPlayed.push(amplitude);\n }\n\n stop(): void {\n if (this.oscillator != null) {\n this.oscillator.stop();\n }\n this.isPlaying = false;\n }\n\n drawOscilloscope(): void {\n if (!this.isPlaying) {\n return;\n }\n\n this.drawOscilloscopeGrid();\n this.startDrawingAudioSignalLine();\n const firstRisingZeroCrossingIndex = this.drawOscilloscopePoints();\n\n if (this.isFirstRisingZeroCrossingIndexCloseToZero(firstRisingZeroCrossingIndex)) {\n /*\n * we want the first rising zero crossing index to be close to zero so that the graph spans\n * almost the whole width of the canvas. if the first rising zero crossing index was close to\n * bufferLength size then we would see a cut off graph.\n */\n this.goodDraw = true;\n }\n\n if (this.isDrawAgain()) {\n requestAnimationFrame(() => {\n this.drawOscilloscope();\n });\n }\n }\n\n getTimeData(): any {\n const bufferLength = this.analyser.frequencyBinCount;\n const timeData = new Uint8Array(bufferLength);\n this.analyser.getByteTimeDomainData(timeData);\n return timeData;\n }\n\n startDrawingAudioSignalLine(): void {\n const ctx = (document.getElementById(this.oscilloscopeId)).getContext('2d');\n ctx.lineWidth = 2;\n ctx.strokeStyle = 'rgb(0, 200, 0)';\n ctx.beginPath();\n }\n\n getSliceWidth(): number {\n const ctx = (document.getElementById(this.oscilloscopeId)).getContext('2d');\n const bufferLength = this.analyser.frequencyBinCount;\n const width = ctx.canvas.width;\n return (width * 1.0) / bufferLength;\n }\n\n drawOscilloscopePoints(): number {\n const ctx = (document.getElementById(this.oscilloscopeId)).getContext('2d');\n const height = ctx.canvas.height;\n const timeData = this.getTimeData();\n const sliceWidth = this.getSliceWidth();\n let x = 0;\n let v = 0;\n let y = 0;\n\n /*\n * we want to start drawing the audio signal such that the first point is at 0,0 on the\n * oscilloscope and the signal rises after that.\n * e.g. pretend the ascii below is a sine wave\n * _ _\n * / \\ / \\\n * -------------------\n * \\_/ \\_/\n */\n let foundFirstRisingZeroCrossing = false;\n let firstRisingZeroCrossingIndex = null;\n let isFirstPointDrawn = false;\n\n /*\n * loop through all the points and draw the signal from the first rising zero crossing to the\n * end of the buffer\n */\n for (let i = 0; i < timeData.length; i++) {\n const currentY = timeData[i] - 128;\n const nextY = timeData[i + 1] - 128;\n\n if (this.isFirstRisingZeroCrossingPoint(foundFirstRisingZeroCrossing, currentY, nextY)) {\n foundFirstRisingZeroCrossing = true;\n firstRisingZeroCrossingIndex = i;\n }\n\n if (foundFirstRisingZeroCrossing) {\n /*\n * get the height of the point. we need to perform this subtraction of 128 to flip the value\n * since canvas positioning is relative to the upper left corner being 0,0.\n */\n v = (128 - (timeData[i] - 128)) / 128.0;\n y = (v * height) / 2;\n this.drawPoint(ctx, isFirstPointDrawn, x, y);\n if (!isFirstPointDrawn) {\n isFirstPointDrawn = true;\n }\n x += sliceWidth;\n }\n }\n\n ctx.stroke();\n\n return firstRisingZeroCrossingIndex;\n }\n\n isFirstRisingZeroCrossingPoint(\n foundFirstRisingZeroCrossing: boolean,\n currentY: number,\n nextY: number\n ): boolean {\n return !foundFirstRisingZeroCrossing && (currentY < 0 || currentY == 0) && nextY > 0;\n }\n\n drawPoint(ctx: any, isFirstPointDrawn: boolean, x: number, y: number): void {\n if (isFirstPointDrawn) {\n ctx.lineTo(x, y);\n } else {\n ctx.moveTo(x, y);\n }\n }\n\n isFirstRisingZeroCrossingIndexCloseToZero(firstRisingZeroCrossingIndex: number): boolean {\n return firstRisingZeroCrossingIndex > 0 && firstRisingZeroCrossingIndex < 10;\n }\n\n isDrawAgain(): boolean {\n return !this.stopAfterGoodDraw || !this.goodDraw;\n }\n\n drawOscilloscopeGrid(): void {\n const ctx = (document.getElementById(this.oscilloscopeId)).getContext('2d');\n const width = ctx.canvas.width;\n const height = ctx.canvas.height;\n const gridCellSize = this.gridCellSize;\n ctx.fillStyle = 'white';\n ctx.fillRect(0, 0, width, height);\n ctx.lineWidth = 2;\n ctx.strokeStyle = 'lightgrey';\n ctx.beginPath();\n this.drawVerticalLines(ctx, width, height, gridCellSize);\n this.drawHorizontalLines(ctx, width, height, gridCellSize);\n ctx.stroke();\n }\n\n drawVerticalLines(ctx: any, width: number, height: number, gridCellSize: number): void {\n let x = 0;\n while (x < width) {\n this.drawVerticalLine(ctx, x, height);\n x += gridCellSize;\n }\n }\n\n drawVerticalLine(ctx: any, x: number, height: number): void {\n ctx.moveTo(x, 0);\n ctx.lineTo(x, height);\n }\n\n drawHorizontalLines(ctx: any, width: number, height: number, gridCellSize: number): void {\n this.drawHorizontalLinesAboveMiddle(ctx, width, height, gridCellSize);\n this.drawHorizontalLinesBelowMiddle(ctx, width, height, gridCellSize);\n }\n\n drawHorizontalLinesAboveMiddle(\n ctx: any,\n width: number,\n height: number,\n gridCellSize: number\n ): void {\n let y = height / 2;\n while (y >= 0) {\n this.drawHorizontalLine(ctx, y, width);\n y -= gridCellSize;\n }\n }\n\n drawHorizontalLinesBelowMiddle(\n ctx: any,\n width: number,\n height: number,\n gridCellSize: number\n ): void {\n let y = height / 2;\n while (y < height) {\n this.drawHorizontalLine(ctx, y, width);\n y += gridCellSize;\n }\n }\n\n drawHorizontalLine(ctx: any, y: number, width: number): void {\n ctx.moveTo(0, y);\n ctx.lineTo(width, y);\n }\n\n refreshOscilloscope(): void {\n this.drawOscilloscopeGrid();\n if (this.isPlaying) {\n this.restartPlayer();\n }\n }\n\n restartPlayer(): void {\n this.stop();\n this.play();\n }\n\n /**\n * Create a component state with the merged student responses.\n * @param componentStates An array of component states.\n * @return A component state with the merged student responses.\n */\n createMergedComponentState(componentStates: any[]): any {\n const mergedStudentData = this.createStudentData();\n for (const componentState of componentStates) {\n this.mergeStudentData(mergedStudentData, componentState.studentData);\n }\n const mergedComponentState: any = this.createNewComponentState();\n mergedComponentState.studentData = mergedStudentData;\n return mergedComponentState;\n }\n\n /**\n * Merge the values in the student data.\n * @param existingStudentData The old student data we will merge into.\n * @param newStudentData The new student data we will merge.\n * @return The merged student data.\n */\n mergeStudentData(existingStudentData: any, newStudentData: any): any {\n this.mergeFrequenciesPlayed(existingStudentData, newStudentData);\n this.mergeAmplitudesPlayed(existingStudentData, newStudentData);\n return existingStudentData;\n }\n\n mergeFrequenciesPlayed(existingStudentData: any, newStudentData: any): void {\n existingStudentData.frequenciesPlayed = existingStudentData.frequenciesPlayed.concat(\n newStudentData.frequenciesPlayed\n );\n }\n\n mergeAmplitudesPlayed(existingStudentData: any, newStudentData: any): void {\n existingStudentData.amplitudesPlayed = existingStudentData.amplitudesPlayed.concat(\n newStudentData.amplitudesPlayed\n );\n }\n}\n", + "styleUrl": "audio-oscillator-student.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "audioOscillatorService", + "type": "AudioOscillatorService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentService", + "type": "ComponentService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "notebookService", + "type": "NotebookService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentAssetService", + "type": "StudentAssetService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentDataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 87, + "jsdoctags": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "audioOscillatorService", + "type": "AudioOscillatorService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentService", + "type": "ComponentService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "notebookService", + "type": "NotebookService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentAssetService", + "type": "StudentAssetService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentDataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "ComponentStudent" + ], + "templateData": "\n
\n @if (oscillatorTypes.length > 1) {\n \n Oscillator Type\n \n @for (oscillatorType of oscillatorTypes; track oscillatorType) {\n \n {{ oscillatorType }}\n \n }\n \n \n }\n @if (canStudentViewFrequencyInput) {\n \n Frequency (Hz)\n \n \n }\n @if (canStudentViewAmplitudeInput) {\n \n Ampitude (dB)\n \n \n }\n \n @if (isPlaying) {\n @if (isPlaying) {\n stop\n }\n } @else {\n @if (!isPlaying) {\n play_arrow\n }\n }\n \n
\n\n\n@if (isSaveOrSubmitButtonVisible) {\n \n}\n@if (mode === 'student') {\n \n}\n" + }, + { + "name": "AudioRecorderComponent", + "id": "component-AudioRecorderComponent-28df4057a8a5380729bb0a748775cd95cd1d7b68e5b77201e6b05d3d569c9e65496c88a529dff88a3163ae6232fbc48530ecb648cf80389e91f22534e293ee5f", + "file": "src/assets/wise5/components/openResponse/audio-recorder/audio-recorder.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "audio-recorder", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./audio-recorder.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "audioAttachments", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "line": 21, + "type": "Attachment[]", + "decorators": [] + }, + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "line": 22, + "type": "string", + "decorators": [] + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 23, + "type": "string", + "decorators": [] + } + ], + "outputsClass": [ + { + "name": "attachAudioRecording", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 20, + "type": "EventEmitter" + }, + { + "name": "removeAttachment", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 28, + "type": "EventEmitter" + } + ], + "propertiesClass": [ + { + "name": "recording", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 24 + }, + { + "name": "recordingInterval", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 25 + }, + { + "name": "recordingMaxTime", + "defaultValue": "60000", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 26 + }, + { + "name": "recordingStartTime", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 27 + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 29 + } + ], + "methodsClass": [ + { + "name": "getTimeElapsed", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 66, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "getTimeRemaining", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 70, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnChanges", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 46, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 52, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 36, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "removeAllAudioAttachments", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 93, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "removeAudioAttachment", + "args": [ + { + "name": "attachment", + "type": "Attachment", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 74, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "attachment", + "type": "Attachment", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "sanitizeUrl", + "args": [ + { + "name": "url", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "SafeResourceUrl", + "typeParameters": [], + "line": 56, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "url", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "startCountdown", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 99, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "startRecording", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 80, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "stopRecording", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 60, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatButton" + }, + { + "name": "MatIcon" + }, + { + "name": "MatIconButton" + }, + { + "name": "MatTooltip" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\nimport { Subscription } from 'rxjs';\nimport { AudioRecorderService } from '../../../services/audioRecorderService';\nimport { MatButton, MatIconButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatTooltip } from '@angular/material/tooltip';\n\nclass Attachment {\n type: string;\n url: string;\n}\n\n@Component({\n imports: [MatButton, MatIcon, MatIconButton, MatTooltip],\n selector: 'audio-recorder',\n templateUrl: './audio-recorder.component.html'\n})\nexport class AudioRecorderComponent implements OnInit {\n @Output() attachAudioRecording: EventEmitter = new EventEmitter();\n @Input() audioAttachments: Attachment[] = [];\n @Input() componentId: string;\n @Input() nodeId: string;\n recording: boolean;\n recordingInterval: number;\n recordingMaxTime: number = 60000;\n recordingStartTime: number = 0;\n @Output() removeAttachment: EventEmitter = new EventEmitter();\n subscriptions: Subscription = new Subscription();\n\n constructor(\n private audioRecorderService: AudioRecorderService,\n private sanitizer: DomSanitizer\n ) {}\n\n ngOnInit(): void {\n this.subscriptions.add(\n this.audioRecorderService.audioRecorded$.subscribe(({ requester, audioFile }) => {\n if (requester === `${this.nodeId}-${this.componentId}`) {\n this.attachAudioRecording.emit(audioFile);\n }\n })\n );\n }\n\n ngOnChanges(): void {\n this.audioAttachments.map((attachment) => {\n attachment.url = attachment.url;\n });\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n sanitizeUrl(url: string): SafeResourceUrl {\n return this.sanitizer.bypassSecurityTrustResourceUrl(url);\n }\n\n stopRecording(): void {\n this.audioRecorderService.stopRecording();\n this.recording = false;\n clearInterval(this.recordingInterval);\n }\n\n private getTimeElapsed(): number {\n return new Date().getTime() - this.recordingStartTime;\n }\n\n getTimeRemaining(): number {\n return Math.floor((this.recordingMaxTime - this.getTimeElapsed()) / 1000);\n }\n\n removeAudioAttachment(attachment: Attachment): void {\n if (confirm($localize`Are you sure you want to delete your recording?`)) {\n this.removeAttachment.emit(attachment);\n }\n }\n\n startRecording(): void {\n if (this.audioAttachments.length > 0) {\n if (confirm($localize`This will replace your existing recording. Is this OK?`)) {\n this.removeAllAudioAttachments();\n } else {\n return;\n }\n }\n this.audioRecorderService.startRecording(`${this.nodeId}-${this.componentId}`);\n this.startCountdown();\n this.recording = true;\n }\n\n private removeAllAudioAttachments(): void {\n this.audioAttachments.forEach((attachment) => {\n this.removeAttachment.emit(attachment);\n });\n }\n\n private startCountdown(): void {\n this.recordingStartTime = new Date().getTime();\n this.recordingInterval = window.setInterval(() => {\n if (this.getTimeRemaining() <= 0) {\n this.stopRecording();\n }\n }, 500);\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "audioRecorderService", + "type": "AudioRecorderService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "sanitizer", + "type": "DomSanitizer", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 29, + "jsdoctags": [ + { + "name": "audioRecorderService", + "type": "AudioRecorderService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "sanitizer", + "type": "DomSanitizer", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "
\n @if (recording) {\n \n stop\n Stop Recording\n \n Recording Time Left: {{ getTimeRemaining() }} \n } @else {\n \n mic\n Record Response\n \n }\n @for (attachment of audioAttachments; track attachment) {\n
\n
\n \n \n cancel\n \n
\n
\n }\n
\n" + }, + { + "name": "AuthoringToolBarComponent", + "id": "component-AuthoringToolBarComponent-61cbf42f45b9c9204619cdaaba1a8a79e2e29358279f1ac92231632fddeae3f39935776ebb4cc5273edab2d5266b0d61801935db863cbbff4bf92b4a1280de5f", + "file": "src/assets/wise5/authoringTool/components/shared/authoring-tool-bar/authoring-tool-bar.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "authoring-tool-bar", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./authoring-tool-bar.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [ + { + "name": "onMenuToggle", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 26, + "type": "EventEmitter" + } + ], + "propertiesClass": [ + { + "name": "globalMessage", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 24, + "modifierKind": [ + 124 + ] + }, + { + "name": "isJSONValid", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 25, + "modifierKind": [ + 124 + ] + }, + { + "name": "showStepTools", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 27, + "modifierKind": [ + 124 + ] + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 28, + "modifierKind": [ + 123 + ] + }, + { + "name": "viewName", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 29, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 42, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 36, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "processUI", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 67, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "subscribeToNotifications", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 46, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "subscribeToRouterEvents", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 59, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "toggleMenu", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatToolbarModule", + "type": "module" + }, + { + "name": "SaveIndicatorComponent", + "type": "component" + }, + { + "name": "StepToolsComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, EventEmitter, Output } from '@angular/core';\nimport { Subscription, filter } from 'rxjs';\nimport { NotificationService } from '../../../../services/notificationService';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { SaveIndicatorComponent } from '../../../../common/save-indicator/save-indicator.component';\nimport { MatIconModule } from '@angular/material/icon';\nimport { StepToolsComponent } from '../../../../common/stepTools/step-tools.component';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatToolbarModule } from '@angular/material/toolbar';\n\n@Component({\n imports: [\n MatButtonModule,\n MatIconModule,\n MatToolbarModule,\n SaveIndicatorComponent,\n StepToolsComponent\n ],\n selector: 'authoring-tool-bar',\n styleUrl: './authoring-tool-bar.component.scss',\n templateUrl: './authoring-tool-bar.component.html'\n})\nexport class AuthoringToolBarComponent {\n protected globalMessage: any = {};\n protected isJSONValid: boolean;\n @Output() private onMenuToggle: EventEmitter = new EventEmitter();\n protected showStepTools: boolean;\n private subscriptions: Subscription = new Subscription();\n protected viewName: string;\n\n constructor(\n private notificationService: NotificationService,\n private router: Router\n ) {}\n\n ngOnInit(): void {\n this.processUI();\n this.subscribeToNotifications();\n this.subscribeToRouterEvents();\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n private subscribeToNotifications(): void {\n this.subscriptions.add(\n this.notificationService.setGlobalMessage$.subscribe(({ globalMessage }) => {\n this.globalMessage = globalMessage;\n })\n );\n this.subscriptions.add(\n this.notificationService.setIsJSONValid$.subscribe(({ isJSONValid }) => {\n this.isJSONValid = isJSONValid;\n })\n );\n }\n\n private subscribeToRouterEvents(): void {\n this.subscriptions.add(\n this.router.events.pipe(filter((event) => event instanceof NavigationEnd)).subscribe(() => {\n this.processUI();\n })\n );\n }\n\n private processUI(): void {\n const path = this.router.url.substring(this.router.url.lastIndexOf('/') + 1);\n this.viewName =\n {\n advanced: $localize`Advanced Settings`,\n asset: $localize`File Manager`,\n info: $localize`Unit Info`,\n milestones: $localize`Milestones`,\n notebook: $localize`Notebook Settings`\n }[path] ?? $localize`Authoring Tool`;\n const stepToolPathsFragments = ['branch', 'constraint', 'node'];\n this.showStepTools = this.router.url\n .split('/')\n .some((path) => stepToolPathsFragments.includes(path));\n }\n\n protected toggleMenu(): void {\n this.onMenuToggle.emit();\n }\n}\n", + "styleUrl": "./authoring-tool-bar.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "notificationService", + "type": "NotificationService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 29, + "jsdoctags": [ + { + "name": "notificationService", + "type": "NotificationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "\n
\n \n @if (showStepTools) {\n \n } @else {\n {{ viewName }}\n }\n
\n @if (isJSONValid == null) {\n } @else if (isJSONValid) {\n \n done\n JSON Valid\n \n } @else {\n \n clear\n JSON Invalid\n \n }\n \n
\n
\n" + }, + { + "name": "AuthoringToolComponent", + "id": "component-AuthoringToolComponent-a64a11618db1c4a15a7439f6c88869f40195d34e43767eb86feba94a0fc5b2ee916b981cb8cb66a908ea19c6cf1a5673adc5d1b757538a3f9145fe21969be8b3", + "file": "src/assets/wise5/authoringTool/authoring-tool.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./authoring-tool.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "isMenuOpen", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 34, + "modifierKind": [ + 124 + ] + }, + { + "name": "logoPath", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 35, + "modifierKind": [ + 124 + ] + }, + { + "name": "projectId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 36, + "modifierKind": [ + 124 + ] + }, + { + "name": "projectTitle", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 37, + "modifierKind": [ + 124 + ] + }, + { + "name": "runCode", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 39, + "modifierKind": [ + 124 + ] + }, + { + "name": "runId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 38, + "modifierKind": [ + 124 + ] + }, + { + "name": "showToolbar", + "defaultValue": "true", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 40, + "modifierKind": [ + 124 + ] + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 43, + "modifierKind": [ + 123 + ] + }, + { + "name": "title", + "defaultValue": "$localize`Authoring Tool`", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 41, + "modifierKind": [ + 124 + ] + }, + { + "name": "views", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 42, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "checkPermission", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 265, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "disableElements", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 236, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "enableElements", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 229, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "getElements", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 251, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "initializeViews", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 73, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "isAlwaysEnabled", + "args": [ + { + "name": "element", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 245, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "element", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "logOut", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 318, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 69, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 57, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "processUI", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 277, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "renewSession", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 304, + "deprecated": false, + "deprecationMessage": "", + "decorators": [ + { + "name": "HostListener", + "stringifiedArguments": "'document:mousemove'" + } + ], + "modifierKind": [ + 171, + 124 + ] + }, + { + "name": "setGlobalMessage", + "args": [ + { + "name": "message", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "progressIndicatorVisible", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "time", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 308, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "message", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "progressIndicatorVisible", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "time", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "subscribeToDataEvents", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 194, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "subscribeToProjectEvents", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 155, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "subscribeToRouterEvents", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 206, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "subscribeToSessionEvents", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 127, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "subscribeToUIChangeEvents", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 215, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "toggleMenu", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 299, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [ + { + "name": "document:mousemove", + "args": [], + "argsDecorator": [], + "deprecated": false, + "deprecationMessage": "", + "line": 304 + } + ], + "standalone": false, + "imports": [ + { + "name": "AuthoringToolBarComponent", + "type": "component" + }, + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "MainMenuComponent", + "type": "component" + }, + { + "name": "MatSidenavModule", + "type": "module" + }, + { + "name": "RouterModule", + "type": "module" + }, + { + "name": "ScrollingModule", + "type": "module" + }, + { + "name": "SideMenuComponent", + "type": "component" + }, + { + "name": "TopBarComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, ElementRef, HostListener, Renderer2 } from '@angular/core';\nimport { Subscription, filter } from 'rxjs';\nimport { ConfigService } from '../services/configService';\nimport { NotificationService } from '../services/notificationService';\nimport { TeacherProjectService } from '../services/teacherProjectService';\nimport { SessionService } from '../services/sessionService';\nimport { TeacherDataService } from '../services/teacherDataService';\nimport { NavigationEnd, Router, RouterModule } from '@angular/router';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { DialogWithConfirmComponent } from '../directives/dialog-with-confirm/dialog-with-confirm.component';\nimport { CommonModule } from '@angular/common';\nimport { AuthoringToolBarComponent } from './components/shared/authoring-tool-bar/authoring-tool-bar.component';\nimport { MainMenuComponent } from '../common/main-menu/main-menu.component';\nimport { MatSidenavModule } from '@angular/material/sidenav';\nimport { TopBarComponent } from './components/top-bar/top-bar.component';\nimport { SideMenuComponent } from '../common/side-menu/side-menu.component';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\n\n@Component({\n imports: [\n AuthoringToolBarComponent,\n CommonModule,\n MainMenuComponent,\n MatSidenavModule,\n RouterModule,\n ScrollingModule,\n SideMenuComponent,\n TopBarComponent\n ],\n styleUrl: './authoring-tool.component.scss',\n templateUrl: './authoring-tool.component.html'\n})\nexport class AuthoringToolComponent {\n protected isMenuOpen: boolean = false;\n protected logoPath: string;\n protected projectId: number;\n protected projectTitle: string;\n protected runId: number;\n protected runCode: string;\n protected showToolbar: boolean = true;\n protected title: string = $localize`Authoring Tool`;\n protected views: any[] = [];\n private subscriptions: Subscription = new Subscription();\n\n constructor(\n private configService: ConfigService,\n private dataService: TeacherDataService,\n private dialog: MatDialog,\n private elem: ElementRef,\n private notificationService: NotificationService,\n private projectService: TeacherProjectService,\n private renderer: Renderer2,\n private sessionService: SessionService,\n private router: Router\n ) {}\n\n ngOnInit(): void {\n this.logoPath = this.projectService.getThemePath() + '/images/WISE-logo-ffffff.svg';\n this.processUI();\n this.initializeViews();\n this.subscribeToSessionEvents();\n this.subscribeToProjectEvents();\n this.subscribeToDataEvents();\n this.subscribeToRouterEvents();\n this.subscribeToUIChangeEvents();\n this.checkPermission();\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n private initializeViews(): void {\n this.views = [\n {\n route: ['unit', this.projectId],\n name: $localize`Unit Home`,\n icon: 'home',\n type: 'primary',\n active: true\n },\n {\n route: ['unit', this.projectId, 'info'],\n name: $localize`Unit Info`,\n icon: 'info',\n type: 'primary',\n active: true\n },\n {\n route: ['unit', this.projectId, 'asset'],\n name: $localize`File Manager`,\n icon: 'attach_file',\n type: 'primary',\n active: true\n },\n {\n route: ['unit', this.projectId, 'notebook'],\n name: $localize`Notebook Settings`,\n icon: 'book',\n type: 'primary',\n active: true\n },\n {\n route: ['unit', this.projectId, 'milestones'],\n name: $localize`Milestones`,\n icon: 'flag',\n type: 'primary',\n active: true\n },\n {\n route: ['unit', this.projectId, 'advanced'],\n name: $localize`Advanced Settings`,\n icon: 'build',\n type: 'primary',\n active: true\n },\n {\n route: ['home'],\n name: $localize`Unit List`,\n icon: 'reorder',\n type: 'primary',\n active: true\n }\n ];\n }\n\n private subscribeToSessionEvents(): void {\n this.subscriptions.add(\n this.sessionService.showSessionWarning$.subscribe(() => {\n this.dialog\n .open(DialogWithConfirmComponent, {\n data: {\n content: $localize`You have been inactive for a long time. Do you want to stay logged in?`,\n title: $localize`Session Timeout`\n }\n })\n .afterClosed()\n .subscribe((isRenew: boolean) => {\n if (isRenew) {\n this.sessionService.closeWarningAndRenewSession();\n } else {\n this.logOut();\n }\n });\n })\n );\n\n this.subscriptions.add(\n this.sessionService.logOut$.subscribe(() => {\n this.logOut();\n })\n );\n }\n\n private subscribeToProjectEvents(): void {\n this.subscriptions.add(\n this.projectService.savingProject$.subscribe(() => {\n this.setGlobalMessage($localize`Saving...`, true, null);\n })\n );\n\n this.subscriptions.add(\n this.projectService.projectSaved$.subscribe(() => {\n /*\n * Wait half a second before changing the message to 'Saved' so that\n * the 'Saving...' message stays up long enough for the author to\n * see that the project is saving. If we don't perform this wait,\n * it will always say 'Saved' and authors may wonder whether the\n * project ever gets saved.\n */\n setTimeout(() => {\n this.setGlobalMessage($localize`Saved`, false, new Date().getTime());\n }, 500);\n })\n );\n\n this.subscriptions.add(\n this.projectService.errorSavingProject$.subscribe(() => {\n this.setGlobalMessage($localize`Error Saving Unit. Please refresh the page.`, false, null);\n })\n );\n\n this.subscriptions.add(\n this.projectService.notAllowedToEditThisProject$.subscribe(() => {\n this.setGlobalMessage(\n $localize`You do not have permission to edit this unit.`,\n false,\n null\n );\n })\n );\n }\n\n private subscribeToDataEvents(): void {\n this.subscriptions.add(\n this.dataService.currentNodeChanged$.subscribe(({ currentNode }) => {\n this.router.navigate(\n currentNode\n ? [`/teacher/edit/unit/${this.projectId}/node/${currentNode.id}`]\n : [`/teacher/edit/unit/${this.projectId}`]\n );\n })\n );\n }\n\n private subscribeToRouterEvents(): void {\n this.subscriptions.add(\n this.router.events.pipe(filter((event) => event instanceof NavigationEnd)).subscribe(() => {\n this.processUI();\n this.initializeViews();\n })\n );\n }\n\n private subscribeToUIChangeEvents(): void {\n this.subscriptions.add(\n this.projectService.uiChanged$.subscribe(() => {\n setTimeout(() => {\n if (this.projectService.isDefaultLocale()) {\n this.enableElements();\n } else {\n this.disableElements();\n }\n }, 500);\n })\n );\n }\n\n private enableElements(): void {\n this.getElements().forEach((element) => {\n this.renderer.removeAttribute(element, 'disabled');\n this.renderer.removeStyle(element, 'pointer-events');\n });\n }\n\n private disableElements(): void {\n this.getElements()\n .filter((element) => !this.isAlwaysEnabled(element))\n .forEach((element) => {\n this.renderer.setAttribute(element, 'disabled', 'true');\n this.renderer.setStyle(element, 'pointer-events', 'none');\n });\n }\n\n private isAlwaysEnabled(element: any): boolean {\n return ['enable-in-translation', 'tox-mbtn', 'tox-tbtn'].some((allowedClass) =>\n element.classList.contains(allowedClass)\n );\n }\n\n private getElements(): any[] {\n const elementsToDisable =\n 'button,input,textarea,mat-radio-button,mat-checkbox,mat-icon[cdkdraghandle]';\n return Array.from(\n this.elem.nativeElement.querySelectorAll(`div.main-content ${elementsToDisable}`)\n ).concat(\n this.dialog.openDialogs.flatMap((dialogRef: MatDialogRef) =>\n Array.from(\n dialogRef.componentRef.location.nativeElement.querySelectorAll(`${elementsToDisable}`)\n )\n )\n );\n }\n\n private checkPermission(): void {\n if (!this.configService.getConfigParam('canEditProject')) {\n setTimeout(() => {\n this.setGlobalMessage(\n $localize`You do not have permission to edit this unit.`,\n false,\n null\n );\n }, 1000);\n }\n }\n\n private processUI(): void {\n document.getElementById('top').scrollIntoView();\n this.showToolbar = this.router.url.startsWith('/teacher/edit/unit');\n this.isMenuOpen = false;\n if (!this.showToolbar) {\n delete this.projectId;\n delete this.runId;\n delete this.runCode;\n } else {\n this.projectId = this.configService.getProjectId();\n this.runId = this.configService.getRunId();\n this.runCode = this.configService.getRunCode();\n }\n if (this.projectId) {\n this.projectTitle = this.projectService.getProjectTitle();\n } else {\n this.projectTitle = null;\n }\n this.notificationService.hideJSONValidMessage();\n this.projectService.uiChanged();\n }\n\n protected toggleMenu(): void {\n this.isMenuOpen = !this.isMenuOpen;\n }\n\n @HostListener('document:mousemove')\n protected renewSession(): void {\n this.sessionService.mouseMoved();\n }\n\n private setGlobalMessage(message: string, progressIndicatorVisible: boolean, time: number): void {\n this.notificationService.broadcastSetGlobalMessage({\n globalMessage: {\n text: message,\n isProgressIndicatorVisible: progressIndicatorVisible,\n time: time\n }\n });\n }\n\n private logOut(): void {\n this.sessionService.logOut();\n }\n}\n", + "styleUrl": "./authoring-tool.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "elem", + "type": "ElementRef", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "notificationService", + "type": "NotificationService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "renderer", + "type": "Renderer2", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "sessionService", + "type": "SessionService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 43, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "elem", + "type": "ElementRef", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "notificationService", + "type": "NotificationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "renderer", + "type": "Renderer2", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "sessionService", + "type": "SessionService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "\n\n
\n \n \n \n \n \n \n @if (showToolbar) {\n \n }\n \n \n \n @if (showToolbar) {\n \n }\n \n \n
\n" + }, + { + "name": "AuthorUrlParametersComponent", + "id": "component-AuthorUrlParametersComponent-c201b135561c79b3488a3e05fd7a0b331e6a8c7da46806718c1379da92385af56a353e86e851c646e43766ecbb361ef7aca7858dd69e96764b2046226578cdcc", + "file": "src/app/authoring-tool/author-url-parameters/author-url-parameters.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "author-url-parameters", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./author-url-parameters.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "parameters", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "line": 37, + "type": "UrlParameter[]", + "decorators": [] + }, + { + "name": "url", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "line": 39, + "type": "string", + "decorators": [] + } + ], + "outputsClass": [ + { + "name": "generatedUrl", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 36, + "type": "EventEmitter" + } + ], + "propertiesClass": [ + { + "name": "inputChanged", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 34, + "modifierKind": [ + 124 + ] + }, + { + "name": "inputChangedSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 35, + "modifierKind": [ + 123 + ] + }, + { + "name": "parameterValues", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 38, + "modifierKind": [ + 124 + ] + }, + { + "name": "urlWithoutParameters", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 40, + "modifierKind": [ + 123 + ] + } + ], + "methodsClass": [ + { + "name": "generateUrlParameters", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 85, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "initializeDefaultParameterValues", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 60, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "initializeInputChangedSubscription", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 52, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "initializeParameterValuesFromUrl", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 67, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnChanges", + "args": [ + { + "name": "changes", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 48, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "changes", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 81, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 42, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatInputModule", + "type": "module" + }, + { + "name": "MatSelectModule", + "type": "module" + }, + { + "name": "MatOptionModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { Subject, Subscription } from 'rxjs';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport { FormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatOptionModule } from '@angular/material/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\nexport class UrlParameter {\n name: string;\n key: string;\n description: string;\n type: string;\n options: any[];\n}\n\n@Component({\n imports: [\n FormsModule,\n MatFormFieldModule,\n MatInputModule,\n MatSelectModule,\n MatOptionModule,\n MatIconModule,\n MatTooltipModule\n ],\n selector: 'author-url-parameters',\n templateUrl: './author-url-parameters.component.html'\n})\nexport class AuthorUrlParametersComponent implements OnInit {\n protected inputChanged: Subject = new Subject();\n private inputChangedSubscription: Subscription;\n @Output() generatedUrl: EventEmitter = new EventEmitter();\n @Input() parameters: UrlParameter[] = [];\n protected parameterValues: any = {};\n @Input() url: string = '';\n private urlWithoutParameters: string;\n\n ngOnInit(): void {\n this.initializeInputChangedSubscription();\n this.initializeDefaultParameterValues();\n this.initializeParameterValuesFromUrl();\n }\n\n ngOnChanges(changes: any): void {\n this.initializeParameterValuesFromUrl();\n }\n\n private initializeInputChangedSubscription(): void {\n this.inputChangedSubscription = this.inputChanged\n .pipe(debounceTime(1000), distinctUntilChanged())\n .subscribe(() => {\n this.generateUrlParameters();\n });\n }\n\n initializeDefaultParameterValues(): void {\n this.parameters ??= [];\n for (const parameter of this.parameters) {\n this.parameterValues[parameter.key] = '';\n }\n }\n\n initializeParameterValuesFromUrl(): void {\n this.urlWithoutParameters = this.url.split('?')[0];\n const parametersString = this.url.split('?')[1];\n if (parametersString != null) {\n const parametersKeyValueStrings = parametersString.split('&');\n for (const parameterKeyValueString of parametersKeyValueStrings) {\n const keyValue = parameterKeyValueString.split('=');\n const key = keyValue[0];\n const value = keyValue[1];\n this.parameterValues[key] = value ?? '';\n }\n }\n }\n\n ngOnDestroy(): void {\n this.inputChangedSubscription.unsubscribe();\n }\n\n generateUrlParameters(): void {\n let urlParameters = '';\n for (const parameterKey in this.parameterValues) {\n if (this.parameterValues[parameterKey] !== '') {\n if (urlParameters != '') {\n urlParameters += '&';\n }\n urlParameters += `${parameterKey}=${this.parameterValues[parameterKey]}`;\n }\n }\n if (urlParameters === '') {\n this.generatedUrl.emit(`${this.urlWithoutParameters}`);\n } else {\n this.generatedUrl.emit(`${this.urlWithoutParameters}?${urlParameters}`);\n }\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "@for (parameter of parameters; track parameter) {\n
\n @if (parameter.type === 'select') {\n
\n \n {{ parameter.name }}\n \n @for (option of parameter.options; track option) {\n \n {{ option.name }}\n \n }\n \n \n
\n }\n @if (parameter.type === 'input') {\n
\n \n {{ parameter.name }}\n \n \n
\n }\n @if (parameter.description != null && parameter.description !== '') {\n
\n help\n
\n }\n
\n}\n" + }, + { + "name": "AutocompleteFilterComponent", + "id": "component-AutocompleteFilterComponent-fa1de4422eb727ee1ade4479c03dffb93e833b314b8a616424ef741400d532496517a3e87f59347899846a48ca0679d97a37900eff39ad17884f4239e7739d33", + "file": "src/stories/autocomplete/autocomplete-filter/autocomplete-filter.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "autocomplete-filter", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "autocomplete-filter.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "colorControl", + "defaultValue": "new FormControl('')", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 27 + }, + { + "name": "filteredOptions", + "deprecated": false, + "deprecationMessage": "", + "type": "Observable", + "indexKey": "", + "optional": false, + "description": "", + "line": 29 + }, + { + "name": "options", + "defaultValue": "['Red', 'Green', 'Blue', 'Yellow', 'Orange', 'Purple']", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 28 + } + ], + "methodsClass": [ + { + "name": "clear", + "args": [ + { + "name": "event", + "type": "Event", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 43, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "event", + "type": "Event", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "filter", + "args": [ + { + "name": "value", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string[]", + "typeParameters": [], + "line": 38, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "value", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 31, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatInputModule", + "type": "module" + }, + { + "name": "MatAutocompleteModule", + "type": "module" + }, + { + "name": "ReactiveFormsModule", + "type": "module" + }, + { + "name": "AsyncPipe", + "type": "pipe" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, OnInit } from '@angular/core';\nimport { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { Observable } from 'rxjs';\nimport { map, startWith } from 'rxjs/operators';\nimport { AsyncPipe } from '@angular/common';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n imports: [\n FormsModule,\n MatButtonModule,\n MatFormFieldModule,\n MatIconModule,\n MatInputModule,\n MatAutocompleteModule,\n ReactiveFormsModule,\n AsyncPipe\n ],\n selector: 'autocomplete-filter',\n templateUrl: 'autocomplete-filter.component.html'\n})\nexport class AutocompleteFilterComponent implements OnInit {\n colorControl = new FormControl('');\n options: string[] = ['Red', 'Green', 'Blue', 'Yellow', 'Orange', 'Purple'];\n filteredOptions: Observable;\n\n ngOnInit() {\n this.filteredOptions = this.colorControl.valueChanges.pipe(\n startWith(''),\n map((value) => this.filter(value || ''))\n );\n }\n\n private filter(value: string): string[] {\n const filterValue = value.toLowerCase();\n return this.options.filter((option) => option.toLowerCase().includes(filterValue));\n }\n\n protected clear(event: Event): void {\n this.colorControl.reset();\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "
\n \n Color\n \n @if (colorControl.value) {\n \n }\n \n @for (option of filteredOptions | async; track option) {\n {{ option }}\n }\n \n \n
\n" + }, + { + "name": "BlurbComponent", + "id": "component-BlurbComponent-e802c7d2ce80e9fecbb10d2821fa81be9f8a2fb08cae59a6baceb6ce4221c0b3d51a9f68246105e9736cdb3d6d19c8bbc794855a5bfda3ba2c94e4372a0de4fe", + "file": "src/app/modules/shared/blurb/blurb.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "app-blurb", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./blurb.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "content", + "deprecated": false, + "deprecationMessage": "", + "line": 11, + "type": "string", + "decorators": [] + }, + { + "name": "headline", + "deprecated": false, + "deprecationMessage": "", + "line": 13, + "type": "string", + "decorators": [] + }, + { + "name": "imgDescription", + "deprecated": false, + "deprecationMessage": "", + "line": 15, + "type": "string", + "decorators": [] + }, + { + "name": "imgSources", + "deprecated": false, + "deprecationMessage": "", + "line": 16, + "type": "Object", + "decorators": [] + }, + { + "name": "imgSrc", + "deprecated": false, + "deprecationMessage": "", + "line": 17, + "type": "string", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "contentRef", + "deprecated": false, + "deprecationMessage": "", + "type": "TemplateRef", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "decorators": [ + { + "name": "ContentChild", + "stringifiedArguments": "'contentTemplate', {static: false}" + } + ], + "modifierKind": [ + 171 + ] + }, + { + "name": "headlineRef", + "deprecated": false, + "deprecationMessage": "", + "type": "TemplateRef", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "decorators": [ + { + "name": "ContentChild", + "stringifiedArguments": "'headlineTemplate', {static: false}" + } + ], + "modifierKind": [ + 171 + ] + } + ], + "methodsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { CommonModule } from '@angular/common';\nimport { Component, ContentChild, Input, TemplateRef } from '@angular/core';\n\n@Component({\n imports: [CommonModule],\n selector: 'app-blurb',\n styleUrl: './blurb.component.scss',\n templateUrl: './blurb.component.html'\n})\nexport class BlurbComponent {\n @Input() content: string;\n @ContentChild('contentTemplate', { static: false }) contentRef: TemplateRef;\n @Input() headline: string;\n @ContentChild('headlineTemplate', { static: false }) headlineRef: TemplateRef;\n @Input() imgDescription: string;\n @Input() imgSources: Object;\n @Input() imgSrc: string;\n}\n", + "styleUrl": "./blurb.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [], + "templateData": "
\n @if (imgSrc) {\n \n @for (source of imgSources; track source) {\n \n }\n \"{{\n \n }\n
\n
\n {{ headline }}\n @if (headline || headlineRef) {\n

\n \n

\n }\n {{ content }}\n @if (content || contentRef) {\n

\n \n

\n }\n
\n
\n" + }, + { + "name": "BranchCriteriaHelpComponent", + "id": "component-BranchCriteriaHelpComponent-39a6e9a3dcd94889ac8dd924dd60a52b934b7fd2becd748f27fe990cd8794368027e4b9820421aa16f5604aa6b440bf5318a0f47b17228563c8173adf3dbf94d", + "file": "src/assets/wise5/authoringTool/select-branch-criteria/branch-criteria-help/branch-criteria-help.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "branch-criteria-help", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./branch-criteria-help.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [], + "methodsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatDialogModule", + "type": "module" + }, + { + "name": "MatDividerModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatDividerModule } from '@angular/material/divider';\n\n@Component({\n selector: 'branch-criteria-help',\n imports: [MatButtonModule, MatDialogModule, MatDividerModule],\n templateUrl: './branch-criteria-help.component.html'\n})\nexport class BranchCriteriaHelpComponent {}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [], + "templateData": "

Branching Criteria Options

\n\n

Workgroup ID

\n

\n Automatically assigns students a branch path based on their WISE Workgroup ID number. This\n option ensures a relatively even distribution of students per path.\n

\n

\n *Assigning paths based on Workgroup ID also can ensure that students are branched to the same\n path across multiple branching structures in the unit (assuming each branching structure\n contains the same number of paths).\n

\n

\n This option uses the\n remainder function. So for 4 branch paths (A, B, C, D), calculations for the following Workgroup IDs would be:\n

\n
    \n
  • 1000 % 4 = 0 (Path A)
  • \n
  • 1001 % 4 = 1 (Path B)
  • \n
  • 1002 % 4 = 2 (Path C)
  • \n
  • 1003 % 4 = 3 (Path D)
  • \n
  • 1004 % 4 = 0 (Path A)
  • \n
\n \n

Score

\n

Assigns students a branch path based on their score from another item in the unit.

\n

\n After choosing to branch by score, you'll need to identify a reference component. The branching\n logic will use the student's score from that item to determine their path.\n

\n \n

Choice Chosen

\n

\n Assigns students a branch path based on their selection from a multiple choice item in the unit.\n

\n

\n After choosing to branch by choice, you'll need to identify a reference component. The branching\n logic will use the student's selection from that item to determine their path.\n

\n \n

Random

\n

\n Randomly assigns student teams a branch path. This option ensures a relatively even distribution\n of students per path.\n

\n
\n\n \n\n" + }, + { + "name": "CallToActionComponent", + "id": "component-CallToActionComponent-214a40b5fa085442facaadac966d9670e85758fb48fc0fe90a14518f39de93882a691480070f2f636747031f1676514f8a9247a2eaaf11bb637cbab892c004d9", + "file": "src/app/modules/shared/call-to-action/call-to-action.component.ts", + "encapsulation": [ + "ViewEncapsulation.None" + ], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "app-call-to-action", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./call-to-action.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "content", + "deprecated": false, + "deprecationMessage": "", + "line": 15, + "type": "string", + "decorators": [] + }, + { + "name": "destination", + "deprecated": false, + "deprecationMessage": "", + "line": 17, + "type": "string", + "decorators": [] + }, + { + "name": "headline", + "deprecated": false, + "deprecationMessage": "", + "line": 18, + "type": "string", + "decorators": [] + }, + { + "name": "icon", + "deprecated": false, + "deprecationMessage": "", + "line": 20, + "type": "string", + "decorators": [] + }, + { + "name": "iconColor", + "deprecated": false, + "deprecationMessage": "", + "line": 21, + "type": "string", + "decorators": [] + }, + { + "name": "isOutsideLink", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "line": 22, + "type": "boolean", + "decorators": [] + }, + { + "name": "isSvgIcon", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "line": 23, + "type": "boolean", + "decorators": [] + }, + { + "name": "linkTarget", + "deprecated": false, + "deprecationMessage": "", + "line": 24, + "type": "string", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "contentRef", + "deprecated": false, + "deprecationMessage": "", + "type": "TemplateRef", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "decorators": [ + { + "name": "ContentChild", + "stringifiedArguments": "'contentTemplate', {static: false}" + } + ], + "modifierKind": [ + 171 + ] + }, + { + "name": "headlineRef", + "deprecated": false, + "deprecationMessage": "", + "type": "TemplateRef", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "decorators": [ + { + "name": "ContentChild", + "stringifiedArguments": "'headlineTemplate', {static: false}" + } + ], + "modifierKind": [ + 171 + ] + } + ], + "methodsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "RouterModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { CommonModule } from '@angular/common';\nimport { Component, ContentChild, Input, TemplateRef, ViewEncapsulation } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { RouterModule } from '@angular/router';\n\n@Component({\n encapsulation: ViewEncapsulation.None,\n imports: [CommonModule, MatButtonModule, MatIconModule, RouterModule],\n selector: 'app-call-to-action',\n styleUrl: './call-to-action.component.scss',\n templateUrl: './call-to-action.component.html'\n})\nexport class CallToActionComponent {\n @Input() content: string;\n @ContentChild('contentTemplate', { static: false }) contentRef: TemplateRef;\n @Input() destination: string;\n @Input() headline: string;\n @ContentChild('headlineTemplate', { static: false }) headlineRef: TemplateRef;\n @Input() icon: string;\n @Input() iconColor: string;\n @Input() isOutsideLink: boolean = false;\n @Input() isSvgIcon: boolean = false;\n @Input() linkTarget: string;\n}\n", + "styleUrl": "./call-to-action.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [], + "templateData": "\n @if (headline || headlineRef) {\n
\n \n \n add_circle\n
\n }\n
\n @if (isSvgIcon) {\n \n }\n @if (!isSvgIcon) {\n {{ icon }}\n }\n {{ headline }}\n {{ content }}\n @if (content || contentRef) {\n
\n \n
\n }\n
\n
\n\n@if (isOutsideLink) {\n \n
\n \n
\n
\n}\n\n@if (!isOutsideLink) {\n \n
\n \n
\n
\n}\n" + }, + { + "name": "CardSelectorComponent", + "id": "component-CardSelectorComponent-52a801d0cdedd90ec11e55e89609ec9cc45ae9d0567ec553f093399821239a58374670cc517acaa2152777382429e2879f176fd32c2638e33267d9f8148a741c", + "file": "src/assets/wise5/authoringTool/components/card-selector/card-selector.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "card-selector", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./card-selector.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "items", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "line": 14, + "type": "any[]", + "decorators": [] + }, + { + "name": "previewProjectUrl", + "deprecated": false, + "deprecationMessage": "", + "line": 16, + "type": "string", + "decorators": [] + } + ], + "outputsClass": [ + { + "name": "itemSelected", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 15, + "type": "any" + } + ], + "propertiesClass": [ + { + "name": "selectedItem", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "modifierKind": [ + 123 + ] + } + ], + "methodsClass": [ + { + "name": "isItemSelected", + "args": [ + { + "name": "item", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 19, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "item", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "previewItem", + "args": [ + { + "name": "item", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 23, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "item", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "selectItem", + "args": [ + { + "name": "item", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 27, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "item", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatCardModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n imports: [CommonModule, MatButtonModule, MatCardModule, MatIconModule],\n selector: 'card-selector',\n styleUrl: './card-selector.component.scss',\n templateUrl: './card-selector.component.html'\n})\nexport class CardSelectorComponent {\n @Input() items: any[] = [];\n @Output() itemSelected: any = new EventEmitter();\n @Input() previewProjectUrl: string;\n private selectedItem: any;\n\n protected isItemSelected(item: any): boolean {\n return item === this.selectedItem;\n }\n\n protected previewItem(item: any): void {\n window.open(`${this.previewProjectUrl}/${item.id}`, '_blank');\n }\n\n selectItem(item: any): void {\n this.selectedItem = item;\n this.itemSelected.next(item);\n }\n}\n", + "styleUrl": "./card-selector.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [], + "templateData": "
\n @for (item of items; track item.id) {\n
\n \n \n {{ item.title }}\n \n
\n \n @if (isItemSelected(item)) {\n \n check_circle\n \n }\n \n \n \n Select\n \n \n \n
\n }\n @if (items.length < 1) {\n
\n No results found\n
\n }\n
\n" + }, + { + "name": "ChangeStudentPasswordDialogComponent", + "id": "component-ChangeStudentPasswordDialogComponent-c0e7eb6efcdff3b20ad963d15ba1b7272c8a0f5f2928c2109f1d3de182ef6ebe3be3826ca48afc882a7c218cd3a34621c31f99acd41997f1db4e724079dd36ab", + "file": "src/assets/wise5/classroomMonitor/classroomMonitorComponents/manageStudents/change-student-password-dialog/change-student-password-dialog.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "app-change-student-password-dialog", + "styleUrls": [], + "styles": [ + "form { margin-top: 16px; }" + ], + "templateUrl": [ + "./change-student-password-dialog.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "canViewStudentNames", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 51 + }, + { + "name": "changePasswordForm", + "defaultValue": "new FormGroup({\n teacherPassword: new FormControl('')\n })", + "deprecated": false, + "deprecationMessage": "", + "type": "FormGroup", + "indexKey": "", + "optional": false, + "description": "", + "line": 52 + }, + { + "name": "confirmPasswordLabel", + "defaultValue": "$localize`Confirm New Student Password`", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 55 + }, + { + "name": "isChangingPassword", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 56 + }, + { + "name": "isTeacherGoogleUser", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 57 + }, + { + "name": "passwordLabel", + "defaultValue": "$localize`New Student Password`", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 58 + }, + { + "name": "user", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 66, + "decorators": [ + { + "name": "Inject", + "stringifiedArguments": "MAT_DIALOG_DATA" + } + ], + "modifierKind": [ + 171, + 125 + ] + } + ], + "methodsClass": [ + { + "name": "changePassword", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 81, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "changePasswordError", + "args": [ + { + "name": "error", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 112, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "error", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "changePasswordSuccess", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 102, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "ngAfterViewChecked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 77, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 69, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatDialogTitle" + }, + { + "name": "CdkScrollable" + }, + { + "name": "MatDialogContent" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "ReactiveFormsModule", + "type": "module" + }, + { + "name": "MatFormField" + }, + { + "name": "MatLabel" + }, + { + "name": "MatInput" + }, + { + "name": "MatError" + }, + { + "name": "PasswordModule", + "type": "module" + }, + { + "name": "MatDialogActions" + }, + { + "name": "MatButton" + }, + { + "name": "MatDialogClose" + }, + { + "name": "MatProgressBar" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { ChangeDetectorRef, Component, Inject, OnInit } from '@angular/core';\nimport {\n FormControl,\n FormGroup,\n Validators,\n FormsModule,\n ReactiveFormsModule\n} from '@angular/forms';\nimport {\n MatDialog,\n MAT_DIALOG_DATA,\n MatDialogTitle,\n MatDialogContent,\n MatDialogActions,\n MatDialogClose\n} from '@angular/material/dialog';\nimport { ConfigService } from '../../../../services/configService';\nimport { TeacherService } from '../../../../../../app/teacher/teacher.service';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { NewPasswordAndConfirmComponent } from '../../../../../../app/password/new-password-and-confirm/new-password-and-confirm.component';\nimport { changePasswordError } from '../../../../../../app/common/password-helper';\nimport { CdkScrollable } from '@angular/cdk/scrolling';\nimport { MatFormField, MatLabel, MatError } from '@angular/material/form-field';\nimport { MatInput } from '@angular/material/input';\nimport { PasswordModule } from '../../../../../../app/password/password.module';\nimport { MatButton } from '@angular/material/button';\nimport { MatProgressBar } from '@angular/material/progress-bar';\n\n@Component({\n imports: [\n MatDialogTitle,\n CdkScrollable,\n MatDialogContent,\n FormsModule,\n ReactiveFormsModule,\n MatFormField,\n MatLabel,\n MatInput,\n MatError,\n PasswordModule,\n MatDialogActions,\n MatButton,\n MatDialogClose,\n MatProgressBar\n ],\n selector: 'app-change-student-password-dialog',\n styles: ['form { margin-top: 16px; }'],\n templateUrl: './change-student-password-dialog.component.html'\n})\nexport class ChangeStudentPasswordDialogComponent implements OnInit {\n canViewStudentNames: boolean;\n changePasswordForm: FormGroup = new FormGroup({\n teacherPassword: new FormControl('')\n });\n confirmPasswordLabel: string = $localize`Confirm New Student Password`;\n isChangingPassword: boolean;\n isTeacherGoogleUser: boolean;\n passwordLabel: string = $localize`New Student Password`;\n\n constructor(\n private changeDetectorRef: ChangeDetectorRef,\n private configService: ConfigService,\n private dialog: MatDialog,\n private snackBar: MatSnackBar,\n private teacherService: TeacherService,\n @Inject(MAT_DIALOG_DATA) public user: any\n ) {}\n\n ngOnInit(): void {\n this.canViewStudentNames = this.configService.getPermissions().canViewStudentNames;\n this.isTeacherGoogleUser = this.configService.isGoogleUser();\n if (!this.isTeacherGoogleUser) {\n this.changePasswordForm.controls['teacherPassword'].setValidators([Validators.required]);\n }\n }\n\n ngAfterViewChecked(): void {\n this.changeDetectorRef.detectChanges();\n }\n\n changePassword(): void {\n this.isChangingPassword = true;\n this.teacherService\n .changeStudentPassword(\n this.configService.getRunId(),\n this.user.id,\n this.changePasswordForm.controls[\n NewPasswordAndConfirmComponent.NEW_PASSWORD_FORM_CONTROL_NAME\n ].value,\n this.changePasswordForm.controls['teacherPassword'].value\n )\n .subscribe(\n () => {\n this.changePasswordSuccess();\n },\n (response) => {\n this.changePasswordError(response.error);\n }\n );\n }\n\n private changePasswordSuccess(): void {\n this.isChangingPassword = false;\n this.snackBar.open(\n this.canViewStudentNames\n ? $localize`Changed password for ${this.user.name} (${this.user.username}).`\n : $localize`Changed password for Student ${this.user.id}.`\n );\n this.dialog.closeAll();\n }\n\n private changePasswordError(error: any): void {\n this.isChangingPassword = false;\n changePasswordError(error, this.changePasswordForm, this.changePasswordForm, 'teacherPassword');\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "form { margin-top: 16px; }\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "changeDetectorRef", + "type": "ChangeDetectorRef", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "snackBar", + "type": "MatSnackBar", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "teacherService", + "type": "TeacherService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "user", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 58, + "jsdoctags": [ + { + "name": "changeDetectorRef", + "type": "ChangeDetectorRef", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "snackBar", + "type": "MatSnackBar", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "teacherService", + "type": "TeacherService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "user", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "

Change Student Password

\n\n
\n Change password for \n \n @if (canViewStudentNames) {\n {{ user.name }} ({{ user.username }})\n } @else {\n Student {{ user.id }}\n }:\n
\n
\n @if (!isTeacherGoogleUser) {\n \n Teacher Password\n \n @if (changePasswordForm.controls['teacherPassword'].hasError('required')) {\n Teacher Password required\n }\n @if (changePasswordForm.controls['teacherPassword'].hasError('incorrectPassword')) {\n Teacher Password is incorrect \n }\n \n }\n \n \n
\n\n \n \n @if (isChangingPassword) {\n \n }\n Confirm\n \n\n" + }, + { + "name": "ChangeTeamPeriodDialogComponent", + "id": "component-ChangeTeamPeriodDialogComponent-d105260f62f31c79f0ce12aab9c078e89f1e965cf3050e098a4feefc401e6dfbf2d4a33b5d28f5cb5a0200a2c3d11db9665644126f17a38ea16d6e8c0e64d4ee", + "file": "src/assets/wise5/classroomMonitor/classroomMonitorComponents/manageStudents/change-team-period-dialog/change-team-period-dialog.component.ts", + "encapsulation": [ + "ViewEncapsulation.None" + ], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "change-team-period-dialog", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./change-team-period-dialog.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "canViewStudentNames", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 49 + }, + { + "name": "isChangingPeriod", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 53 + }, + { + "name": "periods", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 54 + }, + { + "name": "selectedPeriod", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 55 + }, + { + "name": "selectPeriodForm", + "defaultValue": "new FormGroup({\n period: new FormControl('', Validators.required)\n })", + "deprecated": false, + "deprecationMessage": "", + "type": "FormGroup", + "indexKey": "", + "optional": false, + "description": "", + "line": 50 + }, + { + "name": "team", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 59, + "decorators": [ + { + "name": "Inject", + "stringifiedArguments": "MAT_DIALOG_DATA" + } + ], + "modifierKind": [ + 171, + 125 + ] + } + ], + "methodsClass": [ + { + "name": "changePeriod", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 72, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 65, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatDialogTitle" + }, + { + "name": "CdkScrollable" + }, + { + "name": "MatDialogContent" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "ReactiveFormsModule", + "type": "module" + }, + { + "name": "MatFormField" + }, + { + "name": "MatLabel" + }, + { + "name": "MatSelect" + }, + { + "name": "MatOption" + }, + { + "name": "MatDialogActions" + }, + { + "name": "MatButton" + }, + { + "name": "MatDialogClose" + }, + { + "name": "MatProgressBar" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { HttpClient } from '@angular/common/http';\nimport { Component, Inject, ViewEncapsulation } from '@angular/core';\nimport {\n FormControl,\n FormGroup,\n Validators,\n FormsModule,\n ReactiveFormsModule\n} from '@angular/forms';\nimport {\n MatDialog,\n MAT_DIALOG_DATA,\n MatDialogTitle,\n MatDialogContent,\n MatDialogActions,\n MatDialogClose\n} from '@angular/material/dialog';\nimport { ConfigService } from '../../../../services/configService';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { CdkScrollable } from '@angular/cdk/scrolling';\nimport { MatFormField, MatLabel } from '@angular/material/form-field';\nimport { MatSelect } from '@angular/material/select';\nimport { MatOption } from '@angular/material/autocomplete';\nimport { MatButton } from '@angular/material/button';\nimport { MatProgressBar } from '@angular/material/progress-bar';\n\n@Component({\n encapsulation: ViewEncapsulation.None,\n imports: [\n MatDialogTitle,\n CdkScrollable,\n MatDialogContent,\n FormsModule,\n ReactiveFormsModule,\n MatFormField,\n MatLabel,\n MatSelect,\n MatOption,\n MatDialogActions,\n MatButton,\n MatDialogClose,\n MatProgressBar\n ],\n selector: 'change-team-period-dialog',\n styleUrl: './change-team-period-dialog.component.scss',\n templateUrl: './change-team-period-dialog.component.html'\n})\nexport class ChangeTeamPeriodDialogComponent {\n canViewStudentNames: boolean;\n selectPeriodForm: FormGroup = new FormGroup({\n period: new FormControl('', Validators.required)\n });\n isChangingPeriod: boolean;\n periods: any[];\n selectedPeriod: any;\n\n constructor(\n protected dialog: MatDialog,\n @Inject(MAT_DIALOG_DATA) public team: any,\n protected http: HttpClient,\n protected configService: ConfigService,\n private snackBar: MatSnackBar\n ) {}\n\n ngOnInit(): void {\n this.canViewStudentNames = this.configService.getPermissions().canViewStudentNames;\n this.periods = this.configService.getPeriods().filter((period) => {\n return period.periodId != -1 && period.periodId != this.team.periodId;\n });\n }\n\n changePeriod() {\n this.isChangingPeriod = true;\n this.http\n .post(\n `/api/teacher/run/${this.configService.getRunId()}/team/${\n this.team.workgroupId\n }/change-period`,\n this.selectedPeriod.periodId\n )\n .subscribe({\n next: () => {\n this.isChangingPeriod = false;\n this.configService\n .retrieveConfig(`/api/config/classroomMonitor/${this.configService.getRunId()}`)\n .subscribe({\n next: () => {\n this.snackBar.open(\n $localize`Moved Team ${this.team.workgroupId} to Period ${this.selectedPeriod.periodName}.`\n );\n this.dialog.closeAll();\n }\n });\n },\n error: () => {\n this.isChangingPeriod = false;\n }\n });\n }\n}\n", + "styleUrl": "./change-team-period-dialog.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "team", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "snackBar", + "type": "MatSnackBar", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 55, + "jsdoctags": [ + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "team", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "snackBar", + "type": "MatSnackBar", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "

Change Period

\n\n
\n Select a new period for Team {{ team.workgroupId }}:\n
    \n @for (user of team.users; track user; let isLast = $last; let isFirst = $first) {\n
  • \n @if (canViewStudentNames) {\n {{ user.name }} ({{ user.username }})\n } @else {\n Student {{ user.id }}\n }\n
  • \n }\n
\n
\n
\n \n Choose Period\n \n @for (period of periods; track period) {\n {{ period.periodName }}\n }\n \n \n
\n
\n\n \n \n @if (isChangingPeriod) {\n \n }\n Confirm\n \n\n" + }, + { + "name": "ChatInputComponent", + "id": "component-ChatInputComponent-b06848964d700d632656f89b66f14ddd83b1e208151a229755d8b3f8462195b1c1bab9980ac5cb2b263c7a3b7d001e830aae5ecb601bc64314772f4e8ba7d15c", + "file": "src/assets/wise5/common/chat-input/chat-input.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "chat-input", + "styleUrls": [ + "./chat-input.component.scss" + ], + "styles": [], + "templateUrl": [ + "./chat-input.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "submitDisabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "line": 16, + "type": "boolean", + "decorators": [] + } + ], + "outputsClass": [ + { + "name": "focusEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 14, + "type": "EventEmitter" + }, + { + "name": "submitEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 17, + "type": "EventEmitter" + } + ], + "propertiesClass": [ + { + "name": "response", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "keyPressed", + "args": [ + { + "name": "event", + "type": "KeyboardEvent", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 19, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "event", + "type": "KeyboardEvent", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "submit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 28, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatInputModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\n\n@Component({\n selector: 'chat-input',\n templateUrl: './chat-input.component.html',\n styleUrls: ['./chat-input.component.scss'],\n imports: [FormsModule, MatButtonModule, MatFormFieldModule, MatInputModule]\n})\nexport class ChatInputComponent {\n @Output() focusEvent = new EventEmitter();\n protected response: string = '';\n @Input() submitDisabled: boolean = false;\n @Output() submitEvent: EventEmitter = new EventEmitter();\n\n protected keyPressed(event: KeyboardEvent): void {\n if (event.key === 'Enter') {\n event.preventDefault();\n if (this.response.length > 0 && !this.submitDisabled) {\n this.submit();\n }\n }\n }\n\n protected submit(): void {\n this.submitEvent.emit(this.response);\n this.response = '';\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": [ + { + "data": "", + "styleUrl": "./chat-input.component.scss" + } + ], + "stylesData": "", + "extends": [], + "templateData": "
\n \n \n \n \n Send\n \n
\n" + }, + { + "name": "ChipsAutocompleteComponent", + "id": "component-ChipsAutocompleteComponent-1c372e82506fc3157e8680d1026c28a5c3e000c7efdae43dc8586e8f03d04814d4db70e881f1a7bd6603dc4771629db826e9ff1acd4744ca0fd226f827e6ad86", + "file": "src/stories/autocomplete/chips-autocomplete/chips-autocomplete.component.ts", + "changeDetection": "ChangeDetectionStrategy.OnPush", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "chips-autocomplete", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "chips-autocomplete.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "currentColor", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "modifierKind": [ + 148 + ], + "required": false + } + ], + "outputsClass": [ + { + "name": "currentColor", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "modifierKind": [ + 148 + ], + "required": false + } + ], + "propertiesClass": [ + { + "name": "allColors", + "defaultValue": "['Red', 'Green', 'Blue', 'Yellow', 'Orange', 'Purple']", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 20, + "modifierKind": [ + 148 + ] + }, + { + "name": "colors", + "defaultValue": "signal(['Blue'])", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "modifierKind": [ + 148 + ] + }, + { + "name": "filteredColors", + "defaultValue": "computed(() => {\n const currentColor = this.currentColor().toLowerCase();\n const selected = new Set(this.colors().map((color) => color.toLowerCase()));\n const candidates = this.allColors.filter((color) => !selected.has(color.toLowerCase()));\n return currentColor\n ? candidates.filter((color) => color.toLowerCase().includes(currentColor))\n : candidates.slice();\n })", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 21, + "modifierKind": [ + 148 + ] + } + ], + "methodsClass": [ + { + "name": "add", + "args": [ + { + "name": "event", + "type": "MatChipInputEvent", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 30, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "event", + "type": "MatChipInputEvent", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "remove", + "args": [ + { + "name": "color", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 41, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "color", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "selected", + "args": [ + { + "name": "event", + "type": "MatAutocompleteSelectedEvent", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 52, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "event", + "type": "MatAutocompleteSelectedEvent", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatChipsModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatAutocompleteModule", + "type": "module" + }, + { + "name": "FormsModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { ChangeDetectionStrategy, Component, computed, model, signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport {\n MatAutocompleteModule,\n MatAutocompleteSelectedEvent\n} from '@angular/material/autocomplete';\nimport { MatChipInputEvent, MatChipsModule } from '@angular/material/chips';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n selector: 'chips-autocomplete',\n templateUrl: 'chips-autocomplete.component.html',\n imports: [MatFormFieldModule, MatChipsModule, MatIconModule, MatAutocompleteModule, FormsModule],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ChipsAutocompleteComponent {\n readonly currentColor = model('');\n readonly colors = signal(['Blue']);\n readonly allColors: string[] = ['Red', 'Green', 'Blue', 'Yellow', 'Orange', 'Purple'];\n readonly filteredColors = computed(() => {\n const currentColor = this.currentColor().toLowerCase();\n const selected = new Set(this.colors().map((color) => color.toLowerCase()));\n const candidates = this.allColors.filter((color) => !selected.has(color.toLowerCase()));\n return currentColor\n ? candidates.filter((color) => color.toLowerCase().includes(currentColor))\n : candidates.slice();\n });\n\n add(event: MatChipInputEvent): void {\n const value = (event.value || '').trim();\n if (value) {\n const exists = this.colors().some((color) => color.toLowerCase() === value.toLowerCase());\n if (!exists) {\n this.colors.update((colors) => [...colors, value]);\n }\n }\n this.currentColor.set('');\n }\n\n remove(color: string): void {\n this.colors.update((colors) => {\n const index = colors.indexOf(color);\n if (index < 0) {\n return colors;\n }\n colors.splice(index, 1);\n return [...colors];\n });\n }\n\n selected(event: MatAutocompleteSelectedEvent): void {\n const selectedValue = event.option.viewValue;\n const exists = this.colors().some((c) => c.toLowerCase() === selectedValue.toLowerCase());\n if (!exists) {\n this.colors.update((colors) => [...colors, selectedValue]);\n }\n // clear the input used for filtering\n this.currentColor.set('');\n event.option.deselect();\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [], + "templateData": "
\n \n Favorite Colors\n
\n \n @for (color of colors(); track $index) {\n \n {{ color }}\n \n \n }\n \n \n \n @for (color of filteredColors(); track color) {\n {{ color }}\n }\n \n
\n
\n
\n" + }, + { + "name": "ChipsInputComponent", + "id": "component-ChipsInputComponent-e051bb891c64cb7e315cbe2b98bb59bb22d7a7275815b783bc8ceec7b4d9021a1b2b64246e9ffb55531842692af7bcaa4210d20f3216e4f59402391a7b89a490", + "file": "src/stories/chips/chips-input/chips-input.component.ts", + "changeDetection": "ChangeDetectionStrategy.OnPush", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "chips-input", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "chips-input.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "addOnBlur", + "defaultValue": "true", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "modifierKind": [ + 148 + ] + }, + { + "name": "announcer", + "defaultValue": "inject(LiveAnnouncer)", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 22, + "modifierKind": [ + 148 + ] + }, + { + "name": "colors", + "defaultValue": "signal([{ name: 'Blue' }, { name: 'Red' }, { name: 'Green' }])", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 21, + "modifierKind": [ + 148 + ] + }, + { + "name": "separatorKeysCodes", + "defaultValue": "[ENTER, COMMA] as const", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 20, + "modifierKind": [ + 148 + ] + } + ], + "methodsClass": [ + { + "name": "add", + "args": [ + { + "name": "event", + "type": "MatChipInputEvent", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 24, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "event", + "type": "MatChipInputEvent", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "edit", + "args": [ + { + "name": "color", + "type": "Color", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "event", + "type": "MatChipEditedEvent", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 44, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "color", + "type": "Color", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "event", + "type": "MatChipEditedEvent", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "remove", + "args": [ + { + "name": "color", + "type": "Color", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 32, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "color", + "type": "Color", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatChipsModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { LiveAnnouncer } from '@angular/cdk/a11y';\nimport { COMMA, ENTER } from '@angular/cdk/keycodes';\nimport { ChangeDetectionStrategy, Component, inject, signal } from '@angular/core';\nimport { MatChipEditedEvent, MatChipInputEvent, MatChipsModule } from '@angular/material/chips';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\n\nexport interface Color {\n name: string;\n}\n\n@Component({\n selector: 'chips-input',\n templateUrl: 'chips-input.component.html',\n imports: [MatFormFieldModule, MatChipsModule, MatIconModule],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ChipsInputComponent {\n readonly addOnBlur = true;\n readonly separatorKeysCodes = [ENTER, COMMA] as const;\n readonly colors = signal([{ name: 'Blue' }, { name: 'Red' }, { name: 'Green' }]);\n readonly announcer = inject(LiveAnnouncer);\n\n add(event: MatChipInputEvent): void {\n const value = (event.value || '').trim();\n if (value) {\n this.colors.update((colors) => [...colors, { name: value }]);\n }\n event.chipInput!.clear();\n }\n\n remove(color: Color): void {\n this.colors.update((colors) => {\n const index = colors.indexOf(color);\n if (index < 0) {\n return colors;\n }\n colors.splice(index, 1);\n this.announcer.announce(`Removed ${color.name}`);\n return [...colors];\n });\n }\n\n edit(color: Color, event: MatChipEditedEvent) {\n const value = event.value.trim();\n if (!value) {\n this.remove(color);\n return;\n }\n this.colors.update((colors) => {\n const index = colors.indexOf(color);\n if (index >= 0) {\n colors[index].name = value;\n return [...colors];\n }\n return colors;\n });\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [], + "templateData": "\n Favorite colors\n \n @for (color of colors(); track color) {\n \n \n {{ color.name }}\n \n \n }\n \n \n\n" + }, + { + "name": "ChooseAutomatedAssessmentComponent", + "id": "component-ChooseAutomatedAssessmentComponent-5c7a12d2ab0c402ca0e599d4b5fa65fb883f3859d0e149d20771d9ff88dab2858a8f21fe9261dd521f655c9915f3c6d3537920ec88e837a01ea61c86495b168f", + "file": "src/assets/wise5/authoringTool/addNode/choose-automated-assessment/choose-automated-assessment.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [ + "./choose-automated-assessment.component.scss", + "../../add-content.scss" + ], + "styles": [], + "templateUrl": [ + "./choose-automated-assessment.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "importProjectId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 28, + "modifierKind": [ + 123 + ] + }, + { + "name": "node", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 29, + "modifierKind": [ + 124 + ] + }, + { + "name": "project", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 31, + "modifierKind": [ + 123 + ] + }, + { + "name": "projectItems", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 32, + "modifierKind": [ + 124 + ] + }, + { + "name": "target", + "deprecated": false, + "deprecationMessage": "", + "type": "AddStepTarget", + "indexKey": "", + "optional": false, + "description": "", + "line": 30, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "next", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 65, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 40, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "previewNode", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 61, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "showAutomatedAssessmentProject", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 46, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatDividerModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatRadioModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + }, + { + "name": "RouterModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { TeacherProjectService } from '../../../services/teacherProjectService';\nimport { ActivatedRoute, Router, RouterModule } from '@angular/router';\nimport { AddStepTarget } from '../../../../../app/domain/addStepTarget';\nimport { CommonModule } from '@angular/common';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { FormsModule } from '@angular/forms';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@Component({\n imports: [\n CommonModule,\n FormsModule,\n MatButtonModule,\n MatDividerModule,\n MatIconModule,\n MatRadioModule,\n MatTooltipModule,\n RouterModule\n ],\n styleUrls: ['./choose-automated-assessment.component.scss', '../../add-content.scss'],\n templateUrl: './choose-automated-assessment.component.html'\n})\nexport class ChooseAutomatedAssessmentComponent {\n private importProjectId: number;\n protected node: any;\n protected target: AddStepTarget;\n private project: any;\n protected projectItems: any;\n\n constructor(\n private projectService: TeacherProjectService,\n protected route: ActivatedRoute,\n protected router: Router\n ) {}\n\n ngOnInit(): void {\n this.target = history.state;\n this.importProjectId = this.projectService.getAutomatedAssessmentProjectId();\n this.showAutomatedAssessmentProject();\n }\n\n private showAutomatedAssessmentProject(): void {\n this.projectService.retrieveProjectById(this.importProjectId).then((projectJSON: any) => {\n this.project = projectJSON;\n const nodeOrderOfProject = this.projectService.getNodeOrderOfProject(this.project);\n this.projectItems = Object.entries(nodeOrderOfProject.idToOrder)\n .map((entry: any) => {\n return { key: entry[0], node: entry[1].node, order: entry[1].order };\n })\n .sort((a: any, b: any) => {\n return a.order - b.order;\n })\n .slice(1); // remove root node from consideration\n });\n }\n\n protected previewNode(node: any): void {\n window.open(`${this.project.previewProjectURL}/${node.id}`);\n }\n\n protected next(): void {\n this.target.importProjectId = this.importProjectId;\n this.target.node = this.node;\n this.router.navigate(['..', 'configure'], {\n relativeTo: this.route,\n state: this.target\n });\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": [ + { + "data": ".mat-icon {\n margin: 0px;\n}", + "styleUrl": "./choose-automated-assessment.component.scss" + }, + { + "data": ".nav-controls {\n background-color: white;\n position: sticky;\n bottom: 0;\n padding-bottom: 8px;\n z-index: 1;\n\n .mat-divider {\n margin: 16px 0 8px 0;\n }\n}\n", + "styleUrl": "../../add-content.scss" + } + ], + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 32, + "jsdoctags": [ + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "
Automated Assessment
\n

\n Automated Assessments will automatically score student responses and provide feedback for\n reflection.\n

\n
Choose an assessment item:
\n\n @for (item of projectItems; track item.order) {\n \n @if (item.node.type === 'group') {\n
{{ item.node.title }}:
\n } @else {\n
\n \n {{ item.node.title }}\n \n \n preview\n \n
\n }\n \n }\n
\n
\n \n
\n \n \n \n \n Next\n \n
\n
\n" + }, + { + "name": "ChooseBranchPathDialogComponent", + "id": "component-ChooseBranchPathDialogComponent-b1e52ac53d9a0025c5948458143d4c6e26be091475fc12102e4954d4592fc51d4ad8f539ce51fc5da28b6b71ea018493faf9ba4df1db28a644f99b785425a6d3", + "file": "src/app/preview/modules/choose-branch-path-dialog/choose-branch-path-dialog.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "app-choose-branch-path-dialog", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./choose-branch-path-dialog.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [], + "methodsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatDialogModule", + "type": "module" + }, + { + "name": "MatListModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Inject } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';\nimport { MatListModule } from '@angular/material/list';\n\n@Component({\n imports: [MatButtonModule, MatDialogModule, MatListModule],\n selector: 'app-choose-branch-path-dialog',\n styleUrl: './choose-branch-path-dialog.component.scss',\n templateUrl: './choose-branch-path-dialog.component.html'\n})\nexport class ChooseBranchPathDialogComponent {\n constructor(@Inject(MAT_DIALOG_DATA) protected paths: any) {}\n}\n", + "styleUrl": "./choose-branch-path-dialog.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "paths", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 12, + "jsdoctags": [ + { + "name": "paths", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "

Choose a Branch Path

\n\n

\n Note: This chooser screen is only available in preview mode. Students will not see this screen\n in a classroom run and will instead be assigned a branch path automatically. Once you have\n chosen a branch, complete the current step and then click the Next arrow.\n

\n \n @for (path of paths; track path) {\n \n \n \n }\n \n
\n" + }, + { + "name": "ChooseCopyNodeLocationComponent", + "id": "component-ChooseCopyNodeLocationComponent-b101d0f46a734fa94c3810e50b68e21e604ebd8eed91c839726897714114348da2783dc730aa4a17b7c89f1415d93384830418b56371934caf2bebf150bc5670", + "file": "src/assets/wise5/authoringTool/choose-node-location/choose-copy-node-location/choose-copy-node-location.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "choose-copy-node-location.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "inactiveGroupNodes", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 7, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ChooseNodeLocationComponent" + } + }, + { + "name": "inactiveStepNodes", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 8, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ChooseNodeLocationComponent" + } + }, + { + "name": "nodeIds", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 9, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ChooseNodeLocationComponent" + } + }, + { + "name": "selectedNodeIds", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ChooseNodeLocationComponent" + } + } + ], + "methodsClass": [ + { + "name": "insertAfter", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 38, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ChooseNodeLocationComponent" + } + }, + { + "name": "insertInside", + "args": [ + { + "name": "groupNodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 44, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "groupNodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ChooseNodeLocationComponent" + } + }, + { + "name": "getBackgroundColor", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 56, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ChooseNodeLocationComponent" + } + }, + { + "name": "getParentGroup", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 52, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ChooseNodeLocationComponent" + } + }, + { + "name": "insert", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "after", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "after", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ChooseNodeLocationComponent" + } + }, + { + "name": "isGroupNode", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 44, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ChooseNodeLocationComponent" + } + }, + { + "name": "isNodeInAnyBranchPath", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 48, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ChooseNodeLocationComponent" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 18, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ChooseNodeLocationComponent" + } + }, + { + "name": "saveAndGoToProjectView", + "args": [ + { + "name": "newNodes", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 34, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "newNodes", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ChooseNodeLocationComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "InsertNodeAfterButtonComponent", + "type": "component" + }, + { + "name": "InsertNodeInsideButtonComponent", + "type": "component" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "NodeIconAndTitleComponent", + "type": "component" + }, + { + "name": "NodeWithMoveAfterButtonComponent", + "type": "component" + }, + { + "name": "RouterLink" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { ActivatedRoute, Router, RouterLink } from '@angular/router';\nimport { MatButtonModule } from '@angular/material/button';\nimport { TeacherProjectService } from '../../../services/teacherProjectService';\nimport { CopyNodesService } from '../../../services/copyNodesService';\nimport { ChooseNodeLocationComponent } from '../choose-node-location.component';\nimport { CopyTranslationsService } from '../../../services/copyTranslationsService';\nimport { CommonModule } from '@angular/common';\nimport { InsertNodeAfterButtonComponent } from '../insert-node-after-button/insert-node-after-button.component';\nimport { InsertNodeInsideButtonComponent } from '../insert-node-inside-button/insert-node-inside-button.component';\nimport { NodeIconAndTitleComponent } from '../node-icon-and-title/node-icon-and-title.component';\nimport { NodeWithMoveAfterButtonComponent } from '../node-with-move-after-button/node-with-move-after-button.component';\n\n@Component({\n imports: [\n CommonModule,\n InsertNodeAfterButtonComponent,\n InsertNodeInsideButtonComponent,\n MatButtonModule,\n NodeIconAndTitleComponent,\n NodeWithMoveAfterButtonComponent,\n RouterLink\n ],\n styleUrl: '../choose-node-location.component.scss',\n templateUrl: 'choose-copy-node-location.component.html'\n})\nexport class ChooseCopyNodeLocationComponent extends ChooseNodeLocationComponent {\n constructor(\n private copyNodesService: CopyNodesService,\n private copyTranslationsService: CopyTranslationsService,\n protected projectService: TeacherProjectService,\n protected route: ActivatedRoute,\n protected router: Router\n ) {\n super(projectService, route, router);\n }\n\n protected insertAfter(nodeId: string): any[] {\n const newNodes = this.copyNodesService.copyNodesAfter(this.selectedNodeIds, nodeId);\n this.copyTranslationsService.tryCopyNodes(newNodes);\n return newNodes;\n }\n\n protected insertInside(groupNodeId: string): any[] {\n const newNodes = this.copyNodesService.copyNodesInsideGroup(this.selectedNodeIds, groupNodeId);\n this.copyTranslationsService.tryCopyNodes(newNodes);\n return newNodes;\n }\n}\n", + "styleUrl": "../choose-node-location.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "copyNodesService", + "type": "CopyNodesService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "copyTranslationsService", + "type": "CopyTranslationsService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 27, + "jsdoctags": [ + { + "name": "copyNodesService", + "type": "CopyNodesService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "copyTranslationsService", + "type": "CopyTranslationsService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "ChooseNodeLocationComponent" + ], + "templateData": "
\n
Choose a new location by clicking one of the buttons below
\n \n
\n
\n @for (nodeId of nodeIds; track nodeId) {\n \n
\n \n @if (isGroupNode(nodeId)) {\n \n } @else {\n \n }\n
\n
\n }\n
Unused Lessons
\n @if (inactiveGroupNodes.length == 0) {\n
There are no Unused Lessons
\n } @else {\n @for (inactiveNode of inactiveGroupNodes; track inactiveNode.id) {\n
\n \n \n
\n @for (inactiveChildId of inactiveNode.ids; track inactiveChildId) {\n \n \n \n }\n }\n }\n
\n
Unused Steps
\n \n
\n @if (inactiveStepNodes.length == 0) {\n
There are no Unused Steps
\n } @else {\n @for (inactiveNode of inactiveStepNodes; track inactiveNode.id) {\n @if (getParentGroup(inactiveNode.id) == null) {\n
\n \n
\n }\n }\n }\n\n" + }, + { + "name": "ChooseImportComponentComponent", + "id": "component-ChooseImportComponentComponent-4697123eaba10e4efc3b822092cf369dbda65fcd3c333d3aa1a475a3fe90eac097d1673578d05d90f34bbac54a83c7bb8b6be5993587e2144acddfe03b29c4c1", + "file": "src/assets/wise5/authoringTool/importComponent/choose-import-component/choose-import-component.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "choose-import-component", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./choose-import-component.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "importProject", + "defaultValue": "null", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 34, + "modifierKind": [ + 124 + ] + }, + { + "name": "importProjectId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 35, + "modifierKind": [ + 123 + ] + }, + { + "name": "myProjectsList", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 36, + "modifierKind": [ + 124 + ] + }, + { + "name": "project", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 37, + "modifierKind": [ + 124 + ] + }, + { + "name": "projectIdToOrder", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 38, + "modifierKind": [ + 124 + ] + }, + { + "name": "projectItems", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 39, + "modifierKind": [ + 123 + ] + }, + { + "name": "state", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 40, + "modifierKind": [ + 124 + ] + }, + { + "name": "submitting", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 41, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "getSelectedComponentsToImport", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 97, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "import", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 74, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 53, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "previewNode", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 70, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "previewProject", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 66, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatCheckboxModule", + "type": "module" + }, + { + "name": "MatDividerModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatProgressBarModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + }, + { + "name": "RouterModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { CommonModule } from '@angular/common';\nimport { Component, OnInit } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { ActivatedRoute, Router, RouterModule } from '@angular/router';\nimport { ProjectAssetService } from '../../../../../app/services/projectAssetService';\nimport { ConfigService } from '../../../services/configService';\nimport { ImportComponentService } from '../../../services/importComponentService';\nimport { TeacherDataService } from '../../../services/teacherDataService';\nimport { TeacherProjectService } from '../../../services/teacherProjectService';\n\n@Component({\n imports: [\n CommonModule,\n FormsModule,\n MatButtonModule,\n MatCheckboxModule,\n MatDividerModule,\n MatIconModule,\n MatProgressBarModule,\n MatTooltipModule,\n RouterModule\n ],\n selector: 'choose-import-component',\n styleUrl: './choose-import-component.component.scss',\n templateUrl: './choose-import-component.component.html'\n})\nexport class ChooseImportComponentComponent implements OnInit {\n protected importProject: any = null;\n private importProjectId: number;\n protected myProjectsList: any = [];\n protected project: any;\n protected projectIdToOrder: any;\n private projectItems: any[] = [];\n protected state: any;\n protected submitting: boolean;\n\n constructor(\n private configService: ConfigService,\n private dataService: TeacherDataService,\n private importComponentService: ImportComponentService,\n private projectAssetService: ProjectAssetService,\n private projectService: TeacherProjectService,\n private route: ActivatedRoute,\n private router: Router\n ) {}\n\n ngOnInit(): void {\n this.state = history.state;\n this.importProjectId = this.state.importProjectId;\n this.projectService.retrieveProjectById(this.importProjectId).then((projectJSON) => {\n this.project = projectJSON;\n const nodeOrderOfProject = this.projectService.getNodeOrderOfProject(this.project);\n this.projectIdToOrder = Object.values(nodeOrderOfProject.idToOrder)\n .slice(1)\n .filter((item: any) => item.node.components?.length > 0);\n this.projectItems = nodeOrderOfProject.nodes;\n });\n }\n\n protected previewProject(): void {\n window.open(`${this.project.previewProjectURL}`);\n }\n\n protected previewNode(node: any): void {\n window.open(`${this.project.previewProjectURL}/${node.id}`);\n }\n\n protected import(): void {\n this.importComponentService\n .importComponents(\n this.getSelectedComponentsToImport(),\n this.importProjectId,\n this.dataService.getCurrentNodeId(),\n history.state.insertAfterComponentId\n )\n .subscribe((newComponents) => {\n this.projectService.saveProject();\n // refresh the project assets in case any of the imported components also imported assets\n this.projectAssetService.retrieveProjectAssets();\n this.router.navigate(['../..'], {\n relativeTo: this.route,\n state: {\n projectId: this.configService.getProjectId(),\n nodeId: this.dataService.getCurrentNodeId(),\n newComponents: newComponents\n }\n });\n });\n }\n\n protected getSelectedComponentsToImport(): any[] {\n return this.projectItems\n .flatMap((item) => item.node.components)\n .filter((component) => component?.checked);\n }\n}\n", + "styleUrl": "./choose-import-component.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "importComponentService", + "type": "ImportComponentService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectAssetService", + "type": "ProjectAssetService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 41, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "importComponentService", + "type": "ImportComponentService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectAssetService", + "type": "ProjectAssetService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "
Choose the component(s) that you want to import, then select Submit.
\n

\n Selected unit: {{ project?.metadata.title }}\n \n preview\n \n

\n@for (item of projectIdToOrder; track item.order) {\n \n @if (item.node.type == 'group') {\n
{{ item.stepNumber }}: {{ item.node.title }}
\n } @else {\n
\n {{ item.stepNumber }}: {{ item.node.title }}\n \n preview\n \n
\n @for (component of item.node.components; track component.id; let i = $index) {\n
\n
\n
\n \n {{ i + 1 }}. {{ component.type }}\n \n
\n
\n \n preview\n \n
\n
\n
\n }\n }\n \n}\n
\n \n
\n \n Back\n \n \n \n \n @if (submitting) {\n \n }\n Submit\n \n
\n
\n" + }, + { + "name": "ChooseImportStepComponent", + "id": "component-ChooseImportStepComponent-f6dd20c793abf4091d3025b26212e6bac8e53102bb27b2a62403be1b74665900186037b8a54bc775cb2eed57cbefe7298f01cfd0e112a610071ef15b2061f291", + "file": "src/app/authoring-tool/import-step/choose-import-step/choose-import-step.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "choose-import-step", + "styleUrls": [ + "choose-import-step.component.scss", + "../../add-content.scss" + ], + "styles": [], + "templateUrl": [ + "choose-import-step.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "project", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 30, + "modifierKind": [ + 124 + ] + }, + { + "name": "projectIdToOrder", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 31, + "modifierKind": [ + 124 + ] + }, + { + "name": "projectItems", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 32, + "modifierKind": [ + 123 + ] + }, + { + "name": "importProjectId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractImportStepComponent" + } + }, + { + "name": "submitting", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractImportStepComponent" + } + }, + { + "name": "target", + "deprecated": false, + "deprecationMessage": "", + "type": "AddStepTarget", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractImportStepComponent" + } + } + ], + "methodsClass": [ + { + "name": "getSelectedNodesToImport", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 52, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 34, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractImportStepComponent" + } + }, + { + "name": "previewNode", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 44, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "previewProject", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 48, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "import", + "args": [ + { + "name": "nodesToImport", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 31, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodesToImport", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractImportStepComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatCheckboxModule", + "type": "module" + }, + { + "name": "MatDividerModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatProgressBarModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + }, + { + "name": "RouterModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { RouterModule } from '@angular/router';\nimport { AbstractImportStepComponent } from '../../../../assets/wise5/authoringTool/addNode/abstract-import-step/abstract-import-step.component';\n\n@Component({\n imports: [\n CommonModule,\n FormsModule,\n MatButtonModule,\n MatCheckboxModule,\n MatDividerModule,\n MatIconModule,\n MatProgressBarModule,\n MatTooltipModule,\n RouterModule\n ],\n selector: 'choose-import-step',\n styleUrls: ['choose-import-step.component.scss', '../../add-content.scss'],\n templateUrl: 'choose-import-step.component.html'\n})\nexport class ChooseImportStepComponent extends AbstractImportStepComponent {\n protected project: any;\n protected projectIdToOrder: any;\n private projectItems: any[] = [];\n\n ngOnInit(): void {\n super.ngOnInit();\n this.projectService.retrieveProjectById(this.importProjectId).then((projectJSON) => {\n this.project = projectJSON;\n const nodeOrderOfProject = this.projectService.getNodeOrderOfProject(this.project);\n this.projectIdToOrder = Object.values(nodeOrderOfProject.idToOrder);\n this.projectItems = nodeOrderOfProject.nodes;\n });\n }\n\n protected previewNode(node: any): void {\n window.open(`${this.project.previewProjectURL}/${node.id}`);\n }\n\n protected previewProject(): void {\n window.open(`${this.project.previewProjectURL}`);\n }\n\n protected getSelectedNodesToImport(): any[] {\n return this.projectItems.filter((item) => item.checked).map((item) => item.node);\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": [ + { + "data": ".mat-icon {\n margin: 0px;\n}\n\n.step-title {\n font-weight: 400;\n}\n", + "styleUrl": "choose-import-step.component.scss" + }, + { + "data": ".nav-controls {\n background-color: white;\n position: sticky;\n bottom: 0;\n padding-bottom: 8px;\n z-index: 1;\n\n .mat-divider {\n margin: 16px 0 8px 0;\n }\n}\n", + "styleUrl": "../../add-content.scss" + } + ], + "stylesData": "", + "extends": [ + "AbstractImportStepComponent" + ], + "templateData": "
Choose the step(s) that you want to import, then select Submit.
\n

\n Selected unit: {{ project?.metadata.title }}\n \n preview\n \n

\n@for (item of projectIdToOrder; track item.order) {\n \n @if (item.order != 0 && item.node.type == 'group') {\n
{{ item.stepNumber }}: {{ item.node.title }}
\n }\n @if (item.order != 0 && item.node.type != 'group') {\n
\n \n {{ item.stepNumber }}: {{ item.node.title }}\n \n \n preview\n \n
\n }\n \n}\n
\n \n
\n \n Back\n \n \n \n \n @if (submitting) {\n \n }\n Submit\n \n
\n
\n" + }, + { + "name": "ChooseImportUnitComponent", + "id": "component-ChooseImportUnitComponent-a78f269b544726d95043e371c763e22a230de9526810be55f187a5d878b5cc8eda89534a319439a14bbb021fc5b1f2870bf3111d2402ae869e6e7958e985057d", + "file": "src/app/authoring-tool/import-step/choose-import-unit/choose-import-unit.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "choose-import-unit", + "styleUrls": [ + "./choose-import-unit.component.scss", + "../../add-content.scss" + ], + "styles": [], + "templateUrl": [ + "./choose-import-unit.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "importType", + "deprecated": false, + "deprecationMessage": "", + "type": "\"step\" | \"component\"", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "modifierKind": [ + 124 + ] + }, + { + "name": "libraryProjects", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 20, + "modifierKind": [ + 124 + ] + }, + { + "name": "myProjects", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 21, + "modifierKind": [ + 124 + ] + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 22, + "modifierKind": [ + 123 + ] + }, + { + "name": "target", + "deprecated": false, + "deprecationMessage": "", + "type": "AddStepTarget", + "indexKey": "", + "optional": false, + "description": "", + "line": 23, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "cancel", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 56, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "chooseProject", + "args": [ + { + "name": "project", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 47, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "project", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "goBack", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 52, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "navigate", + "args": [ + { + "name": "componentUrl", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "stepUrl", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 60, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentUrl", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "stepUrl", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 43, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 32, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatDividerModule", + "type": "module" + }, + { + "name": "MatTabsModule", + "type": "module" + }, + { + "name": "RouterModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { ActivatedRoute, Router, RouterModule } from '@angular/router';\nimport { Subscription } from 'rxjs';\nimport { ConfigService } from '../../../../assets/wise5/services/configService';\nimport { ProjectLibraryService } from '../../../../assets/wise5/services/projectLibraryService';\nimport { AddStepTarget } from '../../../domain/addStepTarget';\n\n@Component({\n imports: [CommonModule, MatButtonModule, MatDividerModule, MatTabsModule, RouterModule],\n selector: 'choose-import-unit',\n styleUrls: ['./choose-import-unit.component.scss', '../../add-content.scss'],\n templateUrl: './choose-import-unit.component.html'\n})\nexport class ChooseImportUnitComponent {\n protected importType: 'step' | 'component';\n protected libraryProjects: any[];\n protected myProjects: any[];\n private subscriptions: Subscription = new Subscription();\n protected target: AddStepTarget;\n\n constructor(\n private configService: ConfigService,\n private projectLibraryService: ProjectLibraryService,\n private route: ActivatedRoute,\n private router: Router\n ) {}\n\n ngOnInit(): void {\n this.importType = history.state.importType;\n this.target = history.state;\n this.myProjects = this.configService.getAuthorableProjects();\n this.subscriptions.add(\n this.projectLibraryService\n .getLibraryProjects()\n .subscribe((libraryProjects) => (this.libraryProjects = libraryProjects))\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n protected chooseProject(project: any): void {\n this.target.importProjectId = project.id;\n this.navigate('../choose-component', '../choose-step');\n }\n\n protected goBack(): void {\n this.navigate('../..', '../../choose-template');\n }\n\n protected cancel(): void {\n this.navigate('../..', '../../..');\n }\n\n private navigate(componentUrl: string, stepUrl: string): void {\n this.router.navigate([this.importType === 'component' ? componentUrl : stepUrl], {\n relativeTo: this.route,\n state: this.target\n });\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": [ + { + "data": ".units {\n padding: 16px 0;\n}\n\n.unit {\n text-transform: none;\n}", + "styleUrl": "./choose-import-unit.component.scss" + }, + { + "data": ".nav-controls {\n background-color: white;\n position: sticky;\n bottom: 0;\n padding-bottom: 8px;\n z-index: 1;\n\n .mat-divider {\n margin: 16px 0 8px 0;\n }\n}\n", + "styleUrl": "../../add-content.scss" + } + ], + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectLibraryService", + "type": "ProjectLibraryService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 23, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectLibraryService", + "type": "ProjectLibraryService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "\n
\n @for (project of projects; track project.id) {\n \n }\n
\n
\n@if (importType === 'step') {\n
Choose a unit from which to import step(s).
\n} @else {\n
Choose a unit from which to import component(s).
\n}\n\n \n @if (myProjects) {\n \n }\n \n \n @if (libraryProjects) {\n \n }\n \n\n
\n \n
\n \n \n \n
\n
\n" + }, + { + "name": "ChooseMoveNodeLocationComponent", + "id": "component-ChooseMoveNodeLocationComponent-b49451b63dd48c279128efc23c7f6c1b62d88c814261525e1fac1df935b20a5f06cb9c841ef003011eafc1b2f88442f5678c7cf37cb4357d44183c1a30f0ccab", + "file": "src/assets/wise5/authoringTool/choose-node-location/choose-move-node-location/choose-move-node-location.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "choose-move-node-location.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "moveGroup", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 27, + "modifierKind": [ + 124 + ] + }, + { + "name": "inactiveGroupNodes", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 7, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ChooseNodeLocationComponent" + } + }, + { + "name": "inactiveStepNodes", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 8, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ChooseNodeLocationComponent" + } + }, + { + "name": "nodeIds", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 9, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ChooseNodeLocationComponent" + } + }, + { + "name": "selectedNodeIds", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ChooseNodeLocationComponent" + } + } + ], + "methodsClass": [ + { + "name": "canInsertAfter", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 46, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "insertAfter", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 50, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ChooseNodeLocationComponent" + } + }, + { + "name": "insertInside", + "args": [ + { + "name": "groupNodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 54, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "groupNodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ChooseNodeLocationComponent" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 38, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ChooseNodeLocationComponent" + } + }, + { + "name": "getBackgroundColor", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 56, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ChooseNodeLocationComponent" + } + }, + { + "name": "getParentGroup", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 52, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ChooseNodeLocationComponent" + } + }, + { + "name": "insert", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "after", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "after", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ChooseNodeLocationComponent" + } + }, + { + "name": "isGroupNode", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 44, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ChooseNodeLocationComponent" + } + }, + { + "name": "isNodeInAnyBranchPath", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 48, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ChooseNodeLocationComponent" + } + }, + { + "name": "saveAndGoToProjectView", + "args": [ + { + "name": "newNodes", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 34, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "newNodes", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ChooseNodeLocationComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "InsertNodeAfterButtonComponent", + "type": "component" + }, + { + "name": "InsertNodeInsideButtonComponent", + "type": "component" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "NodeIconAndTitleComponent", + "type": "component" + }, + { + "name": "NodeWithMoveAfterButtonComponent", + "type": "component" + }, + { + "name": "RouterModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { ActivatedRoute, Router, RouterModule } from '@angular/router';\nimport { MoveNodesService } from '../../../services/moveNodesService';\nimport { TeacherProjectService } from '../../../services/teacherProjectService';\nimport { ChooseNodeLocationComponent } from '../choose-node-location.component';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { InsertNodeInsideButtonComponent } from '../insert-node-inside-button/insert-node-inside-button.component';\nimport { NodeIconAndTitleComponent } from '../node-icon-and-title/node-icon-and-title.component';\nimport { InsertNodeAfterButtonComponent } from '../insert-node-after-button/insert-node-after-button.component';\nimport { NodeWithMoveAfterButtonComponent } from '../node-with-move-after-button/node-with-move-after-button.component';\n\n@Component({\n imports: [\n CommonModule,\n InsertNodeAfterButtonComponent,\n InsertNodeInsideButtonComponent,\n MatButtonModule,\n NodeIconAndTitleComponent,\n NodeWithMoveAfterButtonComponent,\n RouterModule\n ],\n styleUrl: '../choose-node-location.component.scss',\n templateUrl: 'choose-move-node-location.component.html'\n})\nexport class ChooseMoveNodeLocationComponent extends ChooseNodeLocationComponent {\n protected moveGroup: boolean;\n\n constructor(\n private moveNodesService: MoveNodesService,\n protected projectService: TeacherProjectService,\n protected route: ActivatedRoute,\n protected router: Router\n ) {\n super(projectService, route, router);\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n this.moveGroup = this.projectService.getNode(this.selectedNodeIds[0]).isGroup();\n if (this.moveGroup) {\n this.nodeIds = this.nodeIds.filter((nodeId) => this.projectService.isGroupNode(nodeId));\n }\n }\n\n protected canInsertAfter(nodeId: string): boolean {\n return !this.selectedNodeIds.includes(nodeId);\n }\n\n protected insertAfter(nodeId: string): any[] {\n return this.moveNodesService.moveNodesAfter(this.selectedNodeIds, nodeId);\n }\n\n protected insertInside(groupNodeId: string): any[] {\n return this.moveNodesService.moveNodesInsideGroup(this.selectedNodeIds, groupNodeId);\n }\n}\n", + "styleUrl": "../choose-node-location.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "moveNodesService", + "type": "MoveNodesService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 27, + "jsdoctags": [ + { + "name": "moveNodesService", + "type": "MoveNodesService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "ChooseNodeLocationComponent" + ], + "templateData": "
\n
Choose a new location by clicking one of the buttons below
\n \n
\n
\n @if (moveGroup) {\n \n }\n @for (nodeId of nodeIds; track nodeId) {\n
\n \n
\n \n @if (isGroupNode(nodeId) && !moveGroup) {\n \n }\n @if (!isGroupNode(nodeId) || (isGroupNode(nodeId) && moveGroup)) {\n \n }\n
\n
\n
\n }\n
\n
Unused Lessons
\n @if (moveGroup) {\n \n }\n
\n @if (inactiveGroupNodes.length == 0) {\n
There are no Unused Lessons
\n }\n @for (inactiveNode of inactiveGroupNodes; track inactiveNode) {\n
\n \n @if (!moveGroup) {\n \n }\n @if (moveGroup) {\n \n }\n
\n @for (inactiveChildId of inactiveNode.ids; track inactiveChildId) {\n @if (!moveGroup) {\n
\n \n \n
\n \n }\n }\n }\n @if (!moveGroup) {\n
\n
\n
Unused Steps
\n \n
\n @if (inactiveStepNodes.length == 0) {\n
There are no Unused Steps
\n }\n @for (inactiveNode of inactiveStepNodes; track inactiveNode) {\n @if (getParentGroup(inactiveNode.id) == null) {\n
\n \n
\n }\n }\n
\n }\n\n" + }, + { + "name": "ChooseNewComponent", + "id": "component-ChooseNewComponent-c64b1b33ebb2ab67ca5c591032d2554bbdadbdb47914ede00d8f6d9581a05d01b1291d895f5c10fcad2bfdcaee493b928876f84b9c93c2f7ed8ed4127cab8e58", + "file": "src/app/authoring-tool/add-component/choose-new-component/choose-new-component.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [ + "component-type-button { width: 250px; padding: 4px; }" + ], + "templateUrl": [ + "choose-new-component.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "componentTypes", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "cancel", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 32, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "goToImportComponent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 24, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 20, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "selectComponent", + "args": [ + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 28, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "ComponentTypeButtonComponent", + "type": "component" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatDialogModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { ComponentTypeButtonComponent } from '../../../../assets/wise5/authoringTool/components/component-type-button/component-type-button.component';\nimport { ComponentTypeService } from '../../../../assets/wise5/services/componentTypeService';\n\n@Component({\n imports: [ComponentTypeButtonComponent, MatButtonModule, MatDialogModule],\n styles: ['component-type-button { width: 250px; padding: 4px; }'],\n templateUrl: 'choose-new-component.component.html'\n})\nexport class ChooseNewComponent {\n protected componentTypes: any[];\n\n constructor(\n private componentTypeService: ComponentTypeService,\n private dialogRef: MatDialogRef\n ) {}\n\n ngOnInit(): void {\n this.componentTypes = this.componentTypeService.getComponentTypes();\n }\n\n protected goToImportComponent(): void {\n this.dialogRef.close({ action: 'import' });\n }\n\n protected selectComponent(componentType: string): void {\n this.dialogRef.close({ action: 'create', componentType: componentType });\n }\n\n protected cancel(): void {\n this.dialogRef.close();\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "component-type-button { width: 250px; padding: 4px; }\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "componentTypeService", + "type": "ComponentTypeService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialogRef", + "type": "MatDialogRef", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 13, + "jsdoctags": [ + { + "name": "componentTypeService", + "type": "ComponentTypeService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialogRef", + "type": "MatDialogRef", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "

Add New Component

\n\n

\n Select the component type you want to add or\n \n

\n
\n @for (componentType of componentTypes; track componentType.type) {\n \n }\n
\n
\n\n \n\n" + }, + { + "name": "ChooseNewNodeTemplateComponent", + "id": "component-ChooseNewNodeTemplateComponent-11890d2442cfd6095fc1cc20debf6e337b8e6e70048dd76adf92c2404fc1c2cd85b5676c1909cacbdcca8d679bba1cfef16509e93cd6d626432ec25448e55199", + "file": "src/assets/wise5/authoringTool/addNode/choose-new-node-template/choose-new-node-template.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [ + "choose-new-node-template.component.scss", + "../../add-content.scss" + ], + "styles": [], + "templateUrl": [ + "choose-new-node-template.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "templates", + "defaultValue": "[\n {\n label: $localize`Create Your Own`,\n icon: 'mode_edit',\n route: 'add-your-own'\n },\n {\n label: $localize`Import From Another Unit`,\n icon: 'system_update_alt',\n route: 'import-step/choose-unit'\n },\n {\n label: $localize`Automated Assessment`,\n icon: 'fact_check',\n route: 'automated-assessment/choose-item'\n },\n {\n label: $localize`Interactive Simulation`,\n icon: 'video_settings',\n route: 'simulation/choose-item'\n }\n ]", + "deprecated": false, + "deprecationMessage": "", + "type": "NewNodeTemplate[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "chooseTemplate", + "args": [ + { + "name": "template", + "type": "NewNodeTemplate", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 43, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "template", + "type": "NewNodeTemplate", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatCardModule", + "type": "module" + }, + { + "name": "MatDividerModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "RouterModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { NewNodeTemplate } from '../NewNodeTemplate';\nimport { ActivatedRoute, Router, RouterModule } from '@angular/router';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n imports: [MatButtonModule, MatCardModule, MatDividerModule, MatIconModule, RouterModule],\n styleUrls: ['choose-new-node-template.component.scss', '../../add-content.scss'],\n templateUrl: 'choose-new-node-template.component.html'\n})\nexport class ChooseNewNodeTemplateComponent {\n protected templates: NewNodeTemplate[] = [\n {\n label: $localize`Create Your Own`,\n icon: 'mode_edit',\n route: 'add-your-own'\n },\n {\n label: $localize`Import From Another Unit`,\n icon: 'system_update_alt',\n route: 'import-step/choose-unit'\n },\n {\n label: $localize`Automated Assessment`,\n icon: 'fact_check',\n route: 'automated-assessment/choose-item'\n },\n {\n label: $localize`Interactive Simulation`,\n icon: 'video_settings',\n route: 'simulation/choose-item'\n }\n ];\n\n constructor(\n private route: ActivatedRoute,\n private router: Router\n ) {}\n\n protected chooseTemplate(template: NewNodeTemplate) {\n this.router.navigate(['..', ...template.route.split('/')], {\n relativeTo: this.route,\n state: history.state\n });\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": [ + { + "data": "mat-card {\n width: 280px;\n margin: 8px;\n}\n", + "styleUrl": "choose-new-node-template.component.scss" + }, + { + "data": ".nav-controls {\n background-color: white;\n position: sticky;\n bottom: 0;\n padding-bottom: 8px;\n z-index: 1;\n\n .mat-divider {\n margin: 16px 0 8px 0;\n }\n}\n", + "styleUrl": "../../add-content.scss" + } + ], + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 36, + "jsdoctags": [ + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "
Start from scratch, import from another unit, or choose a step template:
\n
\n @for (template of templates; track template.route) {\n \n \n
{{ template.label }}
\n
\n \n {{ template.icon }}\n \n \n \n Select\n \n \n
\n }\n
\n
\n \n
\n \n
\n
\n" + }, + { + "name": "ChooseSimulationComponent", + "id": "component-ChooseSimulationComponent-e3b120679d7c8f2ab812c9a4ede1da37f9c6803d457146db8b817d1e22470f29a3a0a1a3a7bedcdadb73550be92820214ecbda775149e2711e0d64ff98254c88", + "file": "src/assets/wise5/authoringTool/addNode/choose-simulation/choose-simulation.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [ + "./choose-simulation.component.scss", + "../../add-content.scss" + ], + "styles": [], + "templateUrl": [ + "./choose-simulation.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "allNodes", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "SimulationNode[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 43, + "modifierKind": [ + 123 + ] + }, + { + "name": "filteredNodes", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "SimulationNode[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 44, + "modifierKind": [ + 124 + ] + }, + { + "name": "project", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 45, + "modifierKind": [ + 124 + ] + }, + { + "name": "projectItems", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 46, + "modifierKind": [ + 123 + ] + }, + { + "name": "searchText", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 47, + "modifierKind": [ + 124 + ] + }, + { + "name": "selectedNode", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 48, + "modifierKind": [ + 124 + ] + }, + { + "name": "selectedSubjects", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 49, + "modifierKind": [ + 124 + ] + }, + { + "name": "subjects", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 50, + "modifierKind": [ + 124 + ] + }, + { + "name": "importProjectId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractImportStepComponent" + } + }, + { + "name": "submitting", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractImportStepComponent" + } + }, + { + "name": "target", + "deprecated": false, + "deprecationMessage": "", + "type": "AddStepTarget", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractImportStepComponent" + } + } + ], + "methodsClass": [ + { + "name": "clearFilters", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 98, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "filter", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 76, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "getNumItemsFound", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 104, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "isAnySubjectChosen", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 90, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "isSearchTextFound", + "args": [ + { + "name": "searchText", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "testText", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 86, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "searchText", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "testText", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isSubjectFound", + "args": [ + { + "name": "selectedSubjects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "resource", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 94, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "selectedSubjects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "resource", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "itemSelected", + "args": [ + { + "name": "item", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 114, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "item", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 52, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractImportStepComponent" + } + }, + { + "name": "previewNode", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 110, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "showSimulationProject", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 58, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "import", + "args": [ + { + "name": "nodesToImport", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 31, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodesToImport", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractImportStepComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CardSelectorComponent", + "type": "component" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatDividerModule", + "type": "module" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatInputModule", + "type": "module" + }, + { + "name": "MatProgressBarModule", + "type": "module" + }, + { + "name": "MatSelectModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + }, + { + "name": "RouterModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { RouterModule } from '@angular/router';\nimport { CardSelectorComponent } from '../../components/card-selector/card-selector.component';\nimport { AbstractImportStepComponent } from '../abstract-import-step/abstract-import-step.component';\n\nclass SimulationNode {\n metadata = {\n subjects: []\n };\n type: string;\n constructor(node: any) {\n Object.assign(this, node);\n }\n}\n\n@Component({\n imports: [\n CardSelectorComponent,\n FormsModule,\n MatButtonModule,\n MatDividerModule,\n MatFormFieldModule,\n MatIconModule,\n MatInputModule,\n MatProgressBarModule,\n MatSelectModule,\n MatTooltipModule,\n RouterModule\n ],\n templateUrl: './choose-simulation.component.html',\n styleUrls: ['./choose-simulation.component.scss', '../../add-content.scss']\n})\nexport class ChooseSimulationComponent extends AbstractImportStepComponent {\n private allNodes: SimulationNode[] = [];\n protected filteredNodes: SimulationNode[] = [];\n protected project: any;\n private projectItems: any;\n protected searchText: string = '';\n protected selectedNode: string;\n protected selectedSubjects: string[] = [];\n protected subjects: string[] = [];\n\n ngOnInit(): void {\n super.ngOnInit();\n this.importProjectId = this.projectService.getSimulationProjectId();\n this.showSimulationProject();\n }\n\n private showSimulationProject(): void {\n this.projectService.retrieveProjectById(this.importProjectId).then((projectJSON) => {\n this.project = projectJSON;\n const nodeOrderOfProject = this.projectService.getNodeOrderOfProject(this.project);\n this.projectItems = nodeOrderOfProject.nodes.slice(1); // remove root node from consideration\n const allSubjects: string[] = [];\n this.projectItems.forEach((item) => {\n if (item.node.type !== 'group') {\n const simulationNode = new SimulationNode(item.node);\n this.allNodes.push(simulationNode);\n allSubjects.push(...simulationNode.metadata.subjects);\n }\n });\n this.filteredNodes = this.allNodes;\n this.subjects = Array.from(new Set(allSubjects)).sort();\n });\n }\n\n protected filter(): void {\n this.filteredNodes = this.allNodes.filter((node: SimulationNode) => {\n const isSearchTextFound = this.isSearchTextFound(this.searchText, JSON.stringify(node));\n if (this.isAnySubjectChosen()) {\n return isSearchTextFound && this.isSubjectFound(this.selectedSubjects, node);\n }\n return isSearchTextFound;\n });\n }\n\n private isSearchTextFound(searchText: string, testText: string): boolean {\n return testText.toLowerCase().includes(searchText.toLowerCase());\n }\n\n private isAnySubjectChosen(): boolean {\n return this.selectedSubjects.length > 0;\n }\n\n private isSubjectFound(selectedSubjects: any[], resource: any): boolean {\n return selectedSubjects.some((subject) => resource.metadata.subjects.includes(subject));\n }\n\n protected clearFilters(): void {\n this.searchText = '';\n this.selectedSubjects = [];\n this.filter();\n }\n\n protected getNumItemsFound(): number {\n return this.filteredNodes.filter((node: SimulationNode) => {\n return node.type != 'group';\n }).length;\n }\n\n protected previewNode(node: any): void {\n window.open(`${this.project.previewProjectURL}/${node.id}`);\n }\n\n protected itemSelected(item: any): void {\n this.selectedNode = item;\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": [ + { + "data": ".num-items-found-message {\n margin-top: 16px;\n}", + "styleUrl": "./choose-simulation.component.scss" + }, + { + "data": ".nav-controls {\n background-color: white;\n position: sticky;\n bottom: 0;\n padding-bottom: 8px;\n z-index: 1;\n\n .mat-divider {\n margin: 16px 0 8px 0;\n }\n}\n", + "styleUrl": "../../add-content.scss" + } + ], + "stylesData": "", + "extends": [ + "AbstractImportStepComponent" + ], + "templateData": "
Interactive Simulation
\n

\n Select from a curated library of interactive simulations addressing various science topics.\n

\n
\n \n Filter by Topic\n \n @for (subject of subjects; track $index) {\n {{ subject }}\n }\n \n \n \n Search\n \n \n @if (searchText || selectedSubjects.length) {\n \n clear\n \n }\n {{ getNumItemsFound() }} Item(s) Found \n
\n@if (project != null) {\n \n}\n
\n \n
\n \n \n \n \n @if (submitting) {\n \n }\n Submit\n \n
\n
\n" + }, + { + "name": "ClassResponse", + "id": "component-ClassResponse-58f1f0a47c67edaba1e9ae56c32dc332a5e4be2d6fa4260792973148750520f6afdab003271460c55f917ab4b10483dc8d369f799e3ae2df8c93406217339485", + "file": "src/assets/wise5/components/discussion/class-response/class-response.component.ts", + "encapsulation": [ + "ViewEncapsulation.None" + ], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "class-response", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "class-response.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "isDisabled", + "deprecated": false, + "deprecationMessage": "", + "line": 46, + "type": "boolean", + "decorators": [] + }, + { + "name": "mode", + "deprecated": false, + "deprecationMessage": "", + "line": 47, + "type": "any", + "decorators": [] + }, + { + "name": "numReplies", + "deprecated": false, + "deprecationMessage": "", + "line": 48, + "type": "number", + "decorators": [] + }, + { + "name": "response", + "deprecated": false, + "deprecationMessage": "", + "line": 50, + "type": "any", + "decorators": [] + } + ], + "outputsClass": [ + { + "name": "deleteButtonClicked", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 44, + "type": "any" + }, + { + "name": "submitButtonClicked", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 51, + "type": "any" + }, + { + "name": "undoDeleteButtonClicked", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 52, + "type": "any" + } + ], + "propertiesClass": [ + { + "name": "expanded", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 45, + "modifierKind": [ + 124 + ] + }, + { + "name": "repliesToShow", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 49, + "modifierKind": [ + 124 + ] + }, + { + "name": "urlMatcher", + "defaultValue": "/((http:\\/\\/www\\.|https:\\/\\/www\\.|http:\\/\\/|https:\\/\\/)?[a-z0-9]+([\\-\\.]{1}[a-z0-9]+)*\\.[a-z]{2,5}(:[0-9]{1,5})?(\\/.*)?)/g", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 53, + "modifierKind": [ + 123 + ] + } + ], + "methodsClass": [ + { + "name": "adjustClientSaveTime", + "args": [ + { + "name": "time", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 107, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "time", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "delete", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 128, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "expandAndShowAllReplies", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 163, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "getAvatarColorForWorkgroupId", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 103, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "hasAnyReply", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 149, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "injectLinks", + "args": [ + { + "name": "response", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 88, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "response", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "injectLinksIntoReplies", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 80, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "injectLinksIntoResponse", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 74, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "isEnterKeyEvent", + "args": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 120, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnChanges", + "args": [ + { + "name": "changes", + "type": "SimpleChanges", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 66, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "changes", + "type": "SimpleChanges", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 58, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "removeLastChar", + "args": [ + { + "name": "responseText", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 124, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "responseText", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "replyEntered", + "args": [ + { + "name": "$event", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 111, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "$event", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "showAllReplies", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 159, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "showLastReply", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 153, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "toggleExpanded", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 140, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "undoDelete", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 134, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CdkTextareaAutosize" + }, + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatCardModule", + "type": "module" + }, + { + "name": "MatDividerModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + }, + { + "name": "RouterModule", + "type": "module" + }, + { + "name": "SaveTimeMessageComponent", + "type": "component" + }, + { + "name": "StudentComponentModule", + "type": "component" + }, + { + "name": "TextFieldModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import {\n Component,\n EventEmitter,\n Input,\n Output,\n SimpleChanges,\n ViewEncapsulation\n} from '@angular/core';\nimport { ConfigService } from '../../../services/configService';\nimport { getAvatarColorForWorkgroupId } from '../../../common/workgroup/workgroup';\nimport { CdkTextareaAutosize, TextFieldModule } from '@angular/cdk/text-field';\nimport { StudentComponentModule } from '../../../../../app/student/student.component.module';\nimport { SaveTimeMessageComponent } from '../../../common/save-time-message/save-time-message.component';\nimport { RouterModule } from '@angular/router';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatButtonModule } from '@angular/material/button';\nimport { FormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@Component({\n encapsulation: ViewEncapsulation.None,\n imports: [\n CdkTextareaAutosize,\n CommonModule,\n FormsModule,\n MatButtonModule,\n MatCardModule,\n MatDividerModule,\n MatIconModule,\n MatTooltipModule,\n RouterModule,\n SaveTimeMessageComponent,\n StudentComponentModule,\n TextFieldModule\n ],\n selector: 'class-response',\n styleUrl: 'class-response.component.scss',\n templateUrl: 'class-response.component.html'\n})\nexport class ClassResponse {\n @Output() deleteButtonClicked: any = new EventEmitter();\n protected expanded: boolean = false;\n @Input() isDisabled: boolean;\n @Input() mode: any;\n @Input() numReplies: number;\n protected repliesToShow: any[] = [];\n @Input() response: any;\n @Output() submitButtonClicked: any = new EventEmitter();\n @Output() undoDeleteButtonClicked: any = new EventEmitter();\n private urlMatcher: any =\n /((http:\\/\\/www\\.|https:\\/\\/www\\.|http:\\/\\/|https:\\/\\/)?[a-z0-9]+([\\-\\.]{1}[a-z0-9]+)*\\.[a-z]{2,5}(:[0-9]{1,5})?(\\/.*)?)/g;\n\n constructor(private configService: ConfigService) {}\n\n ngOnInit(): void {\n this.injectLinksIntoResponse();\n this.injectLinksIntoReplies();\n if (this.hasAnyReply()) {\n this.showLastReply();\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.numReplies != null && !changes.numReplies.isFirstChange()) {\n this.expanded = true;\n this.injectLinksIntoReplies();\n this.showAllReplies();\n }\n }\n\n private injectLinksIntoResponse(): void {\n this.response.studentData.responseTextHTML = this.injectLinks(\n this.response.studentData.response\n );\n }\n\n private injectLinksIntoReplies(): void {\n this.response.replies.forEach((replyComponentState: any): void => {\n replyComponentState.studentData.responseHTML = this.injectLinks(\n replyComponentState.studentData.response\n );\n });\n }\n\n private injectLinks(response: string): string {\n return response.replace(this.urlMatcher, (match) => {\n let matchUrl = match;\n if (!match.startsWith('http')) {\n /*\n * The url does not begin with http so we will add // to the beginning of it so that the\n * browser treats the url as an absolute link and not a relative link. The browser will also\n * use the same protocol that the current page is loaded with (http or https).\n */\n matchUrl = '//' + match;\n }\n return `${match}`;\n });\n }\n\n protected getAvatarColorForWorkgroupId(workgroupId: number): string {\n return getAvatarColorForWorkgroupId(workgroupId);\n }\n\n protected adjustClientSaveTime(time: any): number {\n return this.configService.convertToClientTimestamp(time);\n }\n\n protected replyEntered($event: any): void {\n if (this.isEnterKeyEvent($event)) {\n $event.preventDefault();\n this.response.replyText = this.removeLastChar(this.response.replyText);\n this.expandAndShowAllReplies();\n this.submitButtonClicked.emit(this.response);\n }\n }\n\n protected isEnterKeyEvent(event: any): boolean {\n return event.keyCode == 13 && !event.shiftKey && this.response.replyText;\n }\n\n private removeLastChar(responseText: string): string {\n return responseText.substring(0, responseText.length - 1);\n }\n\n protected delete(componentState: any): void {\n if (confirm($localize`Are you sure you want to delete this post?`)) {\n this.deleteButtonClicked.emit(componentState);\n }\n }\n\n protected undoDelete(componentState: any): void {\n if (confirm($localize`Are you sure you want to show this post?`)) {\n this.undoDeleteButtonClicked.emit(componentState);\n }\n }\n\n protected toggleExpanded(): void {\n this.expanded = !this.expanded;\n if (this.expanded) {\n this.showAllReplies();\n } else {\n this.showLastReply();\n }\n }\n\n private hasAnyReply(): boolean {\n return this.response.replies.length > 0;\n }\n\n private showLastReply(): void {\n if (this.response.replies.length > 0) {\n this.repliesToShow = [this.response.replies[this.response.replies.length - 1]];\n }\n }\n\n private showAllReplies(): void {\n this.repliesToShow = this.response.replies;\n }\n\n private expandAndShowAllReplies(): void {\n this.expanded = true;\n this.showAllReplies();\n }\n}\n", + "styleUrl": "class-response.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 54, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "\n
\n
\n \n account_circle\n \n
\n
{{ response.usernames }}
\n
\n \n
\n
\n
\n
\n @for (attachment of response.studentData.attachments; track attachment) {\n \"Post\n }\n @if (mode === 'grading' || mode === 'gradingRevision') {\n
\n
\n @if (\n response.latestInappropriateFlagAnnotation == null ||\n response.latestInappropriateFlagAnnotation.data == null ||\n response.latestInappropriateFlagAnnotation.data.action != 'Delete'\n ) {\n \n Delete\n \n }\n @if (\n response.latestInappropriateFlagAnnotation != null &&\n response.latestInappropriateFlagAnnotation.data.action === 'Delete'\n ) {\n \n Undo Delete\n \n }\n
\n }\n
\n @if (response.replies.length > 0) {\n
\n @if (mode === 'student' || response.replies.length > 0) {\n \n }\n
\n @if (response.replies.length === 1) {\n Comments ({{ response.replies.length }}) \n }\n @if (response.replies.length > 1) {\n \n Comments ({{ response.replies.length }})\n {{ expanded ? 'expand_less' : 'expand_more' }}\n \n }\n
\n
\n @for (reply of repliesToShow; track reply) {\n
\n
\n \n account_circle\n \n
\n {{ reply.usernames }}\n \n
\n
\n
\n @if (mode === 'grading' || mode === 'gradingRevision') {\n
\n @if (\n (response.latestInappropriateFlagAnnotation == null ||\n response.latestInappropriateFlagAnnotation.data.action !== 'Delete') &&\n (reply.latestInappropriateFlagAnnotation == null ||\n reply.latestInappropriateFlagAnnotation.data.action != 'Delete')\n ) {\n \n Delete\n \n }\n @if (\n response.latestInappropriateFlagAnnotation != null &&\n response.latestInappropriateFlagAnnotation.data.action === 'Delete'\n ) {\n \n Parent Deleted\n \n }\n @if (\n reply.latestInappropriateFlagAnnotation != null &&\n reply.latestInappropriateFlagAnnotation.data.action === 'Delete'\n ) {\n \n Undo Delete\n \n }\n
\n }\n
\n }\n
\n
\n }\n \n @if ((mode === 'student' || mode === 'preview') && !isDisabled) {\n
\n \n \n
\n }\n
\n" + }, + { + "name": "ClassroomMonitorComponent", + "id": "component-ClassroomMonitorComponent-57484630a3c9f231e447eceeb91b98253a3c4685e79ad90cfeb98bd8bed95de58502f5b259d196516cb65d93220e569ac142174414e63f8b5857cdb446379b50", + "file": "src/assets/wise5/classroomMonitor/classroom-monitor.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "classroom-monitor", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./classroom-monitor.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "logoPath", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 41, + "modifierKind": [ + 124 + ] + }, + { + "name": "menuOpen", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 42, + "modifierKind": [ + 124 + ] + }, + { + "name": "notebookConfig", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 43, + "modifierKind": [ + 124 + ] + }, + { + "name": "notifications", + "deprecated": false, + "deprecationMessage": "", + "type": "Notification[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 44, + "modifierKind": [ + 124 + ] + }, + { + "name": "projectId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 45, + "modifierKind": [ + 124 + ] + }, + { + "name": "projectTitle", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 46, + "modifierKind": [ + 124 + ] + }, + { + "name": "reportEnabled", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 47, + "modifierKind": [ + 124 + ] + }, + { + "name": "reportFullscreen", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 48, + "modifierKind": [ + 124 + ] + }, + { + "name": "runCode", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 49, + "modifierKind": [ + 124 + ] + }, + { + "name": "runId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 50, + "modifierKind": [ + 124 + ] + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 51, + "modifierKind": [ + 123 + ] + }, + { + "name": "views", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 52, + "modifierKind": [ + 124 + ] + }, + { + "name": "workgroupId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 53, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "initializeNotebook", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 89, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "initializeViews", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 97, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "logOut", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 196, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 84, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 69, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "processUI", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 188, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "renewSession", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 210, + "deprecated": false, + "deprecationMessage": "", + "decorators": [ + { + "name": "HostListener", + "stringifiedArguments": "'document:mousemove'" + } + ], + "modifierKind": [ + 171, + 124 + ] + }, + { + "name": "subscribeToNotebookFullScreen", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 172, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "subscribeToRouterEvents", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 180, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "subscribeToSessionWarning", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 150, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "toggleMenu", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 192, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "unPauseAllPeriods", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 201, + "deprecated": false, + "deprecationMessage": "", + "decorators": [ + { + "name": "HostListener", + "stringifiedArguments": "'window:beforeunload'" + } + ], + "modifierKind": [ + 171, + 124 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [ + { + "name": "document:mousemove", + "args": [], + "argsDecorator": [], + "deprecated": false, + "deprecationMessage": "", + "line": 210 + }, + { + "name": "window:beforeunload", + "args": [], + "argsDecorator": [], + "deprecated": false, + "deprecationMessage": "", + "line": 201 + } + ], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "MainMenuComponent", + "type": "component" + }, + { + "name": "MatDialogModule", + "type": "module" + }, + { + "name": "MatSidenavModule", + "type": "module" + }, + { + "name": "NotebookReportComponent", + "type": "component" + }, + { + "name": "RouterModule", + "type": "module" + }, + { + "name": "SideMenuComponent", + "type": "component" + }, + { + "name": "ToolBarComponent", + "type": "component" + }, + { + "name": "TopBarComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, HostListener, OnInit } from '@angular/core';\nimport { MatDialog, MatDialogModule } from '@angular/material/dialog';\nimport { Subscription, filter } from 'rxjs';\nimport { Router, NavigationEnd, RouterModule } from '@angular/router';\nimport { Notification } from '../../../app/domain/notification';\nimport { DialogWithConfirmComponent } from '../directives/dialog-with-confirm/dialog-with-confirm.component';\nimport { ConfigService } from '../services/configService';\nimport { NodeService } from '../services/nodeService';\nimport { NotebookService } from '../services/notebookService';\nimport { NotificationService } from '../services/notificationService';\nimport { SessionService } from '../services/sessionService';\nimport { TeacherDataService } from '../services/teacherDataService';\nimport { TeacherProjectService } from '../services/teacherProjectService';\nimport { TeacherPauseScreenService } from '../services/teacherPauseScreenService';\nimport { RunStatusService } from '../services/runStatusService';\nimport { CommonModule } from '@angular/common';\nimport { TopBarComponent } from './classroomMonitorComponents/shared/top-bar/top-bar.component';\nimport { ToolBarComponent } from './classroomMonitorComponents/shared/tool-bar/tool-bar.component';\nimport { NotebookReportComponent } from '../../../app/notebook/notebook-report/notebook-report.component';\nimport { SideMenuComponent } from '../common/side-menu/side-menu.component';\nimport { MatSidenavModule } from '@angular/material/sidenav';\nimport { MainMenuComponent } from '../common/main-menu/main-menu.component';\n\n@Component({\n selector: 'classroom-monitor',\n imports: [\n CommonModule,\n MainMenuComponent,\n MatDialogModule,\n MatSidenavModule,\n NotebookReportComponent,\n RouterModule,\n SideMenuComponent,\n ToolBarComponent,\n TopBarComponent\n ],\n styleUrl: './classroom-monitor.component.scss',\n templateUrl: './classroom-monitor.component.html'\n})\nexport class ClassroomMonitorComponent implements OnInit {\n protected logoPath: string;\n protected menuOpen: boolean;\n protected notebookConfig: any;\n protected notifications: Notification[];\n protected projectId: number;\n protected projectTitle: string;\n protected reportEnabled: boolean;\n protected reportFullscreen: boolean;\n protected runCode: string;\n protected runId: number;\n private subscriptions: Subscription = new Subscription();\n protected views: any[];\n protected workgroupId: number;\n\n constructor(\n private configService: ConfigService,\n private dataService: TeacherDataService,\n private dialog: MatDialog,\n private nodeService: NodeService,\n private notebookService: NotebookService,\n private notificationService: NotificationService,\n private pauseScreenService: TeacherPauseScreenService,\n private projectService: TeacherProjectService,\n private router: Router,\n private runStatusService: RunStatusService,\n private sessionService: SessionService\n ) {}\n\n ngOnInit(): void {\n this.logoPath = this.projectService.getThemePath() + '/images/WISE-logo-ffffff.svg';\n this.notifications = this.notificationService.notifications;\n this.projectId = this.configService.getProjectId();\n this.projectTitle = this.projectService.getProjectTitle();\n this.runCode = this.configService.getRunCode();\n this.runId = this.configService.getRunId();\n this.initializeNotebook();\n this.initializeViews();\n this.subscribeToSessionWarning();\n this.subscribeToNotebookFullScreen();\n this.subscribeToRouterEvents();\n this.processUI();\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n this.dataService.clearCurrentPeriod();\n }\n\n private initializeNotebook(): void {\n if (this.notebookService.isNotebookEnabled('teacherNotebook')) {\n this.notebookConfig = this.notebookService.getTeacherNotebookConfig();\n this.reportEnabled =\n this.notebookConfig.enabled && this.notebookConfig.itemTypes.report.enabled;\n }\n }\n\n private initializeViews(): void {\n this.views = [\n {\n route: ['milestones'],\n name: $localize`Milestones`,\n icon: 'flag',\n type: 'primary',\n active: this.projectService.getAchievements().isEnabled\n },\n {\n route: ['.'],\n name: $localize`Grade by Step`,\n icon: 'view_list',\n type: 'primary',\n action: () => {\n if (this.dataService.getCurrentNode() !== this.projectService.rootNode) {\n // we are not showing the root project view so go to the parent of the current node\n this.nodeService.closeNode();\n }\n },\n active: true\n },\n {\n route: ['team'],\n name: $localize`Grade by Student`,\n icon: 'people',\n type: 'primary',\n active: true\n },\n {\n route: ['manage-students'],\n name: $localize`Manage Students`,\n icon: 'face',\n type: 'primary',\n active: true\n },\n {\n route: ['notebook'],\n name: $localize`Student Notebooks`,\n icon: 'chrome_reader_mode',\n type: 'primary',\n active: this.notebookService.isNotebookEnabled()\n },\n {\n route: ['export'],\n name: $localize`Data Export`,\n icon: 'file_download',\n type: 'secondary',\n active: true\n }\n ];\n }\n\n private subscribeToSessionWarning(): void {\n this.subscriptions.add(\n this.sessionService.showSessionWarning$.subscribe(() => {\n this.dialog\n .open(DialogWithConfirmComponent, {\n data: {\n content: $localize`You have been inactive for a long time. Do you want to stay logged in?`,\n title: $localize`Session Timeout`\n }\n })\n .afterClosed()\n .subscribe((renewSession: boolean) => {\n if (renewSession) {\n this.sessionService.closeWarningAndRenewSession();\n } else {\n this.logOut();\n }\n });\n })\n );\n }\n\n private subscribeToNotebookFullScreen(): void {\n this.subscriptions.add(\n this.notebookService.reportFullScreen$.subscribe((full: boolean) => {\n this.reportFullscreen = full;\n })\n );\n }\n\n private subscribeToRouterEvents(): void {\n this.subscriptions.add(\n this.router.events.pipe(filter((event) => event instanceof NavigationEnd)).subscribe(() => {\n this.processUI();\n })\n );\n }\n\n private processUI(): void {\n this.menuOpen = false;\n }\n\n protected toggleMenu(): void {\n this.menuOpen = !this.menuOpen;\n }\n\n private logOut(): void {\n this.sessionService.logOut();\n }\n\n @HostListener('window:beforeunload')\n protected unPauseAllPeriods(): void {\n this.runStatusService.getRunStatus().periods.forEach((period) => {\n if (period.periodId !== -1 && period.paused) {\n this.pauseScreenService.pauseScreensChanged(period.periodId, false);\n }\n });\n }\n\n @HostListener('document:mousemove')\n protected renewSession(): void {\n this.sessionService.mouseMoved();\n }\n}\n", + "styleUrl": "./classroom-monitor.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "notebookService", + "type": "NotebookService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "notificationService", + "type": "NotificationService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "pauseScreenService", + "type": "TeacherPauseScreenService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "runStatusService", + "type": "RunStatusService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "sessionService", + "type": "SessionService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 53, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "notebookService", + "type": "NotebookService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "notificationService", + "type": "NotificationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "pauseScreenService", + "type": "TeacherPauseScreenService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "runStatusService", + "type": "RunStatusService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "sessionService", + "type": "SessionService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "\n\n
\n \n \n \n \n \n \n \n
\n \n
\n \n @if (reportEnabled) {\n \n }\n
\n
\n
\n" + }, + { + "name": "ColorChooserComponent", + "id": "component-ColorChooserComponent-e00cad1d888430eded78f28185ae4a821b94aaebe4460f309b1ff620f4397e99f8d684c0574e1e2babfcae592415cca1a7b3ac0597c6e189e0fa904a3fe32c51", + "file": "src/app/teacher/color-chooser/color-chooser.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "color-chooser", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./color-chooser.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "chosenColor", + "deprecated": false, + "deprecationMessage": "", + "line": 12, + "type": "string", + "decorators": [] + } + ], + "outputsClass": [ + { + "name": "chooseColorEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 11, + "type": "EventEmitter" + } + ], + "propertiesClass": [ + { + "name": "colors", + "defaultValue": "[\n '#66BB6A',\n '#009688',\n '#00B0FF',\n '#1565C0',\n '#673AB7',\n '#AB47BC',\n '#E91E63',\n '#D50000',\n '#F57C00',\n '#FBC02D',\n '#795548',\n '#757575'\n ]", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatChipsModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { MatChipsModule } from '@angular/material/chips';\n\n@Component({\n imports: [MatChipsModule],\n selector: 'color-chooser',\n styleUrl: './color-chooser.component.scss',\n templateUrl: './color-chooser.component.html'\n})\nexport class ColorChooserComponent {\n @Output() chooseColorEvent: EventEmitter = new EventEmitter();\n @Input() chosenColor: string;\n protected colors: string[] = [\n '#66BB6A',\n '#009688',\n '#00B0FF',\n '#1565C0',\n '#673AB7',\n '#AB47BC',\n '#E91E63',\n '#D50000',\n '#F57C00',\n '#FBC02D',\n '#795548',\n '#757575'\n ];\n}\n", + "styleUrl": "./color-chooser.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [], + "templateData": "\n @for (color of colors; track color) {\n \n
\n \n }\n
\n" + }, + { + "name": "CommunityDetailsComponent", + "id": "component-CommunityDetailsComponent-4f02b886e7da7a1d0b61471f6da82fbec302838dbac5be1de35a73fcdac96ffaea03fbeb71abb15e41e40a6324e0ee04b84ff316e70a1539d26466df28c3357f", + "file": "src/app/modules/library/public-unit-type-selector/public-unit-type-selector.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./community-library-details.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "dialogRef", + "deprecated": false, + "deprecationMessage": "", + "type": "MatDialogRef", + "indexKey": "", + "optional": false, + "description": "", + "line": 59, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "DetailsComponent" + } + } + ], + "methodsClass": [ + { + "name": "close", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 61, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "DetailsComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatDialogTitle" + }, + { + "name": "MatDialogContent" + }, + { + "name": "MatDialogActions" + }, + { + "name": "RouterLink" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Directive, EventEmitter, Output } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { ProjectFilterValues } from '../../../domain/projectFilterValues';\nimport { MatButtonModule } from '@angular/material/button';\nimport {\n MatDialogTitle,\n MatDialogContent,\n MatDialogActions,\n MatDialogRef,\n MatDialog\n} from '@angular/material/dialog';\nimport { RouterLink } from '@angular/router';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n imports: [FormsModule, MatCheckboxModule, MatIconModule],\n selector: 'public-unit-type-selector',\n styles: [\n `\n a {\n cursor: pointer;\n }\n `\n ],\n templateUrl: './public-unit-type-selector.component.html'\n})\nexport class PublicUnitTypeSelectorComponent {\n protected communityBuilt: boolean;\n @Output() publicUnitTypeUpdatedEvent: EventEmitter =\n new EventEmitter();\n protected wiseTested: boolean;\n\n constructor(\n private dialog: MatDialog,\n private filterValues: ProjectFilterValues\n ) {}\n\n protected updatePublicUnitType(): void {\n this.filterValues.publicUnitTypeValue = [];\n if (this.wiseTested) {\n this.filterValues.publicUnitTypeValue.push('wiseTested');\n }\n if (this.communityBuilt) {\n this.filterValues.publicUnitTypeValue.push('communityBuilt');\n }\n this.publicUnitTypeUpdatedEvent.emit();\n }\n\n protected showInfo(type: 'community' | 'official'): void {\n this.dialog.open(type === 'community' ? CommunityDetailsComponent : OfficialDetailsComponent, {\n panelClass: 'dialog-sm'\n });\n }\n}\n\n@Directive()\nabstract class DetailsComponent {\n constructor(public dialogRef: MatDialogRef) {}\n\n protected close(): void {\n this.dialogRef.close();\n }\n}\n\n@Component({\n imports: [MatButtonModule, MatDialogTitle, MatDialogContent, MatDialogActions, RouterLink],\n templateUrl: './official-library-details.html'\n})\nclass OfficialDetailsComponent extends DetailsComponent {}\n\n@Component({\n imports: [MatButtonModule, MatDialogTitle, MatDialogContent, MatDialogActions, RouterLink],\n templateUrl: './community-library-details.html'\n})\nclass CommunityDetailsComponent extends DetailsComponent {}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [ + "DetailsComponent" + ], + "templateData": "

Community Built

\n
\n
\n

\n \"Community Built\" units are designed and contributed by WISE community members. Want to\n publicly share your custom unit? Select the Publish option in the unit details pop-up. Or open\n your unit in the Authoring Tool, go to Unit Info, and tap Publish!\n

\n

\n *Please note: While WISE staff have reviewed these units, we cannot specifically vouch for\n their effectiveness or quality. Please examine the units carefully before using in your\n classrooms. Thanks!\n

\n
\n
\n
\n \n
\n" + }, + { + "name": "ComponentAnnotationsComponent", + "id": "component-ComponentAnnotationsComponent-a4db3293b9b77d42aaa27ba9e59e97246719c6215755ac970d0856256326db922982cf635877b993cd5f8e07bc4a2bf736f9882e42a210327b81e5f75c7308b3", + "file": "src/assets/wise5/directives/componentAnnotations/component-annotations.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "component-annotations", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "component-annotations.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "annotations", + "deprecated": false, + "deprecationMessage": "", + "line": 18, + "type": "any", + "decorators": [] + }, + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "line": 20, + "type": "string", + "decorators": [] + }, + { + "name": "maxScore", + "deprecated": false, + "deprecationMessage": "", + "line": 24, + "type": "string", + "decorators": [] + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 26, + "type": "string", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "comment", + "deprecated": false, + "deprecationMessage": "", + "type": "SafeHtml", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "modifierKind": [ + 124 + ] + }, + { + "name": "icon", + "defaultValue": "'person'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 21, + "modifierKind": [ + 124 + ] + }, + { + "name": "label", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 22, + "modifierKind": [ + 124 + ] + }, + { + "name": "latestAnnotationTime", + "defaultValue": "null", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 23, + "modifierKind": [ + 124 + ] + }, + { + "name": "maxScoreDisplay", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 25, + "modifierKind": [ + 124 + ] + }, + { + "name": "showComment", + "defaultValue": "true", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 27, + "modifierKind": [ + 124 + ] + }, + { + "name": "showScore", + "defaultValue": "true", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 28, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "getCommentHtml", + "args": [ + { + "name": "commentAnnotation", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "SafeHtml", + "typeParameters": [], + "line": 100, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "commentAnnotation", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getComponentId", + "args": [ + { + "name": "annotations", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 72, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "annotations", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getLatestAnnotation", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 104, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "getLatestAnnotationTime", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 131, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "getLatestSaveTime", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 153, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "getLatestVisitTime", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 139, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "getNodeId", + "args": [ + { + "name": "annotations", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 66, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "annotations", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getSaveTime", + "args": [ + { + "name": "annotation", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 118, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "annotation", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "hasCommentAnnotation", + "args": [ + { + "name": "annotations", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 92, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "annotations", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "hasScoreAnnotation", + "args": [ + { + "name": "annotations", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 96, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "annotations", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isNewAnnotation", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 165, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "isShowComment", + "args": [ + { + "name": "annotations", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 85, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "annotations", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isShowScore", + "args": [ + { + "name": "annotations", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 78, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "annotations", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngAfterViewInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 42, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnChanges", + "args": [ + { + "name": "changes", + "type": "SimpleChanges", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 46, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "changes", + "type": "SimpleChanges", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 37, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "processAnnotations", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 52, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "setLabelAndIcon", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 179, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatCardModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "SaveTimeMessageComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input, SimpleChanges } from '@angular/core';\nimport { SafeHtml } from '@angular/platform-browser';\nimport { WiseLinkService } from '../../../../app/services/wiseLinkService';\nimport { ConfigService } from '../../services/configService';\nimport { StudentDataService } from '../../services/studentDataService';\nimport { VLEProjectService } from '../../vle/vleProjectService';\nimport { SaveTimeMessageComponent } from '../../common/save-time-message/save-time-message.component';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n imports: [MatCardModule, MatIconModule, SaveTimeMessageComponent],\n selector: 'component-annotations',\n styleUrl: 'component-annotations.component.scss',\n templateUrl: 'component-annotations.component.html'\n})\nexport class ComponentAnnotationsComponent {\n @Input() annotations: any;\n protected comment: SafeHtml;\n @Input() componentId: string;\n protected icon: string = 'person';\n protected label: string;\n protected latestAnnotationTime: any = null;\n @Input() maxScore: string;\n protected maxScoreDisplay: string;\n @Input() nodeId: string;\n protected showComment: boolean = true;\n protected showScore: boolean = true;\n\n constructor(\n private configService: ConfigService,\n private dataService: StudentDataService,\n private projectService: VLEProjectService,\n private wiseLinkService: WiseLinkService\n ) {}\n\n ngOnInit(): void {\n this.maxScoreDisplay = parseInt(this.maxScore) > 0 ? '/' + this.maxScore : '';\n this.processAnnotations();\n }\n\n ngAfterViewInit(): void {\n this.processAnnotations();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!changes.annotations.isFirstChange()) {\n this.processAnnotations();\n }\n }\n\n private processAnnotations(): void {\n if (this.annotations.comment || this.annotations.score) {\n this.nodeId = this.getNodeId(this.annotations);\n this.componentId = this.getComponentId(this.annotations);\n this.showScore = this.isShowScore(this.annotations);\n this.showComment = this.isShowComment(this.annotations);\n if (this.showComment) {\n this.comment = this.getCommentHtml(this.annotations.comment);\n }\n this.setLabelAndIcon();\n }\n this.latestAnnotationTime = this.getLatestAnnotationTime();\n }\n\n private getNodeId(annotations: any): string {\n return this.hasCommentAnnotation(annotations)\n ? annotations.comment.nodeId\n : annotations.score.nodeId;\n }\n\n private getComponentId(annotations: any): string {\n return this.hasCommentAnnotation(annotations)\n ? annotations.comment.componentId\n : annotations.score.componentId;\n }\n\n private isShowScore(annotations: any): boolean {\n return (\n this.hasScoreAnnotation(annotations) &&\n this.projectService.displayAnnotation(annotations.score)\n );\n }\n\n private isShowComment(annotations: any): boolean {\n return (\n this.hasCommentAnnotation(annotations) &&\n this.projectService.displayAnnotation(this.annotations.comment)\n );\n }\n\n private hasCommentAnnotation(annotations: any): boolean {\n return annotations.comment != null;\n }\n\n private hasScoreAnnotation(annotations: any): boolean {\n return annotations.score != null;\n }\n\n private getCommentHtml(commentAnnotation: any): SafeHtml {\n return this.wiseLinkService.generateHtmlWithWiseLink(commentAnnotation.data.value);\n }\n\n private getLatestAnnotation(): any {\n let latest = null;\n if (this.annotations.comment || this.annotations.score) {\n const commentSaveTime = this.getSaveTime(this.annotations.comment);\n const scoreSaveTime = this.getSaveTime(this.annotations.score);\n if (commentSaveTime >= scoreSaveTime) {\n latest = this.annotations.comment;\n } else if (scoreSaveTime > commentSaveTime) {\n latest = this.annotations.score;\n }\n }\n return latest;\n }\n\n private getSaveTime(annotation: any): number {\n let saveTime = null;\n if (annotation != null) {\n if (annotation.serverSaveTime != null) {\n saveTime = annotation.serverSaveTime;\n }\n if (annotation.clientSaveTime != null) {\n saveTime = annotation.clientSaveTime;\n }\n }\n return saveTime;\n }\n\n private getLatestAnnotationTime(): any {\n const latest = this.getLatestAnnotation();\n if (latest) {\n return this.configService.convertToClientTimestamp(this.getSaveTime(latest));\n }\n return null;\n }\n\n private getLatestVisitTime(): any {\n let nodeEvents = this.dataService.getEventsByNodeId(this.nodeId);\n let n = nodeEvents.length - 1;\n let visitTime = null;\n for (let i = n; i > 0; i--) {\n let event = nodeEvents[i];\n if (event.event === 'nodeExited') {\n visitTime = this.configService.convertToClientTimestamp(event.serverSaveTime);\n break;\n }\n }\n return visitTime;\n }\n\n private getLatestSaveTime(): any {\n const latestState = this.dataService.getLatestComponentStateByNodeIdAndComponentId(\n this.nodeId,\n this.componentId\n );\n let saveTime = null;\n if (latestState) {\n saveTime = this.configService.convertToClientTimestamp(this.getSaveTime(latestState));\n }\n return saveTime;\n }\n\n protected isNewAnnotation(): boolean {\n let latestVisitTime = this.getLatestVisitTime();\n let latestSaveTime = this.getLatestSaveTime();\n let latestAnnotationTime = this.getLatestAnnotationTime();\n let isNew = true;\n if (latestVisitTime && latestVisitTime > latestAnnotationTime) {\n isNew = false;\n }\n if (latestSaveTime && latestSaveTime > latestAnnotationTime) {\n isNew = false;\n }\n return isNew;\n }\n\n private setLabelAndIcon(): void {\n const latest = this.getLatestAnnotation();\n if (latest) {\n if (latest.type === 'autoComment' || latest.type === 'autoScore') {\n this.label = $localize`Feedback`;\n this.icon = 'message';\n } else {\n this.label = $localize`Teacher Feedback`;\n this.icon = 'person';\n }\n }\n }\n}\n", + "styleUrl": "component-annotations.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "VLEProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "wiseLinkService", + "type": "WiseLinkService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 28, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "VLEProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "wiseLinkService", + "type": "WiseLinkService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "@if ((showScore && annotations.score) || (showComment && annotations.comment)) {\n \n \n \n {{ icon }}\n \n
\n {{ label }}\n @if (isNewAnnotation()) {\n New\n }\n
\n
\n \n @if (showComment) {\n
\n }\n @if (annotations.comment) {\n
\n }\n
\n @if (showScore && annotations.score) {\n Score: {{ annotations.score.data.value }}{{ maxScoreDisplay }}\n }\n \n \n
\n
\n
\n}\n" + }, + { + "name": "ComponentAuthoringComponent", + "id": "component-ComponentAuthoringComponent-7994637772ddd9affa1466f2cf11def75d89f5bbdbb01835269c13b0fbefe6d6405b9c9e940d9c3e0a9e7109feebcc23432caa059bb0877fcca6223be8b3a328", + "file": "src/assets/wise5/authoringTool/components/component-authoring.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "component-authoring", + "styleUrls": [], + "styles": [ + "\n preview-component {\n display: block;\n position: relative;\n cursor: pointer;\n }\n preview-component:hover {\n outline: 3px dashed #aaaaaa;\n outline-offset: 8px;\n }\n preview-component:after {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n }\n " + ], + "template": "@if (editing) { \n } @else {\n \n }", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "line": 51, + "type": "ComponentContent", + "decorators": [] + }, + { + "name": "editing", + "deprecated": false, + "deprecationMessage": "", + "line": 52, + "type": "boolean", + "decorators": [] + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 54, + "type": "string", + "decorators": [] + } + ], + "outputsClass": [ + { + "name": "editComponentEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 53, + "type": "EventEmitter" + } + ], + "propertiesClass": [ + { + "name": "component", + "deprecated": false, + "deprecationMessage": "", + "type": "WISEComponent", + "indexKey": "", + "optional": false, + "description": "", + "line": 50, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "ngOnChanges", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 58, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "PreviewComponentComponent", + "type": "component" + }, + { + "name": "EditComponentComponent", + "type": "component" + }, + { + "name": "MatTooltipModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { ComponentContent } from '../../common/ComponentContent';\nimport { PreviewComponentComponent } from './preview-component/preview-component.component';\nimport { EditComponentComponent } from './edit-component/edit-component.component';\nimport { ComponentFactory } from '../../common/ComponentFactory';\nimport { Component as WISEComponent } from '../../common/Component';\nimport { TeacherProjectService } from '../../services/teacherProjectService';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@Component({\n imports: [PreviewComponentComponent, EditComponentComponent, MatTooltipModule],\n selector: 'component-authoring',\n styles: [\n `\n preview-component {\n display: block;\n position: relative;\n cursor: pointer;\n }\n preview-component:hover {\n outline: 3px dashed #aaaaaa;\n outline-offset: 8px;\n }\n preview-component:after {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n }\n `\n ],\n template: `@if (editing) {\n \n } @else {\n \n }`\n})\nexport class ComponentAuthoringComponent {\n protected component: WISEComponent;\n @Input() componentContent: ComponentContent;\n @Input() editing: boolean;\n @Output() editComponentEvent: EventEmitter = new EventEmitter();\n @Input() nodeId: string;\n\n constructor(private projectService: TeacherProjectService) {}\n\n ngOnChanges(): void {\n this.component = new ComponentFactory().getComponent(\n this.projectService.injectAssetPaths(this.componentContent),\n this.nodeId\n );\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "\n preview-component {\n display: block;\n position: relative;\n cursor: pointer;\n }\n preview-component:hover {\n outline: 3px dashed #aaaaaa;\n outline-offset: 8px;\n }\n preview-component:after {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n }\n \n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 54, + "jsdoctags": [ + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [] + }, + { + "name": "ComponentCompletionComponent", + "id": "component-ComponentCompletionComponent-9b3b76d7c18dc83de49fc4b3d0a3789362913358fff05d23693db09efe5bd7d7e30aff5f847db80f34cbd3d86b8fcc3aeacf682d11a91e58c901c0a127909634", + "file": "src/assets/wise5/classroomMonitor/classroomMonitorComponents/component-completion/component-completion.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "component-completion", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "component-completion.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "component", + "deprecated": false, + "deprecationMessage": "", + "line": 17, + "type": "any", + "decorators": [] + }, + { + "name": "node", + "deprecated": false, + "deprecationMessage": "", + "line": 18, + "type": "Node", + "decorators": [] + }, + { + "name": "periodId", + "deprecated": false, + "deprecationMessage": "", + "line": 20, + "type": "number", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "completion", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "modifierKind": [ + 124 + ] + }, + { + "name": "numWorkgroupsCompleted", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "modifierKind": [ + 124 + ] + }, + { + "name": "workgroups", + "deprecated": false, + "deprecationMessage": "", + "type": "Map", + "indexKey": "", + "optional": false, + "description": "", + "line": 21, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "isCompleted", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 47, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnChanges", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 30, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatProgressBarModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input } from '@angular/core';\nimport { Node } from '../../../common/Node';\nimport { WorkgroupService } from '../../../../../app/services/workgroup.service';\nimport { TeacherDataService } from '../../../services/teacherDataService';\nimport { ComponentServiceLookupService } from '../../../services/componentServiceLookupService';\nimport { ClassroomStatusService } from '../../../services/classroomStatusService';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@Component({\n imports: [MatProgressBarModule, MatTooltipModule],\n selector: 'component-completion',\n templateUrl: 'component-completion.component.html'\n})\nexport class ComponentCompletionComponent {\n protected completion: number;\n @Input() component: any;\n @Input() node: Node;\n protected numWorkgroupsCompleted: number;\n @Input() periodId: number;\n protected workgroups: Map;\n\n constructor(\n private componentServiceLookupService: ComponentServiceLookupService,\n private dataService: TeacherDataService,\n private statusService: ClassroomStatusService,\n private workgroupService: WorkgroupService\n ) {}\n\n ngOnChanges(): void {\n if (this.component && this.node) {\n this.workgroups = new Map(\n Array.from(this.workgroupService.getWorkgroupsInPeriod(this.periodId)).filter(\n ([workgroupId]) => this.statusService.hasStudentStatus(workgroupId)\n )\n );\n this.numWorkgroupsCompleted = Array.from(this.workgroups.keys()).filter((workgroupId) =>\n this.isCompleted(workgroupId)\n ).length;\n this.completion =\n this.workgroups.size > 0\n ? Math.round((this.numWorkgroupsCompleted / this.workgroups.size) * 100)\n : 0;\n }\n }\n\n private isCompleted(workgroupId: number): boolean {\n const service = this.componentServiceLookupService.getService(this.component.type);\n const componentStates = this.dataService.getComponentStatesByWorkgroupIdAndComponentId(\n workgroupId,\n this.component.id\n );\n return ['OpenResponse', 'Discussion'].includes(this.component.type)\n ? service.isCompletedV2(this.node, this.component, {\n componentStates: componentStates\n })\n : service.isCompleted(\n this.component,\n componentStates,\n this.dataService.getEventsByNodeId(this.node.id),\n this.node\n );\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "componentServiceLookupService", + "type": "ComponentServiceLookupService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "statusService", + "type": "ClassroomStatusService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "workgroupService", + "type": "WorkgroupService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 21, + "jsdoctags": [ + { + "name": "componentServiceLookupService", + "type": "ComponentServiceLookupService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "statusService", + "type": "ClassroomStatusService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "workgroupService", + "type": "WorkgroupService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "
\n
\n \n
\n
Responses: {{ numWorkgroupsCompleted }}
\n
\n" + }, + { + "name": "ComponentComponent", + "id": "component-ComponentComponent-d82ad46c6eaf4a5997f7377c009861cff574785eab99cb9695527841a39dca7b30fd4b8c576e32b985f41c41f403f09ba4b4590f2720a133ffdb3d9d23928bf7", + "file": "src/assets/wise5/components/component/component.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "component", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "component.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "line": 31, + "type": "string", + "decorators": [] + }, + { + "name": "componentState", + "deprecated": false, + "deprecationMessage": "", + "line": 33, + "type": "any", + "decorators": [] + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 34, + "type": "string", + "decorators": [] + }, + { + "name": "workgroupId", + "deprecated": false, + "deprecationMessage": "", + "line": 38, + "type": "number", + "decorators": [] + } + ], + "outputsClass": [ + { + "name": "saveComponentStateEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 36, + "type": "EventEmitter" + } + ], + "propertiesClass": [ + { + "name": "component", + "deprecated": false, + "deprecationMessage": "", + "type": "WISEComponent", + "indexKey": "", + "optional": false, + "description": "", + "line": 29, + "modifierKind": [ + 124 + ] + }, + { + "name": "componentElementRef", + "deprecated": false, + "deprecationMessage": "", + "type": "ElementRef", + "indexKey": "", + "optional": false, + "description": "", + "line": 30, + "decorators": [ + { + "name": "ViewChild", + "stringifiedArguments": "'component'" + } + ], + "modifierKind": [ + 171, + 123 + ] + }, + { + "name": "componentRef", + "deprecated": false, + "deprecationMessage": "", + "type": "ComponentRef", + "indexKey": "", + "optional": false, + "description": "", + "line": 32, + "modifierKind": [ + 123 + ] + }, + { + "name": "rubric", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 35, + "modifierKind": [ + 124 + ] + }, + { + "name": "showRubric", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 37, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "ngAfterViewInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 81, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 96, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 50, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "setComponent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 67, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "HelpIconComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import {\n ApplicationRef,\n Component,\n ComponentRef,\n ElementRef,\n EnvironmentInjector,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n createComponent\n} from '@angular/core';\nimport { ClickToSnipImageService } from '../../services/clickToSnipImageService';\nimport { Component as WISEComponent } from '../../common/Component';\nimport { ComponentFactory } from '../../common/ComponentFactory';\nimport { components } from '../Components';\nimport { ConfigService } from '../../services/configService';\nimport { HelpIconComponent } from '../../themes/default/themeComponents/helpIcon/help-icon.component';\nimport { NotebookService } from '../../services/notebookService';\nimport { ProjectService } from '../../services/projectService';\nimport { StudentDataService } from '../../services/studentDataService';\n\n@Component({\n imports: [HelpIconComponent],\n selector: 'component',\n templateUrl: 'component.component.html'\n})\nexport class ComponentComponent {\n protected component: WISEComponent;\n @ViewChild('component') private componentElementRef: ElementRef;\n @Input() private componentId: string;\n private componentRef: ComponentRef;\n @Input() protected componentState: any;\n @Input() private nodeId: string;\n protected rubric: string;\n @Output() protected saveComponentStateEvent: EventEmitter = new EventEmitter();\n protected showRubric: boolean;\n @Input() protected workgroupId: number;\n\n constructor(\n private applicationRef: ApplicationRef,\n private clickToSnipImageService: ClickToSnipImageService,\n private configService: ConfigService,\n private dataService: StudentDataService,\n private injector: EnvironmentInjector,\n private notebookService: NotebookService,\n private projectService: ProjectService\n ) {}\n\n ngOnInit() {\n if (this.componentState == null || this.componentState === '') {\n this.componentState = this.dataService.getLatestComponentStateByNodeIdAndComponentId(\n this.nodeId,\n this.componentId\n );\n } else {\n this.nodeId = this.componentState.nodeId;\n this.componentId = this.componentState.componentId;\n }\n this.setComponent();\n if (this.configService.isPreview()) {\n this.rubric = this.component.content.rubric;\n this.showRubric = this.rubric != null && this.rubric != '';\n }\n }\n\n private setComponent(): void {\n let content = this.projectService.getComponent(this.nodeId, this.componentId);\n content = this.projectService.injectAssetPaths(content);\n content = this.configService.replaceStudentNames(content);\n if (\n this.notebookService.isNotebookEnabled() &&\n this.notebookService.isStudentNoteClippingEnabled()\n ) {\n content = this.clickToSnipImageService.injectClickToSnipImageListener(content);\n }\n const factory = new ComponentFactory();\n this.component = factory.getComponent(content, this.nodeId);\n }\n\n ngAfterViewInit(): void {\n this.componentRef = createComponent(components[this.component.content.type].student, {\n hostElement: this.componentElementRef.nativeElement,\n environmentInjector: this.injector\n });\n Object.assign(this.componentRef.instance, {\n component: this.component,\n componentState: this.componentState,\n mode: 'student',\n saveComponentStateEvent: this.saveComponentStateEvent,\n workgroupId: this.workgroupId\n });\n this.applicationRef.attachView(this.componentRef.hostView);\n }\n\n ngOnDestroy(): void {\n this.componentRef.destroy();\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "applicationRef", + "type": "ApplicationRef", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "clickToSnipImageService", + "type": "ClickToSnipImageService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "injector", + "type": "EnvironmentInjector", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "notebookService", + "type": "NotebookService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 38, + "jsdoctags": [ + { + "name": "applicationRef", + "type": "ApplicationRef", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "clickToSnipImageService", + "type": "ClickToSnipImageService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "injector", + "type": "EnvironmentInjector", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "notebookService", + "type": "NotebookService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "@if (showRubric) {\n
\n \n
\n}\n
\n" + }, + { + "name": "ComponentConstraintAuthoringComponent", + "id": "component-ComponentConstraintAuthoringComponent-1047958eca058f7ee93645ea5f1e206d31c327e566a52611468c106d4b318e264567ef7cc01983bde134f4d7014b1f3c4aca8b30224fc476b29a4c58ba1847f1", + "file": "src/assets/wise5/authoringTool/constraint/component-constraint-authoring/component-constraint-authoring.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "component-constraint-authoring", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "../constraint-authoring/constraint-authoring.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "constraint", + "deprecated": false, + "deprecationMessage": "", + "line": 8, + "type": "any", + "decorators": [], + "inheritance": { + "file": "ConstraintAuthoringComponent" + } + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "constraintActions", + "defaultValue": "[\n new ConstraintAction('', $localize`Please Choose an Action`),\n new ConstraintAction('makeThisComponentNotVisible', $localize`Make This Component Not Visible`)\n ]", + "deprecated": false, + "deprecationMessage": "", + "type": "[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 29, + "inheritance": { + "file": "ConstraintAuthoringComponent" + } + }, + { + "name": "node", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "inheritance": { + "file": "ConstraintAuthoringComponent" + } + }, + { + "name": "removalConditionals", + "defaultValue": "[\n { value: 'all', text: $localize`All` },\n { value: 'any', text: $localize`Any` }\n ]", + "deprecated": false, + "deprecationMessage": "", + "type": "[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "inheritance": { + "file": "ConstraintAuthoringComponent" + } + } + ], + "methodsClass": [ + { + "name": "addRemovalCriteria", + "args": [ + { + "name": "constraint", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 39, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "constraint", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ConstraintAuthoringComponent" + } + }, + { + "name": "automaticallySetActionIfPossible", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ConstraintAuthoringComponent" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 21, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ConstraintAuthoringComponent" + } + }, + { + "name": "saveProject", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 47, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ConstraintAuthoringComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "EditConstraintRemovalCriteriaComponent", + "type": "component" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatSelectModule", + "type": "module" + }, + { + "name": "RequiredErrorLabelComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSelectModule } from '@angular/material/select';\nimport { ConstraintAction } from '../../../../../app/domain/constraintAction';\nimport { RequiredErrorLabelComponent } from '../../node/advanced/required-error-label/required-error-label.component';\nimport { ConstraintAuthoringComponent } from '../constraint-authoring/constraint-authoring.component';\nimport { EditConstraintRemovalCriteriaComponent } from '../edit-constraint-removal-criteria/edit-constraint-removal-criteria.component';\n\n@Component({\n imports: [\n CommonModule,\n EditConstraintRemovalCriteriaComponent,\n FormsModule,\n MatButtonModule,\n MatFormFieldModule,\n MatIconModule,\n MatSelectModule,\n RequiredErrorLabelComponent\n ],\n selector: 'component-constraint-authoring',\n styleUrl: '../constraint-authoring/constraint-authoring.component.scss',\n templateUrl: '../constraint-authoring/constraint-authoring.component.html'\n})\nexport class ComponentConstraintAuthoringComponent extends ConstraintAuthoringComponent {\n constraintActions = [\n new ConstraintAction('', $localize`Please Choose an Action`),\n new ConstraintAction('makeThisComponentNotVisible', $localize`Make This Component Not Visible`)\n ];\n}\n", + "styleUrl": "../constraint-authoring/constraint-authoring.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [ + "ConstraintAuthoringComponent" + ], + "templateData": "
\n \n Action\n \n @for (action of constraintActions; track action; let actionIndex = $index) {\n \n {{ action.text }}\n \n }\n \n \n @if (constraint.action === '') {\n \n }\n
\n \n Removal Conditional\n \n @for (availableRemovalConditional of removalConditionals; track availableRemovalConditional) {\n \n {{ availableRemovalConditional.text }}\n \n }\n \n \n
\n@for (criteria of constraint.removalCriteria; track criteria; let criteriaIndex = $index) {\n
\n \n
\n}\n
\n Add Removal Criteria\n \n add\n \n
\n" + }, + { + "name": "ComponentGradingComponent", + "id": "component-ComponentGradingComponent-ab98e0a4424632f8ab6e4a657c1cc89d93398ccfd6a7c335c829e46f70283c13d9815adc99bfabd7ce96079341be641f4ee6610a1770e544003fe09398b70773", + "file": "src/assets/wise5/classroomMonitor/classroomMonitorComponents/component-grading.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "component-grading-component", + "styleUrls": [], + "styles": [], + "template": "
", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "line": 20, + "type": "string", + "decorators": [] + }, + { + "name": "componentState", + "deprecated": false, + "deprecationMessage": "", + "line": 22, + "type": "any", + "decorators": [] + }, + { + "name": "isRevision", + "deprecated": false, + "deprecationMessage": "", + "line": 23, + "type": "boolean", + "decorators": [] + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 24, + "type": "string", + "decorators": [] + }, + { + "name": "workgroupId", + "deprecated": false, + "deprecationMessage": "", + "line": 25, + "type": "number", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "componentElementRef", + "deprecated": false, + "deprecationMessage": "", + "type": "ElementRef", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "decorators": [ + { + "name": "ViewChild", + "stringifiedArguments": "'component'" + } + ], + "modifierKind": [ + 171, + 123 + ] + }, + { + "name": "componentRef", + "deprecated": false, + "deprecationMessage": "", + "type": "ComponentRef", + "indexKey": "", + "optional": false, + "description": "", + "line": 21, + "modifierKind": [ + 123 + ] + } + ], + "methodsClass": [ + { + "name": "ngAfterViewInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 33, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 49, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import {\n ApplicationRef,\n Component,\n ComponentRef,\n ElementRef,\n EnvironmentInjector,\n Input,\n ViewChild,\n createComponent\n} from '@angular/core';\nimport { components } from '../../components/Components';\nimport { TeacherProjectService } from '../../services/teacherProjectService';\n\n@Component({\n selector: 'component-grading-component',\n template: '
'\n})\nexport class ComponentGradingComponent {\n @ViewChild('component') private componentElementRef: ElementRef;\n @Input() private componentId: string;\n private componentRef: ComponentRef;\n @Input() private componentState: any;\n @Input() private isRevision: boolean;\n @Input() private nodeId: string;\n @Input() private workgroupId: number;\n\n constructor(\n private applicationRef: ApplicationRef,\n private injector: EnvironmentInjector,\n private projectService: TeacherProjectService\n ) {}\n\n ngAfterViewInit(): void {\n const componentContent = this.projectService.getComponent(this.nodeId, this.componentId);\n this.componentRef = createComponent(components[componentContent.type].grading, {\n hostElement: this.componentElementRef.nativeElement,\n environmentInjector: this.injector\n });\n Object.assign(this.componentRef.instance, {\n componentId: this.componentId,\n componentState: this.componentState,\n isRevision: this.isRevision,\n nodeId: this.nodeId,\n workgroupId: this.workgroupId\n });\n this.applicationRef.attachView(this.componentRef.hostView);\n }\n\n ngOnDestroy(): void {\n this.componentRef.destroy();\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "applicationRef", + "type": "ApplicationRef", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "injector", + "type": "EnvironmentInjector", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 25, + "jsdoctags": [ + { + "name": "applicationRef", + "type": "ApplicationRef", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "injector", + "type": "EnvironmentInjector", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [] + }, + { + "name": "ComponentHeaderComponent", + "id": "component-ComponentHeaderComponent-1569086be0ee33eba08574777c0bd70a52289ea9b86a5c8eb3096abd87b1b9fcd91279a37ef120a794b93c7280ffada5e6b991b31d6edc26ba547155dca94ebb", + "file": "src/assets/wise5/directives/component-header/component-header.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "component-header", + "styleUrls": [], + "styles": [ + ".component-header { padding-bottom: 8px; } .prompt { font-weight: 500; }" + ], + "templateUrl": [ + "component-header.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "component", + "deprecated": false, + "deprecationMessage": "", + "line": 16, + "type": "WISEComponent", + "decorators": [] + } + ], + "outputsClass": [ + { + "name": "dynamicPromptChanged", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 18, + "type": "EventEmitter" + } + ], + "propertiesClass": [ + { + "name": "dynamicPrompt", + "deprecated": false, + "deprecationMessage": "", + "type": "DynamicPrompt", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "modifierKind": [ + 124 + ] + }, + { + "name": "prompt", + "deprecated": false, + "deprecationMessage": "", + "type": "SafeHtml", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 23, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "onDynamicPromptChanged", + "args": [ + { + "name": "feedbackRule", + "type": "FeedbackRule", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 28, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "feedbackRule", + "type": "FeedbackRule", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "PossibleScoreComponent", + "type": "component" + }, + { + "name": "PromptComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { Component as WISEComponent } from '../../common/Component';\nimport { FeedbackRule } from '../../components/common/feedbackRule/FeedbackRule';\nimport { DynamicPrompt } from '../dynamic-prompt/DynamicPrompt';\nimport { PossibleScoreComponent } from '../../../../app/possible-score/possible-score.component';\nimport { PromptComponent } from '../prompt/prompt.component';\n\n@Component({\n imports: [PossibleScoreComponent, PromptComponent],\n selector: 'component-header',\n styles: ['.component-header { padding-bottom: 8px; } .prompt { font-weight: 500; }'],\n templateUrl: 'component-header.component.html'\n})\nexport class ComponentHeaderComponent {\n @Input() component: WISEComponent;\n protected dynamicPrompt: DynamicPrompt;\n @Output() dynamicPromptChanged: EventEmitter = new EventEmitter();\n protected prompt: SafeHtml;\n\n constructor(protected sanitizer: DomSanitizer) {}\n\n ngOnInit(): void {\n this.prompt = this.sanitizer.bypassSecurityTrustHtml(this.component.content.prompt);\n this.dynamicPrompt = new DynamicPrompt(this.component.content.dynamicPrompt);\n }\n\n protected onDynamicPromptChanged(feedbackRule: FeedbackRule): void {\n this.dynamicPromptChanged.emit(feedbackRule);\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": ".component-header { padding-bottom: 8px; } .prompt { font-weight: 500; }\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "sanitizer", + "type": "DomSanitizer", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 19, + "jsdoctags": [ + { + "name": "sanitizer", + "type": "DomSanitizer", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "
\n \n \n
\n" + }, + { + "name": "ComponentInfoDialogComponent", + "id": "component-ComponentInfoDialogComponent-901d0017986b2633fc3f534e809a1239ff89256f740ca923c864fe3ce5bed64ad2e06877cc18321066f0562a88bd621c26ac5f07f48bef0d6fff26b539ca4059", + "file": "src/assets/wise5/authoringTool/components/component-info-dialog/component-info-dialog.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./component-info-dialog.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "description", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 27, + "modifierKind": [ + 124 + ] + }, + { + "name": "previewComponents", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "WISEComponent[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 28, + "modifierKind": [ + 124 + ] + }, + { + "name": "previewExamples", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 29, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "displayComponent", + "args": [ + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 40, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 36, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "ComponentTypeSelectorComponent", + "type": "component" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatCardModule", + "type": "module" + }, + { + "name": "MatDialogModule", + "type": "module" + }, + { + "name": "MatDividerModule", + "type": "module" + }, + { + "name": "MatTabsModule", + "type": "module" + }, + { + "name": "PreviewComponentComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Inject } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';\nimport { ComponentInfoService } from '../../../services/componentInfoService';\nimport { ComponentFactory } from '../../../common/ComponentFactory';\nimport { Component as WISEComponent } from '../../../common/Component';\nimport { ComponentTypeSelectorComponent } from '../component-type-selector/component-type-selector.component';\nimport { PreviewComponentComponent } from '../preview-component/preview-component.component';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDividerModule } from '@angular/material/divider';\n\n@Component({\n imports: [\n ComponentTypeSelectorComponent,\n MatButtonModule,\n MatCardModule,\n MatDialogModule,\n MatDividerModule,\n MatTabsModule,\n PreviewComponentComponent\n ],\n styleUrl: './component-info-dialog.component.scss',\n templateUrl: './component-info-dialog.component.html'\n})\nexport class ComponentInfoDialogComponent {\n protected description: string;\n protected previewComponents: WISEComponent[] = [];\n protected previewExamples: any[] = [];\n\n constructor(\n private componentInfoService: ComponentInfoService,\n @Inject(MAT_DIALOG_DATA) protected componentType: string\n ) {}\n\n ngOnInit(): void {\n this.displayComponent(this.componentType);\n }\n\n protected displayComponent(componentType: string): void {\n const componentInfo = this.componentInfoService.getInfo(componentType);\n this.description = componentInfo.getDescription();\n this.previewExamples = componentInfo.getPreviewExamples();\n this.previewComponents = this.previewExamples.map((example: any) => {\n return new ComponentFactory().getComponent(example.content, 'node1');\n });\n }\n}\n", + "styleUrl": "./component-info-dialog.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "componentInfoService", + "type": "ComponentInfoService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 29, + "jsdoctags": [ + { + "name": "componentInfoService", + "type": "ComponentInfoService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "
\n

Component Info

\n
\n \n
\n\n
\n

Description:

\n

{{ description }}

\n \n

Example:

\n \n @if (previewComponents.length === 1) {\n \n } @else if (previewComponents.length > 1) {\n \n @for (component of previewComponents; track component; let i = $index) {\n \n \n \n }\n \n }\n \n
\n
\n\n \n\n" + }, + { + "name": "ComponentNewWorkBadgeComponent", + "id": "component-ComponentNewWorkBadgeComponent-8c9d2f57002791bda0e13d4437a6540bd7718721fef79b360957a98963479f3084557eed2b9bf6aa6ba485bc064ef0e248ceddaec215aa613fe72fd721ddffb5", + "file": "src/app/classroom-monitor/component-new-work-badge/component-new-work-badge.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "component-new-work-badge", + "styleUrls": [], + "styles": [], + "template": "@if (hasNewWork) { New\n }", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "line": 15, + "type": "string", + "decorators": [] + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 17, + "type": "string", + "decorators": [] + }, + { + "name": "workgroupId", + "deprecated": false, + "deprecationMessage": "", + "line": 19, + "type": "number", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "hasNewWork", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "modifierKind": [ + 124 + ] + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "modifierKind": [ + 123 + ] + } + ], + "methodsClass": [ + { + "name": "checkHasNewWork", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 41, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 37, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { AnnotationService } from '../../../assets/wise5/services/annotationService';\nimport { TeacherDataService } from '../../../assets/wise5/services/teacherDataService';\nimport { Annotation } from '../../../assets/wise5/common/Annotation';\n\n@Component({\n imports: [],\n selector: 'component-new-work-badge',\n template: `@if (hasNewWork) {\n New\n }`\n})\nexport class ComponentNewWorkBadgeComponent {\n @Input() componentId: string;\n protected hasNewWork: boolean;\n @Input() nodeId: string;\n private subscriptions: Subscription = new Subscription();\n @Input() workgroupId: number;\n\n constructor(\n private annotationService: AnnotationService,\n private dataService: TeacherDataService\n ) {}\n\n ngOnInit(): void {\n this.checkHasNewWork();\n this.subscriptions.add(\n this.annotationService.annotationSavedToServer$.subscribe((annotation: Annotation) => {\n if (annotation.nodeId === this.nodeId && annotation.componentId === this.componentId) {\n this.checkHasNewWork();\n }\n })\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n private checkHasNewWork(): void {\n this.hasNewWork = false;\n const componentState =\n this.dataService.getLatestComponentStateByWorkgroupIdNodeIdAndComponentId(\n this.workgroupId,\n this.nodeId,\n this.componentId\n );\n const annotations = this.annotationService.getLatestComponentAnnotations(\n this.nodeId,\n this.componentId,\n this.workgroupId,\n 'any',\n 'comment'\n );\n if (componentState) {\n let teacherComment = null;\n if (annotations && annotations.comment) {\n teacherComment = annotations.comment;\n }\n let teacherScore = null;\n if (annotations && annotations.score) {\n if (annotations.score.type !== 'autoScore') {\n teacherScore = annotations.score;\n }\n }\n const commentSaveTime = teacherComment ? teacherComment.serverSaveTime : 0;\n const scoreSaveTime = teacherScore ? teacherScore.serverSaveTime : 0;\n let teacherAnnotationTime = 0;\n if (commentSaveTime >= scoreSaveTime) {\n teacherAnnotationTime = commentSaveTime;\n } else if (scoreSaveTime > commentSaveTime) {\n teacherAnnotationTime = scoreSaveTime;\n }\n let componentStateTime = componentState.serverSaveTime;\n if (componentStateTime > teacherAnnotationTime) {\n this.hasNewWork = true;\n }\n }\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 19, + "jsdoctags": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [] + }, + { + "name": "ComponentSaveSubmitButtonsComponent", + "id": "component-ComponentSaveSubmitButtonsComponent-af5efd879affb20fba9dbc7e1c02d0f1335f5fd0c34319cf45edabf366c72ea47266302780b5978b9ba2e77e7e54c87ae942e573644fb748546204d46f2fcfc7", + "file": "src/assets/wise5/directives/component-save-submit-buttons/component-save-submit-buttons.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "component-save-submit-buttons", + "styleUrls": [], + "styles": [ + ".mat-mdc-button { min-width: 88px; } .save-message { font-style: italic; } " + ], + "templateUrl": [ + "component-save-submit-buttons.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "componentState", + "deprecated": false, + "deprecationMessage": "", + "line": 13, + "type": "ComponentState", + "decorators": [] + }, + { + "name": "isDirty", + "deprecated": false, + "deprecationMessage": "", + "line": 14, + "type": "boolean", + "decorators": [] + }, + { + "name": "isDisabled", + "deprecated": false, + "deprecationMessage": "", + "line": 15, + "type": "boolean", + "decorators": [] + }, + { + "name": "isSaveButtonVisible", + "deprecated": false, + "deprecationMessage": "", + "line": 16, + "type": "boolean", + "decorators": [] + }, + { + "name": "isSubmitButtonDisabled", + "deprecated": false, + "deprecationMessage": "", + "line": 17, + "type": "boolean", + "decorators": [] + }, + { + "name": "isSubmitButtonVisible", + "deprecated": false, + "deprecationMessage": "", + "line": 18, + "type": "boolean", + "decorators": [] + }, + { + "name": "isSubmitDirty", + "deprecated": false, + "deprecationMessage": "", + "line": 19, + "type": "boolean", + "decorators": [] + } + ], + "outputsClass": [ + { + "name": "saveButtonClicked", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 20, + "type": "EventEmitter" + }, + { + "name": "submitButtonClicked", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 21, + "type": "EventEmitter" + } + ], + "propertiesClass": [], + "methodsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "ComponentStateInfoComponent", + "type": "component" + }, + { + "name": "MatButtonModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { ComponentState } from '../../../../app/domain/componentState';\nimport { MatButtonModule } from '@angular/material/button';\nimport { ComponentStateInfoComponent } from '../../common/component-state-info/component-state-info.component';\n\n@Component({\n imports: [ComponentStateInfoComponent, MatButtonModule],\n selector: 'component-save-submit-buttons',\n styles: ['.mat-mdc-button { min-width: 88px; } .save-message { font-style: italic; } '],\n templateUrl: 'component-save-submit-buttons.component.html'\n})\nexport class ComponentSaveSubmitButtonsComponent {\n @Input() componentState: ComponentState;\n @Input() isDirty: boolean;\n @Input() isDisabled: boolean;\n @Input() isSaveButtonVisible: boolean;\n @Input() isSubmitButtonDisabled: boolean;\n @Input() isSubmitButtonVisible: boolean;\n @Input() isSubmitDirty: boolean;\n @Output() saveButtonClicked = new EventEmitter();\n @Output() submitButtonClicked = new EventEmitter();\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": ".mat-mdc-button { min-width: 88px; } .save-message { font-style: italic; } \n", + "extends": [], + "templateData": "
\n @if (isSaveButtonVisible) {\n \n Save\n \n }\n @if (isSubmitButtonVisible) {\n \n Submit\n \n }\n @if (componentState) {\n \n }\n
\n" + }, + { + "name": "ComponentStateInfoComponent", + "id": "component-ComponentStateInfoComponent-b9cb8f3a213ddc9cb1ff7ace46a3814667268b157c5b737ef988529e3aa16dbd3070689be0e07c6d60edc066aa2324ce003e983df65675f2d4afc040672f7c72", + "file": "src/assets/wise5/common/component-state-info/component-state-info.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "component-state-info", + "styleUrls": [], + "styles": [], + "template": "\n", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "componentState", + "deprecated": false, + "deprecationMessage": "", + "line": 18, + "type": "any", + "decorators": [] + }, + { + "name": "isInactive", + "deprecated": false, + "deprecationMessage": "", + "line": 19, + "type": "boolean", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "latestComponentStateTime", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 20, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "ngOnChanges", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 24, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "SaveTimeMessageComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input } from '@angular/core';\nimport { ConfigService } from '../../services/configService';\nimport { SaveTimeMessageComponent } from '../save-time-message/save-time-message.component';\n\n@Component({\n imports: [SaveTimeMessageComponent],\n selector: 'component-state-info',\n template: `\n \n `\n})\nexport class ComponentStateInfoComponent {\n @Input() componentState: any;\n @Input() isInactive: boolean;\n protected latestComponentStateTime: number;\n\n constructor(private configService: ConfigService) {}\n\n ngOnChanges(): void {\n this.latestComponentStateTime = this.configService.convertToClientTimestamp(\n this.componentState.serverSaveTime\n );\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 20, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [] + }, + { + "name": "ComponentSummaryComponent", + "id": "component-ComponentSummaryComponent-76478be2659a2177353bef04ab5c54f897a9d5886201bc5e0f91d7c38a5d0b06b81d5cf120b9e3906a5950381a5be66ef88dc897753fb6e575905ecd7011f0d4", + "file": "src/assets/wise5/classroomMonitor/classroomMonitorComponents/component-summary/component-summary.component.ts", + "encapsulation": [ + "ViewEncapsulation.None" + ], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "component-summary", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./component-summary.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "component", + "deprecated": false, + "deprecationMessage": "", + "line": 35, + "type": "ComponentContent", + "decorators": [] + }, + { + "name": "node", + "deprecated": false, + "deprecationMessage": "", + "line": 42, + "type": "Node", + "decorators": [] + }, + { + "name": "periodId", + "deprecated": false, + "deprecationMessage": "", + "line": 43, + "type": "number", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "avgScore", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 34, + "modifierKind": [ + 124 + ] + }, + { + "name": "hasCorrectAnswer", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 36, + "modifierKind": [ + 124 + ] + }, + { + "name": "hasIdeaRubricData", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 39, + "modifierKind": [ + 124 + ] + }, + { + "name": "hasScoreAnnotation", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 38, + "modifierKind": [ + 124 + ] + }, + { + "name": "hasScoresSummary", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 37, + "modifierKind": [ + 124 + ] + }, + { + "name": "hasStudentWork", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 40, + "modifierKind": [ + 124 + ] + }, + { + "name": "hasSummaryData", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 41, + "modifierKind": [ + 124 + ] + }, + { + "name": "source", + "deprecated": false, + "deprecationMessage": "", + "type": "\"allPeriods\" | \"period\"", + "indexKey": "", + "optional": false, + "description": "", + "line": 44, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "componentHasCorrectAnswer", + "args": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 88, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "componentHasScoreAnnotation", + "args": [ + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 94, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getLatestScoreAnnotations", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 104, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "ngOnChanges", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 54, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "setComponent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 64, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "setSource", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 84, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "ComponentCompletionComponent", + "type": "component" + }, + { + "name": "IdeasSummaryComponent", + "type": "component" + }, + { + "name": "MatCardModule", + "type": "module" + }, + { + "name": "MatchSummaryDisplayComponent", + "type": "component" + }, + { + "name": "MilestoneReportButtonComponent", + "type": "component" + }, + { + "name": "PeerGroupButtonComponent", + "type": "component" + }, + { + "name": "TeacherSummaryDisplayComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { TeacherSummaryDisplayComponent } from '../../../directives/teacher-summary-display/teacher-summary-display.component';\nimport { ComponentServiceLookupService } from '../../../services/componentServiceLookupService';\nimport { SummaryService } from '../../../components/summary/summaryService';\nimport { TeacherDataService } from '../../../services/teacherDataService';\nimport { isMatchingPeriods } from '../../../common/period/period';\nimport { AnnotationService } from '../../../services/annotationService';\nimport { Node } from '../../../common/Node';\nimport { MilestoneReportButtonComponent } from '../milestone-report-button/milestone-report-button.component';\nimport { PeerGroupButtonComponent } from '../peer-group-button/peer-group-button.component';\nimport { ComponentCompletionComponent } from '../component-completion/component-completion.component';\nimport { ComponentContent } from '../../../common/ComponentContent';\nimport { IdeasSummaryComponent } from '../../../directives/teacher-summary-display/ideas-summary-display/ideas-summary.component';\nimport { MatchSummaryDisplayComponent } from '../../../directives/teacher-summary-display/match-summary-display/match-summary-display.component';\nimport { MatCardModule } from '@angular/material/card';\nimport { CRaterService } from '../../../services/cRaterService';\n\n@Component({\n imports: [\n ComponentCompletionComponent,\n IdeasSummaryComponent,\n MatCardModule,\n MatchSummaryDisplayComponent,\n MilestoneReportButtonComponent,\n PeerGroupButtonComponent,\n TeacherSummaryDisplayComponent\n ],\n selector: 'component-summary',\n styleUrl: './component-summary.component.scss',\n templateUrl: './component-summary.component.html',\n encapsulation: ViewEncapsulation.None\n})\nexport class ComponentSummaryComponent {\n protected avgScore: number;\n @Input() component: ComponentContent;\n protected hasCorrectAnswer: boolean;\n protected hasScoresSummary: boolean;\n protected hasScoreAnnotation: boolean;\n protected hasIdeaRubricData: boolean;\n protected hasStudentWork: boolean;\n protected hasSummaryData: boolean;\n @Input() node: Node;\n @Input() periodId: number;\n protected source: 'allPeriods' | 'period';\n\n constructor(\n private annotationService: AnnotationService,\n private componentServiceLookupService: ComponentServiceLookupService,\n private cRaterService: CRaterService,\n private dataService: TeacherDataService,\n private summaryService: SummaryService\n ) {}\n\n ngOnChanges(): void {\n if (this.node && this.component) {\n this.dataService.retrieveStudentDataForNode(this.node).subscribe(() => this.setComponent());\n this.setSource();\n const annotations = this.getLatestScoreAnnotations();\n const totalScore = annotations.reduce((sumSoFar, a) => sumSoFar + a.data.value, 0);\n this.avgScore = totalScore / annotations.length;\n }\n }\n\n private setComponent(): void {\n this.hasCorrectAnswer = this.componentHasCorrectAnswer(this.component);\n this.hasScoresSummary = this.summaryService.isScoresSummaryAvailableForComponentType(\n this.component.type\n );\n this.hasScoreAnnotation = this.componentHasScoreAnnotation(this.component.id, this.periodId);\n this.hasStudentWork =\n this.dataService\n .getComponentStatesByComponentId(this.component.id)\n .filter((state) => state.periodId === this.periodId).length > 0;\n this.hasIdeaRubricData = this.cRaterService\n .getCRaterRubric(this.node.id, this.component.id)\n .hasRubricData();\n this.hasSummaryData =\n (this.component?.type === 'MultipleChoice' && this.hasStudentWork) ||\n (this.hasScoresSummary && this.hasScoreAnnotation) ||\n this.hasIdeaRubricData ||\n this.component?.type === 'Match';\n }\n\n private setSource(): void {\n this.source = this.periodId === -1 ? 'allPeriods' : 'period';\n }\n\n private componentHasCorrectAnswer(component: any): boolean {\n return this.componentServiceLookupService\n .getService(component.type)\n .componentHasCorrectAnswer(component);\n }\n\n private componentHasScoreAnnotation(componentId: string, periodId: number): boolean {\n return this.annotationService\n .getAnnotationsByNodeIdComponentId(this.dataService.getCurrentNode().id, componentId)\n .some(\n (annotation) =>\n isMatchingPeriods(annotation.periodId, periodId) &&\n ['score', 'autoScore'].includes(annotation.type)\n );\n }\n\n private getLatestScoreAnnotations() {\n return this.annotationService\n .getAnnotationsByNodeIdComponentId(this.node.id, this.component.id)\n .filter((annotation) => this.periodId === -1 || annotation.periodId === this.periodId)\n .filter((annotation) => ['score', 'autoScore'].includes(annotation.type))\n .reduceRight((soFar, currentA) => {\n if (!soFar.some((soFarA) => soFarA.toWorkgroupId === currentA.toWorkgroupId)) {\n soFar.push(currentA);\n }\n return soFar;\n }, []);\n }\n}\n", + "styleUrl": "./component-summary.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentServiceLookupService", + "type": "ComponentServiceLookupService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "cRaterService", + "type": "CRaterService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "summaryService", + "type": "SummaryService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 44, + "jsdoctags": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentServiceLookupService", + "type": "ComponentServiceLookupService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "cRaterService", + "type": "CRaterService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "summaryService", + "type": "SummaryService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "
\n
\n
\n
Prompt
\n @if (component.prompt) {\n
\n } @else {\n
-
\n }\n
\n @if (hasStudentWork) {\n
\n \n
\n }\n
\n
\n \n \n
\n @if (hasSummaryData) {\n
\n @if (hasScoresSummary && hasScoreAnnotation) {\n \n }\n @if (component?.type === 'MultipleChoice' && hasStudentWork) {\n \n }\n @if (hasIdeaRubricData) {\n \n \n \n \n \n }\n @if (component?.type === 'Match') {\n \n \n \n \n \n }\n
\n }\n
\n" + }, + { + "name": "ComponentTypeButtonComponent", + "id": "component-ComponentTypeButtonComponent-a507ac60049020963240e97a7c0f6dbed1b7fce5325a905d500762e7f3c54ef96fad447a82519e5ae3083990f8013e015e490dba203fe700a5ceecaf8c29c1d8", + "file": "src/assets/wise5/authoringTool/components/component-type-button/component-type-button.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "component-type-button", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./component-type-button.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "componentType", + "deprecated": false, + "deprecationMessage": "", + "line": 18, + "type": "string", + "decorators": [] + } + ], + "outputsClass": [ + { + "name": "componentSelectedEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 17, + "type": "EventEmitter" + } + ], + "propertiesClass": [ + { + "name": "label", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "preview", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 30, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatCardModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { ComponentInfoService } from '../../../services/componentInfoService';\nimport { ComponentInfoDialogComponent } from '../component-info-dialog/component-info-dialog.component';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@Component({\n imports: [MatButtonModule, MatCardModule, MatIconModule, MatTooltipModule],\n selector: 'component-type-button',\n styleUrl: './component-type-button.component.scss',\n templateUrl: './component-type-button.component.html'\n})\nexport class ComponentTypeButtonComponent {\n @Output() componentSelectedEvent: EventEmitter = new EventEmitter();\n @Input() componentType: string;\n protected label: string;\n\n constructor(\n private componentInfoService: ComponentInfoService,\n private dialog: MatDialog\n ) {}\n\n ngOnInit(): void {\n this.label = this.componentInfoService.getInfo(this.componentType).getLabel();\n }\n\n protected preview(): void {\n this.dialog.open(ComponentInfoDialogComponent, {\n data: this.componentType,\n panelClass: 'dialog-lg',\n position: {\n top: '100px'\n }\n });\n }\n}\n", + "styleUrl": "./component-type-button.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "componentInfoService", + "type": "ComponentInfoService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 19, + "jsdoctags": [ + { + "name": "componentInfoService", + "type": "ComponentInfoService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "\n
\n \n \n info\n \n
\n
\n" + }, + { + "name": "ComponentTypeSelectorComponent", + "id": "component-ComponentTypeSelectorComponent-f5b5821f9d2d82f9dfc76b404482ed8192b7bf6063525dc6c8ce994010ff7bc1d5c7235582accfc8d6365f422bc5e0a44ff896dd190941e813be3423a50135a7", + "file": "src/assets/wise5/authoringTool/components/component-type-selector/component-type-selector.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "component-type-selector", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./component-type-selector.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "componentType", + "deprecated": false, + "deprecationMessage": "", + "line": 14, + "type": "string", + "decorators": [] + } + ], + "outputsClass": [ + { + "name": "componentTypeSelectedEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 16, + "type": "EventEmitter" + } + ], + "propertiesClass": [ + { + "name": "componentTypes", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 124 + ] + }, + { + "name": "firstComponent", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "modifierKind": [ + 124 + ] + }, + { + "name": "lastComponent", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "getComponentIndex", + "args": [ + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 43, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "goToNextComponent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 39, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "goToPreviousComponent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 35, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "selectComponent", + "args": [ + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 27, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatSelectModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { ComponentTypeService } from '../../../services/componentTypeService';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n imports: [MatButtonModule, MatFormFieldModule, MatIconModule, MatSelectModule],\n selector: 'component-type-selector',\n templateUrl: './component-type-selector.component.html'\n})\nexport class ComponentTypeSelectorComponent {\n @Input() componentType: string;\n protected componentTypes: any[];\n @Output() componentTypeSelectedEvent: EventEmitter = new EventEmitter();\n protected firstComponent: boolean;\n protected lastComponent: boolean;\n\n constructor(private componentTypeService: ComponentTypeService) {}\n\n ngOnInit(): void {\n this.componentTypes = this.componentTypeService.getComponentTypes();\n this.selectComponent(this.componentType);\n }\n\n protected selectComponent(componentType: string): void {\n this.componentType = componentType;\n const index = this.getComponentIndex(this.componentType);\n this.firstComponent = index === 0;\n this.lastComponent = index === this.componentTypes.length - 1;\n this.componentTypeSelectedEvent.emit(this.componentType);\n }\n\n protected goToPreviousComponent(): void {\n this.selectComponent(this.componentTypes[this.getComponentIndex(this.componentType) - 1].type);\n }\n\n protected goToNextComponent(): void {\n this.selectComponent(this.componentTypes[this.getComponentIndex(this.componentType) + 1].type);\n }\n\n private getComponentIndex(componentType: string): number {\n return this.componentTypes.findIndex((type) => type.type === componentType);\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "componentTypeService", + "type": "ComponentTypeService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 18, + "jsdoctags": [ + { + "name": "componentTypeService", + "type": "ComponentTypeService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "
\n \n chevron_left\n \n \n \n @for (componentTypeOption of componentTypes; track componentTypeOption.type) {\n {{ componentTypeOption.name }}\n }\n \n \n \n chevron_right\n \n
\n" + }, + { + "name": "ComputerAvatarSelectorComponent", + "id": "component-ComputerAvatarSelectorComponent-c7b440b26f08986d393a01e815d3786851514489dd3a4f8b98e2d59fb2ea377dd7c53baa2f2cd8b483cfd68292fe43a87000c2f96b4d5ef3bbcc32135652aafa", + "file": "src/assets/wise5/vle/computer-avatar-selector/computer-avatar-selector.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "computer-avatar-selector", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./computer-avatar-selector.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "computerAvatarSettings", + "deprecated": false, + "deprecationMessage": "", + "line": 21, + "type": "ComputerAvatarSettings", + "decorators": [] + } + ], + "outputsClass": [ + { + "name": "chooseAvatarEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 20, + "type": "EventEmitter" + } + ], + "propertiesClass": [ + { + "name": "avatars", + "deprecated": false, + "deprecationMessage": "", + "type": "ComputerAvatar[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "modifierKind": [ + 124 + ] + }, + { + "name": "avatarsPath", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "modifierKind": [ + 124 + ] + }, + { + "name": "label", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 22, + "modifierKind": [ + 124 + ] + }, + { + "name": "selectedAvatar", + "deprecated": false, + "deprecationMessage": "", + "type": "ComputerAvatar", + "indexKey": "", + "optional": false, + "description": "", + "line": 23, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "initializeLabel", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 38, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 27, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatButtonToggleModule", + "type": "module" + }, + { + "name": "MatCardModule", + "type": "module" + }, + { + "name": "MatDividerModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { ComputerAvatar } from '../../common/computer-avatar/ComputerAvatar';\nimport { ComputerAvatarService } from '../../services/computerAvatarService';\nimport { ComputerAvatarSettings } from '../../common/computer-avatar/ComputerAvatarSettings';\n\n@Component({\n imports: [FormsModule, MatButtonModule, MatButtonToggleModule, MatCardModule, MatDividerModule],\n selector: 'computer-avatar-selector',\n styleUrl: './computer-avatar-selector.component.scss',\n templateUrl: './computer-avatar-selector.component.html'\n})\nexport class ComputerAvatarSelectorComponent implements OnInit {\n protected avatars: ComputerAvatar[];\n protected avatarsPath: string;\n @Output() chooseAvatarEvent = new EventEmitter();\n @Input() computerAvatarSettings: ComputerAvatarSettings;\n protected label: string;\n protected selectedAvatar: ComputerAvatar;\n\n constructor(private computerAvatarService: ComputerAvatarService) {}\n\n ngOnInit(): void {\n this.initializeLabel();\n this.avatarsPath = this.computerAvatarService.getAvatarsPath();\n this.avatars = this.computerAvatarService\n .getAvatars()\n .filter((avatar) => this.computerAvatarSettings.ids.includes(avatar.id));\n if (this.avatars.length === 1) {\n this.selectedAvatar = this.avatars[0];\n }\n }\n\n private initializeLabel(): void {\n const computerAvatarSettingsLabel = this.computerAvatarSettings.label;\n this.label =\n computerAvatarSettingsLabel == null || computerAvatarSettingsLabel === ''\n ? this.computerAvatarService.getDefaultComputerAvatarLabel()\n : computerAvatarSettingsLabel;\n }\n}\n", + "styleUrl": "./computer-avatar-selector.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "computerAvatarService", + "type": "ComputerAvatarService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 23, + "jsdoctags": [ + { + "name": "computerAvatarService", + "type": "ComputerAvatarService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "\n \n @if (computerAvatarSettings.prompt) {\n
\n \n }\n @if (avatars.length === 1) {\n
Your {{ label }}:
\n } @else {\n
Choose Your {{ label }}:
\n }\n \n @for (avatar of avatars; track avatar.id) {\n \n \"{{\n
\n {{ avatar.name }}\n
\n \n }\n \n
\n \n \n Continue\n \n \n
\n" + }, + { + "name": "ConceptMapAuthoring", + "id": "component-ConceptMapAuthoring-afd6a62adb8a0dbac74db9fc4bf1c4f9e3c770f8f3950a7c3c11fdca808f240c9272a3661f481397f2119d4c6db5aa4d175d784cf782c1afad485675a071254d", + "file": "src/assets/wise5/components/conceptMap/concept-map-authoring/concept-map-authoring.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "concept-map-authoring", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "concept-map-authoring.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "availableLinks", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 38 + }, + { + "name": "availableNodes", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 37 + }, + { + "name": "allowedConnectedComponentTypes", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "idToOrder", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "inputChange", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "promptChange", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + } + ], + "methodsClass": [ + { + "name": "addLink", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 106, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "addNode", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 85, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "deleteStarterState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 129, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "getNewConceptMapLinkId", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 120, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getNewConceptMapNodeId", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 116, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getNodeById", + "args": [ + { + "name": "nodeId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 97, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "linkDeleteButtonClicked", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 75, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 50, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "nodeDeleteButtonClicked", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 60, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "saveStarterState", + "args": [ + { + "name": "starterState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 124, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "starterState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "assetSelected", + "args": [ + { + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 100, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "componentChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 73, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "confirmAndRemove", + "args": [ + { + "name": "message", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "array", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 110, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "message", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "array", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "getComponent", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 106, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "getComponents", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 102, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "isForThisComponent", + "args": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 77, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "moveObjectDown", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 122, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "moveObjectUp", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 117, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 65, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "promptChanged", + "args": [ + { + "name": "prompt", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 69, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "prompt", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "setShowSubmitButtonValue", + "args": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 85, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "EditComponentPrompt", + "type": "component" + }, + { + "name": "TranslatableInputComponent", + "type": "component" + }, + { + "name": "TranslatableAssetChooserComponent", + "type": "component" + }, + { + "name": "MatCheckbox" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatInput" + }, + { + "name": "MatButton" + }, + { + "name": "MatTooltip" + }, + { + "name": "MatIcon" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatButton } from '@angular/material/button';\nimport { MatCheckbox } from '@angular/material/checkbox';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInput } from '@angular/material/input';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { EditComponentPrompt } from '../../../../../app/authoring-tool/edit-component-prompt/edit-component-prompt.component';\nimport { ProjectAssetService } from '../../../../../app/services/projectAssetService';\nimport { AbstractComponentAuthoring } from '../../../authoringTool/components/AbstractComponentAuthoring';\nimport { TranslatableAssetChooserComponent } from '../../../authoringTool/components/translatable-asset-chooser/translatable-asset-chooser.component';\nimport { TranslatableInputComponent } from '../../../authoringTool/components/translatable-input/translatable-input.component';\nimport { ConfigService } from '../../../services/configService';\nimport { TeacherNodeService } from '../../../services/teacherNodeService';\nimport { TeacherProjectService } from '../../../services/teacherProjectService';\nimport { ConceptMapService } from '../conceptMapService';\n\n@Component({\n selector: 'concept-map-authoring',\n templateUrl: 'concept-map-authoring.component.html',\n styleUrl: 'concept-map-authoring.component.scss',\n imports: [\n EditComponentPrompt,\n TranslatableInputComponent,\n TranslatableAssetChooserComponent,\n MatCheckbox,\n FormsModule,\n MatFormFieldModule,\n MatInput,\n MatButton,\n MatTooltip,\n MatIcon\n ]\n})\nexport class ConceptMapAuthoring extends AbstractComponentAuthoring {\n availableNodes: any[];\n availableLinks: any[];\n\n constructor(\n private conceptMapService: ConceptMapService,\n protected configService: ConfigService,\n protected nodeService: TeacherNodeService,\n protected projectAssetService: ProjectAssetService,\n protected projectService: TeacherProjectService\n ) {\n super(configService, nodeService, projectAssetService, projectService);\n }\n\n ngOnInit() {\n super.ngOnInit();\n this.availableNodes = this.componentContent.nodes;\n this.availableLinks = this.componentContent.links;\n if (this.componentContent.showNodeLabels == null) {\n this.componentContent.showNodeLabels = true;\n this.componentContent.showNodeLabels = true;\n }\n }\n\n nodeDeleteButtonClicked(index: number): void {\n const nodes = this.componentContent.nodes;\n const node = nodes[index];\n const nodeFileName = node.fileName;\n const nodeLabel = node.label;\n if (\n confirm(\n $localize`Are you sure you want to delete this node?\\n\\nFile Name: ${nodeFileName}\\nLabel: ${nodeLabel}`\n )\n ) {\n nodes.splice(index, 1);\n this.componentChanged();\n }\n }\n\n linkDeleteButtonClicked(index: number): void {\n const links = this.componentContent.links;\n const link = links[index];\n const linkLabel = link.label;\n if (confirm($localize`Are you sure you want to delete this link?\\n\\nLabel: ${linkLabel}`)) {\n links.splice(index, 1);\n this.componentChanged();\n }\n }\n\n addNode(): void {\n const newNode = {\n id: this.getNewConceptMapNodeId(),\n label: '',\n fileName: '',\n width: 100,\n height: 100\n };\n this.componentContent.nodes.push(newNode);\n this.componentChanged();\n }\n\n getNodeById(nodeId: number): any {\n for (const node of this.componentContent.nodes) {\n if (nodeId === node.id) {\n return node;\n }\n }\n return null;\n }\n\n addLink(): void {\n const newLink = {\n id: this.getNewConceptMapLinkId(),\n label: '',\n color: ''\n };\n this.componentContent.links.push(newLink);\n this.componentChanged();\n }\n\n getNewConceptMapNodeId(): string {\n return this.conceptMapService.getNextAvailableId(this.componentContent.nodes, 'node');\n }\n\n getNewConceptMapLinkId(): string {\n return this.conceptMapService.getNextAvailableId(this.componentContent.links, 'link');\n }\n\n saveStarterState(starterState: any): void {\n this.componentContent.starterConceptMap = starterState;\n this.componentChanged();\n }\n\n deleteStarterState(): void {\n this.componentContent.starterConceptMap = null;\n this.componentChanged();\n }\n}\n", + "styleUrl": "concept-map-authoring.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "conceptMapService", + "type": "ConceptMapService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeService", + "type": "TeacherNodeService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectAssetService", + "type": "ProjectAssetService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 38, + "jsdoctags": [ + { + "name": "conceptMapService", + "type": "ConceptMapService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeService", + "type": "TeacherNodeService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectAssetService", + "type": "ProjectAssetService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "AbstractComponentAuthoring" + ], + "templateData": "
\n \n
\n \n \n
\n
\n \n Stretch background to fit\n \n
\n
\n \n Allow student to upload background image\n \n
\n
\n \n Canvas Width (Optional)\n \n \n \n Canvas Height (Optional)\n \n \n
\n
\n
\n Nodes\n \n add\n \n
\n @if (componentContent.nodes == null || componentContent.nodes.length == 0) {\n
\n

There are no nodes. Click the \"Add Node\" button to add a node.

\n
\n }\n
\n @for (\n node of componentContent.nodes;\n track node;\n let nodeIndex = $index;\n let isFirst = $first;\n let isLast = $last\n ) {\n
\n \n \n \n \n
\n
\n \n Width\n \n \n \n Height\n \n \n
\n \n
\n \n arrow_upward\n \n \n arrow_downward\n \n \n delete\n \n
\n
\n }\n
\n
\n \n Show Node Labels\n \n
\n
\n
\n \n
\n Links\n \n add\n \n
\n @if (componentContent.links == null || componentContent.links.length == 0) {\n
\n

There are no links. Click the \"Add Link\" button to add a link.

\n
\n }\n
\n @for (\n link of componentContent.links;\n track link;\n let linkIndex = $index;\n let isFirst = $first;\n let isLast = $last\n ) {\n
\n \n \n Color\n \n \n \n
\n \n arrow_upward\n \n \n arrow_downward\n \n \n delete\n \n
\n
\n }\n
\n
\n\n" + }, + { + "name": "ConceptMapShowWorkComponent", + "id": "component-ConceptMapShowWorkComponent-00a8ead3db53679186cdacf6033c4ec20f68b9ab2dc3b0086f6d6ba870a4aa13f0c5acd3a845a94f1e7cbfdb44914c8128aa2796dfa1086809f80c27e268b6ec", + "file": "src/assets/wise5/components/conceptMap/concept-map-show-work/concept-map-show-work.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "concept-map-show-work", + "styleUrls": [], + "styles": [ + ".concept-map-svg { border: 1px solid black; background-repeat: no-repeat; }" + ], + "templateUrl": [ + "concept-map-show-work.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "line": 8, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "componentState", + "deprecated": false, + "deprecationMessage": "", + "line": 9, + "type": "any", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "isRevision", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "line": 10, + "type": "boolean", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 7, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "backgroundImage", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 18 + }, + { + "name": "backgroundSize", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 19 + }, + { + "name": "conceptMapNodeIdToNode", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 20 + }, + { + "name": "defaultHeight", + "defaultValue": "600", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 17 + }, + { + "name": "defaultWidth", + "defaultValue": "800", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 16 + }, + { + "name": "draw", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 15 + }, + { + "name": "links", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 22 + }, + { + "name": "nodes", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 21 + }, + { + "name": "svgId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 14 + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "inheritance": { + "file": "ComponentShowWorkDirective" + } + } + ], + "methodsClass": [ + { + "name": "getBackgroundPath", + "args": [ + { + "name": "conceptMapData", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 96, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "conceptMapData", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getConceptMapId", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 46, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getConceptMapIdPrefix", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 50, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getDestinationNode", + "args": [ + { + "name": "link", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 161, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "link", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getHeight", + "args": [ + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 81, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getNodeById", + "args": [ + { + "name": "conceptMapNodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 169, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "conceptMapNodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getSourceNode", + "args": [ + { + "name": "link", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 153, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "link", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getStretchBackground", + "args": [ + { + "name": "conceptMapData", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 100, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "conceptMapData", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getWidth", + "args": [ + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 74, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "initializeDraw", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 68, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "initializeSVG", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 58, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "moveLinkTextToFront", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 173, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "moveNodesToFront", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 177, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 32, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "populateBackground", + "args": [ + { + "name": "conceptMapData", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 88, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "conceptMapData", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "populateLinks", + "args": [ + { + "name": "conceptMapData", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 133, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "conceptMapData", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "populateNodes", + "args": [ + { + "name": "conceptMapData", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 114, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "conceptMapData", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setBackgroundPath", + "args": [ + { + "name": "backgroundPath", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 104, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "backgroundPath", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setBackgroundSize", + "args": [ + { + "name": "stretchBackground", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 108, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "stretchBackground", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngAfterViewInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 33, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentShowWorkDirective" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import SVG from 'svg.js';\nimport { Component } from '@angular/core';\nimport { ProjectService } from '../../../services/projectService';\nimport { ConceptMapService } from '../conceptMapService';\nimport { ComponentShowWorkDirective } from '../../component-show-work.directive';\nimport { NodeService } from '../../../services/nodeService';\n\n@Component({\n selector: 'concept-map-show-work',\n styles: ['.concept-map-svg { border: 1px solid black; background-repeat: no-repeat; }'],\n templateUrl: 'concept-map-show-work.component.html'\n})\nexport class ConceptMapShowWorkComponent extends ComponentShowWorkDirective {\n svgId: string;\n draw: any;\n defaultWidth: number = 800;\n defaultHeight: number = 600;\n backgroundImage: string = '';\n backgroundSize: string = '';\n conceptMapNodeIdToNode: any = {};\n nodes: any[] = [];\n links: any[] = [];\n\n constructor(\n private conceptMapService: ConceptMapService,\n protected nodeService: NodeService,\n protected projectService: ProjectService\n ) {\n super(nodeService, projectService);\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n this.svgId = this.getConceptMapId();\n\n /*\n * Call initializeSVG() after a timeout so that angular has a chance to set the svg element id\n * before we start using it. If we don't wait for the timeout, the svg id won't be set when we\n * try to start referencing the svg element.\n */\n setTimeout(() => {\n this.initializeSVG();\n });\n }\n\n getConceptMapId(): string {\n return this.getConceptMapIdPrefix() + this.componentState.id;\n }\n\n getConceptMapIdPrefix(): string {\n if (this.isRevision) {\n return 'concept-map-revision-';\n } else {\n return 'concept-map-';\n }\n }\n\n initializeSVG(): void {\n this.initializeDraw();\n const conceptMapData = this.componentState.studentData.conceptMapData;\n this.populateBackground(conceptMapData);\n this.populateNodes(conceptMapData);\n this.populateLinks(conceptMapData);\n this.moveLinkTextToFront();\n this.moveNodesToFront();\n }\n\n initializeDraw(): void {\n this.draw = SVG(this.svgId);\n this.draw.width(this.getWidth(this.componentContent));\n this.draw.height(this.getHeight(this.componentContent));\n }\n\n getWidth(componentContent: any): number {\n if (componentContent.width != null) {\n return componentContent.width;\n }\n return this.defaultWidth;\n }\n\n getHeight(componentContent: any): number {\n if (componentContent.height != null) {\n return this.componentContent.height;\n }\n return this.defaultHeight;\n }\n\n populateBackground(conceptMapData: any): void {\n const backgroundPath = this.getBackgroundPath(conceptMapData);\n if (backgroundPath != null) {\n this.setBackgroundPath(backgroundPath);\n this.setBackgroundSize(this.getStretchBackground(conceptMapData));\n }\n }\n\n getBackgroundPath(conceptMapData: any): string {\n return conceptMapData.backgroundPath;\n }\n\n getStretchBackground(conceptMapData: any): boolean {\n return conceptMapData.stretchBackground;\n }\n\n setBackgroundPath(backgroundPath: string): void {\n this.backgroundImage = `url(${backgroundPath})`;\n }\n\n setBackgroundSize(stretchBackground: boolean): void {\n if (stretchBackground) {\n this.backgroundSize = '100% 100%';\n }\n }\n\n populateNodes(conceptMapData: any): void {\n for (const node of conceptMapData.nodes) {\n const conceptMapNode = this.conceptMapService.newConceptMapNode(\n this.draw,\n node.instanceId,\n node.originalId,\n node.fileName,\n node.label,\n node.x,\n node.y,\n node.width,\n node.height,\n this.componentContent.showNodeLabels\n );\n this.nodes.push(conceptMapNode);\n this.conceptMapNodeIdToNode[conceptMapNode.id] = conceptMapNode;\n }\n }\n\n populateLinks(conceptMapData: any): void {\n for (const link of conceptMapData.links) {\n const sourceNode = this.getSourceNode(link);\n const destinationNode = this.getDestinationNode(link);\n const conceptMapLink = this.conceptMapService.newConceptMapLink(\n this.draw,\n link.instanceId,\n link.originalId,\n sourceNode,\n destinationNode,\n link.label,\n link.color,\n link.curvature,\n link.startCurveUp,\n link.endCurveUp\n );\n this.links.push(conceptMapLink);\n }\n }\n\n getSourceNode(link: any): any {\n const sourceNodeId = link.sourceNodeInstanceId;\n if (sourceNodeId != null) {\n return this.getNodeById(sourceNodeId);\n }\n return null;\n }\n\n getDestinationNode(link: any): any {\n const destinationNodeId = link.destinationNodeInstanceId;\n if (destinationNodeId != null) {\n return this.getNodeById(destinationNodeId);\n }\n return null;\n }\n\n getNodeById(conceptMapNodeId: string): any {\n return this.conceptMapNodeIdToNode[conceptMapNodeId];\n }\n\n moveLinkTextToFront(): void {\n this.conceptMapService.moveLinkTextToFront(this.links);\n }\n\n moveNodesToFront(): void {\n this.conceptMapService.moveNodesToFront(this.nodes);\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": ".concept-map-svg { border: 1px solid black; background-repeat: no-repeat; }\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "conceptMapService", + "type": "ConceptMapService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 22, + "jsdoctags": [ + { + "name": "conceptMapService", + "type": "ConceptMapService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "ComponentShowWorkDirective" + ], + "templateData": "
\n \n
\n" + }, + { + "name": "ConceptMapStudent", + "id": "component-ConceptMapStudent-84c112b8a959f5920082bb9dc51252fe869e5fa081509ec85f5d9a5bb9b7b50ba581d7ca69883026698db8c783ab8403924ca67156e4208e1d5d682871241fc8", + "file": "src/assets/wise5/components/conceptMap/concept-map-student/concept-map-student.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "concept-map-student", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "concept-map-student.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "component", + "deprecated": false, + "deprecationMessage": "", + "line": 24, + "type": "Component", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentState", + "deprecated": false, + "deprecationMessage": "", + "line": 25, + "type": "any", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isDisabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "line": 26, + "type": "boolean", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "mode", + "deprecated": false, + "deprecationMessage": "", + "line": 27, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 28, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "workgroupId", + "deprecated": false, + "deprecationMessage": "", + "line": 29, + "type": "number", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "outputsClass": [ + { + "name": "saveComponentStateEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 30, + "type": "EventEmitter", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "starterStateChangedEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 31, + "type": "EventEmitter", + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "propertiesClass": [ + { + "name": "activeLink", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 47 + }, + { + "name": "activeLinkStartX", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 48 + }, + { + "name": "activeLinkStartY", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 49 + }, + { + "name": "activeNode", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 50 + }, + { + "name": "addedDropListener", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 51 + }, + { + "name": "autoFeedbackResult", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 52 + }, + { + "name": "autoFeedbackString", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 53 + }, + { + "name": "availableLinks", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 55 + }, + { + "name": "availableNodes", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 54 + }, + { + "name": "background", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 56 + }, + { + "name": "backgroundSize", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 57 + }, + { + "name": "backgroundUrl", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 58 + }, + { + "name": "componentStateId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 59 + }, + { + "name": "componentTypesCanImportAsBackground", + "defaultValue": "['Draw', 'Embedded', 'Graph', 'Label', 'Table']", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 60 + }, + { + "name": "conceptMapContainerId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 61 + }, + { + "name": "displayLinkTypeChooser", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 62 + }, + { + "name": "domIdEnding", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 63 + }, + { + "name": "dragOverListenerFunction", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 64 + }, + { + "name": "draw", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 65 + }, + { + "name": "drawingLink", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 66 + }, + { + "name": "dropListenerFunction", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 67 + }, + { + "name": "feedbackContainerId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 68 + }, + { + "name": "height", + "defaultValue": "600", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 69 + }, + { + "name": "highlightedElement", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 70 + }, + { + "name": "linkCurvatureSet", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 71 + }, + { + "name": "links", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 72 + }, + { + "name": "linksTitle", + "defaultValue": "'Links'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 73 + }, + { + "name": "linkTypeChooserStyle", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 74 + }, + { + "name": "modalHeight", + "defaultValue": "600", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 75 + }, + { + "name": "modalWidth", + "defaultValue": "800", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 76 + }, + { + "name": "newlyCreatedLink", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 77 + }, + { + "name": "nodes", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 78 + }, + { + "name": "selectedLinkType", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 79 + }, + { + "name": "selectedNode", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 80 + }, + { + "name": "selectNodeBarId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 81 + }, + { + "name": "stretchBackground", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 82 + }, + { + "name": "svgId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 83 + }, + { + "name": "tempOffsetX", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 84 + }, + { + "name": "tempOffsetY", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 85 + }, + { + "name": "width", + "defaultValue": "800", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 86 + }, + { + "name": "annotationSavedToServerSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 53, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "attachments", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 33, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 34, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 35, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentType", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 36, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isDirty", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 45, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSaveButtonVisible", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 38, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSaveOrSubmitButtonVisible", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 41, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isShowAddToNotebookButton", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 39, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isStudentAttachmentEnabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 46, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmit", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 44, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmitButtonDisabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 42, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmitButtonVisible", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 40, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmitDirty", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 43, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "latestAnnotations", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 48, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "latestComponentState", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 50, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "nodeSubmitClickedSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 54, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "parentStudentWorkIds", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 49, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "prompt", + "deprecated": false, + "deprecationMessage": "", + "type": "SafeHtml", + "indexKey": "", + "optional": false, + "description": "", + "line": 37, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "requestComponentStateSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 52, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "showAddToNotebookButton", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 51, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "studentWorkSavedToServerSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 55, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "submitCounter", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 47, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 56, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "methodsClass": [ + { + "name": "addAnnotations", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 479, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addCommentAnnotation", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "runId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "toWorkgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 527, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "runId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "toWorkgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addDragOverListenerIfNecessary", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 665, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "addDropListenerIfNecessary", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 679, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "addLink", + "args": [ + { + "name": "link", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1197, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "link", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addMouseListeners", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 651, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "addNode", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1128, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addScoreAnnotation", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "runId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "toWorkgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 501, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "runId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "toWorkgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addStudentInteractionListeners", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 645, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "attachStudentAsset", + "args": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1602, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "cancelLinkTypeChooser", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 718, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "checkIfShouldPerformSubmit", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 338, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "clearActiveNode", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 833, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "clearConceptMap", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1424, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "clearHighlightedElement", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1087, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentContentHasStarterConceptMap", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 204, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentStateHasStudentWork", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 200, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "connectorMouseDown", + "args": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1274, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createAutoCommentAnnotation", + "args": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 603, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createAutoScoreAnnotation", + "args": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 592, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createComponentState", + "args": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 445, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCreate a new component state populated with the student data\ne.g. 'submit', 'save', 'change'\n", + "description": "

Create a new component state populated with the student data\ne.g. 'submit', 'save', 'change'

\n", + "jsdoctags": [ + { + "name": { + "pos": 15575, + "end": 15581, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "action" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 15569, + "end": 15574, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the action that is triggering creating of this component state\ne.g. 'submit', 'save', 'change'

\n" + }, + { + "tagName": { + "pos": 15688, + "end": 15694, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

a promise that will return a component state

\n" + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createComponentStateObject", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 457, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "createMergedComponentState", + "args": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 1495, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCreate a component state with the merged student responses\n", + "description": "

Create a component state with the merged student responses

\n", + "jsdoctags": [ + { + "name": { + "pos": 47630, + "end": 47645, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentStates" + }, + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 47624, + "end": 47629, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

an array of component states

\n" + }, + { + "tagName": { + "pos": 47681, + "end": 47687, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

a component state with the merged student responses

\n" + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createNoteFromSvg", + "args": [ + { + "name": "svgString", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1472, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "svgString", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "deleteBackgroundImage", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1594, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "disableNodeDragging", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1113, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "enableNodeDragging", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1100, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "generateStarterState", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 1598, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getBackgroundFileName", + "args": [ + { + "name": "background", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 588, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "background", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getConceptMapData", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 562, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getFeedbackFromResult", + "args": [ + { + "name": "result", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 413, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "result", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getGroupId", + "args": [ + { + "name": "element", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 1402, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the group id of an element. All elements of a node or link are contained in a group. These\ngroups are the children of the main svg element.\nFor example a node's image element will be located here\nsvg > group > image\nFor example a link's path element will be located here\nsvg > group > path\n", + "description": "

Get the group id of an element. All elements of a node or link are contained in a group. These\ngroups are the children of the main svg element.\nFor example a node's image element will be located here\nsvg > group > image\nFor example a link's path element will be located here\nsvg > group > path

\n", + "jsdoctags": [ + { + "name": { + "pos": 44403, + "end": 44410, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "element" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 44397, + "end": 44402, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

get the group id of this element

\n" + }, + { + "tagName": { + "pos": 44450, + "end": 44457, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

the group id

\n" + } + ] + }, + { + "name": "getLinkByGroupId", + "args": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 1185, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getLinkById", + "args": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 1179, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getModalHeight", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 705, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getModalWidth", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 692, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getNewConceptMapLinkId", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 1030, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getNewConceptMapNodeId", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 1026, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getNodeByConnectorId", + "args": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 1191, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getNodeByGroupId", + "args": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 1173, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getNodeById", + "args": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 1167, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getParentOffsetsFromCircle", + "args": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "userAgent", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 899, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "userAgent", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getParentOffsetsFromDefault", + "args": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "userAgent", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 962, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "userAgent", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getParentOffsetsFromImage", + "args": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "userAgent", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 931, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "userAgent", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getParentOffsetsFromPath", + "args": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "userAgent", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 945, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "userAgent", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getParentOffsetsFromRect", + "args": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "userAgent", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 914, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "userAgent", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getParentOffsetsFromSVG", + "args": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "userAgent", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 877, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "userAgent", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getRelativeCoordinatesByEvent", + "args": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 848, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the coordinates of the mouse relative to the svg element\n", + "description": "

Get the coordinates of the mouse relative to the svg element

\n", + "jsdoctags": [ + { + "name": { + "pos": 28502, + "end": 28507, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "event" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 28496, + "end": 28501, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

a mouse event

\n" + }, + { + "tagName": { + "pos": 28528, + "end": 28535, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

an object containing x and y values

\n" + } + ] + }, + { + "name": "hasAutoFeedback", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 550, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "hasAutoFeedbackScore", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 554, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "hasAutoFeedbackText", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 558, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "hasAutoGrading", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 357, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "hideLinkTypeChooser", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 629, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "initialize", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 130, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "initializeHeight", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 159, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "initializeLinksTitle", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 171, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "initializeShowNodeLabels", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 165, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "initializeSVG", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 177, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "initializeWidth", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 153, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isBackgroundAvailable", + "args": [ + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 1567, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isReleasingLinkOnToNode", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 1264, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isUserAgentChrome", + "args": [ + { + "name": "userAgent", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 977, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "userAgent", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isUserAgentFirefox", + "args": [ + { + "name": "userAgent", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 981, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "userAgent", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "linkDeleteButtonClicked", + "args": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "link", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1268, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "link", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "linkMouseDown", + "args": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1317, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "linkMouseOut", + "args": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1356, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "linkMouseOver", + "args": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1344, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "linkTextMouseDown", + "args": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1323, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "linkTypeSelected", + "args": [ + { + "name": "selectedLink", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 614, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "selectedLink", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "makeIdsUnique", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 1536, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "mergeConceptMapComponentState", + "args": [ + { + "name": "componentStateToMergeInto", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentStateToMerge", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 1522, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentStateToMergeInto", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentStateToMerge", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "mergeOtherComponentState", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 1553, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "moveLinkTextToFront", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1120, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "moveNodesToFront", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1124, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "newNodeDropped", + "args": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1000, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngAfterViewInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 118, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 123, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 113, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "nodeDeleteButtonMouseDown", + "args": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1364, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "nodeDeleteButtonMouseOut", + "args": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1379, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "nodeDeleteButtonMouseOver", + "args": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1373, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "nodeDragMove", + "args": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1383, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "nodeMouseDown", + "args": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1235, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "nodeMouseOut", + "args": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1227, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "nodeMouseOver", + "args": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1219, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "nodeMouseUp", + "args": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1245, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "performAutoGrading", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 364, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "populateConceptMapData", + "args": [ + { + "name": "conceptMapData", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 219, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "conceptMapData", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "populateLinks", + "args": [ + { + "name": "conceptMapData", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 257, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "conceptMapData", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "populateNodes", + "args": [ + { + "name": "conceptMapData", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 235, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "conceptMapData", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "populateStarterConceptMap", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1418, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "refreshLinkLabels", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 298, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nRefresh the link labels so that the rectangles around the text labels are resized to fit the\ntext properly. This is required because the rectangles are not properly sized when the\nConceptMapLinks are initialized. The rectangles need to be rendered first and then the labels\nneed to be set in order for the rectangles to be resized properly. This is why this function is\ncalled in a seTimeout.\n", + "description": "

Refresh the link labels so that the rectangles around the text labels are resized to fit the\ntext properly. This is required because the rectangles are not properly sized when the\nConceptMapLinks are initialized. The rectangles need to be rendered first and then the labels\nneed to be set in order for the rectangles to be resized properly. This is why this function is\ncalled in a seTimeout.

\n" + }, + { + "name": "removeAllLinks", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1212, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "removeAllNodes", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1160, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "removeLink", + "args": [ + { + "name": "link", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1201, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "link", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "removeNode", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1132, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "replaceImageRefsWithBase64Images", + "args": [ + { + "name": "svgString", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "images", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 1461, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "svgString", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "images", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "resetConceptMap", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1432, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nClear the concept map and populate the starter concept map and background if available.\n", + "description": "

Clear the concept map and populate the starter concept map and background if available.

\n" + }, + { + "name": "selectNode", + "args": [ + { + "name": "$event", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 990, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCalled when the student clicks down on a node in the left node bar\n", + "description": "

Called when the student clicks down on a node in the left node bar

\n", + "jsdoctags": [ + { + "name": { + "pos": 32805, + "end": 32811, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "$event" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 32799, + "end": 32804, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the mouse down event

\n" + }, + { + "name": { + "pos": 32845, + "end": 32849, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "node" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 32839, + "end": 32844, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node the student clicked down on

\n" + } + ] + }, + { + "name": "setActiveLinkCurvature", + "args": [ + { + "name": "slope", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 797, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "slope", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setActiveNode", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 827, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nThis is called when the student places the mouse over a node.\n", + "description": "

This is called when the student places the mouse over a node.

\n", + "jsdoctags": [ + { + "name": { + "pos": 28017, + "end": 28021, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "node" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 28011, + "end": 28016, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node to make active

\n" + } + ] + }, + { + "name": "setBackground", + "args": [ + { + "name": "backgroundPath", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "stretchBackground", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1571, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "backgroundPath", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "stretchBackground", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setBackgroundImage", + "args": [ + { + "name": "image", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1563, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "image", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setBackgroundSize", + "args": [ + { + "name": "isStretchBackground", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1586, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isStretchBackground", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setBackgroundUrl", + "args": [ + { + "name": "backgroundPath", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1578, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "backgroundPath", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setHighlightedElement", + "args": [ + { + "name": "element", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1073, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "element", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setIdsWithNodeIdComponentId", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 141, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "setLinkCurveDirection", + "args": [ + { + "name": "link", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isCurveDirectionUp", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 818, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "link", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "isCurveDirectionUp", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setLinkCurveDown", + "args": [ + { + "name": "link", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 814, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "link", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setLinkCurveUp", + "args": [ + { + "name": "link", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 810, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "link", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setLinkMouseEvents", + "args": [ + { + "name": "link", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1295, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "link", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setNodeMouseEvents", + "args": [ + { + "name": "conceptMapNode", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1034, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "conceptMapNode", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setStudentWork", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 208, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setupSVG", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 634, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "showFeedbackInPopup", + "args": [ + { + "name": "feedbackText", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 430, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "feedbackText", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "showLinkTypeChooser", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 625, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "snipImage", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1451, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "submit", + "args": [ + { + "name": "submitTriggeredBy", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 321, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nA submit was triggered by the component submit button or node submit button\ne.g. 'componentSubmitButton' or 'nodeSubmitButton'\n", + "description": "

A submit was triggered by the component submit button or node submit button\ne.g. 'componentSubmitButton' or 'nodeSubmitButton'

\n", + "jsdoctags": [ + { + "name": { + "pos": 11015, + "end": 11032, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "submitTriggeredBy" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 11009, + "end": 11014, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

what triggered the submit\ne.g. 'componentSubmitButton' or 'nodeSubmitButton'

\n" + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "svgMouseDown", + "args": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 729, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "svgMouseMove", + "args": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 750, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "svgMouseUp", + "args": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 735, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addDefaultFeedback", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 688, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "broadcastDoneRenderingComponent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 325, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "canSubmit", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 488, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "clearLatestComponentState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 555, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "confirmSubmit", + "args": [ + { + "name": "numberOfSubmitsLeft", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 468, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "numberOfSubmitsLeft", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "connectedComponentStudentDataSaved", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 796, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nThis function is called when a connected component of this component saves student data.\nThis was added to handle a race condition when a step has a connected component on a previous\nstep but the connected component student work on the previous step was not being imported\nbecause it wasn't being saved in time.\nHere is an example of what was happening\n- Student generates work on step 1 but does not click the save button\n- Student goes to step 2 which triggers a promise to save the student work on step 1\n- Step 2 is loaded and checks if there is any work it needs to import from step 1\n- The work in step 1 has not saved yet so step 2 does not import any work and loads without\n importing any work\n- The work from step 1 is then saved\nHere is the additional process that this function performs to fix this problem\n- Step 2 listens for when work is saved on step 1\n- When the work for step 1 is saved, step 2 checks to see if it needs to import that work\n", + "description": "

This function is called when a connected component of this component saves student data.\nThis was added to handle a race condition when a step has a connected component on a previous\nstep but the connected component student work on the previous step was not being imported\nbecause it wasn't being saved in time.\nHere is an example of what was happening

\n
    \n
  • Student generates work on step 1 but does not click the save button
  • \n
  • Student goes to step 2 which triggers a promise to save the student work on step 1
  • \n
  • Step 2 is loaded and checks if there is any work it needs to import from step 1
  • \n
  • The work in step 1 has not saved yet so step 2 does not import any work and loads without\nimporting any work
  • \n
  • The work from step 1 is then saved\nHere is the additional process that this function performs to fix this problem
  • \n
  • Step 2 listens for when work is saved on step 1
  • \n
  • When the work for step 1 is saved, step 2 checks to see if it needs to import that work
  • \n
\n", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "copyAndAttachStudentAsset", + "args": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 218, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "copyPublicNotebookItem", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 632, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "copyPublicNotebookItemButtonClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 747, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createComponentStateAdditionalProcessing", + "args": [ + { + "name": "promise", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 598, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "promise", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createComponentStateAndBroadcast", + "args": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 559, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createDefaultFeedbackAnnotation", + "args": [ + { + "name": "feedbackText", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 706, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "feedbackText", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createNewComponentState", + "args": [], + "optional": false, + "returnType": "Partial", + "typeParameters": [], + "line": 818, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "disableAllInput", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 492, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "disableComponentIfNecessary", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 332, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "disableSubmitButton", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 496, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "doAttachStudentAsset", + "args": [ + { + "name": "studentAssetRequest", + "type": "StudentAssetRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 212, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "studentAssetRequest", + "type": "StudentAssetRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 541, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentStudentDataChanged", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 572, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentSubmitDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 548, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentSubmitTriggered", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 512, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "generateImageFromComponentState", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 615, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nRender the component state and then generate an image from it.\n", + "description": "

Render the component state and then generate an image from it.

\n", + "jsdoctags": [ + { + "name": { + "pos": 18804, + "end": 18818, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 18798, + "end": 18803, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The component state to render.

\n" + }, + { + "tagName": { + "pos": 18856, + "end": 18862, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

A promise that will return an image.

\n" + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getAction", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 321, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getClientSaveTime", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 684, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getComponentStatePromise", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 309, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getComponentStateWrapper", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "ComponentStateWrapper", + "typeParameters": [], + "line": 301, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getDefaultFeedback", + "args": [ + { + "name": "submitCount", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 702, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "submitCount", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getElementById", + "args": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getFirstResult", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 758, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "getFirstResult", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getIsDirty", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 277, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getMaxScore", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 680, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getMaxSubmitCount", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 460, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getNumberOfSubmitsLeft", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 456, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "handleConnectedComponents", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 352, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "handleConnectedComponentsPostProcess", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 385, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "handleStudentWorkSavedToServer", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 263, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "handleStudentWorkSavedToServerAdditionalProcessing", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 287, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasAnySubmissions", + "args": [ + { + "name": "componentStates", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 344, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentStates", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasDefaultFeedback", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 695, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasMaxScore", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 676, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasMaxSubmitCount", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 437, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasMaxSubmitCountAndUsedAllSubmits", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 452, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasSubmitMessage", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 504, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasSubmitsLeft", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 500, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasUsedAllSubmits", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 441, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "importWorkAsBackground", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 658, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "importWorkByStudentWorkId", + "args": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 170, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "incrementSubmitCounter", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 389, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isAddToNotebookEnabled", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 624, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isForThisComponent", + "args": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 192, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isFromConnectedComponent", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 766, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isHandleConnectedComponentAfterConnectedComponentStudentDataSaved", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 802, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isLockAfterSubmit", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 348, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isNotebookEnabled", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 643, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isPreviewMode", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 109, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSameComponent", + "args": [ + { + "name": "component", + "type": "Component", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 188, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "component", + "type": "Component", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isStudentNoteClippingEnabled", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 647, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isWorkFromClassmate", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 196, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "lockIfNecessary", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 281, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "performSubmit", + "args": [ + { + "name": "submitTriggeredBy", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 472, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "submitTriggeredBy", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "processConnectedComponentState", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 184, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "processLatestStudentWork", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 580, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "registerNotebookItemChosenListener", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 736, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "removeAttachment", + "args": [ + { + "name": "attachment", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 245, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "attachment", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "saveButtonClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 393, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "saveForAuthoringPreviewMode", + "args": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 404, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setComponentStateAsBackgroundImage", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 668, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 537, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsDirtyAndBroadcast", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 527, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsSubmit", + "args": [ + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 464, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsSubmitDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 508, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsSubmitDirtyAndBroadcast", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 532, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setParentStudentWorkIdToCurrentStudentWork", + "args": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 180, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setSubmitCounter", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 811, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "shouldCreateComponentState", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 317, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "showStudentAssets", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 651, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "studentDataChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 519, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "submitButtonClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 412, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToAnnotationSavedToServer", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 123, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToAttachStudentAsset", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 200, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToNodeSubmitClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 137, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToNotebookItemChosen", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 159, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToNotifyConnectedComponents", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 147, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToRequestComponentState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 289, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToStudentWorkSavedToServer", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 252, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToSubscriptions", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 113, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "tryDisableComponent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 445, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "ComponentHeaderComponent", + "type": "component" + }, + { + "name": "MatButton" + }, + { + "name": "AddToNotebookButtonComponent", + "type": "component" + }, + { + "name": "MatTooltip" + }, + { + "name": "MatIcon" + }, + { + "name": "MatRadioGroup" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatRadioButton" + }, + { + "name": "ComponentSaveSubmitButtonsComponent", + "type": "component" + }, + { + "name": "ComponentAnnotationsComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import SVG from 'svg.js';\nimport 'svg.draggable.js';\nimport { ChangeDetectorRef, Component } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { AnnotationService } from '../../../services/annotationService';\nimport { ConfigService } from '../../../services/configService';\nimport { NodeService } from '../../../services/nodeService';\nimport { NotebookService } from '../../../services/notebookService';\nimport { ProjectService } from '../../../services/projectService';\nimport { StudentAssetService } from '../../../services/studentAssetService';\nimport { StudentDataService } from '../../../services/studentDataService';\nimport { ComponentStudent } from '../../component-student.component';\nimport { ComponentService } from '../../componentService';\nimport { ConceptMapService } from '../conceptMapService';\nimport { DialogWithCloseComponent } from '../../../directives/dialog-with-close/dialog-with-close.component';\nimport { copy } from '../../../common/object/object';\nimport { convertToPNGFile } from '../../../common/canvas/canvas';\nimport { hasConnectedComponent } from '../../../common/ComponentContent';\nimport { ComponentHeaderComponent } from '../../../directives/component-header/component-header.component';\nimport { MatButton } from '@angular/material/button';\nimport { AddToNotebookButtonComponent } from '../../../directives/add-to-notebook-button/add-to-notebook-button.component';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatRadioGroup, MatRadioButton } from '@angular/material/radio';\nimport { FormsModule } from '@angular/forms';\nimport { ComponentSaveSubmitButtonsComponent } from '../../../directives/component-save-submit-buttons/component-save-submit-buttons.component';\nimport { ComponentAnnotationsComponent } from '../../../directives/componentAnnotations/component-annotations.component';\n\n@Component({\n imports: [\n ComponentHeaderComponent,\n MatButton,\n AddToNotebookButtonComponent,\n MatTooltip,\n MatIcon,\n MatRadioGroup,\n FormsModule,\n MatRadioButton,\n ComponentSaveSubmitButtonsComponent,\n ComponentAnnotationsComponent\n ],\n selector: 'concept-map-student',\n styleUrl: 'concept-map-student.component.scss',\n templateUrl: 'concept-map-student.component.html'\n})\nexport class ConceptMapStudent extends ComponentStudent {\n activeLink: any;\n activeLinkStartX: number;\n activeLinkStartY: number;\n activeNode: any;\n addedDropListener: any;\n autoFeedbackResult: any;\n autoFeedbackString: string = '';\n availableNodes: any[] = [];\n availableLinks: any[] = [];\n background: any;\n backgroundSize: string;\n backgroundUrl: string = '';\n componentStateId: number;\n componentTypesCanImportAsBackground: string[] = ['Draw', 'Embedded', 'Graph', 'Label', 'Table'];\n conceptMapContainerId: string;\n displayLinkTypeChooser: boolean = false;\n domIdEnding: string;\n dragOverListenerFunction: any;\n draw: any;\n drawingLink: any;\n dropListenerFunction: any;\n feedbackContainerId: string;\n height: number = 600;\n highlightedElement: any;\n linkCurvatureSet: boolean;\n links: any[] = [];\n linksTitle: string = 'Links';\n linkTypeChooserStyle: any;\n modalHeight: number = 600;\n modalWidth: number = 800;\n newlyCreatedLink: any;\n nodes: any[] = [];\n selectedLinkType: string;\n selectedNode: any;\n selectNodeBarId: string;\n stretchBackground: any;\n svgId: string;\n tempOffsetX: number = 0;\n tempOffsetY: number = 0;\n width: number = 800;\n\n constructor(\n protected annotationService: AnnotationService,\n private changeDetector: ChangeDetectorRef,\n protected componentService: ComponentService,\n protected configService: ConfigService,\n private conceptMapService: ConceptMapService,\n protected dialog: MatDialog,\n protected nodeService: NodeService,\n protected notebookService: NotebookService,\n private projectService: ProjectService,\n protected studentAssetService: StudentAssetService,\n protected studentDataService: StudentDataService\n ) {\n super(\n annotationService,\n componentService,\n configService,\n dialog,\n nodeService,\n notebookService,\n studentAssetService,\n studentDataService\n );\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n this.initialize();\n }\n\n ngAfterViewInit(): void {\n this.initializeSVG();\n this.changeDetector.detectChanges(); // prevents dev-mode change detection error\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n const svg = this.getElementById(this.svgId, true);\n svg.removeEventListener('dragover', this.dragOverListenerFunction);\n svg.removeEventListener('drop', this.dropListenerFunction);\n }\n\n initialize(): void {\n this.setIdsWithNodeIdComponentId();\n this.initializeWidth();\n this.initializeHeight();\n this.initializeShowNodeLabels();\n this.initializeLinksTitle();\n this.availableNodes = this.componentContent.nodes;\n this.availableLinks = this.componentContent.links;\n this.setBackground(this.componentContent.background, this.componentContent.stretchBackground);\n }\n\n setIdsWithNodeIdComponentId(): void {\n this.domIdEnding = this.conceptMapService.getDomIdEnding(\n this.nodeId,\n this.componentId,\n this.componentState\n );\n this.svgId = this.conceptMapService.getSVGId(this.domIdEnding);\n this.conceptMapContainerId = this.conceptMapService.getConceptMapContainerId(this.domIdEnding);\n this.selectNodeBarId = this.conceptMapService.getSelectNodeBarId(this.domIdEnding);\n this.feedbackContainerId = this.conceptMapService.getFeedbackContainerId(this.domIdEnding);\n }\n\n initializeWidth(): void {\n if (this.componentContent.width != null) {\n this.width = this.componentContent.width;\n }\n }\n\n initializeHeight(): void {\n if (this.componentContent.height != null) {\n this.height = this.componentContent.height;\n }\n }\n\n initializeShowNodeLabels(): void {\n if (this.componentContent.showNodeLabels == null) {\n this.componentContent.showNodeLabels = true;\n }\n }\n\n initializeLinksTitle(): void {\n if (this.componentContent.linksTitle != null && this.componentContent.linksTitle !== '') {\n this.linksTitle = this.componentContent.linksTitle;\n }\n }\n\n initializeSVG(): void {\n this.setupSVG();\n if (hasConnectedComponent(this.componentContent, 'showWork')) {\n this.handleConnectedComponents();\n } else if (this.componentStateHasStudentWork(this.componentState, this.componentContent)) {\n this.componentState = this.projectService.injectAssetPaths(this.componentState);\n this.setStudentWork(this.componentState);\n } else if (this.component.hasConnectedComponent()) {\n this.handleConnectedComponents();\n } else if (this.componentContentHasStarterConceptMap()) {\n this.populateConceptMapData(this.componentContent.starterConceptMap);\n }\n if (this.hasMaxSubmitCountAndUsedAllSubmits()) {\n this.disableSubmitButton();\n }\n if (!this.isDisabled) {\n this.enableNodeDragging();\n this.addStudentInteractionListeners();\n }\n this.disableComponentIfNecessary();\n this.broadcastDoneRenderingComponent();\n }\n\n componentStateHasStudentWork(componentState: any, componentContent: any): boolean {\n return this.conceptMapService.componentStateHasStudentWork(componentState, componentContent);\n }\n\n componentContentHasStarterConceptMap(): boolean {\n return this.componentContent.starterConceptMap != null;\n }\n\n setStudentWork(componentState: any): void {\n const studentData = componentState.studentData;\n const conceptMapData = studentData.conceptMapData;\n const submitCounter = studentData.submitCounter;\n if (submitCounter != null) {\n this.submitCounter = submitCounter;\n }\n this.populateConceptMapData(conceptMapData);\n this.processLatestStudentWork();\n }\n\n populateConceptMapData(conceptMapData: any): void {\n this.populateNodes(conceptMapData);\n this.populateLinks(conceptMapData);\n if (conceptMapData.backgroundPath != null && conceptMapData.backgroundPath != '') {\n this.setBackground(conceptMapData.backgroundPath, conceptMapData.stretchBackground);\n }\n this.moveLinkTextToFront();\n this.moveNodesToFront();\n\n // set a timeout to refresh the link labels so the rectangles around the labels are properly\n // resized\n setTimeout(() => {\n this.refreshLinkLabels();\n });\n }\n\n populateNodes(conceptMapData: any): void {\n this.nodes = [];\n for (const node of conceptMapData.nodes) {\n const conceptMapNode = this.conceptMapService.newConceptMapNode(\n this.draw,\n node.instanceId,\n node.originalId,\n node.fileName,\n node.label,\n node.x,\n node.y,\n node.width,\n node.height,\n this.componentContent.showNodeLabels\n );\n this.addNode(conceptMapNode);\n if (!this.isDisabled) {\n this.setNodeMouseEvents(conceptMapNode);\n }\n }\n }\n\n populateLinks(conceptMapData: any): void {\n this.links = [];\n for (const link of conceptMapData.links) {\n let sourceNode = null;\n const sourceNodeId = link.sourceNodeInstanceId;\n if (sourceNodeId != null) {\n sourceNode = this.getNodeById(sourceNodeId);\n }\n\n let destinationNode = null;\n const destinationNodeId = link.destinationNodeInstanceId;\n if (destinationNodeId != null) {\n destinationNode = this.getNodeById(destinationNodeId);\n }\n\n const conceptMapLink = this.conceptMapService.newConceptMapLink(\n this.draw,\n link.instanceId,\n link.originalId,\n sourceNode,\n destinationNode,\n link.label,\n link.color,\n link.curvature,\n link.startCurveUp,\n link.endCurveUp\n );\n this.addLink(conceptMapLink);\n if (!this.isDisabled) {\n this.setLinkMouseEvents(conceptMapLink);\n }\n }\n }\n\n /**\n * Refresh the link labels so that the rectangles around the text labels are resized to fit the\n * text properly. This is required because the rectangles are not properly sized when the\n * ConceptMapLinks are initialized. The rectangles need to be rendered first and then the labels\n * need to be set in order for the rectangles to be resized properly. This is why this function is\n * called in a seTimeout.\n */\n refreshLinkLabels(): void {\n for (const node of this.nodes) {\n if (node.showLabel) {\n const label = node.getLabel();\n // set the label back into the node so that the rectangle around the text label is resized\n // to the text\n node.setLabel(label);\n }\n }\n\n for (const link of this.links) {\n const label = link.getLabel();\n // set the label back into the link so that the rectangle around the text label is resized to\n // the text\n link.setLabel(label);\n }\n }\n\n /**\n * A submit was triggered by the component submit button or node submit button\n * @param submitTriggeredBy what triggered the submit\n * e.g. 'componentSubmitButton' or 'nodeSubmitButton'\n */\n submit(submitTriggeredBy: string): void {\n if (this.isSubmitDirty) {\n if (this.checkIfShouldPerformSubmit()) {\n this.incrementSubmitCounter();\n if (this.hasMaxSubmitCount() && !this.hasSubmitsLeft()) {\n this.isSubmitButtonDisabled = true;\n }\n if (this.hasAutoGrading()) {\n this.performAutoGrading();\n }\n this.performSubmit(submitTriggeredBy);\n } else {\n this.setIsSubmit(false);\n }\n }\n }\n\n checkIfShouldPerformSubmit(): boolean {\n let performSubmit = true;\n if (this.hasMaxSubmitCount()) {\n const numberOfSubmitsLeft = this.getNumberOfSubmitsLeft();\n let message = '';\n if (numberOfSubmitsLeft <= 0) {\n alert($localize`You have no more chances to receive feedback on your answer.`);\n performSubmit = false;\n } else if (numberOfSubmitsLeft === 1) {\n message = $localize`You have 1 chance to receive feedback on your answer so this should be your best work.\\n\\nAre you ready to receive feedback on this answer?`;\n performSubmit = confirm(message);\n } else if (numberOfSubmitsLeft > 1) {\n message = $localize`You have ${numberOfSubmitsLeft} chances to receive feedback on your answer so this this should be your best work.\\n\\nAre you ready to receive feedback on this answer?`;\n performSubmit = confirm(message);\n }\n }\n return performSubmit;\n }\n\n hasAutoGrading(): boolean {\n return (\n this.componentContent.customRuleEvaluator != null &&\n this.componentContent.customRuleEvaluator != ''\n );\n }\n\n performAutoGrading(): void {\n const customRuleEvaluator = this.componentContent.customRuleEvaluator;\n const componentContent = this.componentContent;\n const conceptMapData = this.getConceptMapData();\n const thisConceptMapService = this.conceptMapService;\n let thisResult: any = {};\n\n /*\n * Create the any function that can be called in the custom rule evaluator code. The arguments\n * to the any function are rule names. For example if we are looking for any of the links below\n * Sun (Infrared Radiation) Space\n * Sun (Heat) Space\n * Sun (Solar Radiation) Space\n * We will call the any function like this\n * any(\"Sun (Infrared Radiation) Space\", \"Sun (Heat) Space\", \"Sun (Solar Radiation) Space\")\n * These arguments to the any function will be placed in the arguments variable.\n */\n const any = function () {\n return thisConceptMapService.any(componentContent, conceptMapData, arguments);\n };\n\n /*\n * Create the all function that can be called in the custom rule evaluator code. The arguments\n * to the all function are rule names. For example if we are looking for all of the links below\n * Sun (Infrared Radiation) Space\n * Sun (Heat) Space\n * Sun (Solar Radiation) Space\n * We will call the all function like this\n * all(\"Sun (Infrared Radiation) Space\", \"Sun (Heat) Space\", \"Sun (Solar Radiation) Space\")\n * These arguments to the all function will be placed in the arguments variable.\n */\n const all = function () {\n return thisConceptMapService.all(componentContent, conceptMapData, arguments);\n };\n\n // Create the setResult function that can be called in the custom rule evaluator code.\n const setResult = function (result: any) {\n thisResult = result;\n };\n\n eval(customRuleEvaluator);\n this.autoFeedbackResult = thisResult;\n const feedback = this.getFeedbackFromResult(thisResult);\n if (feedback != '') {\n this.showFeedbackInPopup(feedback);\n }\n this.autoFeedbackString = feedback;\n }\n\n getFeedbackFromResult(result: any): string {\n let feedback = '';\n if (this.componentContent.showAutoScore && result.score != null) {\n feedback += $localize`Score` + ': ' + result.score;\n if (this.hasMaxScore()) {\n feedback += '/' + this.getMaxScore();\n }\n }\n if (this.componentContent.showAutoFeedback && result.feedback != null) {\n if (feedback !== '') {\n feedback += '
';\n }\n feedback += $localize`Feedback` + ': ' + result.feedback;\n }\n return feedback;\n }\n\n showFeedbackInPopup(feedbackText: string): void {\n this.dialog.open(DialogWithCloseComponent, {\n data: {\n content: feedbackText,\n title: $localize`Feedback`\n }\n });\n }\n\n /**\n * Create a new component state populated with the student data\n * @param action the action that is triggering creating of this component state\n * e.g. 'submit', 'save', 'change'\n * @return a promise that will return a component state\n */\n createComponentState(action: string): Promise {\n const componentState = this.createComponentStateObject();\n const promise = new Promise((resolve, reject) => {\n this.createComponentStateAdditionalProcessing(\n { resolve: resolve, reject: reject },\n componentState,\n action\n );\n });\n return promise;\n }\n\n createComponentStateObject(): any {\n const componentState: any = this.createNewComponentState();\n componentState.componentType = 'ConceptMap';\n componentState.nodeId = this.nodeId;\n componentState.componentId = this.componentId;\n componentState.isSubmit = this.isSubmit;\n const studentData: any = {\n conceptMapData: this.getConceptMapData(),\n submitCounter: this.submitCounter\n };\n componentState.studentData = studentData;\n if (this.isSubmit) {\n this.isSubmit = false;\n if (this.hasAutoFeedbackScore() || this.hasAutoFeedbackText()) {\n this.addAnnotations(componentState);\n } else if (this.hasDefaultFeedback()) {\n this.addDefaultFeedback(componentState);\n }\n }\n return componentState;\n }\n\n addAnnotations(componentState: any): void {\n const runId = this.configService.getRunId();\n const periodId = this.configService.getPeriodId();\n const nodeId = this.nodeId;\n const componentId = this.componentId;\n const toWorkgroupId = this.configService.getWorkgroupId();\n componentState.annotations = [];\n if (this.hasAutoFeedbackScore()) {\n this.addScoreAnnotation(componentState, runId, periodId, nodeId, componentId, toWorkgroupId);\n }\n if (this.hasAutoFeedbackText()) {\n this.addCommentAnnotation(\n componentState,\n runId,\n periodId,\n nodeId,\n componentId,\n toWorkgroupId\n );\n }\n }\n\n addScoreAnnotation(\n componentState: any,\n runId: number,\n periodId: number,\n nodeId: string,\n componentId: string,\n toWorkgroupId: number\n ): void {\n const data: any = {\n value: parseFloat(this.autoFeedbackResult.score),\n autoGrader: 'conceptMap'\n };\n if (this.hasMaxScore()) {\n data.maxAutoScore = this.getMaxScore();\n }\n const scoreAnnotation = this.annotationService.createAutoScoreAnnotation(\n runId,\n periodId,\n nodeId,\n componentId,\n toWorkgroupId,\n data\n );\n componentState.annotations.push(scoreAnnotation);\n }\n\n addCommentAnnotation(\n componentState: any,\n runId: number,\n periodId: number,\n nodeId: string,\n componentId: string,\n toWorkgroupId: number\n ): void {\n const data = {\n value: this.autoFeedbackResult.feedback,\n autoGrader: 'conceptMap'\n };\n const commentAnnotation = this.annotationService.createAutoCommentAnnotation(\n runId,\n periodId,\n nodeId,\n componentId,\n toWorkgroupId,\n data\n );\n componentState.annotations.push(commentAnnotation);\n }\n\n hasAutoFeedback(): boolean {\n return this.autoFeedbackResult != null;\n }\n\n hasAutoFeedbackScore(): boolean {\n return this.autoFeedbackResult != null && this.autoFeedbackResult.score != null;\n }\n\n hasAutoFeedbackText(): boolean {\n return this.autoFeedbackResult != null && this.autoFeedbackResult.feedback != null;\n }\n\n getConceptMapData(): any {\n const conceptMapData: any = {\n nodes: [],\n links: []\n };\n\n for (const node of this.nodes) {\n const nodeJSON = node.toJSONObject();\n conceptMapData.nodes.push(nodeJSON);\n }\n\n for (const link of this.links) {\n const linkJSON = link.toJSONObject();\n conceptMapData.links.push(linkJSON);\n }\n\n if (this.background != null) {\n const background = this.background;\n conceptMapData.background = this.getBackgroundFileName(background);\n conceptMapData.backgroundPath = background;\n conceptMapData.stretchBackground = this.stretchBackground;\n }\n\n return conceptMapData;\n }\n\n getBackgroundFileName(background: string): string {\n return background.substring(background.lastIndexOf('/') + 1);\n }\n\n createAutoScoreAnnotation(data: any): any {\n return this.annotationService.createAutoScoreAnnotation(\n this.configService.getRunId(),\n this.configService.getPeriodId(),\n this.nodeId,\n this.componentId,\n this.configService.getWorkgroupId(),\n data\n );\n }\n\n createAutoCommentAnnotation(data: any): any {\n return this.annotationService.createAutoCommentAnnotation(\n this.configService.getRunId(),\n this.configService.getPeriodId(),\n this.nodeId,\n this.componentId,\n this.configService.getWorkgroupId(),\n data\n );\n }\n\n linkTypeSelected(selectedLink: any): void {\n if (this.highlightedElement != null && this.highlightedElement.type === 'ConceptMapLink') {\n const link = this.highlightedElement;\n link.setLabel(selectedLink.label);\n link.setColor(selectedLink.color);\n link.setOriginalId(selectedLink.id);\n }\n this.clearHighlightedElement();\n this.studentDataChanged();\n }\n\n showLinkTypeChooser(): void {\n this.displayLinkTypeChooser = true;\n }\n\n hideLinkTypeChooser(): void {\n this.displayLinkTypeChooser = false;\n this.newlyCreatedLink = null;\n }\n\n setupSVG(): void {\n this.draw = SVG(this.svgId);\n this.draw.width(this.width);\n this.draw.height(this.height);\n this.highlightedElement = null;\n this.activeNode = null;\n this.activeLink = null;\n this.drawingLink = false;\n this.newlyCreatedLink = null;\n }\n\n addStudentInteractionListeners(): void {\n this.addMouseListeners();\n this.addDragOverListenerIfNecessary();\n this.addDropListenerIfNecessary();\n }\n\n addMouseListeners(): void {\n this.draw.mousedown((event: any) => {\n this.svgMouseDown(event);\n });\n\n this.draw.mouseup((event: any) => {\n this.svgMouseUp(event);\n });\n\n this.draw.mousemove((event: any) => {\n this.svgMouseMove(event);\n });\n }\n\n addDragOverListenerIfNecessary(): void {\n // check if we have already added the dragover listener so we don't add multiple listeners for\n // the same event. adding multiple listeners to the same event may occur in the authoring tool.\n if (this.dragOverListenerFunction == null) {\n this.dragOverListenerFunction = (event: any) => {\n // prevent the default because if we don't, the user won't be able to drop a new node\n // instance onto the svg in the authoring preview mode\n event.preventDefault();\n };\n const svg = this.getElementById(this.svgId, true);\n svg.addEventListener('dragover', this.dragOverListenerFunction);\n }\n }\n\n addDropListenerIfNecessary(): void {\n // check if we have already added the drop listener so we don't add multiple listeners for the\n // same event. adding multiple listeners to the same event may occur in the authoring tool.\n if (this.dropListenerFunction == null) {\n this.dropListenerFunction = (event: any) => {\n // the user has dropped a new node onto the svg to create a new instance of a node\n this.newNodeDropped(event);\n };\n const svg = this.getElementById(this.svgId, true);\n svg.addEventListener('drop', this.dropListenerFunction);\n }\n }\n\n getModalWidth(): number {\n const selectNodeBarWidthString = this.getElementById(this.selectNodeBarId).css('width');\n const svgWidthString = this.getElementById(this.svgId).css('width');\n if (selectNodeBarWidthString != null && svgWidthString != null) {\n const selectNodeBarWidth = parseInt(selectNodeBarWidthString.replace('px', ''));\n const svgWidth = parseInt(svgWidthString.replace('px', ''));\n if (selectNodeBarWidth != null && svgWidth != null) {\n return selectNodeBarWidth + svgWidth;\n }\n }\n return null;\n }\n\n getModalHeight(): number {\n const selectNodeBarHeightString = this.getElementById(this.selectNodeBarId).css('height');\n const svgHeightString = this.getElementById(this.svgId).css('height');\n if (selectNodeBarHeightString != null && svgHeightString != null) {\n const selectNodeBarHeight = parseInt(selectNodeBarHeightString.replace('px', ''));\n const svgHeight = parseInt(svgHeightString.replace('px', ''));\n if (selectNodeBarHeight != null && svgHeight != null) {\n return Math.max(selectNodeBarHeight, svgHeight);\n }\n }\n return null;\n }\n\n cancelLinkTypeChooser(): void {\n if (this.newlyCreatedLink != null) {\n // the student has just created this link and has not yet chosen a link type so we will remove\n // the link\n this.newlyCreatedLink.remove();\n this.newlyCreatedLink = null;\n }\n this.hideLinkTypeChooser();\n this.clearHighlightedElement();\n }\n\n svgMouseDown(event: any): void {\n if (event.target.tagName === 'svg') {\n this.clearHighlightedElement();\n }\n }\n\n svgMouseUp(event: any): void {\n if (this.activeLink != null && this.activeNode == null) {\n // the student was creating a link but did not connect the link to a destination node so we\n // will just remove the link\n this.activeLink.remove();\n }\n this.drawingLink = false;\n this.activeLink = null;\n if (!this.isDisabled) {\n this.enableNodeDragging();\n }\n this.moveLinkTextToFront();\n this.moveNodesToFront();\n }\n\n svgMouseMove(event: any): void {\n if (this.activeLink != null) {\n // there is an active link which means the student has created a new link and is in the\n // process of choosing the link's destination node\n\n // get the coordinates that the link should be updated to\n const coordinates = this.getRelativeCoordinatesByEvent(event);\n const x1 = null;\n const y1 = null;\n const x2 = coordinates.x;\n const y2 = coordinates.y;\n\n // get the location of the center of the connector that the link originated from\n const startX = this.activeLinkStartX;\n const startY = this.activeLinkStartY;\n\n // get the distance from the start to the current position of the mouse\n const distance = this.conceptMapService.calculateDistance(startX, startY, x2, y2);\n\n // check if we have set the curvature yet and that the mouse is more than 20 pixels away from\n // the start.\n //\n // we will determine the curvature of the link based upon how the user has dragged the mouse\n // in relation to the center of the connector. if they start drawing the link horizontally we\n // will create a straight line with no curvature. if they start drawing the link by moving the\n // mouse up, we will create a line that curves up. if they start drawing the link by moving\n // the mouse down, we will create a line that curves down.\n if (!this.linkCurvatureSet && distance > 20) {\n // get the slope of the line from the start to the location of the mouse\n const slope = Math.abs(this.conceptMapService.getSlope(startX, startY, x2, y2));\n if (y2 < startY) {\n // the user has moved the mouse above the connector\n this.setActiveLinkCurvature(slope);\n this.setLinkCurveUp(this.activeLink);\n } else if (y2 > startY) {\n // the user has moved the mouse below the connector\n this.setActiveLinkCurvature(slope);\n this.setLinkCurveDown(this.activeLink);\n }\n this.linkCurvatureSet = true;\n }\n\n const isDragging = true;\n this.activeLink.updateCoordinates(x1, y1, x2, y2, isDragging);\n }\n }\n\n setActiveLinkCurvature(slope: number): void {\n if (slope == null) {\n // the slope is infinite so we will default the curvature to 0.5\n this.activeLink.curvature = 0.5;\n } else if (slope < 1.0) {\n // make the link straight\n this.activeLink.curvature = 0.0;\n } else {\n // make the link curved\n this.activeLink.curvature = 0.5;\n }\n }\n\n setLinkCurveUp(link: any): void {\n this.setLinkCurveDirection(link, true);\n }\n\n setLinkCurveDown(link: any): void {\n this.setLinkCurveDirection(link, false);\n }\n\n setLinkCurveDirection(link: any, isCurveDirectionUp: boolean): void {\n link.startCurveUp = isCurveDirectionUp;\n link.endCurveUp = isCurveDirectionUp;\n }\n\n /**\n * This is called when the student places the mouse over a node.\n * @param node the node to make active\n */\n setActiveNode(node: any): void {\n node.showDeleteButton();\n node.showBorder();\n this.activeNode = node;\n }\n\n clearActiveNode(): void {\n for (const node of this.nodes) {\n if (node === this.activeNode && node !== this.highlightedElement) {\n node.hideDeleteButton();\n node.hideBorder();\n }\n }\n this.activeNode = null;\n }\n\n /**\n * Get the coordinates of the mouse relative to the svg element\n * @param event a mouse event\n * @returns an object containing x and y values\n */\n getRelativeCoordinatesByEvent(event: any): any {\n let parentOffsetX = 0;\n let parentOffsetY = 0;\n const userAgent = navigator.userAgent;\n switch (event.target.tagName) {\n case 'svg':\n ({ parentOffsetX, parentOffsetY } = this.getParentOffsetsFromSVG(event, userAgent));\n break;\n case 'circle':\n ({ parentOffsetX, parentOffsetY } = this.getParentOffsetsFromCircle(event, userAgent));\n break;\n case 'rect':\n ({ parentOffsetX, parentOffsetY } = this.getParentOffsetsFromRect(event, userAgent));\n break;\n case 'image':\n ({ parentOffsetX, parentOffsetY } = this.getParentOffsetsFromImage(event, userAgent));\n break;\n case 'path':\n ({ parentOffsetX, parentOffsetY } = this.getParentOffsetsFromPath(event, userAgent));\n break;\n default:\n ({ parentOffsetX, parentOffsetY } = this.getParentOffsetsFromDefault(event, userAgent));\n }\n return {\n x: parentOffsetX + event.offsetX,\n y: parentOffsetY + event.offsetY\n };\n }\n\n getParentOffsetsFromSVG(event: any, userAgent: string): any {\n let parentOffsetX = 0;\n let parentOffsetY = 0;\n if (this.isUserAgentChrome(userAgent)) {\n const matrix = event.target.getCTM();\n parentOffsetX = matrix.e;\n parentOffsetY = matrix.f;\n } else if (this.isUserAgentFirefox(userAgent)) {\n const matrix = event.target.createSVGMatrix();\n parentOffsetX = matrix.e;\n parentOffsetY = matrix.f;\n } else {\n const matrix = event.target.getCTM();\n parentOffsetX = matrix.e;\n parentOffsetY = matrix.f;\n }\n return {\n parentOffsetX: parentOffsetX,\n parentOffsetY: parentOffsetY\n };\n }\n\n getParentOffsetsFromCircle(event: any, userAgent: string): any {\n let parentOffsetX = 0;\n let parentOffsetY = 0;\n if (this.isUserAgentFirefox(userAgent)) {\n const matrix = event.target.getCTM();\n const bbox = event.target.getBBox();\n parentOffsetX = matrix.e + bbox.x;\n parentOffsetY = matrix.f + bbox.y;\n }\n return {\n parentOffsetX: parentOffsetX,\n parentOffsetY: parentOffsetY\n };\n }\n\n getParentOffsetsFromRect(event: any, userAgent: string): any {\n let parentOffsetX = 0;\n let parentOffsetY = 0;\n if (this.isUserAgentFirefox(userAgent)) {\n const matrix = event.target.getCTM();\n const bbox = event.target.getBBox();\n const x = bbox.x;\n const y = bbox.y;\n parentOffsetX = matrix.e + x;\n parentOffsetY = matrix.f + y;\n }\n return {\n parentOffsetX: parentOffsetX,\n parentOffsetY: parentOffsetY\n };\n }\n\n getParentOffsetsFromImage(event: any, userAgent: string): any {\n let parentOffsetX = 0;\n let parentOffsetY = 0;\n if (this.isUserAgentFirefox(userAgent)) {\n const matrix = event.target.parentElement.getCTM();\n parentOffsetX = matrix.e;\n parentOffsetY = matrix.f;\n }\n return {\n parentOffsetX: parentOffsetX,\n parentOffsetY: parentOffsetY\n };\n }\n\n getParentOffsetsFromPath(event: any, userAgent: string): any {\n let parentOffsetX = 0;\n let parentOffsetY = 0;\n if (this.isUserAgentFirefox(userAgent)) {\n const x2 = event.target.attributes['x2'];\n const y2 = event.target.attributes['y2'];\n if (x2 != null && y2 != null) {\n parentOffsetX = parseInt(x2.value);\n parentOffsetY = parseInt(y2.value);\n }\n }\n return {\n parentOffsetX: parentOffsetX,\n parentOffsetY: parentOffsetY\n };\n }\n\n getParentOffsetsFromDefault(event: any, userAgent: string): any {\n let parentOffsetX = 0;\n let parentOffsetY = 0;\n if (this.isUserAgentChrome(userAgent)) {\n } else if (this.isUserAgentFirefox(userAgent)) {\n const matrix = event.target.getCTM();\n parentOffsetX = matrix.e;\n parentOffsetY = matrix.f;\n }\n return {\n parentOffsetX: parentOffsetX,\n parentOffsetY: parentOffsetY\n };\n }\n\n isUserAgentChrome(userAgent: string): boolean {\n return userAgent.includes('Chrome');\n }\n\n isUserAgentFirefox(userAgent: string): boolean {\n return userAgent.includes('Firefox');\n }\n\n /**\n * Called when the student clicks down on a node in the left node bar\n * @param $event the mouse down event\n * @param node the node the student clicked down on\n */\n selectNode($event: any, node: any): void {\n this.selectedNode = node;\n\n // remember the offset of the mouse relative to the upper left of the node's image so that we\n // properly calculate the node position when the student releases the mouse to put the node in\n // the svg\n this.tempOffsetX = $event.offsetX;\n this.tempOffsetY = $event.offsetY;\n }\n\n newNodeDropped(event: any): void {\n const selectedNode = this.selectedNode;\n const coordinates = this.getRelativeCoordinatesByEvent(event);\n const x = coordinates.x - this.tempOffsetX;\n const y = coordinates.y - this.tempOffsetY;\n const conceptMapNode = this.conceptMapService.newConceptMapNode(\n this.draw,\n this.getNewConceptMapNodeId(),\n selectedNode.id,\n selectedNode.fileName,\n selectedNode.label,\n x,\n y,\n selectedNode.width,\n selectedNode.height,\n this.componentContent.showNodeLabels\n );\n this.addNode(conceptMapNode);\n this.setNodeMouseEvents(conceptMapNode);\n this.setHighlightedElement(conceptMapNode);\n this.studentDataChanged();\n if (!this.isDisabled) {\n this.enableNodeDragging();\n }\n }\n\n getNewConceptMapNodeId(): any {\n return this.conceptMapService.getNextAvailableId(this.nodes, 'studentNode');\n }\n\n getNewConceptMapLinkId(): any {\n return this.conceptMapService.getNextAvailableId(this.links, 'studentLink');\n }\n\n setNodeMouseEvents(conceptMapNode: any): void {\n conceptMapNode.setNodeMouseOver((event: any) => {\n this.nodeMouseOver(event);\n });\n\n conceptMapNode.setNodeMouseOut((event: any) => {\n this.nodeMouseOut(event);\n });\n\n conceptMapNode.setConnectorMouseDown((event: any) => {\n this.disableNodeDragging();\n this.connectorMouseDown(event);\n });\n\n conceptMapNode.setNodeMouseDown((event: any) => {\n this.nodeMouseDown(event);\n });\n\n conceptMapNode.setNodeMouseUp((event: any) => {\n this.nodeMouseUp(event);\n });\n\n conceptMapNode.setDeleteButtonMouseDown((event: any) => {\n this.nodeDeleteButtonMouseDown(event);\n });\n\n conceptMapNode.setDeleteButtonMouseOver((event: any) => {\n this.nodeDeleteButtonMouseOver(event);\n });\n\n conceptMapNode.setDeleteButtonMouseOut((event: any) => {\n this.nodeDeleteButtonMouseOut(event);\n });\n\n conceptMapNode.setDragMove((event: any) => {\n this.nodeDragMove(event);\n });\n }\n\n setHighlightedElement(element: any): void {\n this.clearHighlightedElement();\n this.hideLinkTypeChooser();\n this.highlightedElement = element;\n element.isHighlighted(true);\n element.showDeleteButton();\n if (element.type === 'ConceptMapNode') {\n element.showBorder();\n } else if (element.type === 'ConceptMapLink') {\n this.showLinkTypeChooser();\n this.selectedLinkType = element.getOriginalId();\n }\n }\n\n clearHighlightedElement(): void {\n if (this.highlightedElement != null) {\n if (this.highlightedElement.type === 'ConceptMapNode') {\n this.highlightedElement.hideBorder();\n } else if (this.highlightedElement.type === 'ConceptMapLink') {\n this.hideLinkTypeChooser();\n }\n this.highlightedElement.isHighlighted(false);\n this.highlightedElement.hideDeleteButton();\n this.highlightedElement = null;\n }\n }\n\n enableNodeDragging(): void {\n for (const node of this.nodes) {\n const group = node.getGroup();\n const options = {\n minX: 0,\n minY: 0,\n maxX: this.width,\n maxY: this.height\n };\n group.draggable(options);\n }\n }\n\n disableNodeDragging(): void {\n for (const node of this.nodes) {\n const group = node.getGroup();\n group.draggable(false);\n }\n }\n\n moveLinkTextToFront(): void {\n this.conceptMapService.moveLinkTextToFront(this.links);\n }\n\n moveNodesToFront(): void {\n this.conceptMapService.moveNodesToFront(this.nodes);\n }\n\n addNode(node: any): void {\n this.nodes.push(node);\n }\n\n removeNode(node: any): void {\n const outgoingLinks = node.getOutgoingLinks();\n let numOutgoingLinks = outgoingLinks.length;\n while (numOutgoingLinks > 0) {\n const outgoingLink = outgoingLinks[0];\n this.removeLink(outgoingLink);\n numOutgoingLinks--;\n }\n\n const incomingLinks = node.getIncomingLinks();\n let numIncomingLinks = incomingLinks.length;\n while (numIncomingLinks > 0) {\n const incomingLink = incomingLinks[0];\n this.removeLink(incomingLink);\n numIncomingLinks--;\n }\n\n node.remove();\n\n for (let n = 0; n < this.nodes.length; n++) {\n const tempNode = this.nodes[n];\n if (tempNode == node) {\n this.nodes.splice(n, 1);\n break;\n }\n }\n }\n\n removeAllNodes(): void {\n for (const node of this.nodes) {\n node.remove();\n }\n this.nodes = [];\n }\n\n getNodeById(id: string): any {\n return this.nodes.find((node) => {\n return node.getId() === id;\n });\n }\n\n getNodeByGroupId(id: string): any {\n return this.nodes.find((node) => {\n return node.getGroupId() === id;\n });\n }\n\n getLinkById(id: string): any {\n return this.links.find((link) => {\n return link.getId() === id;\n });\n }\n\n getLinkByGroupId(id: string): any {\n return this.links.find((link) => {\n return link.getGroupId() === id;\n });\n }\n\n getNodeByConnectorId(id: string): any {\n return this.nodes.find((node) => {\n return node.getConnectorId() === id;\n });\n }\n\n addLink(link: any): void {\n this.links.push(link);\n }\n\n removeLink(link: any): void {\n link.remove();\n for (let l = 0; l < this.links.length; l++) {\n const tempLink = this.links[l];\n if (tempLink === link) {\n this.links.splice(l, 1);\n break;\n }\n }\n }\n\n removeAllLinks(): void {\n for (const link of this.links) {\n link.remove();\n }\n this.links = [];\n }\n\n nodeMouseOver(event: any): void {\n const groupId = event.target.parentElement.id;\n const node = this.getNodeByGroupId(groupId);\n if (node != null) {\n this.setActiveNode(node);\n }\n }\n\n nodeMouseOut(event: any): void {\n const groupId = event.target.parentElement.id;\n const node = this.getNodeByGroupId(groupId);\n if (node != null) {\n this.clearActiveNode();\n }\n }\n\n nodeMouseDown(event: any): void {\n if (event.target.parentElement != null) {\n const groupId = event.target.parentElement.id;\n const node = this.getNodeByGroupId(groupId);\n if (node != null) {\n this.setHighlightedElement(node);\n }\n }\n }\n\n nodeMouseUp(event: any): void {\n if (this.isReleasingLinkOnToNode()) {\n const targetGroupId = event.target.parentElement.id;\n if (this.activeLink.sourceNode.getGroupId() === targetGroupId) {\n // the source of the link is the same as the destination so we will not create the link\n this.activeLink.remove();\n this.activeLink = null;\n } else {\n const node = this.getNodeByGroupId(targetGroupId);\n this.activeLink.setDestination(node);\n this.addLink(this.activeLink);\n this.setHighlightedElement(this.activeLink);\n this.newlyCreatedLink = this.activeLink;\n this.studentDataChanged();\n }\n }\n this.drawingLink = false;\n }\n\n isReleasingLinkOnToNode(): boolean {\n return this.drawingLink && this.activeLink != null;\n }\n\n linkDeleteButtonClicked(event: any, link: any): void {\n this.removeLink(link);\n this.studentDataChanged();\n this.hideLinkTypeChooser();\n }\n\n connectorMouseDown(event: any) {\n this.drawingLink = true;\n const connector = event.target;\n this.disableNodeDragging();\n const node = this.getNodeByConnectorId(connector.id);\n const link = this.conceptMapService.newConceptMapLink(\n this.draw,\n this.getNewConceptMapLinkId(),\n null,\n this.getNodeByConnectorId(connector.id)\n );\n this.setLinkMouseEvents(link);\n this.activeLink = link;\n this.linkCurvatureSet = false;\n this.activeLinkStartX = node.connectorCX();\n this.activeLinkStartY = node.connectorCY();\n this.setHighlightedElement(link);\n this.clearActiveNode();\n this.setActiveNode(node);\n }\n\n setLinkMouseEvents(link: any): void {\n link.setLinkMouseDown((event: any) => {\n this.linkMouseDown(event);\n });\n\n link.setLinkTextMouseDown((event: any) => {\n this.linkTextMouseDown(event);\n });\n\n link.setLinkMouseOver((event: any) => {\n this.linkMouseOver(event);\n });\n\n link.setLinkMouseOut((event: any) => {\n this.linkMouseOut(event);\n });\n\n link.setDeleteButtonClicked((event: any) => {\n this.linkDeleteButtonClicked(event, link);\n });\n }\n\n linkMouseDown(event: any): void {\n const groupId = this.getGroupId(event.target);\n const link = this.getLinkByGroupId(groupId);\n this.setHighlightedElement(link);\n }\n\n linkTextMouseDown(event: any): void {\n let linkGroupId = null;\n\n // the link group id is set into the text group in the linkGroupId variable. the text group\n // hierarchy looks like this\n // text group > text > tspan\n // text group > rect\n if (event.target.nodeName === 'tspan') {\n linkGroupId = event.target.parentElement.parentElement.linkGroupId;\n } else if (event.target.nodeName === 'text') {\n linkGroupId = event.target.parentElement.linkGroupId;\n } else if (event.target.nodeName === 'rect') {\n linkGroupId = event.target.parentElement.linkGroupId;\n }\n\n if (linkGroupId != null) {\n const link = this.getLinkByGroupId(linkGroupId);\n this.setHighlightedElement(link);\n }\n }\n\n linkMouseOver(event: any): void {\n const groupId = this.getGroupId(event.target);\n const link = this.getLinkByGroupId(groupId);\n // When the student first starts creating the link by dragging from the source node, it is\n // possible for them to mouse over the link. At this point the link instance has not been\n // created so getLinkByGroupId() will return null. The link instance is not created until the\n // student drops the end of the link on a destination node.\n if (link != null) {\n link.showDeleteButton();\n }\n }\n\n linkMouseOut(event: any): void {\n const groupId = this.getGroupId(event.target);\n const link = this.getLinkByGroupId(groupId);\n if (link != null && link != this.highlightedElement) {\n link.hideDeleteButton();\n }\n }\n\n nodeDeleteButtonMouseDown(event: any): void {\n if (event.target.parentElement != null) {\n const groupId = event.target.parentElement.parentElement.id;\n const node = this.getNodeByGroupId(groupId);\n this.removeNode(node);\n this.studentDataChanged();\n }\n }\n\n nodeDeleteButtonMouseOver(event: any): void {\n const groupId = event.target.parentElement.parentElement.id;\n const node = this.getNodeByGroupId(groupId);\n this.setActiveNode(node);\n }\n\n nodeDeleteButtonMouseOut(event: any): void {\n this.clearActiveNode();\n }\n\n nodeDragMove(event: any): void {\n const groupId = event.target.id;\n const node = this.getNodeByGroupId(groupId);\n if (node != null) {\n node.dragMove(event);\n }\n this.studentDataChanged();\n }\n\n /**\n * Get the group id of an element. All elements of a node or link are contained in a group. These\n * groups are the children of the main svg element.\n * For example a node's image element will be located here\n * svg > group > image\n * For example a link's path element will be located here\n * svg > group > path\n * @param element get the group id of this element\n * @returns the group id\n */\n getGroupId(element: any): string {\n let groupId = null;\n let currentElement = element;\n let previousId = null;\n while (currentElement != null) {\n if (currentElement.tagName === 'svg') {\n groupId = previousId;\n currentElement = null;\n } else {\n previousId = currentElement.id;\n currentElement = currentElement.parentElement;\n }\n }\n return groupId;\n }\n\n populateStarterConceptMap(): void {\n if (this.componentContent.starterConceptMap != null) {\n this.populateConceptMapData(this.componentContent.starterConceptMap);\n }\n }\n\n clearConceptMap(): void {\n this.removeAllLinks();\n this.removeAllNodes();\n }\n\n /**\n * Clear the concept map and populate the starter concept map and background if available.\n */\n resetConceptMap(): void {\n const message = $localize`Are you sure you want to reset your work?`;\n if (confirm(message)) {\n this.clearConceptMap();\n if (this.component.hasConnectedComponent()) {\n this.handleConnectedComponents();\n } else if (this.componentContent.starterConceptMap != null) {\n const conceptMapData = this.componentContent.starterConceptMap;\n this.populateConceptMapData(conceptMapData);\n }\n if (this.isBackgroundAvailable(this.componentContent)) {\n this.setBackground(\n this.componentContent.background,\n this.componentContent.stretchBackground\n );\n }\n }\n }\n\n snipImage(): void {\n const svgElement = this.getElementById(this.conceptMapService.getSVGId(this.domIdEnding), true);\n const serializer = new XMLSerializer();\n const svgString = serializer.serializeToString(svgElement);\n this.conceptMapService.getHrefToBase64ImageReplacements(svgString).then((images) => {\n const updatedSvgString = this.replaceImageRefsWithBase64Images(svgString, images);\n this.createNoteFromSvg(updatedSvgString);\n });\n }\n\n replaceImageRefsWithBase64Images(svgString: string, images: any[]): string {\n let updatedSvgString = svgString;\n for (const imagePair of images) {\n const imageHref = imagePair.imageHref;\n const base64Image = imagePair.base64Image;\n const imageRegEx = new RegExp(imageHref, 'g');\n updatedSvgString = updatedSvgString.replace(imageRegEx, base64Image);\n }\n return updatedSvgString;\n }\n\n createNoteFromSvg(svgString: string): void {\n const myCanvas = document.createElement('canvas');\n const ctx = myCanvas.getContext('2d');\n const svg = new Blob([svgString], { type: 'image/svg+xml;charset=utf-8' });\n const domURL: any = self.URL || (self as any).webkitURL || self;\n const url = domURL.createObjectURL(svg);\n const image = new Image();\n image.onload = (event) => {\n const image: any = event.target;\n myCanvas.width = image.width;\n myCanvas.height = image.height;\n ctx.drawImage(image, 0, 0);\n const pngFile = convertToPNGFile(myCanvas);\n this.notebookService.addNote(this.studentDataService.getCurrentNodeId(), pngFile);\n };\n image.src = url;\n }\n\n /**\n * Create a component state with the merged student responses\n * @param componentStates an array of component states\n * @return a component state with the merged student responses\n */\n createMergedComponentState(componentStates: any[]): any {\n let componentStateToMergeInto: any = this.createNewComponentState();\n componentStateToMergeInto.studentData = {\n conceptMapData: {\n background: null,\n backgroundPath: null,\n links: [],\n nodes: [],\n stretchBackground: null\n }\n };\n for (const componentState of componentStates) {\n if (componentState.componentType === 'ConceptMap') {\n this.mergeConceptMapComponentState(componentStateToMergeInto, componentState);\n } else if (this.componentTypesCanImportAsBackground.includes(componentState.componentType)) {\n this.mergeOtherComponentState(componentState);\n }\n }\n if (this.isBackgroundAvailable(this.componentContent)) {\n const conceptMapData = componentStateToMergeInto.studentData.conceptMapData;\n conceptMapData.backgroundPath = this.componentContent.background;\n conceptMapData.stretchBackground = this.componentContent.stretchBackground;\n }\n componentStateToMergeInto = this.projectService.injectAssetPaths(componentStateToMergeInto);\n return componentStateToMergeInto;\n }\n\n mergeConceptMapComponentState(componentStateToMergeInto: any, componentStateToMerge: any): any {\n const componentStateToMergeCopy = this.makeIdsUnique(copy(componentStateToMerge));\n const studentData = componentStateToMergeCopy.studentData;\n const conceptMapData = studentData.conceptMapData;\n const nodes = conceptMapData.nodes;\n const links = conceptMapData.links;\n const conceptMapDataToMergeInto = componentStateToMergeInto.studentData.conceptMapData;\n conceptMapDataToMergeInto.nodes.push(...nodes);\n conceptMapDataToMergeInto.links.push(...links);\n conceptMapDataToMergeInto.background = conceptMapData.background;\n conceptMapDataToMergeInto.backgroundPath = conceptMapData.backgroundPath;\n conceptMapDataToMergeInto.stretchBackground = conceptMapData.stretchBackground;\n }\n\n makeIdsUnique(componentState: any): any {\n const nodeId = componentState.nodeId;\n const componentId = componentState.componentId;\n const conceptMapData = componentState.studentData.conceptMapData;\n const nodes = conceptMapData.nodes;\n const links = conceptMapData.links;\n for (const node of nodes) {\n node.instanceId = `${node.instanceId}-${nodeId}-${componentId}`;\n }\n for (const link of links) {\n link.instanceId = `${link.instanceId}-${nodeId}-${componentId}`;\n link.destinationNodeInstanceId = `${link.destinationNodeInstanceId}-${nodeId}-${componentId}`;\n link.sourceNodeInstanceId = `${link.sourceNodeInstanceId}-${nodeId}-${componentId}`;\n }\n return componentState;\n }\n\n mergeOtherComponentState(componentState: any): any {\n const connectedComponent = this.component.getConnectedComponent(\n componentState.nodeId,\n componentState.componentId\n );\n if (connectedComponent.importWorkAsBackground === true) {\n this.setComponentStateAsBackgroundImage(componentState);\n }\n }\n\n setBackgroundImage(image: string): void {\n this.setBackground(image, false);\n }\n\n isBackgroundAvailable(componentContent: any): boolean {\n return componentContent.background != null && componentContent.background != '';\n }\n\n setBackground(backgroundPath: string, stretchBackground: boolean): void {\n this.background = backgroundPath;\n this.setBackgroundUrl(backgroundPath);\n this.stretchBackground = stretchBackground;\n this.setBackgroundSize(stretchBackground);\n }\n\n setBackgroundUrl(backgroundPath: string): void {\n if (backgroundPath == null || backgroundPath === '') {\n this.backgroundUrl = '';\n } else {\n this.backgroundUrl = `url(\"${backgroundPath}\")`;\n }\n }\n\n setBackgroundSize(isStretchBackground: boolean): void {\n if (isStretchBackground) {\n this.backgroundSize = '100% 100%';\n } else {\n this.backgroundSize = '';\n }\n }\n\n deleteBackgroundImage(): void {\n this.background = null;\n }\n\n generateStarterState(): any {\n return this.getConceptMapData();\n }\n\n attachStudentAsset(studentAsset: any): void {\n this.setBackground(studentAsset.url, false);\n }\n}\n", + "styleUrl": "concept-map-student.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "changeDetector", + "type": "ChangeDetectorRef", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentService", + "type": "ComponentService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "conceptMapService", + "type": "ConceptMapService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "notebookService", + "type": "NotebookService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentAssetService", + "type": "StudentAssetService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentDataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 86, + "jsdoctags": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "changeDetector", + "type": "ChangeDetectorRef", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentService", + "type": "ComponentService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "conceptMapService", + "type": "ConceptMapService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "notebookService", + "type": "NotebookService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentAssetService", + "type": "StudentAssetService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentDataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "ComponentStudent" + ], + "templateData": "
\n \n
\n
\n \n Reset\n \n @if (isShowAddToNotebookButton) {\n \n }\n @if (isStudentAttachmentEnabled) {\n
\n @if (background == null) {\n \n attach_file\n \n }\n @if (background != null) {\n \n delete_outline\n \n }\n
\n }\n
\n
\n
\n @for (availableNode of availableNodes; track availableNode) {\n
\n \n
\n {{ availableNode.name }}\n
\n }\n
\n
\n \n
\n
\n @if (displayLinkTypeChooser) {\n \n }\n
\n
\n @if (isSaveOrSubmitButtonVisible) {\n \n }\n @if (mode === 'student') {\n \n }\n
\n" + }, + { + "name": "ConcurrentAuthorsMessageComponent", + "id": "component-ConcurrentAuthorsMessageComponent-8b19dcbd2e701b0e949ad5b89c8e037e648969ca8a7fe8eea031cb565503015aed51a03e6b54e9dfce1d909e56e87b832b53d7c87c674c883a2523052a401123", + "file": "src/assets/wise5/authoringTool/concurrent-authors-message/concurrent-authors-message.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "concurrent-authors-message", + "styleUrls": [], + "styles": [ + ".concurrent-authors { padding: 4px; }" + ], + "template": "@if (message) {
\n {{ message }}\n
\n }", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "projectId", + "deprecated": false, + "deprecationMessage": "", + "line": 21, + "type": "number", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "message", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "modifierKind": [ + 124 + ] + }, + { + "name": "myUsername", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 20, + "modifierKind": [ + 123 + ] + }, + { + "name": "rxStomp", + "defaultValue": "new RxStomp()", + "deprecated": false, + "deprecationMessage": "", + "type": "RxStomp", + "indexKey": "", + "optional": false, + "description": "", + "line": 22, + "modifierKind": [ + 123 + ] + } + ], + "methodsClass": [ + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 63, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 36, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "subscribeToCurrentAuthors", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 45, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "subscribeToSessionExit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 57, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input } from '@angular/core';\nimport { ConfigService } from '../../services/configService';\nimport { RxStomp } from '@stomp/rx-stomp';\nimport { Message } from '@stomp/stompjs';\nimport { TeacherProjectService } from '../../services/teacherProjectService';\nimport { SessionService } from '../../services/sessionService';\nimport { NotifyAuthorService } from '../../services/notifyAuthorService';\n\n@Component({\n selector: 'concurrent-authors-message',\n styles: ['.concurrent-authors { padding: 4px; }'],\n template: `@if (message) {\n
\n {{ message }}\n
\n }`\n})\nexport class ConcurrentAuthorsMessageComponent {\n protected message: string = '';\n private myUsername: string;\n @Input() private projectId: number;\n private rxStomp: RxStomp = new RxStomp();\n\n constructor(\n private configService: ConfigService,\n private notifyAuthorService: NotifyAuthorService,\n private projectService: TeacherProjectService,\n private sessionService: SessionService\n ) {\n this.myUsername = this.configService.getMyUsername();\n this.rxStomp.configure({\n brokerURL: this.configService.getWebSocketURL()\n });\n }\n\n ngOnInit() {\n this.rxStomp.activate();\n this.rxStomp.connected$.subscribe(() => {\n this.notifyAuthorService.editBegin(this.projectId);\n });\n this.subscribeToCurrentAuthors();\n this.subscribeToSessionExit();\n }\n\n private subscribeToCurrentAuthors(): void {\n this.rxStomp.watch(`/topic/current-authors/${this.projectId}`).subscribe((message: Message) => {\n const otherAuthors = JSON.parse(message.body).filter((author) => author != this.myUsername);\n this.message =\n otherAuthors.length > 0\n ? $localize`Also currently editing this unit: ${otherAuthors.join(\n ', '\n )}. Be careful not to overwrite each other's work!`\n : '';\n });\n }\n\n private subscribeToSessionExit(): void {\n this.sessionService.exit$.subscribe(() => {\n this.notifyAuthorService.editEnd(this.projectId);\n });\n }\n\n ngOnDestroy(): void {\n this.rxStomp.deactivate();\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": ".concurrent-authors { padding: 4px; }\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "notifyAuthorService", + "type": "NotifyAuthorService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "sessionService", + "type": "SessionService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 22, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "notifyAuthorService", + "type": "NotifyAuthorService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "sessionService", + "type": "SessionService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [] + }, + { + "name": "ConfigureAutomatedAssessmentComponent", + "id": "component-ConfigureAutomatedAssessmentComponent-17c65fe2549987308d7a86b27ecf4cdd0a55053ba6b03381096e0cd422b094f738e73cd3c1046e71b390f9c3bf76724d647a0b05d033afb5e69094cbe5b429f7", + "file": "src/assets/wise5/authoringTool/addNode/configure-automated-assessment/configure-automated-assessment.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "configure-automated-assessment", + "styleUrls": [ + "./configure-automated-assessment.component.scss", + "../../add-content.scss" + ], + "styles": [], + "templateUrl": [ + "./configure-automated-assessment.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "hasCustomization", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 30, + "modifierKind": [ + 124 + ] + }, + { + "name": "node", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 31, + "modifierKind": [ + 124 + ] + }, + { + "name": "importProjectId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractImportStepComponent" + } + }, + { + "name": "submitting", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractImportStepComponent" + } + }, + { + "name": "target", + "deprecated": false, + "deprecationMessage": "", + "type": "AddStepTarget", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractImportStepComponent" + } + } + ], + "methodsClass": [ + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 33, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractImportStepComponent" + } + }, + { + "name": "import", + "args": [ + { + "name": "nodesToImport", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 31, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodesToImport", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractImportStepComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CdkTextareaAutosize" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatCheckboxModule", + "type": "module" + }, + { + "name": "MatDividerModule", + "type": "module" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatInputModule", + "type": "module" + }, + { + "name": "MatProgressBarModule", + "type": "module" + }, + { + "name": "RouterModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { CdkTextareaAutosize } from '@angular/cdk/text-field';\nimport { Component } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { RouterModule } from '@angular/router';\nimport { AbstractImportStepComponent } from '../abstract-import-step/abstract-import-step.component';\n\n@Component({\n imports: [\n CdkTextareaAutosize,\n FormsModule,\n MatButtonModule,\n MatCheckboxModule,\n MatDividerModule,\n MatFormFieldModule,\n MatInputModule,\n MatProgressBarModule,\n RouterModule\n ],\n selector: 'configure-automated-assessment',\n templateUrl: './configure-automated-assessment.component.html',\n styleUrls: ['./configure-automated-assessment.component.scss', '../../add-content.scss']\n})\nexport class ConfigureAutomatedAssessmentComponent extends AbstractImportStepComponent {\n protected hasCustomization: boolean;\n protected node: any;\n\n ngOnInit(): void {\n super.ngOnInit();\n this.node = history.state.node;\n this.hasCustomization = this.node.components.some((component: any) => component.enableCRater);\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": [ + { + "data": ".feedback-textarea {\n width: 100%;\n}", + "styleUrl": "./configure-automated-assessment.component.scss" + }, + { + "data": ".nav-controls {\n background-color: white;\n position: sticky;\n bottom: 0;\n padding-bottom: 8px;\n z-index: 1;\n\n .mat-divider {\n margin: 16px 0 8px 0;\n }\n}\n", + "styleUrl": "../../add-content.scss" + } + ], + "stylesData": "", + "extends": [ + "AbstractImportStepComponent" + ], + "templateData": "
Customize Feedback (optional)
\n

\n Choose whether students should see their score and whether they should receive feedback after\n submitting an answer. Customize the feedback students will receive for each automated score value.\n

\n
\n@for (item of node.components; track item) {\n @if (item.enableCRater) {\n
\n Show Score\n Show Feedback\n @for (scoringRule of item.cRater.scoringRules; track scoringRule) {\n
\n
Score {{ scoringRule.score }}
\n \n Feedback\n \n \n
\n }\n
\n }\n}\n@if (!hasCustomization) {\n
The step you chose has nothing to customize. Click \"Next\" to continue.
\n}\n
\n \n
\n \n \n \n \n @if (submitting) {\n \n }\n Submit\n \n
\n
\n" + }, + { + "name": "ContactFormComponent", + "id": "component-ContactFormComponent-3a099df328ff465789fea2fc4cb90183e534135db18c0c02ecc369d5f90801ea685234c0668aba043db4cbf8813c85cd016d1a4d036ffb2379d270e092cd83fb", + "file": "src/app/contact/contact-form/contact-form.component.ts", + "encapsulation": [ + "ViewEncapsulation.None" + ], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "app-contact-form", + "styleUrls": [], + "styles": [ + "\n .contact__form {\n width: 800px;\n }\n " + ], + "templateUrl": [ + "./contact-form.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "complete", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 26, + "modifierKind": [ + 124 + ] + }, + { + "name": "contactFormGroup", + "defaultValue": "this.fb.group({\n name: new FormControl('', [Validators.required]),\n issueType: new FormControl('', [Validators.required]),\n summary: new FormControl('', [Validators.required]),\n description: new FormControl('', [Validators.required])\n })", + "deprecated": false, + "deprecationMessage": "", + "type": "FormGroup", + "indexKey": "", + "optional": false, + "description": "", + "line": 27, + "modifierKind": [ + 124 + ] + }, + { + "name": "isError", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 33, + "modifierKind": [ + 124 + ] + }, + { + "name": "isPublish", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 38, + "modifierKind": [ + 123 + ] + }, + { + "name": "isRecaptchaEnabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 39, + "modifierKind": [ + 124 + ] + }, + { + "name": "isRecaptchaError", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 40, + "modifierKind": [ + 124 + ] + }, + { + "name": "isSendingRequest", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 34, + "modifierKind": [ + 124 + ] + }, + { + "name": "isSignedIn", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 35, + "modifierKind": [ + 123 + ] + }, + { + "name": "isStudent", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 36, + "modifierKind": [ + 124 + ] + }, + { + "name": "issueTypes", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "object[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 37, + "modifierKind": [ + 124 + ] + }, + { + "name": "projectId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 41, + "modifierKind": [ + 123 + ] + }, + { + "name": "projectName", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 42, + "modifierKind": [ + 124 + ] + }, + { + "name": "runId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 43, + "modifierKind": [ + 123 + ] + }, + { + "name": "teachers", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 44, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "getControlFieldValue", + "args": [ + { + "name": "fieldName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 223, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "fieldName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getControlFieldValueOrNull", + "args": [ + { + "name": "fieldName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "condition", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 227, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "fieldName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "condition", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getRecaptchaResponse", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 235, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123, + 134 + ] + }, + { + "name": "getUserAgent", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 231, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "handleSendContactMessageResponse", + "args": [ + { + "name": "response", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 203, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "response", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isPublishIssueType", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 245, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "markControlFieldAsDisabled", + "args": [ + { + "name": "name", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 219, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "name", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 56, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "obtainRunIdOrProjectIdIfNecessary", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 70, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "obtainTeacherListIfNecessary", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 87, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "populateFieldsIfSignedIn", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 114, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "populateIssueTypes", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 130, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "setControlFieldValue", + "args": [ + { + "name": "name", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "value", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 215, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "name", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "value", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setDefaultPublishSummary", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 153, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "setIsPublish", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 170, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "setIsSendingRequest", + "args": [ + { + "name": "value", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 241, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "value", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setIssueTypeIfNecessary", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 162, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "showEmailIfNecessary", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 103, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentHasTeacher", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 99, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "submit", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 176, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { ActivatedRoute } from '@angular/router';\nimport { Component, OnInit, ViewEncapsulation } from '@angular/core';\nimport { ConfigService } from '../../services/config.service';\nimport { finalize } from 'rxjs/operators';\nimport { FormControl, FormGroup, Validators, FormBuilder } from '@angular/forms';\nimport { LibraryService } from '../../services/library.service';\nimport { ReCaptchaV3Service } from 'ng-recaptcha-2';\nimport { Student } from '../../domain/student';\nimport { StudentService } from '../../student/student.service';\nimport { Subscription, lastValueFrom } from 'rxjs';\nimport { Teacher } from '../../domain/teacher';\nimport { UserService } from '../../services/user.service';\n\n@Component({\n encapsulation: ViewEncapsulation.None,\n selector: 'app-contact-form',\n standalone: false,\n styles: `\n .contact__form {\n width: 800px;\n }\n `,\n templateUrl: './contact-form.component.html'\n})\nexport class ContactFormComponent implements OnInit {\n protected complete: boolean = false;\n protected contactFormGroup: FormGroup = this.fb.group({\n name: new FormControl('', [Validators.required]),\n issueType: new FormControl('', [Validators.required]),\n summary: new FormControl('', [Validators.required]),\n description: new FormControl('', [Validators.required])\n });\n protected isError: boolean = false;\n protected isSendingRequest: boolean = false;\n private isSignedIn: boolean = false;\n protected isStudent: boolean = false;\n protected issueTypes: object[] = [];\n private isPublish: boolean = false;\n protected isRecaptchaEnabled: boolean = false;\n protected isRecaptchaError: boolean = false;\n private projectId: number;\n protected projectName: string;\n private runId: number;\n protected teachers: any[] = [];\n\n constructor(\n private fb: FormBuilder,\n private userService: UserService,\n private configService: ConfigService,\n private studentService: StudentService,\n private libraryService: LibraryService,\n private recaptchaV3Service: ReCaptchaV3Service,\n private route: ActivatedRoute\n ) {}\n\n ngOnInit(): void {\n this.isSignedIn = this.userService.isSignedIn();\n this.isStudent = this.userService.isStudent();\n this.obtainRunIdOrProjectIdIfNecessary();\n this.obtainTeacherListIfNecessary();\n this.showEmailIfNecessary();\n this.isRecaptchaEnabled = this.configService.isRecaptchaEnabled();\n this.populateFieldsIfSignedIn();\n this.populateIssueTypes();\n this.setDefaultPublishSummary();\n this.setIsPublish();\n this.setIssueTypeIfNecessary();\n }\n\n private obtainRunIdOrProjectIdIfNecessary(): void {\n this.route.queryParams.subscribe((params) => {\n this.runId = params['runId'];\n this.projectId = params['projectId'];\n if (this.runId) {\n this.studentService.getRunInfoById(this.runId).subscribe((runInfo) => {\n this.projectName = runInfo.name;\n });\n }\n if (this.projectId) {\n this.libraryService.getProjectInfo(this.projectId).subscribe((project) => {\n this.projectName = project.name;\n });\n }\n });\n }\n\n private obtainTeacherListIfNecessary(): void {\n if (this.isStudent && this.runId == null && this.projectId == null) {\n this.studentService.getTeacherList().subscribe((teacherList) => {\n this.teachers = teacherList;\n if (this.studentHasTeacher()) {\n this.contactFormGroup.addControl('teacher', new FormControl('', [Validators.required]));\n this.setControlFieldValue('teacher', this.teachers[0].username);\n }\n });\n }\n }\n\n private studentHasTeacher(): boolean {\n return this.teachers.length > 0;\n }\n\n showEmailIfNecessary() {\n if (this.isStudent) {\n this.contactFormGroup.removeControl('email');\n } else {\n this.contactFormGroup.addControl(\n 'email',\n new FormControl('', [Validators.required, Validators.email])\n );\n }\n }\n\n private populateFieldsIfSignedIn(): void {\n if (this.isSignedIn) {\n if (this.isStudent) {\n const user = this.userService.getUser().getValue();\n this.setControlFieldValue('name', user.firstName + ' ' + user.lastName);\n this.markControlFieldAsDisabled('name');\n } else {\n const user = this.userService.getUser().getValue();\n this.setControlFieldValue('name', user.firstName + ' ' + user.lastName);\n this.setControlFieldValue('email', user.email);\n this.markControlFieldAsDisabled('name');\n this.markControlFieldAsDisabled('email');\n }\n }\n }\n\n private populateIssueTypes(): void {\n if (this.isStudent) {\n this.issueTypes = [\n { key: 'TROUBLE_LOGGING_IN', value: $localize`Trouble Signing In` },\n { key: 'NEED_HELP_USING_WISE', value: $localize`Need Help Using WISE` },\n { key: 'PROJECT_PROBLEMS', value: $localize`Problems with a WISE Unit` },\n { key: 'FEEDBACK', value: $localize`Feedback to WISE` },\n { key: 'OTHER', value: $localize`Other` }\n ];\n } else {\n this.issueTypes = [\n { key: 'TROUBLE_LOGGING_IN', value: $localize`Trouble Signing In` },\n { key: 'NEED_HELP_USING_WISE', value: $localize`Need Help Using WISE` },\n { key: 'PROJECT_PROBLEMS', value: $localize`Problems with a WISE Unit` },\n { key: 'STUDENT_MANAGEMENT', value: $localize`Student Management` },\n { key: 'AUTHORING', value: $localize`Need Help with Authoring` },\n { key: 'PUBLISH', value: $localize`Publish Unit` },\n { key: 'FEEDBACK', value: $localize`Feedback to WISE` },\n { key: 'OTHER', value: $localize`Other` }\n ];\n }\n }\n\n private setDefaultPublishSummary(): void {\n this.contactFormGroup.get('issueType').valueChanges.subscribe(() => {\n if (this.getControlFieldValue('issueType') === 'PUBLISH') {\n const summaryControl = this.contactFormGroup.get('summary');\n summaryControl.setValue($localize`Publish my unit to the WISE Community Built library`);\n }\n });\n }\n\n private setIssueTypeIfNecessary(): void {\n if (this.runId != null) {\n this.setControlFieldValue('issueType', 'PROJECT_PROBLEMS');\n } else if (this.isPublish) {\n this.setControlFieldValue('issueType', 'PUBLISH');\n }\n }\n\n private setIsPublish(): void {\n this.route.queryParams.subscribe((params) => {\n this.isPublish = params['publish'];\n });\n }\n\n async submit(): Promise {\n this.isError = false;\n const recaptchaResponse = await this.getRecaptchaResponse();\n this.setIsSendingRequest(true);\n return this.userService\n .sendContactMessage(\n this.getControlFieldValue('name'),\n this.getControlFieldValueOrNull('email', !this.isStudent),\n this.getControlFieldValueOrNull('teacher', this.isStudent && this.studentHasTeacher()),\n this.getControlFieldValue('issueType'),\n this.getControlFieldValue('summary'),\n this.getControlFieldValue('description'),\n this.runId,\n this.projectId,\n this.getUserAgent(),\n recaptchaResponse\n )\n .pipe(\n finalize(() => {\n this.setIsSendingRequest(false);\n })\n )\n .subscribe((response) => {\n this.handleSendContactMessageResponse(response);\n });\n }\n\n private handleSendContactMessageResponse(response: any): void {\n if (response.status === 'success') {\n this.complete = true;\n } else if (response.status === 'error') {\n this.isError = true;\n if (this.isRecaptchaEnabled) {\n this.isRecaptchaError = true;\n }\n }\n this.setIsSendingRequest(false);\n }\n\n setControlFieldValue(name: string, value: string): void {\n this.contactFormGroup.controls[name].setValue(value);\n }\n\n private markControlFieldAsDisabled(name: string): void {\n this.contactFormGroup.controls[name].disable();\n }\n\n private getControlFieldValue(fieldName: string): any {\n return this.contactFormGroup.get(fieldName).value;\n }\n\n private getControlFieldValueOrNull(fieldName: string, condition: boolean): any {\n return condition ? this.getControlFieldValue(fieldName) : null;\n }\n\n private getUserAgent(): string {\n return navigator.userAgent;\n }\n\n private async getRecaptchaResponse(): Promise {\n return this.configService.isRecaptchaEnabled()\n ? await lastValueFrom(this.recaptchaV3Service.execute('importantAction'))\n : '';\n }\n\n private setIsSendingRequest(value: boolean): void {\n this.isSendingRequest = value;\n }\n\n protected isPublishIssueType(): boolean {\n return this.getControlFieldValue('issueType') === 'PUBLISH';\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "\n .contact__form {\n width: 800px;\n }\n \n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "fb", + "type": "FormBuilder", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "userService", + "type": "UserService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentService", + "type": "StudentService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "libraryService", + "type": "LibraryService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "recaptchaV3Service", + "type": "ReCaptchaV3Service", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 44, + "jsdoctags": [ + { + "name": "fb", + "type": "FormBuilder", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "userService", + "type": "UserService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentService", + "type": "StudentService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "libraryService", + "type": "LibraryService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "recaptchaV3Service", + "type": "ReCaptchaV3Service", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "
\n
\n \n \"WISE\n \n
\n \n \n @if (complete) {\n
\n

Thank you for contacting WISE!

\n

Your message has been sent. We will get back to you as soon as possible.

\n \n
\n } @else {\n
\n

Contact WISE

\n \n Name\n \n @if (contactFormGroup.controls['name'].hasError('required')) {\n Name required\n }\n \n @if (!isStudent) {\n \n Email\n \n @if (contactFormGroup.controls['email'].hasError('required')) {\n Email required\n }\n @if (contactFormGroup.controls['email'].hasError('email')) {\n Invalid Email\n }\n \n } @else {\n @if (teachers.length > 0) {\n

\n \n Teacher\n \n @for (teacher of teachers; track teacher.username) {\n \n {{ teacher.displayName }}\n \n }\n \n @if (contactFormGroup.controls['teacher'].hasError('required')) {\n Teacher required\n }\n \n

\n }\n }\n \n Issue Type\n \n @for (issueType of issueTypes; track issueType.key) {\n \n {{ issueType.value }}\n \n }\n \n @if (contactFormGroup.controls['issueType'].hasError('required')) {\n Issue Type required\n }\n \n @if (projectName) {\n \n Unit Name\n \n \n }\n \n Summary\n \n @if (contactFormGroup.controls['summary'].hasError('required')) {\n Summary required\n }\n \n \n Description\n \n \n @if (contactFormGroup.controls['description'].hasError('required')) {\n Description required\n }\n \n @if (isRecaptchaEnabled) {\n

\n This site is protected by reCAPTCHA and the Google\n Privacy Policy and\n Terms of Service apply.\n

\n }\n @if (isError) {\n @if (isRecaptchaEnabled && isRecaptchaError) {\n

\n Recaptcha failed. Please reload the page and try again!\n

\n } @else {\n

\n Sorry, there was a problem submitting the form. Please try again.\n

\n }\n }\n @if (isPublishIssueType()) {\n

\n By submitting, you will be sending your unit to be reviewed. If approved, it will be\n added to the Community Built library. Make sure you have filled out all appropriate\n fields in the Unit Info page in the authoring tool. We will be in touch if we require\n any more information.\n

\n

Thank you!

\n }\n

\n \n @if (isSendingRequest) {\n \n }\n @if (isPublishIssueType()) {\n Submit for Review\n } @else {\n Submit\n }\n \n

\n
\n }\n
\n
\n
\n" + }, + { + "name": "CopyComponentButtonComponent", + "id": "component-CopyComponentButtonComponent-d5c216a19e92bfe3dd50536c81c907658364aa17159c1a70f6a308feabaa10a62e4d3489cb7d22d0e4e492e6883d5ad379f85d76ff4b8dc023e7ec619e442cde", + "file": "src/assets/wise5/authoringTool/node/copy-component-button/copy-component-button.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "copy-component-button", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./copy-component-button.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "line": 15, + "type": "string", + "decorators": [] + }, + { + "name": "node", + "deprecated": false, + "deprecationMessage": "", + "line": 17, + "type": "Node", + "decorators": [] + } + ], + "outputsClass": [ + { + "name": "newComponentEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 16, + "type": "EventEmitter" + } + ], + "propertiesClass": [], + "methodsClass": [ + { + "name": "copy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 24, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { TeacherProjectService } from '../../../services/teacherProjectService';\nimport { CopyTranslationsService } from '../../../services/copyTranslationsService';\nimport { Node } from '../../../common/Node';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@Component({\n imports: [MatButtonModule, MatIconModule, MatTooltipModule],\n selector: 'copy-component-button',\n templateUrl: './copy-component-button.component.html'\n})\nexport class CopyComponentButtonComponent {\n @Input() componentId: string;\n @Output() newComponentEvent = new EventEmitter();\n @Input() node: Node;\n\n constructor(\n private copyTranslationsService: CopyTranslationsService,\n private projectService: TeacherProjectService\n ) {}\n\n protected copy(): void {\n const newComponents = this.node.copyComponents([this.componentId], this.componentId);\n this.projectService.saveProject();\n this.copyTranslationsService.tryCopyComponents(this.node, newComponents);\n this.newComponentEvent.emit(newComponents);\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "copyTranslationsService", + "type": "CopyTranslationsService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 17, + "jsdoctags": [ + { + "name": "copyTranslationsService", + "type": "CopyTranslationsService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "\n content_copy\n\n" + }, + { + "name": "CopyProjectDialogComponent", + "id": "component-CopyProjectDialogComponent-ba61b1e0a37bb633d2fc90fe3196817b0cec095f36bc89e91c9af40dc49104c45e3b521035483f6994a019fdae492d00eefab55a8981d8225714f1d622d5af92", + "file": "src/app/modules/library/copy-project-dialog/copy-project-dialog.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./copy-project-dialog.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "dialog", + "deprecated": false, + "deprecationMessage": "", + "type": "MatDialog", + "indexKey": "", + "optional": false, + "description": "", + "line": 24, + "modifierKind": [ + 125 + ] + }, + { + "name": "dialogRef", + "deprecated": false, + "deprecationMessage": "", + "type": "MatDialogRef", + "indexKey": "", + "optional": false, + "description": "", + "line": 25, + "modifierKind": [ + 125 + ] + }, + { + "name": "isCopying", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 21, + "modifierKind": [ + 124 + ] + }, + { + "name": "project", + "deprecated": false, + "deprecationMessage": "", + "type": "Project", + "indexKey": "", + "optional": false, + "description": "", + "line": 27, + "decorators": [ + { + "name": "Inject", + "stringifiedArguments": "MAT_DIALOG_DATA" + } + ], + "modifierKind": [ + 171, + 125 + ] + } + ], + "methodsClass": [ + { + "name": "copy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 35, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "showErrorMessage", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 60, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatDialogModule", + "type": "module" + }, + { + "name": "MatProgressBarModule", + "type": "module" + }, + { + "name": "MatSnackBarModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Inject } from '@angular/core';\nimport {\n MatDialogModule,\n MatDialog,\n MatDialogRef,\n MAT_DIALOG_DATA\n} from '@angular/material/dialog';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatSnackBarModule, MatSnackBar } from '@angular/material/snack-bar';\nimport { finalize } from 'rxjs/operators';\nimport { LibraryProject } from '../libraryProject';\nimport { LibraryService } from '../../../services/library.service';\nimport { Project } from '../../../domain/project';\n\n@Component({\n imports: [MatButtonModule, MatDialogModule, MatProgressBarModule, MatSnackBarModule],\n templateUrl: './copy-project-dialog.component.html'\n})\nexport class CopyProjectDialogComponent {\n protected isCopying: boolean = false;\n\n constructor(\n public dialog: MatDialog,\n public dialogRef: MatDialogRef,\n private libraryService: LibraryService,\n @Inject(MAT_DIALOG_DATA) public project: Project,\n private snackBar: MatSnackBar\n ) {\n this.libraryService.newProjectSource$.subscribe(() => {\n this.dialog.closeAll();\n });\n }\n\n protected copy(): void {\n this.isCopying = true;\n this.libraryService\n .copyProject(this.project.id)\n .pipe(\n finalize(() => {\n this.isCopying = false;\n })\n )\n .subscribe(\n (response: any) => {\n if (response.status === 'error') {\n this.showErrorMessage();\n } else {\n const newLibraryProject: LibraryProject = new LibraryProject(response);\n newLibraryProject.visible = true;\n this.libraryService.addPersonalLibraryProject(newLibraryProject);\n }\n },\n (error) => {\n this.showErrorMessage();\n }\n );\n }\n\n private showErrorMessage(): void {\n this.snackBar.open(\n $localize`There was an error trying to copy the project. Please refresh the page and try again.`\n );\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialogRef", + "type": "MatDialogRef", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "libraryService", + "type": "LibraryService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "project", + "type": "Project", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "snackBar", + "type": "MatSnackBar", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 21, + "jsdoctags": [ + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialogRef", + "type": "MatDialogRef", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "libraryService", + "type": "LibraryService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "project", + "type": "Project", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "snackBar", + "type": "MatSnackBar", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "

Copy Unit

\n\n
\n

\n {{ project.name }} (Unit ID: {{ project.id }})\n

\n

\n Copying creates a duplicate that will appear in “My Units”. You will be the owner and can edit\n the content and share the new unit with other WISE users.\n

\n
\n
\n\n \n \n @if (isCopying) {\n \n }\n Copy\n \n\n" + }, + { + "name": "CRaterItemSelectComponent", + "id": "component-CRaterItemSelectComponent-33a8d8f4b0277c4b4c7432fa5747e0ff76efa68ffdca76e500a25fdc6807e403326bd1a637baafcee5b48274bcb93d91832a171350adff384313b9f0ec43f610", + "file": "src/assets/wise5/components/common/cRater/crater-item-select/crater-item-select.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "c-rater-item-select", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./crater-item-select.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "line": 14, + "type": "any", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "itemIds", + "defaultValue": "[\n 'berkeley_BowlsInAFridge',\n 'berkeley_CarOnAColdDay',\n 'berkeley_COAL-II',\n 'berkeley_CovidImpacts',\n 'berkeley_FoodJustice',\n 'berkeley_FoodJusticeShortLabelIdeaKI',\n 'berkeley_GenEx-Siblings',\n 'berkeley_HeLa',\n 'berkeley_Impacts',\n 'berkeley_Lizards',\n 'berkeley_MusicalInstruments-Speed',\n 'berkeley_PhotoEnergyStory',\n 'berkeley_PlateTectonics_MtHood',\n 'berkeley_SPOON-II'\n ]", + "deprecated": false, + "deprecationMessage": "", + "type": "[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 124 + ] + }, + { + "name": "selectedItemId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 31, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "getItemRubric", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 46, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 38, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatSelect" + }, + { + "name": "MatOption" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input } from '@angular/core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatOption, MatSelect } from '@angular/material/select';\nimport { CRaterService } from '../../../../services/cRaterService';\nimport { TeacherProjectService } from '../../../../services/teacherProjectService';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n imports: [FormsModule, MatFormFieldModule, MatSelect, MatOption],\n selector: 'c-rater-item-select',\n templateUrl: './crater-item-select.component.html'\n})\nexport class CRaterItemSelectComponent {\n @Input() componentContent: any;\n protected itemIds = [\n 'berkeley_BowlsInAFridge',\n 'berkeley_CarOnAColdDay',\n 'berkeley_COAL-II',\n 'berkeley_CovidImpacts',\n 'berkeley_FoodJustice',\n 'berkeley_FoodJusticeShortLabelIdeaKI',\n 'berkeley_GenEx-Siblings',\n 'berkeley_HeLa',\n 'berkeley_Impacts',\n 'berkeley_Lizards',\n 'berkeley_MusicalInstruments-Speed',\n 'berkeley_PhotoEnergyStory',\n 'berkeley_PlateTectonics_MtHood',\n 'berkeley_SPOON-II'\n ];\n protected selectedItemId: string;\n\n constructor(\n private cRaterService: CRaterService,\n private projectService: TeacherProjectService\n ) {}\n\n ngOnInit(): void {\n if (this.componentContent.type === 'OpenResponse') {\n this.selectedItemId = this.componentContent.cRater.itemId;\n } else if (this.componentContent.type === 'DialogGuidance') {\n this.selectedItemId = this.componentContent.itemId;\n }\n }\n\n protected getItemRubric(): void {\n this.cRaterService.makeCRaterVerifyRequest(this.selectedItemId).subscribe((response) => {\n const cRaterRubric = response.rubric ?? { description: '', ideas: [] };\n if (this.componentContent.type === 'OpenResponse') {\n this.componentContent.cRater.rubric = cRaterRubric;\n this.componentContent.cRater.itemId = this.selectedItemId;\n } else if (this.componentContent.type === 'DialogGuidance') {\n this.componentContent.cRaterRubric = cRaterRubric;\n this.componentContent.itemId = this.selectedItemId;\n }\n this.projectService.saveProject();\n });\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "cRaterService", + "type": "CRaterService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 31, + "jsdoctags": [ + { + "name": "cRaterService", + "type": "CRaterService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "\n AI Model ID\n \n @for (itemId of itemIds; track itemId) {\n {{ itemId }}\n }\n \n\n" + }, + { + "name": "CRaterRubricComponent", + "id": "component-CRaterRubricComponent-86d4b6eb84cbe08bd0bb5202f95ffc0e3d13b4fc38b1bfe05d6ffcbbf251d07e88379e3db7adf1ff3edbcafc70d939a769cb604f02ee147997c95d92e17621ca", + "file": "src/assets/wise5/components/common/cRater/crater-rubric/crater-rubric.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [ + { + "name": "IdeasSortingService", + "type": "injectable" + } + ], + "selector": "crater-rubric", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./crater-rubric.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "ideas", + "deprecated": false, + "deprecationMessage": "", + "type": "CRaterIdea[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "closeDialog", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 39, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 35, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 28, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatDialogModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Inject } from '@angular/core';\nimport { CRaterIdea } from '../CRaterIdea';\nimport { cRaterIdeaToIdeaData, ideaDataToCRaterIdea } from '../IdeaData';\nimport { CRaterRubric } from '../CRaterRubric';\nimport { IdeasSortingService } from '../../../../services/ideasSortingService';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { RubricEventService } from './RubricEventService';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n imports: [MatButtonModule, MatDialogModule, MatIconModule],\n providers: [IdeasSortingService],\n selector: 'crater-rubric',\n templateUrl: './crater-rubric.component.html',\n styleUrl: './crater-rubric.component.scss'\n})\nexport class CRaterRubricComponent {\n protected ideas: CRaterIdea[];\n\n constructor(\n @Inject(MAT_DIALOG_DATA) protected cRaterRubric: CRaterRubric,\n private dialogRef: MatDialogRef,\n private ideasSortingService: IdeasSortingService,\n private rubricEventService: RubricEventService\n ) {}\n\n ngOnInit(): void {\n this.ideas = this.ideasSortingService\n .sortById(this.cRaterRubric.ideas.map(cRaterIdeaToIdeaData))\n .map(ideaDataToCRaterIdea);\n this.rubricEventService.rubricToggled();\n }\n\n ngOnDestroy(): void {\n this.rubricEventService.rubricToggled();\n }\n\n protected closeDialog(): void {\n this.dialogRef.close();\n }\n}\n", + "styleUrl": "./crater-rubric.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "cRaterRubric", + "type": "CRaterRubric", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialogRef", + "type": "MatDialogRef", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ideasSortingService", + "type": "IdeasSortingService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "rubricEventService", + "type": "RubricEventService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 19, + "jsdoctags": [ + { + "name": "cRaterRubric", + "type": "CRaterRubric", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialogRef", + "type": "MatDialogRef", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "ideasSortingService", + "type": "IdeasSortingService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "rubricEventService", + "type": "RubricEventService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "

\n Idea detection rubric\n \n \n

\n\n @if (cRaterRubric.description && cRaterRubric.description !== '') {\n

{{ cRaterRubric.description }}

\n }\n @if (cRaterRubric.ideas.length > 0) {\n \n \n \n \n \n \n \n \n @for (idea of ideas; track idea.name) {\n \n \n \n \n }\n \n
IDDescription
{{ idea.name }}{{ idea.text }}
\n }\n
\n" + }, + { + "name": "CreateBranchComponent", + "id": "component-CreateBranchComponent-ff55e0063d31f39f66b85a505f47577563435c4bed1fb4f34f8227836571f74ebb2e10b48a3784590131382e296b87cdd5b22cceb6200c253e6306eec4e39f11", + "file": "src/assets/wise5/authoringTool/create-branch/create-branch.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [ + "create-branch-paths, select-merge-step { margin-bottom: 16px; } " + ], + "templateUrl": [ + "./create-branch.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "allowedComponentTypes", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 20, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractBranchAuthoringComponent" + } + }, + { + "name": "CHOICE_CHOSEN_VALUE", + "defaultValue": "CHOICE_CHOSEN_VALUE", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 124, + 148 + ], + "inheritance": { + "file": "AbstractBranchAuthoringComponent" + } + }, + { + "name": "components", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 21, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "AbstractBranchAuthoringComponent" + } + }, + { + "name": "formGroup", + "defaultValue": "this.fb.group({\n pathCount: new FormControl('', [Validators.required]),\n criteria: new FormControl('', [Validators.required]),\n pathFormGroup: this.pathFormGroup,\n mergeStep: new FormControl('')\n })", + "deprecated": false, + "deprecationMessage": "", + "type": "FormGroup", + "indexKey": "", + "optional": false, + "description": "", + "line": 26, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractBranchAuthoringComponent" + } + }, + { + "name": "pathFormGroup", + "defaultValue": "this.fb.group({})", + "deprecated": false, + "deprecationMessage": "", + "type": "FormGroup", + "indexKey": "", + "optional": false, + "description": "", + "line": 22, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractBranchAuthoringComponent" + } + }, + { + "name": "RANDOM_VALUE", + "defaultValue": "RANDOM_VALUE", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "modifierKind": [ + 124, + 148 + ], + "inheritance": { + "file": "AbstractBranchAuthoringComponent" + } + }, + { + "name": "SCORE_VALUE", + "defaultValue": "SCORE_VALUE", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "modifierKind": [ + 124, + 148 + ], + "inheritance": { + "file": "AbstractBranchAuthoringComponent" + } + }, + { + "name": "targetId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 23, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractBranchAuthoringComponent" + } + }, + { + "name": "targetTitle", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 24, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractBranchAuthoringComponent" + } + }, + { + "name": "WORKGROUP_ID_VALUE", + "defaultValue": "WORKGROUP_ID_VALUE", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "modifierKind": [ + 124, + 148 + ], + "inheritance": { + "file": "AbstractBranchAuthoringComponent" + } + } + ], + "methodsClass": [ + { + "name": "hideCreatingBranchMessage", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 89, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 53, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractBranchAuthoringComponent" + } + }, + { + "name": "showCreatingBranchMessage", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 80, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "showSelectMergeStep", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 64, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "submit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 72, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "criteriaRequiresAdditionalParams", + "args": [ + { + "name": "criteria", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 53, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "criteria", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractBranchAuthoringComponent" + } + }, + { + "name": "getBranchParams", + "args": [], + "optional": false, + "returnType": "AuthorBranchParams", + "typeParameters": [], + "line": 174, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractBranchAuthoringComponent" + } + }, + { + "name": "initializeComponentIdSelector", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 102, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "AbstractBranchAuthoringComponent" + } + }, + { + "name": "initializeNodeIdSelector", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 88, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "AbstractBranchAuthoringComponent" + } + }, + { + "name": "removeAdditionalParams", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 149, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "AbstractBranchAuthoringComponent" + } + }, + { + "name": "setComponentId", + "args": [ + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 166, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractBranchAuthoringComponent" + } + }, + { + "name": "setCriteria", + "args": [ + { + "name": "criteria", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 158, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "criteria", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractBranchAuthoringComponent" + } + }, + { + "name": "setMergeStep", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 170, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractBranchAuthoringComponent" + } + }, + { + "name": "setNodeId", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 162, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractBranchAuthoringComponent" + } + }, + { + "name": "setPathCount", + "args": [ + { + "name": "pathCount", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 154, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "pathCount", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractBranchAuthoringComponent" + } + }, + { + "name": "tryAutoSelectChoiceChosenComponent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 138, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "AbstractBranchAuthoringComponent" + } + }, + { + "name": "tryAutoSelectComponentId", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 118, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "AbstractBranchAuthoringComponent" + } + }, + { + "name": "tryAutoSelectScoreComponent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 127, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "AbstractBranchAuthoringComponent" + } + }, + { + "name": "updateAllowedComponentTypes", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 57, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "AbstractBranchAuthoringComponent" + } + }, + { + "name": "updateComponentIdSelector", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 108, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "AbstractBranchAuthoringComponent" + } + }, + { + "name": "updateStepAndComponentParams", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 82, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "AbstractBranchAuthoringComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CreateBranchPathsComponent", + "type": "component" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatDialogModule", + "type": "module" + }, + { + "name": "MatDividerModule", + "type": "module" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatInputModule", + "type": "module" + }, + { + "name": "MatSelectModule", + "type": "module" + }, + { + "name": "ReactiveFormsModule", + "type": "module" + }, + { + "name": "RouterModule", + "type": "module" + }, + { + "name": "SelectBranchCriteriaComponent", + "type": "component" + }, + { + "name": "SelectComponentComponent", + "type": "component" + }, + { + "name": "SelectMergeStepComponent", + "type": "component" + }, + { + "name": "SelectPathCountComponent", + "type": "component" + }, + { + "name": "SelectStepComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { TeacherProjectService } from '../../services/teacherProjectService';\nimport { FormBuilder, ReactiveFormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatButtonModule } from '@angular/material/button';\nimport { SelectStepComponent } from '../../../../app/authoring-tool/select-step/select-step.component';\nimport { SelectComponentComponent } from '../../../../app/authoring-tool/select-component/select-component.component';\nimport { CreateBranchPathsComponent } from '../create-branch-paths/create-branch-paths.component';\nimport { ActivatedRoute, Router, RouterModule } from '@angular/router';\nimport { SelectMergeStepComponent } from '../select-merge-step/select-merge-step.component';\nimport { CreateBranchService } from '../../services/createBranchService';\nimport { SelectPathCountComponent } from '../select-path-count/select-path-count.component';\nimport { SelectBranchCriteriaComponent } from '../select-branch-criteria/select-branch-criteria.component';\nimport { AbstractBranchAuthoringComponent } from '../abstract-branch-authoring/abstract-branch-authoring.component';\nimport { MatDialog, MatDialogModule } from '@angular/material/dialog';\nimport { DialogWithSpinnerComponent } from '../../directives/dialog-with-spinner/dialog-with-spinner.component';\nimport { MatDividerModule } from '@angular/material/divider';\n\n@Component({\n imports: [\n CreateBranchPathsComponent,\n MatButtonModule,\n MatDialogModule,\n MatDividerModule,\n MatFormFieldModule,\n MatInputModule,\n MatSelectModule,\n ReactiveFormsModule,\n RouterModule,\n SelectBranchCriteriaComponent,\n SelectComponentComponent,\n SelectMergeStepComponent,\n SelectPathCountComponent,\n SelectStepComponent\n ],\n styles: ['create-branch-paths, select-merge-step { margin-bottom: 16px; } '],\n templateUrl: './create-branch.component.html'\n})\nexport class CreateBranchComponent extends AbstractBranchAuthoringComponent {\n constructor(\n private createBranchService: CreateBranchService,\n private dialog: MatDialog,\n protected fb: FormBuilder,\n protected projectService: TeacherProjectService,\n protected route: ActivatedRoute,\n protected router: Router\n ) {\n super(fb, projectService, route, router);\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n this.formGroup.controls['criteria'].valueChanges.subscribe((criteria: string) => {\n if (this.criteriaRequiresAdditionalParams(criteria)) {\n this.formGroup.addControl('pathFormGroup', this.pathFormGroup);\n } else {\n this.formGroup.removeControl('pathFormGroup');\n }\n });\n }\n\n protected showSelectMergeStep(): boolean {\n return this.criteriaRequiresAdditionalParams(this.formGroup.get('criteria').value)\n ? this.formGroup.controls['nodeId'].valid &&\n this.formGroup.controls['componentId'].valid &&\n this.formGroup.controls['pathFormGroup'].valid\n : this.formGroup.controls['criteria'].valid;\n }\n\n protected submit(): void {\n this.showCreatingBranchMessage();\n this.createBranchService.createBranch(this.getBranchParams()).then(() => {\n this.hideCreatingBranchMessage();\n this.router.navigate(['..'], { relativeTo: this.route });\n });\n }\n\n private showCreatingBranchMessage(): void {\n this.dialog.open(DialogWithSpinnerComponent, {\n data: {\n title: $localize`Creating Branch`\n },\n disableClose: false\n });\n }\n\n private hideCreatingBranchMessage(): void {\n this.dialog.closeAll();\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "create-branch-paths, select-merge-step { margin-bottom: 16px; } \n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "createBranchService", + "type": "CreateBranchService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "fb", + "type": "FormBuilder", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 41, + "jsdoctags": [ + { + "name": "createBranchService", + "type": "CreateBranchService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "fb", + "type": "FormBuilder", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "AbstractBranchAuthoringComponent" + ], + "templateData": "

Create Branching Structure

\n

Branch Step: {{ targetTitle }}

\n\n
\n \n @if (formGroup.controls['pathCount'].value > 1) {\n \n }\n @if (\n formGroup.controls['criteria'].value === SCORE_VALUE ||\n formGroup.controls['criteria'].value === CHOICE_CHOSEN_VALUE\n ) {\n

Reference component:

\n
\n \n @if (formGroup.controls['nodeId']?.value !== '') {\n \n }\n
\n }\n @if (formGroup.controls['componentId']?.value) {\n

Paths:

\n }\n \n @if (showSelectMergeStep()) {\n \n }\n \n
\n \n \n Submit\n \n
\n\n" + }, + { + "name": "CreateBranchPathsComponent", + "id": "component-CreateBranchPathsComponent-0c0aaabb6d867e03f5168fbac65457af19077cd65c89ce0eebe36e57a296893461ab00ae6d97f175fd86cf8459e030209af7b482ce5df11669e52cbb0366648f", + "file": "src/assets/wise5/authoringTool/create-branch-paths/create-branch-paths.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "create-branch-paths", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./create-branch-paths.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "componentId", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "line": 42, + "type": "string", + "decorators": [] + }, + { + "name": "criteria", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "line": 43, + "type": "string", + "decorators": [] + }, + { + "name": "nodeId", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "line": 44, + "type": "string", + "decorators": [] + }, + { + "name": "pathCount", + "deprecated": false, + "deprecationMessage": "", + "line": 45, + "type": "number", + "decorators": [] + }, + { + "name": "pathFormGroup", + "deprecated": false, + "deprecationMessage": "", + "line": 47, + "type": "FormGroup", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "CHOICE_CHOSEN_VALUE", + "defaultValue": "CHOICE_CHOSEN_VALUE", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 38, + "modifierKind": [ + 124, + 148 + ] + }, + { + "name": "choices", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "Choice[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 41, + "modifierKind": [ + 124 + ] + }, + { + "name": "pathsFormArray", + "defaultValue": "new FormArray([])", + "deprecated": false, + "deprecationMessage": "", + "type": "FormArray", + "indexKey": "", + "optional": false, + "description": "", + "line": 46, + "modifierKind": [ + 124 + ] + }, + { + "name": "SCORE_VALUE", + "defaultValue": "SCORE_VALUE", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 39, + "modifierKind": [ + 124, + 148 + ] + } + ], + "methodsClass": [ + { + "name": "autoFillChoiceChosenValues", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 123, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "clearPathFormControlValues", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 69, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "createPathFormControl", + "args": [], + "optional": false, + "returnType": "FormControl", + "typeParameters": [], + "line": 103, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "criteriaRequiresAdditionalParams", + "args": [ + { + "name": "criteria", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 87, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "criteria", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "decreasePaths", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 97, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "getComponent", + "args": [], + "optional": false, + "returnType": "ComponentContent", + "typeParameters": [], + "line": 131, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "increasePaths", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 91, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "initializeChoiceChosenOptions", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 109, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "initializeFormControls", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 73, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "ngOnChanges", + "args": [ + { + "name": "changes", + "type": "SimpleChanges", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 55, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "changes", + "type": "SimpleChanges", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 51, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "populateChoices", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 118, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "updateNumPathFormControls", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 77, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatInputModule", + "type": "module" + }, + { + "name": "MatSelectModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + }, + { + "name": "ReactiveFormsModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input, SimpleChanges } from '@angular/core';\nimport {\n FormArray,\n FormControl,\n FormGroup,\n FormsModule,\n ReactiveFormsModule,\n Validators\n} from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { CHOICE_CHOSEN_VALUE, SCORE_VALUE } from '../../../../app/domain/branchCriteria';\nimport { ComponentContent } from '../../common/ComponentContent';\nimport { Choice } from '../../components/multipleChoice/Choice';\nimport { MultipleChoiceContent } from '../../components/multipleChoice/MultipleChoiceContent';\nimport { TeacherProjectService } from '../../services/teacherProjectService';\n\n@Component({\n imports: [\n FormsModule,\n MatButtonModule,\n MatFormFieldModule,\n MatIconModule,\n MatInputModule,\n MatSelectModule,\n MatTooltipModule,\n ReactiveFormsModule\n ],\n selector: 'create-branch-paths',\n styleUrl: './create-branch-paths.component.scss',\n templateUrl: './create-branch-paths.component.html'\n})\nexport class CreateBranchPathsComponent {\n protected readonly CHOICE_CHOSEN_VALUE: string = CHOICE_CHOSEN_VALUE;\n protected readonly SCORE_VALUE: string = SCORE_VALUE;\n\n protected choices: Choice[] = [];\n @Input() componentId: string = '';\n @Input() criteria: string = '';\n @Input() nodeId: string = '';\n @Input() pathCount: number;\n protected pathsFormArray: FormArray = new FormArray([]);\n @Input() pathFormGroup: FormGroup;\n\n constructor(private projectService: TeacherProjectService) {}\n\n ngOnInit(): void {\n this.pathFormGroup.addControl('paths', this.pathsFormArray);\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.pathCount) {\n this.updateNumPathFormControls();\n } else {\n this.clearPathFormControlValues();\n if (this.pathsFormArray.length === 0) {\n this.initializeFormControls();\n }\n if (this.criteria === this.CHOICE_CHOSEN_VALUE) {\n this.initializeChoiceChosenOptions();\n }\n }\n }\n\n protected clearPathFormControlValues(): void {\n this.pathsFormArray.controls.forEach((formControl) => formControl.setValue(''));\n }\n\n protected initializeFormControls(): void {\n this.increasePaths();\n }\n\n protected updateNumPathFormControls(): void {\n if (this.criteriaRequiresAdditionalParams(this.criteria)) {\n if (this.pathsFormArray.length < this.pathCount) {\n this.increasePaths();\n } else if (this.pathsFormArray.length > this.pathCount) {\n this.decreasePaths();\n }\n }\n }\n\n protected criteriaRequiresAdditionalParams(criteria: string): boolean {\n return criteria === this.SCORE_VALUE || criteria === this.CHOICE_CHOSEN_VALUE;\n }\n\n private increasePaths(): void {\n for (let i = this.pathsFormArray.length; i < this.pathCount; i++) {\n this.createPathFormControl();\n }\n }\n\n private decreasePaths(): void {\n for (let i = this.pathsFormArray.length - 1; i >= this.pathCount; i--) {\n this.pathsFormArray.removeAt(i);\n }\n }\n\n protected createPathFormControl(): FormControl {\n const formControl = new FormControl('', [Validators.required]);\n this.pathsFormArray.push(formControl);\n return formControl;\n }\n\n protected initializeChoiceChosenOptions(): void {\n if (this.getComponent()?.type === 'MultipleChoice') {\n this.populateChoices();\n this.autoFillChoiceChosenValues();\n } else {\n this.choices = [];\n }\n }\n\n protected populateChoices(): void {\n const component: MultipleChoiceContent = this.getComponent() as MultipleChoiceContent;\n this.choices = component.choices;\n }\n\n protected autoFillChoiceChosenValues(): void {\n const component: MultipleChoiceContent = this.getComponent() as MultipleChoiceContent;\n const choiceIds = component.choices.map((choice: Choice) => choice.id);\n this.pathsFormArray.controls.forEach((formControl, index) => {\n formControl.setValue(choiceIds[index]);\n });\n }\n\n protected getComponent(): ComponentContent {\n return this.projectService.getNode(this.nodeId).getComponent(this.componentId);\n }\n}\n", + "styleUrl": "./create-branch-paths.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 47, + "jsdoctags": [ + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "@if (\n nodeId != null &&\n nodeId !== '' &&\n componentId != null &&\n componentId !== '' &&\n (criteria === SCORE_VALUE || criteria === CHOICE_CHOSEN_VALUE)\n) {\n
\n \n @for (formControl of pathsFormArray.controls; track formControl; let index = $index) {\n
\n
\n Path {{ index + 1 }}\n @if (criteria === SCORE_VALUE) {\n \n Score\n \n \n } @else if (criteria === CHOICE_CHOSEN_VALUE) {\n \n Choice Chosen\n \n @for (choice of choices; track choice) {\n \n {{ choice.text }}\n \n }\n \n \n }\n
\n
\n }\n
\n
\n}\n" + }, + { + "name": "CreateNewPeerGroupingDialogComponent", + "id": "component-CreateNewPeerGroupingDialogComponent-43b3aad7c1b9dd19b7d8597115c7135a9afb11fe1363b36e8ecf677a487cc3e09b8bc855527302564eb5cadbf583f22211f7152a65eba231054d821a4853c3ca", + "file": "src/assets/wise5/authoringTool/peer-grouping/create-new-peer-grouping-dialog/create-new-peer-grouping-dialog.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "create-new-peer-grouping-dialog", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./create-new-peer-grouping-dialog.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "allowedReferenceComponentTypes", + "defaultValue": "['OpenResponse']", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "inheritance": { + "file": "AuthorPeerGroupingDialogComponent" + } + }, + { + "name": "availableLogic", + "deprecated": false, + "deprecationMessage": "", + "type": "PeerGroupingLogic[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "inheritance": { + "file": "AuthorPeerGroupingDialogComponent" + } + }, + { + "name": "availableModes", + "defaultValue": "AVAILABLE_MODES", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "inheritance": { + "file": "AuthorPeerGroupingDialogComponent" + } + }, + { + "name": "logicType", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "inheritance": { + "file": "AuthorPeerGroupingDialogComponent" + } + }, + { + "name": "logicTypesWithModes", + "defaultValue": "['differentIdeas', 'differentKIScores']", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "inheritance": { + "file": "AuthorPeerGroupingDialogComponent" + } + }, + { + "name": "mode", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "inheritance": { + "file": "AuthorPeerGroupingDialogComponent" + } + }, + { + "name": "peerGrouping", + "deprecated": false, + "deprecationMessage": "", + "type": "PeerGrouping", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "inheritance": { + "file": "AuthorPeerGroupingDialogComponent" + } + }, + { + "name": "referenceComponent", + "defaultValue": "new ReferenceComponent(null, null)", + "deprecated": false, + "deprecationMessage": "", + "type": "ReferenceComponent", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "inheritance": { + "file": "AuthorPeerGroupingDialogComponent" + } + } + ], + "methodsClass": [ + { + "name": "create", + "args": [], + "optional": false, + "returnType": "Subscription", + "typeParameters": [], + "line": 43, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 39, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AuthorPeerGroupingDialogComponent" + } + }, + { + "name": "cancel", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 54, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AuthorPeerGroupingDialogComponent" + } + }, + { + "name": "generateLogicString", + "args": [ + { + "name": "logicType", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "referenceComponent", + "type": "ReferenceComponent", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "mode", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 42, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "logicType", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "referenceComponent", + "type": "ReferenceComponent", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "mode", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AuthorPeerGroupingDialogComponent" + } + }, + { + "name": "handleError", + "args": [ + { + "name": "error", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 58, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "error", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AuthorPeerGroupingDialogComponent" + } + }, + { + "name": "updatePeerGroupingLogic", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 30, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AuthorPeerGroupingDialogComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatDialogModule", + "type": "module" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatInputModule", + "type": "module" + }, + { + "name": "MatSelectModule", + "type": "module" + }, + { + "name": "SelectStepAndComponentComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { Subscription } from 'rxjs';\nimport { PeerGrouping } from '../../../../../app/domain/peerGrouping';\nimport { PeerGroupingAuthoringService } from '../../../services/peerGroupingAuthoringService';\nimport { AuthorPeerGroupingDialogComponent } from '../author-peer-grouping-dialog/author-peer-grouping-dialog.component';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { ProjectService } from '../../../services/projectService';\nimport { SelectStepAndComponentComponent } from '../../../../../app/authoring-tool/select-step-and-component/select-step-and-component.component';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { FormsModule } from '@angular/forms';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatInputModule } from '@angular/material/input';\n\n@Component({\n imports: [\n FormsModule,\n MatButtonModule,\n MatDialogModule,\n MatFormFieldModule,\n MatInputModule,\n MatSelectModule,\n SelectStepAndComponentComponent\n ],\n selector: 'create-new-peer-grouping-dialog',\n templateUrl: './create-new-peer-grouping-dialog.component.html'\n})\nexport class CreateNewPeerGroupingDialogComponent extends AuthorPeerGroupingDialogComponent {\n constructor(\n protected dialogRef: MatDialogRef,\n private peerGroupingAuthoringService: PeerGroupingAuthoringService,\n protected projectService: ProjectService,\n protected snackBar: MatSnackBar\n ) {\n super(dialogRef, projectService, snackBar);\n }\n\n ngOnInit(): void {\n this.peerGrouping = new PeerGrouping({ logic: 'random', maxMembershipCount: 2 });\n }\n\n create(): Subscription {\n this.peerGrouping.tag = this.peerGroupingAuthoringService.getUniqueTag();\n this.updatePeerGroupingLogic();\n return this.peerGroupingAuthoringService.createNewPeerGrouping(this.peerGrouping).subscribe({\n next: () => {\n this.dialogRef.close();\n },\n error: ({ error }) => {\n this.handleError(error);\n }\n });\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "dialogRef", + "type": "MatDialogRef", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "peerGroupingAuthoringService", + "type": "PeerGroupingAuthoringService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "snackBar", + "type": "MatSnackBar", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 29, + "jsdoctags": [ + { + "name": "dialogRef", + "type": "MatDialogRef", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "peerGroupingAuthoringService", + "type": "PeerGroupingAuthoringService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "snackBar", + "type": "MatSnackBar", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "AuthorPeerGroupingDialogComponent" + ], + "templateData": "

Create New Peer Grouping

\n\n
\n \n Grouping Name\n \n \n
\n
\n \n Logic\n \n @for (logic of availableLogic; track logic) {\n \n {{ logic.name }}\n \n }\n \n \n @if (logicType === 'differentIdeas' || logicType === 'differentKIScores') {\n \n }\n @if (logicTypesWithModes.includes(logicType)) {\n \n Mode\n \n @for (mode of availableModes; track mode) {\n \n {{ mode.name }}\n \n }\n \n \n }\n
\n \n
\n \n Teams Per Group\n \n \n
\n
\n\n \n \n\n" + }, + { + "name": "CreateRunDialogComponent", + "id": "component-CreateRunDialogComponent-c3bae1e51bfc1f3421878cd37aadf6c92e70f70216c2a5977977109d9f4e51daca3a1a9a405ab42280a8ed49d3ee31746f7d37968b6763308bd17967a83a33c4", + "file": "src/app/teacher/create-run-dialog/create-run-dialog.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [ + { + "name": "AccessLinkService", + "type": "injectable" + }, + { + "name": "provideNativeDateAdapter()" + } + ], + "selector": "create-run-dialog", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./create-run-dialog.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "accessLinks", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 65, + "modifierKind": [ + 124 + ] + }, + { + "name": "customPeriods", + "deprecated": false, + "deprecationMessage": "", + "type": "FormControl", + "indexKey": "", + "optional": false, + "description": "", + "line": 66, + "modifierKind": [ + 124 + ] + }, + { + "name": "data", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 81, + "decorators": [ + { + "name": "Inject", + "stringifiedArguments": "MAT_DIALOG_DATA" + } + ], + "modifierKind": [ + 171, + 125 + ] + }, + { + "name": "dialog", + "deprecated": false, + "deprecationMessage": "", + "type": "MatDialog", + "indexKey": "", + "optional": false, + "description": "", + "line": 82, + "modifierKind": [ + 125 + ] + }, + { + "name": "dialogRef", + "deprecated": false, + "deprecationMessage": "", + "type": "MatDialogRef", + "indexKey": "", + "optional": false, + "description": "", + "line": 83, + "modifierKind": [ + 125 + ] + }, + { + "name": "endDateControl", + "deprecated": false, + "deprecationMessage": "", + "type": "FormControl", + "indexKey": "", + "optional": false, + "description": "", + "line": 67, + "modifierKind": [ + 123 + ] + }, + { + "name": "form", + "deprecated": false, + "deprecationMessage": "", + "type": "FormGroup", + "indexKey": "", + "optional": false, + "description": "", + "line": 68 + }, + { + "name": "isCreated", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 69, + "modifierKind": [ + 124 + ] + }, + { + "name": "isCreating", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 70, + "modifierKind": [ + 124 + ] + }, + { + "name": "maxStartDate", + "deprecated": false, + "deprecationMessage": "", + "type": "Date", + "indexKey": "", + "optional": false, + "description": "", + "line": 71, + "modifierKind": [ + 124 + ] + }, + { + "name": "minEndDate", + "deprecated": false, + "deprecationMessage": "", + "type": "Date", + "indexKey": "", + "optional": false, + "description": "", + "line": 72, + "modifierKind": [ + 124 + ] + }, + { + "name": "periodOptions", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 73, + "modifierKind": [ + 123 + ] + }, + { + "name": "periodsGroup", + "deprecated": false, + "deprecationMessage": "", + "type": "FormArray", + "indexKey": "", + "optional": false, + "description": "", + "line": 74 + }, + { + "name": "project", + "deprecated": false, + "deprecationMessage": "", + "type": "Project", + "indexKey": "", + "optional": false, + "description": "", + "line": 75 + }, + { + "name": "run", + "defaultValue": "null", + "deprecated": false, + "deprecationMessage": "", + "type": "TeacherRun", + "indexKey": "", + "optional": false, + "description": "", + "line": 76 + } + ], + "methodsClass": [ + { + "name": "checkClassroomAuthorization", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 223, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "closeAll", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 219, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "copyMsg", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 269, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "create", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 152, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getClassroomCourses", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 241, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "getFormControlValue", + "args": [ + { + "name": "control", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 265, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "control", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getPeriodFromAccessLink", + "args": [ + { + "name": "link", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 273, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "link", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getPeriodsString", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 201, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isDefaultRun", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 261, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "isGoogleClassroomEnabled", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 133, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "isGoogleUser", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 129, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "mapPeriods", + "args": [ + { + "name": "items", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string[]", + "typeParameters": [], + "line": 147, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "items", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 93, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "setAsSurveyUnit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 277, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "setDateRange", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 214, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "setPeriodOptions", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 137, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "updateLockedAfterEndDateCheckbox", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 252, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "ClipboardModule", + "type": "module" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatCardModule", + "type": "module" + }, + { + "name": "MatCheckboxModule", + "type": "module" + }, + { + "name": "MatDatepickerModule", + "type": "module" + }, + { + "name": "MatDialogModule", + "type": "module" + }, + { + "name": "MatDividerModule", + "type": "module" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatInputModule", + "type": "module" + }, + { + "name": "MatProgressBarModule", + "type": "module" + }, + { + "name": "MatRadioModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + }, + { + "name": "ReactiveFormsModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { ClipboardModule } from '@angular/cdk/clipboard';\nimport { Component, Inject } from '@angular/core';\nimport { ConfigService } from '../../services/config.service';\nimport { finalize } from 'rxjs/operators';\nimport {\n FormsModule,\n ReactiveFormsModule,\n FormArray,\n FormBuilder,\n FormControl,\n FormGroup,\n Validators\n} from '@angular/forms';\nimport { ListClassroomCoursesDialogComponent } from '../list-classroom-courses-dialog/list-classroom-courses-dialog.component';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport {\n MatDialogModule,\n MatDialogRef,\n MAT_DIALOG_DATA,\n MatDialog\n} from '@angular/material/dialog';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { Project } from '../../domain/project';\nimport { provideNativeDateAdapter } from '@angular/material/core';\nimport { Router } from '@angular/router';\nimport { TeacherRun } from '../teacher-run';\nimport { TeacherService } from '../teacher.service';\nimport { UserService } from '../../services/user.service';\nimport { AccessLinkService } from '../../services/accessLinkService';\n\n@Component({\n imports: [\n ClipboardModule,\n FormsModule,\n MatButtonModule,\n MatCardModule,\n MatCheckboxModule,\n MatDatepickerModule,\n MatDialogModule,\n MatDividerModule,\n MatFormFieldModule,\n MatIconModule,\n MatInputModule,\n MatProgressBarModule,\n MatRadioModule,\n MatTooltipModule,\n ReactiveFormsModule\n ],\n providers: [AccessLinkService, provideNativeDateAdapter()],\n selector: 'create-run-dialog',\n styleUrl: './create-run-dialog.component.scss',\n templateUrl: './create-run-dialog.component.html'\n})\nexport class CreateRunDialogComponent {\n protected accessLinks: string[] = [];\n protected customPeriods: FormControl;\n private endDateControl: FormControl;\n form: FormGroup;\n protected isCreated: boolean = false;\n protected isCreating: boolean = false;\n protected maxStartDate: Date;\n protected minEndDate: Date;\n private periodOptions: string[] = [];\n periodsGroup: FormArray;\n project: Project;\n run: TeacherRun = null;\n\n constructor(\n private accessLinkService: AccessLinkService,\n private configService: ConfigService,\n @Inject(MAT_DIALOG_DATA) public data: any,\n public dialog: MatDialog,\n public dialogRef: MatDialogRef,\n private fb: FormBuilder,\n private router: Router,\n private snackBar: MatSnackBar,\n private teacherService: TeacherService,\n private userService: UserService\n ) {\n this.project = data.project;\n }\n\n ngOnInit(): void {\n this.setPeriodOptions();\n let hiddenControl = new FormControl('', Validators.required);\n this.periodsGroup = new FormArray(\n this.periodOptions.map(\n (period) =>\n new FormGroup({\n name: new FormControl(period),\n checkbox: new FormControl(false)\n })\n )\n );\n this.periodsGroup.valueChanges.subscribe((v) => {\n hiddenControl.setValue(this.getPeriodsString());\n });\n this.customPeriods = new FormControl('');\n this.customPeriods.valueChanges.subscribe((v) => {\n hiddenControl.setValue(this.getPeriodsString());\n });\n this.endDateControl = new FormControl();\n this.endDateControl.valueChanges.subscribe((v) => {\n this.updateLockedAfterEndDateCheckbox();\n });\n this.form = this.fb.group({\n selectedPeriods: this.periodsGroup,\n customPeriods: this.customPeriods,\n periods: hiddenControl,\n runType: new FormControl('default', Validators.required),\n maxStudentsPerTeam: new FormControl(3, Validators.required),\n startDate: new FormControl(new Date(), Validators.required),\n endDate: this.endDateControl,\n isLockedAfterEndDate: new FormControl({ value: false, disabled: true })\n });\n this.setDateRange();\n }\n\n protected isGoogleUser(): boolean {\n return this.userService.isGoogleUser();\n }\n\n protected isGoogleClassroomEnabled(): boolean {\n return this.configService.isGoogleClassroomEnabled();\n }\n\n private setPeriodOptions(): void {\n for (let i = 1; i < 9; i++) {\n this.periodOptions.push(i.toString());\n }\n }\n\n get selectedPeriodsControl() {\n return this.form.get('selectedPeriods');\n }\n\n private mapPeriods(items: any[]): string[] {\n const selectedPeriods = items.filter((item) => item.checkbox).map((item) => item.name);\n return selectedPeriods.length ? selectedPeriods : [];\n }\n\n create(): void {\n this.isCreating = true;\n const isSurvey: boolean = this.getFormControlValue('runType') === 'survey';\n const combinedPeriods = isSurvey\n ? this.mapPeriods(this.periodsGroup.value).toString()\n : this.getPeriodsString();\n const startDate: number = this.getFormControlValue('startDate').getTime();\n let endDateValue: Date = this.getFormControlValue('endDate');\n let endDate: number = null;\n if (endDateValue) {\n endDateValue.setHours(23, 59, 59);\n endDate = endDateValue.getTime();\n }\n const isLockedAfterEndDate: boolean = this.getFormControlValue('isLockedAfterEndDate');\n const maxStudentsPerTeam: number = isSurvey\n ? 1\n : this.getFormControlValue('maxStudentsPerTeam');\n this.teacherService\n .createRun(\n this.project.id,\n combinedPeriods,\n isSurvey,\n maxStudentsPerTeam,\n startDate,\n endDate,\n isLockedAfterEndDate\n )\n .pipe(\n finalize(() => {\n this.isCreating = false;\n })\n )\n .subscribe((newRun: TeacherRun) => {\n this.run = new TeacherRun(newRun);\n if (this.run.isSurveyRun()) {\n this.accessLinks = this.accessLinkService.getAccessLinks(\n this.run.runCode,\n this.run.periods\n );\n }\n this.dialogRef.afterClosed().subscribe(() => {\n this.router.navigate(['/teacher/home/schedule'], {\n queryParams: { newRunId: newRun.id }\n });\n });\n this.isCreated = true;\n });\n }\n\n getPeriodsString(): string {\n const periods = this.mapPeriods(this.periodsGroup.value);\n const customPeriods = this.customPeriods.value.split(',');\n for (let i = 0; i < customPeriods.length; i++) {\n customPeriods[i] = customPeriods[i].trim();\n }\n if (periods.length > 0) {\n return periods.toString() + ',' + customPeriods.toString();\n } else {\n return customPeriods.toString();\n }\n }\n\n protected setDateRange(): void {\n this.minEndDate = this.getFormControlValue('startDate');\n this.maxStartDate = this.getFormControlValue('endDate');\n }\n\n protected closeAll(): void {\n this.dialog.closeAll();\n }\n\n protected checkClassroomAuthorization(): void {\n this.teacherService\n .getClassroomAuthorizationUrl(this.userService.getUser().getValue().username)\n .subscribe(({ authorizationUrl }) => {\n if (authorizationUrl == null) {\n this.getClassroomCourses();\n } else {\n const authWindow = window.open(authorizationUrl, 'authorize', 'width=600,height=800');\n const timer = setInterval(() => {\n if (authWindow.closed) {\n clearInterval(timer);\n this.checkClassroomAuthorization();\n }\n }, 1000);\n }\n });\n }\n\n private getClassroomCourses(): void {\n this.teacherService\n .getClassroomCourses(this.userService.getUser().getValue().username)\n .subscribe((courses) => {\n this.dialog.open(ListClassroomCoursesDialogComponent, {\n data: { run: this.run, courses },\n panelClass: 'mat-dialog-md'\n });\n });\n }\n\n updateLockedAfterEndDateCheckbox(): void {\n if (this.endDateControl.value == null) {\n this.form.controls['isLockedAfterEndDate'].setValue(false);\n this.form.controls['isLockedAfterEndDate'].disable();\n } else {\n this.form.controls['isLockedAfterEndDate'].enable();\n }\n }\n\n protected isDefaultRun(): boolean {\n return this.getFormControlValue('runType') === 'default';\n }\n\n private getFormControlValue(control: string): any {\n return this.form.controls[control].value;\n }\n\n protected copyMsg(): void {\n this.snackBar.open($localize`Copied to clipboard.`);\n }\n\n protected getPeriodFromAccessLink(link: string): string {\n return this.accessLinkService.getPeriodFromAccessLink(link);\n }\n\n protected setAsSurveyUnit(): void {\n this.customPeriods.setValue('');\n this.periodsGroup.controls.forEach((control, index) => {\n index === 0\n ? control.get('checkbox').setValue(true)\n : control.get('checkbox').setValue(false);\n });\n }\n}\n", + "styleUrl": "./create-run-dialog.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "accessLinkService", + "type": "AccessLinkService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialogRef", + "type": "MatDialogRef", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "fb", + "type": "FormBuilder", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "snackBar", + "type": "MatSnackBar", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "teacherService", + "type": "TeacherService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "userService", + "type": "UserService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 76, + "jsdoctags": [ + { + "name": "accessLinkService", + "type": "AccessLinkService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialogRef", + "type": "MatDialogRef", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "fb", + "type": "FormBuilder", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "snackBar", + "type": "MatSnackBar", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "teacherService", + "type": "TeacherService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "userService", + "type": "UserService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "accessors": { + "selectedPeriodsControl": { + "name": "selectedPeriodsControl", + "getSignature": { + "name": "selectedPeriodsControl", + "type": "", + "returnType": "", + "line": 143 + } + } + }, + "templateData": "

Use with Class

\n@if (!isCreated) {\n
\n \n

\n {{ project.metadata.title }}\n (Unit ID: {{ project.id }})\n

\n

1. Choose Run Type

\n
\n \n Default\n Survey\n \n \n
\n

\n Default units require participants to log in with a WISE student account. Survey units are\n completed anonymously without a WISE account.\n

\n

\n Note: Surveys are meant for shorter units that can be completed in one session and are best\n for anonymous data collection. Participants can only submit their responses once and cannot\n continue working at a later time. Please choose the \"Default\" run type if you want\n participants to be able to save their work, reload, and continue working over multiple\n sessions.\n

\n \n @if (isDefaultRun()) {\n

2. Choose Periods

\n

\n @for (control of selectedPeriodsControl.controls; track $index) {\n \n \n {{ control.controls.name.value }}\n \n \n }\n

\n \n Add your own periods\n \n \n

\n For \"Period 9\", just enter the number 9. Separate periods with commas (e.g. \"Section 1,\n Section 2\"). Manually named periods should be no more than 16 characters long.\n

\n \n

3. Choose Students Per Team

\n \n Only 1 student\n 1-3 students\n \n \n

4. Set Schedule

\n } @else {\n

2. Set Schedule

\n }\n
\n
\n \n Start date\n \n \n \n Start date is required\n \n
\n
\n \n End date\n \n \n \n \n
\n @if (isDefaultRun()) {\n
\n \n Lock After End Date \n help\n
\n }\n
\n

\n Note: These dates can be changed at any time from your Class Schedule. Just select \"Edit\n Settings\" from the unit's dropdown menu.\n

\n
\n \n \n \n @if (isCreating) {\n \n }\n Create Run\n \n \n
\n} @else {\n \n
\n

Success! This unit has been added to your Class Schedule.

\n

{{ run.name }}

\n @if (isDefaultRun()) {\n

Access Code: {{ run.runCode }}

\n

\n Important: Every classroom unit has a unique Access Code. Students use this code to\n register for a unit. Give the code to your students when they first sign up for a WISE\n account. If they already have WISE accounts, have them log in and then select \"Add Unit\"\n from the student home page.\n

\n

\n You can always find the Access Code for each classroom unit in your Class Schedule.\n

\n } @else {\n

\n Access Link:\n \n content_copy\n {{ accessLinks[0] }}\n \n

\n

\n Important: Every survey unit has a unique Access Link. Participants can use this link to\n complete the unit without a WISE account.\n

\n

You can always find the Access Link for each survey unit in your Class Schedule.

\n }\n
\n
\n \n @if (isGoogleUser() && isGoogleClassroomEnabled()) {\n \n }\n \n \n}\n" + }, + { + "name": "CurriculumComponent", + "id": "component-CurriculumComponent-30ecbc6e4b28df8cacba25d71a3aa3c170af50979c54dc2690f6e1c6ac75093ef7cc51b0a2909a97e438abb0c29b11cf32cce6c959999b228dab012ed7728a15", + "file": "src/app/curriculum/curriculum.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [ + { + "name": "ProjectFilterValues" + } + ], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./curriculum.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "numMyUnitsVisible", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 30, + "modifierKind": [ + 123 + ] + }, + { + "name": "numPublicUnitsVisible", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 31, + "modifierKind": [ + 123 + ] + }, + { + "name": "showMyUnits", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 32, + "modifierKind": [ + 124 + ] + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 33, + "modifierKind": [ + 123 + ] + } + ], + "methodsClass": [ + { + "name": "getLibraryProjects", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 52, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "getMyUnitsTabLabel", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 78, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "getPublicTabLabel", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 74, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "isPersonalRoute", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 86, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "isPublicRoute", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 82, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 48, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 42, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "subscribeNumUnitsVisible", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 61, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "LibraryFiltersComponent", + "type": "component" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatTabsModule", + "type": "module" + }, + { + "name": "PersonalLibraryComponent", + "type": "component" + }, + { + "name": "PublicLibraryComponent", + "type": "component" + }, + { + "name": "RouterModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { ConfigService } from '../services/config.service';\nimport { LibraryFiltersComponent } from '../modules/library/library-filters/library-filters.component';\nimport { LibraryService } from '../services/library.service';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { PersonalLibraryComponent } from '../modules/library/personal-library/personal-library.component';\nimport { PublicLibraryComponent } from '../modules/library/public-library/public-library.component';\nimport { Subscription } from 'rxjs';\nimport { UserService } from '../services/user.service';\nimport { MatButtonModule } from '@angular/material/button';\nimport { Router, RouterModule } from '@angular/router';\nimport { ProjectFilterValues } from '../domain/projectFilterValues';\n\n@Component({\n imports: [\n LibraryFiltersComponent,\n MatButtonModule,\n MatIconModule,\n MatTabsModule,\n PersonalLibraryComponent,\n PublicLibraryComponent,\n RouterModule\n ],\n providers: [ProjectFilterValues],\n styleUrl: './curriculum.component.scss',\n templateUrl: './curriculum.component.html'\n})\nexport class CurriculumComponent {\n private numMyUnitsVisible: number = 0;\n private numPublicUnitsVisible: number = 0;\n protected showMyUnits: boolean;\n private subscriptions: Subscription = new Subscription();\n\n constructor(\n protected configService: ConfigService,\n private libraryService: LibraryService,\n private userService: UserService,\n private router: Router\n ) {}\n\n ngOnInit(): void {\n this.showMyUnits = this.userService.isTeacher();\n this.getLibraryProjects();\n this.subscribeNumUnitsVisible();\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n private getLibraryProjects(): void {\n this.libraryService.getCommunityLibraryProjects();\n this.libraryService.getOfficialLibraryProjects();\n if (this.showMyUnits) {\n this.libraryService.getPersonalLibraryProjects();\n this.libraryService.getSharedLibraryProjects();\n }\n }\n\n private subscribeNumUnitsVisible(): void {\n this.subscriptions.add(\n this.libraryService.numberOfPersonalProjectsVisible$.subscribe(\n (num) => (this.numMyUnitsVisible = num)\n )\n );\n this.subscriptions.add(\n this.libraryService.numberOfPublicProjectsVisible$.subscribe(\n (num) => (this.numPublicUnitsVisible = num)\n )\n );\n }\n\n protected getPublicTabLabel(): string {\n return $localize`Public (${this.numPublicUnitsVisible})`;\n }\n\n protected getMyUnitsTabLabel(): string {\n return $localize`My Units (${this.numMyUnitsVisible})`;\n }\n\n protected isPublicRoute(): boolean {\n return this.router.url === '/curriculum/public';\n }\n\n protected isPersonalRoute(): boolean {\n return this.router.url === '/curriculum/personal';\n }\n}\n", + "styleUrl": "./curriculum.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "libraryService", + "type": "LibraryService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "userService", + "type": "UserService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 33, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "libraryService", + "type": "LibraryService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "userService", + "type": "UserService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "\n" + }, + { + "name": "CustomSnackbarComponent", + "id": "component-CustomSnackbarComponent-7515930b3feb4de25762ed5d19f05ef8be9a2b6f2e1091ed6325aed4203989ee0ab4b830af1a9ad41bc641e380d4d587d31b6e80a67a6f9eb070c1b252cd96fe", + "file": "src/stories/snackbar/snackbar-trigger/snackbar-trigger.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "custom-snackbar", + "styleUrls": [], + "styles": [ + "\n :host {\n display: flex;\n\n .mat-icon {\n color: var(--mat-sys-error-container);\n }\n }\n " + ], + "templateUrl": [ + "./custom-snackbar.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "action", + "defaultValue": "this.data.action", + "deprecated": false, + "deprecationMessage": "", + "indexKey": "", + "optional": false, + "description": "", + "line": 83, + "modifierKind": [ + 148 + ], + "required": false + }, + { + "name": "message", + "defaultValue": "this.data.message", + "deprecated": false, + "deprecationMessage": "", + "indexKey": "", + "optional": false, + "description": "", + "line": 82, + "modifierKind": [ + 148 + ], + "required": false + } + ], + "outputsClass": [ + { + "name": "action", + "defaultValue": "this.data.action", + "deprecated": false, + "deprecationMessage": "", + "indexKey": "", + "optional": false, + "description": "", + "line": 83, + "modifierKind": [ + 148 + ], + "required": false + }, + { + "name": "message", + "defaultValue": "this.data.message", + "deprecated": false, + "deprecationMessage": "", + "indexKey": "", + "optional": false, + "description": "", + "line": 82, + "modifierKind": [ + 148 + ], + "required": false + } + ], + "propertiesClass": [ + { + "name": "data", + "defaultValue": "inject(MAT_SNACK_BAR_DATA)", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 81, + "modifierKind": [ + 148 + ] + }, + { + "name": "snackBarRef", + "defaultValue": "inject(MatSnackBarRef)", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 80, + "modifierKind": [ + 148 + ] + } + ], + "methodsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatSnackBarLabel" + }, + { + "name": "MatSnackBarActions" + }, + { + "name": "MatSnackBarAction" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, inject, model } from '@angular/core';\nimport {\n MAT_SNACK_BAR_DATA,\n MatSnackBar,\n MatSnackBarAction,\n MatSnackBarActions,\n MatSnackBarHorizontalPosition,\n MatSnackBarLabel,\n MatSnackBarRef,\n MatSnackBarVerticalPosition\n} from '@angular/material/snack-bar';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatIconModule } from '@angular/material/icon';\n\nexport interface SnackbarData {\n message: string;\n action: string;\n}\n\n@Component({\n selector: 'snackbar-trigger',\n templateUrl: './snackbar-trigger.component.html',\n imports: [\n MatFormFieldModule,\n MatInputModule,\n MatSelectModule,\n FormsModule,\n MatButtonModule,\n MatCheckboxModule\n ]\n})\nexport class SnackbarTriggerComponent {\n protected message: string = 'Hello world!';\n protected action: string = 'Close';\n protected duration: number = 10;\n protected horizontalPosition: MatSnackBarHorizontalPosition = 'center';\n protected verticalPosition: MatSnackBarVerticalPosition = 'bottom';\n protected useCustomComponent: boolean = false;\n\n constructor(private _snackBar: MatSnackBar) {}\n\n openSnackBar() {\n if (this.useCustomComponent) {\n this._snackBar.openFromComponent(CustomSnackbarComponent, {\n duration: this.duration * 1000,\n horizontalPosition: this.horizontalPosition,\n verticalPosition: this.verticalPosition,\n data: { message: this.message, action: this.action }\n });\n } else {\n this._snackBar.open(this.message, this.action, {\n duration: this.duration * 1000,\n horizontalPosition: this.horizontalPosition,\n verticalPosition: this.verticalPosition\n });\n }\n }\n}\n\n@Component({\n selector: 'custom-snackbar',\n templateUrl: './custom-snackbar.html',\n styles: `\n :host {\n display: flex;\n\n .mat-icon {\n color: var(--mat-sys-error-container);\n }\n }\n `,\n imports: [MatButtonModule, MatIconModule, MatSnackBarLabel, MatSnackBarActions, MatSnackBarAction]\n})\nexport class CustomSnackbarComponent {\n readonly snackBarRef = inject(MatSnackBarRef);\n readonly data = inject(MAT_SNACK_BAR_DATA);\n readonly message = model(this.data.message);\n readonly action = model(this.data.action);\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "\n :host {\n display: flex;\n\n .mat-icon {\n color: var(--mat-sys-error-container);\n }\n }\n \n", + "extends": [], + "templateData": "warning{{ data.message }}\n\n \n \n\n" + }, + { + "name": "DataExportComponent", + "id": "component-DataExportComponent-2dbef79a81f2e658a4c5eb5a0ee301d0d82ee4245c397c53f736773d0bf1f013f89ac217df936ee2b822c94a803eeebc0735a62f5df20add2b2d6f8643d357fa", + "file": "src/assets/wise5/classroomMonitor/dataExport/data-export/data-export.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [ + ".button-div { margin-top: 10px; margin-bottom: 10px; }" + ], + "templateUrl": [ + "./data-export.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "annotationService", + "deprecated": false, + "deprecationMessage": "", + "type": "AnnotationService", + "indexKey": "", + "optional": false, + "description": "", + "line": 25, + "modifierKind": [ + 125 + ] + }, + { + "name": "componentServiceLookupService", + "deprecated": false, + "deprecationMessage": "", + "type": "ComponentServiceLookupService", + "indexKey": "", + "optional": false, + "description": "", + "line": 26, + "modifierKind": [ + 125 + ] + }, + { + "name": "configService", + "deprecated": false, + "deprecationMessage": "", + "type": "ConfigService", + "indexKey": "", + "optional": false, + "description": "", + "line": 27, + "modifierKind": [ + 125 + ] + }, + { + "name": "dataExportService", + "deprecated": false, + "deprecationMessage": "", + "type": "DataExportService", + "indexKey": "", + "optional": false, + "description": "", + "line": 28, + "modifierKind": [ + 125 + ] + }, + { + "name": "dataService", + "deprecated": false, + "deprecationMessage": "", + "type": "TeacherDataService", + "indexKey": "", + "optional": false, + "description": "", + "line": 33, + "modifierKind": [ + 125 + ] + }, + { + "name": "projectService", + "deprecated": false, + "deprecationMessage": "", + "type": "TeacherProjectService", + "indexKey": "", + "optional": false, + "description": "", + "line": 30, + "modifierKind": [ + 125 + ] + } + ], + "methodsClass": [ + { + "name": "export", + "args": [ + { + "name": "exportType", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 36, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "exportType", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "exportVisitsClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 143, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "generateCSVFile", + "args": [ + { + "name": "rows", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "fileName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 64, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGenerate the csv file and have the client download it\neach row contains an array. the inner array contains strings or\nnumbers which represent the cell values in the export.\n", + "description": "

Generate the csv file and have the client download it\neach row contains an array. the inner array contains strings or\nnumbers which represent the cell values in the export.

\n", + "jsdoctags": [ + { + "name": { + "pos": 2593, + "end": 2597, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "rows" + }, + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2587, + "end": 2592, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

a 2D array that represents the rows in the export\neach row contains an array. the inner array contains strings or\nnumbers which represent the cell values in the export.

\n" + }, + { + "name": { + "pos": 2789, + "end": 2797, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "fileName" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2783, + "end": 2788, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the name of the file that will be generated

\n" + } + ] + }, + { + "name": "getNodePositionById", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 118, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the node position\n", + "description": "

Get the node position

\n", + "jsdoctags": [ + { + "name": { + "pos": 4689, + "end": 4695, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4683, + "end": 4688, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id

\n" + }, + { + "tagName": { + "pos": 4714, + "end": 4721, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

the node position

\n" + } + ] + }, + { + "name": "getNodeTitleByNodeId", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 127, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the node title for a node\n", + "description": "

Get the node title for a node

\n", + "jsdoctags": [ + { + "name": { + "pos": 4912, + "end": 4918, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4906, + "end": 4911, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the node id

\n" + }, + { + "tagName": { + "pos": 4937, + "end": 4944, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

the node title

\n" + } + ] + }, + { + "name": "goToExportEventsPage", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 155, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "goToExportItemPage", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 147, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "goToExportOneWorkgroupPerRowPage", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 159, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "goToExportRawDataPage", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 151, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "goToExportStudentWorkPage", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 163, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "hideDownloadingExportMessage", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 139, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "showDownloadingExportMessage", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 130, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatButton" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport * as FileSaver from 'file-saver';\nimport { DataExportContext } from '../DataExportContext';\nimport { AnnotationService } from '../../../services/annotationService';\nimport { ConfigService } from '../../../services/configService';\nimport { DataExportService } from '../../../services/dataExportService';\nimport { TeacherDataService } from '../../../services/teacherDataService';\nimport { TeacherProjectService } from '../../../services/teacherProjectService';\nimport { ComponentServiceLookupService } from '../../../services/componentServiceLookupService';\nimport { NotebookDataExportStrategy } from '../strategies/NotebookDataExportStrategy';\nimport { NotificationDataExportStrategy } from '../strategies/NotificationDataExportStrategy';\nimport { StudentAssetDataExportStrategy } from '../strategies/StudentAssetDataExportStrategy';\nimport { MatDialog } from '@angular/material/dialog';\nimport { DialogWithSpinnerComponent } from '../../../directives/dialog-with-spinner/dialog-with-spinner.component';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { MatButton } from '@angular/material/button';\n\n@Component({\n imports: [MatButton],\n styles: ['.button-div { margin-top: 10px; margin-bottom: 10px; }'],\n templateUrl: './data-export.component.html'\n})\nexport class DataExportComponent {\n constructor(\n public annotationService: AnnotationService,\n public componentServiceLookupService: ComponentServiceLookupService,\n public configService: ConfigService,\n public dataExportService: DataExportService,\n private dialog: MatDialog,\n public projectService: TeacherProjectService,\n private route: ActivatedRoute,\n private router: Router,\n public dataService: TeacherDataService\n ) {}\n\n export(exportType: string): void {\n this.dataService.saveEvent(\n 'ClassroomMonitor',\n null,\n null,\n null,\n 'UserInteraction',\n 'exportRequested',\n { exportType: exportType }\n );\n const dataExportContext = new DataExportContext(this);\n if (exportType === 'latestNotebookItems' || exportType === 'allNotebookItems') {\n dataExportContext.setStrategy(new NotebookDataExportStrategy(exportType));\n } else if (exportType === 'notifications') {\n dataExportContext.setStrategy(new NotificationDataExportStrategy());\n } else if (exportType === 'studentAssets') {\n dataExportContext.setStrategy(new StudentAssetDataExportStrategy());\n }\n dataExportContext.export();\n }\n\n /**\n * Generate the csv file and have the client download it\n * @param rows a 2D array that represents the rows in the export\n * each row contains an array. the inner array contains strings or\n * numbers which represent the cell values in the export.\n * @param fileName the name of the file that will be generated\n */\n generateCSVFile(rows: any[], fileName: string): void {\n var csvString = '';\n if (rows != null) {\n for (var r = 0; r < rows.length; r++) {\n var row = rows[r];\n if (row != null) {\n for (var c = 0; c < row.length; c++) {\n var cell = row[c];\n if (cell == null || cell === '' || typeof cell === 'undefined') {\n cell = ' ';\n } else if (typeof cell === 'object') {\n /*\n * the cell value is an object so we will obtain the\n * string representation of the object and wrap it\n * in quotes\n */\n cell = JSON.stringify(cell);\n cell = cell.replace(/\"/g, '\"\"');\n if (cell != null && cell.length >= 32767) {\n /*\n * the cell value is larger than the allowable\n * excel cell size so we will display the string\n * \"Data Too Large\" instead\n */\n cell = 'Data Too Large';\n }\n cell = '\"' + cell + '\"';\n } else if (typeof cell === 'string') {\n if (cell != null && cell.length >= 32767) {\n /*\n * the cell value is larger than the allowable\n * excel cell size so we will display the string\n * \"Data Too Large\" instead\n */\n cell = 'Data Too Large';\n }\n cell = cell.replace(/\"/g, '\"\"');\n cell = '\"' + cell + '\"';\n }\n csvString += cell + ',';\n }\n csvString += '\\r\\n';\n }\n }\n }\n const csvBlob = new Blob([csvString], { type: 'text/csv; charset=utf-8' });\n FileSaver.saveAs(csvBlob, fileName);\n }\n\n /**\n * Get the node position\n * @param nodeId the node id\n * @returns the node position\n */\n getNodePositionById(nodeId: string): string {\n return this.projectService.getNodePositionById(nodeId);\n }\n\n /**\n * Get the node title for a node\n * @param nodeId the node id\n * @returns the node title\n */\n getNodeTitleByNodeId(nodeId: string): string {\n return this.projectService.getNodeTitle(nodeId);\n }\n showDownloadingExportMessage(): void {\n this.dialog.open(DialogWithSpinnerComponent, {\n data: {\n title: $localize`Downloading Export`\n },\n disableClose: false\n });\n }\n\n hideDownloadingExportMessage(): void {\n this.dialog.closeAll();\n }\n\n protected exportVisitsClicked(): void {\n this.router.navigate(['visits'], { relativeTo: this.route });\n }\n\n protected goToExportItemPage(): void {\n this.router.navigate(['item'], { relativeTo: this.route });\n }\n\n protected goToExportRawDataPage(): void {\n this.router.navigate(['raw'], { relativeTo: this.route });\n }\n\n protected goToExportEventsPage(): void {\n this.router.navigate(['events'], { relativeTo: this.route });\n }\n\n protected goToExportOneWorkgroupPerRowPage(): void {\n this.router.navigate(['one-workgroup-per-row'], { relativeTo: this.route });\n }\n\n protected goToExportStudentWorkPage(): void {\n this.router.navigate(['student-work'], { relativeTo: this.route });\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": ".button-div { margin-top: 10px; margin-bottom: 10px; }\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentServiceLookupService", + "type": "ComponentServiceLookupService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dataExportService", + "type": "DataExportService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 23, + "jsdoctags": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentServiceLookupService", + "type": "ComponentServiceLookupService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dataExportService", + "type": "DataExportService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "
\n
\n
\n
\n \n Export One Workgroup Per Row\n \n
\n
\n \n Export Student Work\n \n
\n
\n \n Export Events\n \n
\n
\n \n Export Latest Notebook Items\n \n
\n
\n \n Export All Notebook Items\n \n
\n
\n \n Export Notifications\n \n
\n
\n \n Export Student Assets\n \n
\n
\n \n Export Item Data\n \n
\n
\n \n Export Raw Data\n \n
\n
\n \n Export Step Visits\n \n
\n
\n
\n
\n" + }, + { + "name": "DeleteChoiceButtonComponent", + "id": "component-DeleteChoiceButtonComponent-ebf60400f908850e4e55a711753f26b14ed4d6d4dce8d0fb78e24b68c1599177a122373d64d4881fecb54892ac41bff6ff362031f47e327d06470410ed2568d5", + "file": "src/assets/wise5/components/match/delete-choice-button/delete-choice-button.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "delete-choice-button", + "styleUrls": [], + "styles": [ + "\n .mat-mdc-icon-button {\n --mdc-icon-button-state-layer-size: 24px;\n padding: 0;\n }\n " + ], + "template": "\n clear\n\n", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "buckets", + "deprecated": false, + "deprecationMessage": "", + "line": 29, + "type": "any", + "decorators": [] + }, + { + "name": "isDisabled", + "deprecated": false, + "deprecationMessage": "", + "line": 30, + "type": "boolean", + "decorators": [] + }, + { + "name": "item", + "deprecated": false, + "deprecationMessage": "", + "line": 31, + "type": "any", + "decorators": [] + } + ], + "outputsClass": [ + { + "name": "onItemDeleted", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 32, + "type": "EventEmitter" + } + ], + "propertiesClass": [], + "methodsClass": [ + { + "name": "deleteChoice", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 34, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@Component({\n imports: [MatButtonModule, MatIconModule, MatTooltipModule],\n selector: 'delete-choice-button',\n styles: `\n .mat-mdc-icon-button {\n --mdc-icon-button-state-layer-size: 24px;\n padding: 0;\n }\n `,\n template: `\n \n clear\n \n `\n})\nexport class DeleteChoiceButtonComponent {\n @Input() buckets: any;\n @Input() isDisabled: boolean;\n @Input() item: any;\n @Output() onItemDeleted = new EventEmitter();\n\n protected deleteChoice(): void {\n if (confirm($localize`Are you sure you want to delete this item?`)) {\n this.buckets.forEach((bucket) => {\n let i = 0;\n bucket.items.forEach((bucketItem) => {\n if (bucketItem.id === this.item.id) {\n bucket.items.splice(i, 1);\n }\n i++;\n });\n });\n this.onItemDeleted.next();\n }\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "\n .mat-mdc-icon-button {\n --mdc-icon-button-state-layer-size: 24px;\n padding: 0;\n }\n \n", + "extends": [] + }, + { + "name": "DetectedIdeasComponent", + "id": "component-DetectedIdeasComponent-98ebc060fc826ee1109f0c6ede137c0fc31b5c393bbf7c2b474162d26feeec4555221aed8a5c59228e0563fe510c8ca5c6481e7741b4aab68bb1961b7ec176e2", + "file": "src/assets/wise5/components/dialogGuidance/detected-ideas/detected-ideas.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "detected-ideas", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./detected-ideas.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "cRaterRubric", + "deprecated": false, + "deprecationMessage": "", + "line": 13, + "type": "CRaterRubric", + "decorators": [] + }, + { + "name": "responses", + "deprecated": false, + "deprecationMessage": "", + "line": 15, + "type": "any", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "ideas", + "deprecated": false, + "deprecationMessage": "", + "type": "CRaterIdea[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 17, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatIconModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input } from '@angular/core';\nimport { CRaterRubric, getUniqueIdeas } from '../../common/cRater/CRaterRubric';\nimport { CRaterIdea } from '../../common/cRater/CRaterIdea';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n imports: [MatIconModule],\n selector: 'detected-ideas',\n styleUrl: './detected-ideas.component.scss',\n templateUrl: './detected-ideas.component.html'\n})\nexport class DetectedIdeasComponent {\n @Input() cRaterRubric: CRaterRubric;\n protected ideas: CRaterIdea[];\n @Input() responses: any;\n\n ngOnInit(): void {\n this.ideas = getUniqueIdeas(this.responses, this.cRaterRubric);\n }\n}\n", + "styleUrl": "./detected-ideas.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [], + "templateData": "@if (ideas.length > 0) {\n
\n
\n auto_awesome\n
\n
\n
Ideas detected:
\n
\n @for (idea of ideas; track idea.name) {\n \n {{ idea.name }}.\n @if (idea.name !== idea.text) {\n {{ idea.text }}\n }\n \n }\n
\n
\n
\n}\n" + }, + { + "name": "DialogGuidanceAuthoringComponent", + "id": "component-DialogGuidanceAuthoringComponent-cc04e30d3cce1794601340ac22d5b0081995a271163eebdd50a1435c887d3d8e475144d35cde046f2061b96d83e5c884188c6dba43686987456c4002e2d81a00", + "file": "src/assets/wise5/components/dialogGuidance/dialog-guidance-authoring/dialog-guidance-authoring.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "dialog-guidance-authoring", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./dialog-guidance-authoring.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "allowedConnectedComponentTypes", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "idToOrder", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "inputChange", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "promptChange", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + } + ], + "methodsClass": [ + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 45, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "assetSelected", + "args": [ + { + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 100, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "componentChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 73, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "confirmAndRemove", + "args": [ + { + "name": "message", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "array", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 110, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "message", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "array", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "deleteStarterState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 81, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "getComponent", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 106, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "getComponents", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 102, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "isForThisComponent", + "args": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 77, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "moveObjectDown", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 122, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "moveObjectUp", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 117, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 65, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "promptChanged", + "args": [ + { + "name": "prompt", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 69, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "prompt", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "saveStarterState", + "args": [ + { + "name": "starterState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "starterState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "setShowSubmitButtonValue", + "args": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 85, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CRaterItemSelectComponent", + "type": "component" + }, + { + "name": "EditComponentMaxSubmitComponent", + "type": "component" + }, + { + "name": "EditComponentPrompt", + "type": "component" + }, + { + "name": "EditCRaterInfoComponent", + "type": "component" + }, + { + "name": "EditDialogGuidanceComputerAvatarComponent", + "type": "component" + }, + { + "name": "EditFeedbackRulesComponent", + "type": "component" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatCheckbox" + }, + { + "name": "MatFormFieldModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatCheckbox } from '@angular/material/checkbox';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { EditComponentMaxSubmitComponent } from '../../../../../app/authoring-tool/edit-component-max-submit/edit-component-max-submit.component';\nimport { EditComponentPrompt } from '../../../../../app/authoring-tool/edit-component-prompt/edit-component-prompt.component';\nimport { ProjectAssetService } from '../../../../../app/services/projectAssetService';\nimport { AbstractComponentAuthoring } from '../../../authoringTool/components/AbstractComponentAuthoring';\nimport { ComputerAvatarService } from '../../../services/computerAvatarService';\nimport { ConfigService } from '../../../services/configService';\nimport { TeacherNodeService } from '../../../services/teacherNodeService';\nimport { TeacherProjectService } from '../../../services/teacherProjectService';\nimport { CRaterRubric } from '../../common/cRater/CRaterRubric';\nimport { EditFeedbackRulesComponent } from '../../common/feedbackRule/edit-feedback-rules/edit-feedback-rules.component';\nimport { EditDialogGuidanceComputerAvatarComponent } from '../edit-dialog-guidance-computer-avatar/edit-dialog-guidance-computer-avatar.component';\nimport { CRaterItemSelectComponent } from '../../common/cRater/crater-item-select/crater-item-select.component';\nimport { EditCRaterInfoComponent } from '../../common/cRater/edit-crater-info/edit-crater-info.component';\n\n@Component({\n imports: [\n CRaterItemSelectComponent,\n EditComponentMaxSubmitComponent,\n EditComponentPrompt,\n EditCRaterInfoComponent,\n EditDialogGuidanceComputerAvatarComponent,\n EditFeedbackRulesComponent,\n FormsModule,\n MatCheckbox,\n MatFormFieldModule\n ],\n selector: 'dialog-guidance-authoring',\n templateUrl: './dialog-guidance-authoring.component.html'\n})\nexport class DialogGuidanceAuthoringComponent extends AbstractComponentAuthoring {\n constructor(\n private computerAvatarService: ComputerAvatarService,\n protected configService: ConfigService,\n protected nodeService: TeacherNodeService,\n protected projectAssetService: ProjectAssetService,\n protected projectService: TeacherProjectService\n ) {\n super(configService, nodeService, projectAssetService, projectService);\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n if (this.componentContent.computerAvatarSettings == null) {\n this.componentContent.computerAvatarSettings =\n this.computerAvatarService.getDefaultComputerAvatarSettings();\n }\n this.componentContent.cRaterRubric = this.componentContent.cRaterRubric || new CRaterRubric();\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "computerAvatarService", + "type": "ComputerAvatarService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeService", + "type": "TeacherNodeService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectAssetService", + "type": "ProjectAssetService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 34, + "jsdoctags": [ + { + "name": "computerAvatarService", + "type": "ComputerAvatarService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeService", + "type": "TeacherNodeService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectAssetService", + "type": "ProjectAssetService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "AbstractComponentAuthoring" + ], + "templateData": "
\n \n \n \n Enable Computer Avatar\n @if (componentContent.isComputerAvatarEnabled) {\n \n }\n \n \n
\n" + }, + { + "name": "DialogGuidanceGradingComponent", + "id": "component-DialogGuidanceGradingComponent-5d6865a39d677b6e2560f0e2715621e1e550467d0b8e1fc32200abb0f00b71f17f4d8e91f8040d1d0ea155ec9968f46dba734c2b6ef4f4269cb221b49fab19c7", + "file": "src/assets/wise5/components/dialogGuidance/dialog-guidance-grading/dialog-guidance-grading.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "dialog-guidance-grading", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./dialog-guidance-grading.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "line": 8, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "componentState", + "deprecated": false, + "deprecationMessage": "", + "line": 9, + "type": "any", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "isRevision", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "line": 10, + "type": "boolean", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 7, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "inheritance": { + "file": "ComponentShowWorkDirective" + } + } + ], + "methodsClass": [ + { + "name": "ngAfterViewInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 33, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 19, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentShowWorkDirective" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "DialogGuidanceShowWorkComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { ComponentShowWorkDirective } from '../../component-show-work.directive';\nimport { DialogGuidanceShowWorkComponent } from '../dialog-guidance-show-work/dialog-guidance-show-work.component';\n\n@Component({\n imports: [DialogGuidanceShowWorkComponent],\n selector: 'dialog-guidance-grading',\n templateUrl: './dialog-guidance-grading.component.html'\n})\nexport class DialogGuidanceGradingComponent extends ComponentShowWorkDirective {}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [ + "ComponentShowWorkDirective" + ], + "templateData": "\n" + }, + { + "name": "DialogGuidanceShowWorkComponent", + "id": "component-DialogGuidanceShowWorkComponent-1b5a2e19f630f3cab281360e20a0d699f007cc99fc47c897cb65dc2ba8c7fbf6a7c91e4e415e4797d74596aff8261dda3cd26f5aafd06fbdbf06125ecd25eb8c", + "file": "src/assets/wise5/components/dialogGuidance/dialog-guidance-show-work/dialog-guidance-show-work.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "dialog-guidance-show-work", + "styleUrls": [ + "../dialog-guidance-student/dialog-guidance-student.component.scss", + "./dialog-guidance-show-work.component.scss" + ], + "styles": [], + "template": "\n \n\n", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "line": 8, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "componentState", + "deprecated": false, + "deprecationMessage": "", + "line": 9, + "type": "any", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "isRevision", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "line": 10, + "type": "boolean", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 7, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "computerAvatar", + "deprecated": false, + "deprecationMessage": "", + "type": "ComputerAvatar", + "indexKey": "", + "optional": false, + "description": "", + "line": 32, + "modifierKind": [ + 124 + ] + }, + { + "name": "cRaterRubric", + "deprecated": false, + "deprecationMessage": "", + "type": "CRaterRubric", + "indexKey": "", + "optional": false, + "description": "", + "line": 33, + "modifierKind": [ + 124 + ] + }, + { + "name": "isTeacher", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 34, + "modifierKind": [ + 124 + ] + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "inheritance": { + "file": "ComponentShowWorkDirective" + } + } + ], + "methodsClass": [ + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 46, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "ngAfterViewInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 33, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentShowWorkDirective" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "DialogResponsesComponent", + "type": "component" + }, + { + "name": "MatCardModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { ComputerAvatar } from '../../../common/computer-avatar/ComputerAvatar';\nimport { ComputerAvatarService } from '../../../services/computerAvatarService';\nimport { NodeService } from '../../../services/nodeService';\nimport { ProjectService } from '../../../services/projectService';\nimport { ComponentShowWorkDirective } from '../../component-show-work.directive';\nimport { MatCardModule } from '@angular/material/card';\nimport { DialogResponsesComponent } from '../dialog-responses/dialog-responses.component';\nimport { CRaterRubric } from '../../common/cRater/CRaterRubric';\nimport { CRaterService } from '../../../services/cRaterService';\nimport { UserService } from '../../../../../app/services/user.service';\n\n@Component({\n imports: [DialogResponsesComponent, MatCardModule],\n selector: 'dialog-guidance-show-work',\n styleUrls: [\n '../dialog-guidance-student/dialog-guidance-student.component.scss',\n './dialog-guidance-show-work.component.scss'\n ],\n template: `\n \n \n \n `\n})\nexport class DialogGuidanceShowWorkComponent extends ComponentShowWorkDirective {\n protected computerAvatar: ComputerAvatar;\n protected cRaterRubric: CRaterRubric;\n protected isTeacher: boolean = false;\n\n constructor(\n private computerAvatarService: ComputerAvatarService,\n private cRaterService: CRaterService,\n protected nodeService: NodeService,\n protected projectService: ProjectService,\n protected userService: UserService\n ) {\n super(nodeService, projectService);\n }\n\n ngOnInit(): void {\n this.isTeacher = this.userService.isTeacher();\n this.computerAvatar = this.computerAvatarService.getAvatar(\n this.componentState.studentData.computerAvatarId\n );\n this.cRaterRubric = this.cRaterService.getCRaterRubric(this.nodeId, this.componentId);\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": [ + { + "data": "@use 'style/abstracts/functions';\n\n.mat-mdc-card {\n padding: 12px;\n margin-top: 16px;\n max-width: functions.breakpoint('sm.min');\n}\n\ndialog-responses {\n display: block;\n margin-bottom: 12px;\n}\n\n.add-response {\n margin-top: 12px;\n}\n", + "styleUrl": "../dialog-guidance-student/dialog-guidance-student.component.scss" + }, + { + "data": ".mat-mdc-card {\n margin-top: 0;\n}\n", + "styleUrl": "./dialog-guidance-show-work.component.scss" + } + ], + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "computerAvatarService", + "type": "ComputerAvatarService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "cRaterService", + "type": "CRaterService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "userService", + "type": "UserService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 34, + "jsdoctags": [ + { + "name": "computerAvatarService", + "type": "ComputerAvatarService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "cRaterService", + "type": "CRaterService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "userService", + "type": "UserService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "ComponentShowWorkDirective" + ] + }, + { + "name": "DialogGuidanceStudentComponent", + "id": "component-DialogGuidanceStudentComponent-00bd8d5e3386a4c2da0dd4b4513463baeb9a2a53b61bad182b44682dba484d59c138de1819f9782d31d1ef7d55fe6d085d1524e87b916daae9e5905f2cd8aea3", + "file": "src/assets/wise5/components/dialogGuidance/dialog-guidance-student/dialog-guidance-student.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [ + { + "name": "DialogGuidanceFeedbackService", + "type": "injectable" + } + ], + "selector": "dialog-guidance-student", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./dialog-guidance-student.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "component", + "deprecated": false, + "deprecationMessage": "", + "line": 24, + "type": "Component", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentState", + "deprecated": false, + "deprecationMessage": "", + "line": 25, + "type": "any", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isDisabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "line": 26, + "type": "boolean", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "mode", + "deprecated": false, + "deprecationMessage": "", + "line": 27, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 28, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "workgroupId", + "deprecated": false, + "deprecationMessage": "", + "line": 29, + "type": "number", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "outputsClass": [ + { + "name": "saveComponentStateEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 30, + "type": "EventEmitter", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "starterStateChangedEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 31, + "type": "EventEmitter", + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "propertiesClass": [ + { + "name": "component", + "deprecated": false, + "deprecationMessage": "", + "type": "DialogGuidanceComponent", + "indexKey": "", + "optional": false, + "description": "", + "line": 53 + }, + { + "name": "computerAvatar", + "deprecated": false, + "deprecationMessage": "", + "type": "ComputerAvatar", + "indexKey": "", + "optional": false, + "description": "", + "line": 54, + "modifierKind": [ + 124 + ] + }, + { + "name": "computerAvatarSelectorVisible", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 55, + "modifierKind": [ + 124 + ] + }, + { + "name": "cRaterTimeout", + "defaultValue": "40000", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 56, + "modifierKind": [ + 123 + ] + }, + { + "name": "feedbackRuleEvaluator", + "deprecated": false, + "deprecationMessage": "", + "type": "FeedbackRuleEvaluator", + "indexKey": "", + "optional": false, + "description": "", + "line": 57, + "modifierKind": [ + 123 + ] + }, + { + "name": "initializeComputerAvatar", + "deprecated": false, + "deprecationMessage": "", + "type": "function", + "indexKey": "", + "optional": false, + "description": "", + "line": 257 + }, + { + "name": "isWaitingForComputerResponse", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 58, + "modifierKind": [ + 124 + ] + }, + { + "name": "responses", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "DialogResponse[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 59, + "modifierKind": [ + 124 + ] + }, + { + "name": "selectComputerAvatar", + "deprecated": false, + "deprecationMessage": "", + "type": "function", + "indexKey": "", + "optional": false, + "description": "", + "line": 258 + }, + { + "name": "studentCanRespond", + "defaultValue": "true", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 60, + "modifierKind": [ + 124 + ] + }, + { + "name": "workgroupId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 61 + }, + { + "name": "annotationSavedToServerSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 53, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "attachments", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 33, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 34, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 35, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentType", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 36, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isDirty", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 45, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSaveButtonVisible", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 38, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSaveOrSubmitButtonVisible", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 41, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isShowAddToNotebookButton", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 39, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isStudentAttachmentEnabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 46, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmit", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 44, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmitButtonDisabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 42, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmitButtonVisible", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 40, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmitDirty", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 43, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "latestAnnotations", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 48, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "latestComponentState", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 50, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "nodeSubmitClickedSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 54, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "parentStudentWorkIds", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 49, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "prompt", + "deprecated": false, + "deprecationMessage": "", + "type": "SafeHtml", + "indexKey": "", + "optional": false, + "description": "", + "line": 37, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "requestComponentStateSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 52, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "showAddToNotebookButton", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 51, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "studentWorkSavedToServerSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 55, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "submitCounter", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 47, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 56, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "methodsClass": [ + { + "name": "addDialogResponse", + "args": [ + { + "name": "dialogResponse", + "type": "DialogResponse", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 147, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "dialogResponse", + "type": "DialogResponse", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addStudentDialogResponse", + "args": [ + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 143, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "cRaterErrorResponse", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 229, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "cRaterSuccessResponse", + "args": [ + { + "name": "responses", + "type": "RawCRaterResponse", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 178, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "responses", + "type": "RawCRaterResponse", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createComponentState", + "args": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 234, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createComputerDialogResponse", + "args": [ + { + "name": "response", + "type": "CRaterResponse", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "ComputerDialogResponse", + "typeParameters": [], + "line": 188, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "response", + "type": "CRaterResponse", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "disableStudentResponse", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 174, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "getCRaterResponses", + "args": [], + "optional": false, + "returnType": "CRaterResponse[]", + "typeParameters": [], + "line": 212, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "getItemId", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 122, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "hideWaitingForComputerResponse", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 170, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 118, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 91, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "pingCRaterEndpoint", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 114, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "showInitialMessage", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 126, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "showWaitingForComputerResponse", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 166, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "submitStudentResponse", + "args": [ + { + "name": "response", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 137, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "response", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "submitToCRater", + "args": [ + { + "name": "studentResponse", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 151, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "studentResponse", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addDefaultFeedback", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 688, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "attachStudentAsset", + "args": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 232, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "broadcastDoneRenderingComponent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 325, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "canSubmit", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 488, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "clearLatestComponentState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 555, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "confirmSubmit", + "args": [ + { + "name": "numberOfSubmitsLeft", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 468, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "numberOfSubmitsLeft", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "connectedComponentStudentDataSaved", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 796, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nThis function is called when a connected component of this component saves student data.\nThis was added to handle a race condition when a step has a connected component on a previous\nstep but the connected component student work on the previous step was not being imported\nbecause it wasn't being saved in time.\nHere is an example of what was happening\n- Student generates work on step 1 but does not click the save button\n- Student goes to step 2 which triggers a promise to save the student work on step 1\n- Step 2 is loaded and checks if there is any work it needs to import from step 1\n- The work in step 1 has not saved yet so step 2 does not import any work and loads without\n importing any work\n- The work from step 1 is then saved\nHere is the additional process that this function performs to fix this problem\n- Step 2 listens for when work is saved on step 1\n- When the work for step 1 is saved, step 2 checks to see if it needs to import that work\n", + "description": "

This function is called when a connected component of this component saves student data.\nThis was added to handle a race condition when a step has a connected component on a previous\nstep but the connected component student work on the previous step was not being imported\nbecause it wasn't being saved in time.\nHere is an example of what was happening

\n
    \n
  • Student generates work on step 1 but does not click the save button
  • \n
  • Student goes to step 2 which triggers a promise to save the student work on step 1
  • \n
  • Step 2 is loaded and checks if there is any work it needs to import from step 1
  • \n
  • The work in step 1 has not saved yet so step 2 does not import any work and loads without\nimporting any work
  • \n
  • The work from step 1 is then saved\nHere is the additional process that this function performs to fix this problem
  • \n
  • Step 2 listens for when work is saved on step 1
  • \n
  • When the work for step 1 is saved, step 2 checks to see if it needs to import that work
  • \n
\n", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "copyAndAttachStudentAsset", + "args": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 218, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "copyPublicNotebookItem", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 632, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "copyPublicNotebookItemButtonClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 747, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createAutoCommentAnnotation", + "args": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 725, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createAutoScoreAnnotation", + "args": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 714, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createComponentStateAdditionalProcessing", + "args": [ + { + "name": "promise", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 598, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "promise", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createComponentStateAndBroadcast", + "args": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 559, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createDefaultFeedbackAnnotation", + "args": [ + { + "name": "feedbackText", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 706, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "feedbackText", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createMergedComponentState", + "args": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 377, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createNewComponentState", + "args": [], + "optional": false, + "returnType": "Partial", + "typeParameters": [], + "line": 818, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "disableAllInput", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 492, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "disableComponentIfNecessary", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 332, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "disableSubmitButton", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 496, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "doAttachStudentAsset", + "args": [ + { + "name": "studentAssetRequest", + "type": "StudentAssetRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 212, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "studentAssetRequest", + "type": "StudentAssetRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 541, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentStudentDataChanged", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 572, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentSubmitDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 548, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentSubmitTriggered", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 512, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "generateImageFromComponentState", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 615, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nRender the component state and then generate an image from it.\n", + "description": "

Render the component state and then generate an image from it.

\n", + "jsdoctags": [ + { + "name": { + "pos": 18804, + "end": 18818, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 18798, + "end": 18803, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The component state to render.

\n" + }, + { + "tagName": { + "pos": 18856, + "end": 18862, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

A promise that will return an image.

\n" + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "generateStarterState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 216, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getAction", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 321, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getClientSaveTime", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 684, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getComponentStatePromise", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 309, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getComponentStateWrapper", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "ComponentStateWrapper", + "typeParameters": [], + "line": 301, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getDefaultFeedback", + "args": [ + { + "name": "submitCount", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 702, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "submitCount", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getElementById", + "args": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getFirstResult", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 758, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "getFirstResult", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getIsDirty", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 277, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getMaxScore", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 680, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getMaxSubmitCount", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 460, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getNumberOfSubmitsLeft", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 456, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "handleConnectedComponents", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 352, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "handleConnectedComponentsPostProcess", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 385, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "handleStudentWorkSavedToServer", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 263, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "handleStudentWorkSavedToServerAdditionalProcessing", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 287, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasAnySubmissions", + "args": [ + { + "name": "componentStates", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 344, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentStates", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasDefaultFeedback", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 695, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasMaxScore", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 676, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasMaxSubmitCount", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 437, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasMaxSubmitCountAndUsedAllSubmits", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 452, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasSubmitMessage", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 504, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasSubmitsLeft", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 500, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasUsedAllSubmits", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 441, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "importWorkAsBackground", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 658, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "importWorkByStudentWorkId", + "args": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 170, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "incrementSubmitCounter", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 389, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isAddToNotebookEnabled", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 624, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isForThisComponent", + "args": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 192, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isFromConnectedComponent", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 766, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isHandleConnectedComponentAfterConnectedComponentStudentDataSaved", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 802, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isLockAfterSubmit", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 348, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isNotebookEnabled", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 643, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isPreviewMode", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 109, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSameComponent", + "args": [ + { + "name": "component", + "type": "Component", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 188, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "component", + "type": "Component", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isStudentNoteClippingEnabled", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 647, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isWorkFromClassmate", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 196, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "lockIfNecessary", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 281, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "performSubmit", + "args": [ + { + "name": "submitTriggeredBy", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 472, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "submitTriggeredBy", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "processConnectedComponentState", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 184, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "processLatestStudentWork", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 580, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "registerNotebookItemChosenListener", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 736, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "removeAttachment", + "args": [ + { + "name": "attachment", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 245, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "attachment", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "saveButtonClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 393, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "saveForAuthoringPreviewMode", + "args": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 404, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setBackgroundImage", + "args": [ + { + "name": "image", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 674, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "image", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setComponentStateAsBackgroundImage", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 668, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 537, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsDirtyAndBroadcast", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 527, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsSubmit", + "args": [ + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 464, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsSubmitDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 508, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsSubmitDirtyAndBroadcast", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 532, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setParentStudentWorkIdToCurrentStudentWork", + "args": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 180, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setStudentWork", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 381, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setSubmitCounter", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 811, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "shouldCreateComponentState", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 317, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "showStudentAssets", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 651, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "studentDataChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 519, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "submit", + "args": [ + { + "name": "submitTriggeredBy", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 416, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "submitTriggeredBy", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "submitButtonClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 412, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToAnnotationSavedToServer", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 123, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToAttachStudentAsset", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 200, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToNodeSubmitClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 137, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToNotebookItemChosen", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 159, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToNotifyConnectedComponents", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 147, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToRequestComponentState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 289, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToStudentWorkSavedToServer", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 252, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToSubscriptions", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 113, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "tryDisableComponent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 445, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "ChatInputComponent", + "type": "component" + }, + { + "name": "ComponentHeaderComponent", + "type": "component" + }, + { + "name": "ComputerAvatarSelectorComponent", + "type": "component" + }, + { + "name": "DialogResponsesComponent", + "type": "component" + }, + { + "name": "MatCardModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { AnnotationService } from '../../../services/annotationService';\nimport { ConfigService } from '../../../services/configService';\nimport { NodeService } from '../../../services/nodeService';\nimport { NotebookService } from '../../../services/notebookService';\nimport { StudentAssetService } from '../../../services/studentAssetService';\nimport { StudentDataService } from '../../../services/studentDataService';\nimport { ComponentService } from '../../componentService';\nimport { DialogResponse } from '../DialogResponse';\nimport { StudentDialogResponse } from '../StudentDialogResponse';\nimport { CRaterService } from '../../../services/cRaterService';\nimport { timeout } from 'rxjs/operators';\nimport { CRaterResponse } from '../../common/cRater/CRaterResponse';\nimport { ComputerDialogResponse } from '../ComputerDialogResponse';\nimport { FeedbackRule } from '../../common/feedbackRule/FeedbackRule';\nimport { FeedbackRuleEvaluator } from '../../common/feedbackRule/FeedbackRuleEvaluator';\nimport { ComputerDialogResponseMultipleScores } from '../ComputerDialogResponseMultipleScores';\nimport { ComputerDialogResponseSingleScore } from '../ComputerDialogResponseSingleScore';\nimport { MatDialog } from '@angular/material/dialog';\nimport { ComputerAvatar } from '../../../common/computer-avatar/ComputerAvatar';\nimport { ComputerAvatarService } from '../../../services/computerAvatarService';\nimport { StudentStatusService } from '../../../services/studentStatusService';\nimport { DialogGuidanceFeedbackService } from '../../../services/dialogGuidanceFeedbackService';\nimport { FeedbackRuleComponent } from '../../feedbackRule/FeedbackRuleComponent';\nimport { ComponentStudent } from '../../component-student.component';\nimport { DialogGuidanceComponent } from '../DialogGuidanceComponent';\nimport { copy } from '../../../common/object/object';\nimport { RawCRaterResponse } from '../../common/cRater/RawCRaterResponse';\nimport { ConstraintService } from '../../../services/constraintService';\nimport { applyMixins } from '../../../common/apply-mixins';\nimport { ComputerAvatarInitializer } from '../../../common/computer-avatar/computer-avatar-initializer';\nimport { ComputerAvatarSelectorComponent } from '../../../vle/computer-avatar-selector/computer-avatar-selector.component';\nimport { MatCardModule } from '@angular/material/card';\nimport { ComponentHeaderComponent } from '../../../directives/component-header/component-header.component';\nimport { DialogResponsesComponent } from '../dialog-responses/dialog-responses.component';\nimport { ChatInputComponent } from '../../../common/chat-input/chat-input.component';\nimport { CRaterPingService } from '../../../services/cRaterPingService';\n\n@Component({\n imports: [\n ChatInputComponent,\n ComponentHeaderComponent,\n ComputerAvatarSelectorComponent,\n DialogResponsesComponent,\n MatCardModule\n ],\n providers: [DialogGuidanceFeedbackService],\n selector: 'dialog-guidance-student',\n styleUrl: './dialog-guidance-student.component.scss',\n templateUrl: './dialog-guidance-student.component.html'\n})\nexport class DialogGuidanceStudentComponent extends ComponentStudent {\n component: DialogGuidanceComponent;\n protected computerAvatar: ComputerAvatar;\n protected computerAvatarSelectorVisible: boolean = false;\n private cRaterTimeout: number = 40000;\n private feedbackRuleEvaluator: FeedbackRuleEvaluator;\n protected isWaitingForComputerResponse: boolean = false;\n protected responses: DialogResponse[] = [];\n protected studentCanRespond: boolean = true;\n workgroupId: number;\n\n constructor(\n protected annotationService: AnnotationService,\n protected componentService: ComponentService,\n protected computerAvatarService: ComputerAvatarService,\n protected configService: ConfigService,\n private constraintService: ConstraintService,\n protected cRaterService: CRaterService,\n protected dialog: MatDialog,\n protected dialogGuidanceFeedbackService: DialogGuidanceFeedbackService,\n protected nodeService: NodeService,\n protected notebookService: NotebookService,\n protected studentAssetService: StudentAssetService,\n protected dataService: StudentDataService,\n protected studentStatusService: StudentStatusService,\n private cRaterPingService: CRaterPingService\n ) {\n super(\n annotationService,\n componentService,\n configService,\n dialog,\n nodeService,\n notebookService,\n studentAssetService,\n dataService\n );\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n if (this.componentState != null) {\n this.responses = copy(this.componentState.studentData.responses);\n this.submitCounter = this.componentState.studentData.submitCounter;\n }\n this.workgroupId = this.configService.getWorkgroupId();\n if (this.hasMaxSubmitCountAndUsedAllSubmits()) {\n this.disableStudentResponse();\n }\n this.feedbackRuleEvaluator = new FeedbackRuleEvaluator(\n new FeedbackRuleComponent(\n this.component.getFeedbackRules(),\n this.getMaxSubmitCount(),\n this.component.isMultipleFeedbackTextsForSameRuleAllowed()\n ),\n this.configService,\n this.constraintService\n );\n this.initializeComputerAvatar();\n this.pingCRaterEndpoint();\n }\n\n private pingCRaterEndpoint(): void {\n this.cRaterPingService.startPinging(this.getItemId());\n }\n\n ngOnDestroy(): void {\n this.cRaterPingService.stopPinging(this.getItemId());\n }\n\n private getItemId(): string {\n return this.component.content.itemId;\n }\n\n showInitialMessage(): void {\n this.addDialogResponse(\n new ComputerDialogResponse(\n this.component.getComputerAvatarInitialResponse(),\n [],\n new Date().getTime(),\n true\n )\n );\n }\n\n protected submitStudentResponse(response: string): void {\n this.addStudentDialogResponse(response);\n this.submitToCRater(response);\n this.studentDataChanged();\n }\n\n private addStudentDialogResponse(text: string): void {\n this.responses.push(new StudentDialogResponse(text, new Date().getTime(), this.workgroupId));\n }\n\n private addDialogResponse(dialogResponse: DialogResponse): void {\n this.responses.push(dialogResponse);\n }\n\n private submitToCRater(studentResponse: string): void {\n this.showWaitingForComputerResponse();\n this.cRaterService\n .makeCRaterScoringRequest(this.component.getItemId(), new Date().getTime(), studentResponse)\n .pipe(timeout(this.cRaterTimeout))\n .subscribe({\n next: (response: any) => {\n this.cRaterSuccessResponse(response.responses);\n },\n error: () => {\n this.cRaterErrorResponse();\n }\n });\n }\n\n private showWaitingForComputerResponse(): void {\n this.isWaitingForComputerResponse = true;\n }\n\n private hideWaitingForComputerResponse(): void {\n this.isWaitingForComputerResponse = false;\n }\n\n private disableStudentResponse(): void {\n this.studentCanRespond = false;\n }\n\n cRaterSuccessResponse(responses: RawCRaterResponse): void {\n this.hideWaitingForComputerResponse();\n this.submitButtonClicked();\n const cRaterResponse = this.cRaterService.getCRaterResponse(responses, this.submitCounter);\n this.addDialogResponse(this.createComputerDialogResponse(cRaterResponse));\n if (this.hasMaxSubmitCountAndUsedAllSubmits()) {\n this.disableStudentResponse();\n }\n }\n\n createComputerDialogResponse(response: CRaterResponse): ComputerDialogResponse {\n const allCRaterResponses = this.getCRaterResponses().concat(response);\n const rule: FeedbackRule = this.feedbackRuleEvaluator.getFeedbackRule(allCRaterResponses);\n const feedbackText = this.dialogGuidanceFeedbackService.getFeedbackText(this.component, rule);\n const computerResponse =\n response.scores != null\n ? new ComputerDialogResponseMultipleScores(\n feedbackText,\n response.scores,\n response.ideas,\n new Date().getTime()\n )\n : new ComputerDialogResponseSingleScore(\n feedbackText,\n response.score,\n response.ideas,\n new Date().getTime()\n );\n if (this.component.isVersion2()) {\n computerResponse.feedbackRuleId = rule.id;\n }\n return computerResponse;\n }\n\n private getCRaterResponses(): CRaterResponse[] {\n let submitCounter = 1;\n return (\n this.dataService\n .getLatestComponentStateByNodeIdAndComponentId(this.nodeId, this.componentId)\n ?.studentData.responses.filter(\n (response: DialogResponse) =>\n response.user === 'Computer' && !(response as ComputerDialogResponse).initialResponse\n )\n .map((response: DialogResponse) => {\n const cRaterResponse = new CRaterResponse(response);\n cRaterResponse.submitCounter = submitCounter++;\n return cRaterResponse;\n }) ?? []\n );\n }\n\n cRaterErrorResponse() {\n this.hideWaitingForComputerResponse();\n this.saveButtonClicked();\n }\n\n createComponentState(action: string): Promise {\n const componentState: any = this.createNewComponentState();\n componentState.studentData = {\n responses: this.responses,\n submitCounter: this.submitCounter\n };\n if (this.computerAvatar != null) {\n componentState.studentData.computerAvatarId = this.computerAvatar.id;\n }\n componentState.componentType = 'DialogGuidance';\n componentState.nodeId = this.nodeId;\n componentState.componentId = this.componentId;\n componentState.isSubmit = action === 'submit';\n const promise = new Promise((resolve, reject) => {\n this.createComponentStateAdditionalProcessing(\n { resolve: resolve, reject: reject },\n componentState,\n action\n );\n });\n return promise;\n }\n\n initializeComputerAvatar: () => void;\n selectComputerAvatar: (computerAvatar: ComputerAvatar) => void;\n}\n\napplyMixins(DialogGuidanceStudentComponent, [ComputerAvatarInitializer]);\n", + "styleUrl": "./dialog-guidance-student.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentService", + "type": "ComponentService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "computerAvatarService", + "type": "ComputerAvatarService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "constraintService", + "type": "ConstraintService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "cRaterService", + "type": "CRaterService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialogGuidanceFeedbackService", + "type": "DialogGuidanceFeedbackService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "notebookService", + "type": "NotebookService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentAssetService", + "type": "StudentAssetService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentStatusService", + "type": "StudentStatusService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "cRaterPingService", + "type": "CRaterPingService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 61, + "jsdoctags": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentService", + "type": "ComponentService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "computerAvatarService", + "type": "ComputerAvatarService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "constraintService", + "type": "ConstraintService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "cRaterService", + "type": "CRaterService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialogGuidanceFeedbackService", + "type": "DialogGuidanceFeedbackService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "notebookService", + "type": "NotebookService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentAssetService", + "type": "StudentAssetService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentStatusService", + "type": "StudentStatusService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "cRaterPingService", + "type": "CRaterPingService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "ComponentStudent" + ], + "templateData": "
\n @if (computerAvatarSelectorVisible) {\n \n } @else {\n \n \n \n @if (studentCanRespond) {\n \n }\n \n }\n
\n" + }, + { + "name": "DialogOverviewComponent", + "id": "component-DialogOverviewComponent-2003e6cb5b8efa69ee21764c034294ffec6faeda7c1700526dbf2196cb80f0c30b40d8887726c113ad5f7193ebfad3ab7c0cb384ee878e718c934cdb88dad491", + "file": "src/stories/dialog/dialog-overview/dialog-overview.component.ts", + "changeDetection": "ChangeDetectionStrategy.OnPush", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "dialog-overview", + "styleUrls": [ + "./dialog-overview.component.scss" + ], + "styles": [], + "templateUrl": [ + "./dialog-overview.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "name", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "indexKey": "", + "optional": false, + "description": "", + "line": 33, + "modifierKind": [ + 148 + ], + "required": false + } + ], + "outputsClass": [ + { + "name": "name", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "indexKey": "", + "optional": false, + "description": "", + "line": 33, + "modifierKind": [ + 148 + ], + "required": false + } + ], + "propertiesClass": [ + { + "name": "animal", + "defaultValue": "signal('')", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 30, + "modifierKind": [ + 148 + ] + }, + { + "name": "dialog", + "defaultValue": "inject(MatDialog)", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 31, + "modifierKind": [ + 148 + ] + }, + { + "name": "dialogWidth", + "defaultValue": "'default'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 32, + "modifierKind": [ + 124 + ] + }, + { + "name": "widths", + "defaultValue": "[\n { value: 'default', label: 'Default' },\n { value: 'dialog-sm', label: 'Small' },\n { value: 'dialog-md', label: 'Medium' },\n { value: 'dialog-lg', label: 'Large' }\n ]", + "deprecated": false, + "deprecationMessage": "", + "type": "[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 34, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "openDialog", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 41, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatInputModule", + "type": "module" + }, + { + "name": "MatSelectModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { ChangeDetectionStrategy, Component, inject, model, signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport {\n MAT_DIALOG_DATA,\n MatDialog,\n MatDialogActions,\n MatDialogClose,\n MatDialogContent,\n MatDialogRef,\n MatDialogTitle\n} from '@angular/material/dialog';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\n\nexport interface DialogData {\n animal: string;\n name: string;\n}\n\n@Component({\n imports: [FormsModule, MatButtonModule, MatFormFieldModule, MatInputModule, MatSelectModule],\n selector: 'dialog-overview',\n styleUrls: ['./dialog-overview.component.scss'],\n templateUrl: './dialog-overview.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DialogOverviewComponent {\n readonly animal = signal('');\n readonly dialog = inject(MatDialog);\n protected dialogWidth: string = 'default';\n readonly name = model('');\n protected widths = [\n { value: 'default', label: 'Default' },\n { value: 'dialog-sm', label: 'Small' },\n { value: 'dialog-md', label: 'Medium' },\n { value: 'dialog-lg', label: 'Large' }\n ];\n\n openDialog(): void {\n const dialogRef = this.dialog.open(DialogOverviewDialog, {\n data: { name: this.name(), animal: this.animal() },\n panelClass: this.dialogWidth === 'default' ? '' : this.dialogWidth\n });\n\n dialogRef.afterClosed().subscribe((result) => {\n console.log('The dialog was closed');\n if (result !== undefined) {\n this.animal.set(result);\n }\n });\n }\n}\n\n@Component({\n imports: [\n MatFormFieldModule,\n MatInputModule,\n FormsModule,\n MatButtonModule,\n MatDialogTitle,\n MatDialogContent,\n MatDialogActions,\n MatDialogClose\n ],\n selector: 'dialog-overview-dialog',\n templateUrl: './dialog-overview-dialog.html'\n})\nexport class DialogOverviewDialog {\n readonly dialogRef = inject(MatDialogRef);\n readonly data = inject(MAT_DIALOG_DATA);\n readonly animal = model(this.data.animal);\n\n cancel(): void {\n this.dialogRef.close();\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": [ + { + "data": "", + "styleUrl": "./dialog-overview.component.scss" + } + ], + "stylesData": "", + "extends": [], + "templateData": "
\n \n What's your name?\n \n \n \n Dialog width\n \n @for (width of widths; track width.value) {\n {{ width.label }}\n }\n \n \n \n
\n@if (animal()) {\n
Favorite animal: {{ animal() }}
\n}\n" + }, + { + "name": "DialogOverviewDialog", + "id": "component-DialogOverviewDialog-2003e6cb5b8efa69ee21764c034294ffec6faeda7c1700526dbf2196cb80f0c30b40d8887726c113ad5f7193ebfad3ab7c0cb384ee878e718c934cdb88dad491", + "file": "src/stories/dialog/dialog-overview/dialog-overview.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "dialog-overview-dialog", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./dialog-overview-dialog.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "animal", + "defaultValue": "this.data.animal", + "deprecated": false, + "deprecationMessage": "", + "indexKey": "", + "optional": false, + "description": "", + "line": 73, + "modifierKind": [ + 148 + ], + "required": false + } + ], + "outputsClass": [ + { + "name": "animal", + "defaultValue": "this.data.animal", + "deprecated": false, + "deprecationMessage": "", + "indexKey": "", + "optional": false, + "description": "", + "line": 73, + "modifierKind": [ + 148 + ], + "required": false + } + ], + "propertiesClass": [ + { + "name": "data", + "defaultValue": "inject(MAT_DIALOG_DATA)", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 72, + "modifierKind": [ + 148 + ] + }, + { + "name": "dialogRef", + "defaultValue": "inject(MatDialogRef)", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 71, + "modifierKind": [ + 148 + ] + } + ], + "methodsClass": [ + { + "name": "cancel", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 75, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatInputModule", + "type": "module" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatDialogTitle" + }, + { + "name": "MatDialogContent" + }, + { + "name": "MatDialogActions" + }, + { + "name": "MatDialogClose" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { ChangeDetectionStrategy, Component, inject, model, signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport {\n MAT_DIALOG_DATA,\n MatDialog,\n MatDialogActions,\n MatDialogClose,\n MatDialogContent,\n MatDialogRef,\n MatDialogTitle\n} from '@angular/material/dialog';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\n\nexport interface DialogData {\n animal: string;\n name: string;\n}\n\n@Component({\n imports: [FormsModule, MatButtonModule, MatFormFieldModule, MatInputModule, MatSelectModule],\n selector: 'dialog-overview',\n styleUrls: ['./dialog-overview.component.scss'],\n templateUrl: './dialog-overview.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DialogOverviewComponent {\n readonly animal = signal('');\n readonly dialog = inject(MatDialog);\n protected dialogWidth: string = 'default';\n readonly name = model('');\n protected widths = [\n { value: 'default', label: 'Default' },\n { value: 'dialog-sm', label: 'Small' },\n { value: 'dialog-md', label: 'Medium' },\n { value: 'dialog-lg', label: 'Large' }\n ];\n\n openDialog(): void {\n const dialogRef = this.dialog.open(DialogOverviewDialog, {\n data: { name: this.name(), animal: this.animal() },\n panelClass: this.dialogWidth === 'default' ? '' : this.dialogWidth\n });\n\n dialogRef.afterClosed().subscribe((result) => {\n console.log('The dialog was closed');\n if (result !== undefined) {\n this.animal.set(result);\n }\n });\n }\n}\n\n@Component({\n imports: [\n MatFormFieldModule,\n MatInputModule,\n FormsModule,\n MatButtonModule,\n MatDialogTitle,\n MatDialogContent,\n MatDialogActions,\n MatDialogClose\n ],\n selector: 'dialog-overview-dialog',\n templateUrl: './dialog-overview-dialog.html'\n})\nexport class DialogOverviewDialog {\n readonly dialogRef = inject(MatDialogRef);\n readonly data = inject(MAT_DIALOG_DATA);\n readonly animal = model(this.data.animal);\n\n cancel(): void {\n this.dialogRef.close();\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [], + "templateData": "

Hello {{ data.name ? data.name : 'World' }}!

\n\n

What's your favorite animal?

\n \n Favorite Animal\n \n \n
\n\n \n \n\n" + }, + { + "name": "DialogResponseComponent", + "id": "component-DialogResponseComponent-84b851ae11b66439cec970e8dae4c48d3a796e737a4034d2ede93f009ed6ab294587afdf8c7bae751590089c31d600474bb0865b258838f9455713f880807df5", + "file": "src/assets/wise5/components/dialogGuidance/dialog-response/dialog-response.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "dialog-response", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./dialog-response.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "computerAvatar", + "deprecated": false, + "deprecationMessage": "", + "line": 20, + "type": "ComputerAvatar", + "decorators": [] + }, + { + "name": "response", + "deprecated": false, + "deprecationMessage": "", + "line": 24, + "type": "DialogResponse", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "avatarColor", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "modifierKind": [ + 124 + ] + }, + { + "name": "computerAvatarImageSrc", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 21, + "modifierKind": [ + 124 + ] + }, + { + "name": "displayNames", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 22, + "modifierKind": [ + 124 + ] + }, + { + "name": "isStudent", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 23, + "modifierKind": [ + 124 + ] + }, + { + "name": "text", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "SafeHtml", + "indexKey": "", + "optional": false, + "description": "", + "line": 25, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 33, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input, OnInit } from '@angular/core';\nimport { SafeHtml } from '@angular/platform-browser';\nimport { WiseLinkService } from '../../../../../app/services/wiseLinkService';\nimport { ComputerAvatar } from '../../../common/computer-avatar/ComputerAvatar';\nimport { ComputerAvatarService } from '../../../services/computerAvatarService';\nimport { ConfigService } from '../../../services/configService';\nimport { DialogResponse } from '../DialogResponse';\nimport { getAvatarColorForWorkgroupId } from '../../../common/workgroup/workgroup';\nimport { CommonModule } from '@angular/common';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n imports: [CommonModule, MatIconModule],\n selector: 'dialog-response',\n styleUrl: './dialog-response.component.scss',\n templateUrl: './dialog-response.component.html'\n})\nexport class DialogResponseComponent implements OnInit {\n protected avatarColor: string;\n @Input() computerAvatar: ComputerAvatar;\n protected computerAvatarImageSrc: string;\n protected displayNames: string;\n protected isStudent: boolean;\n @Input() response: DialogResponse;\n protected text: SafeHtml = '';\n\n constructor(\n private computerAvatarService: ComputerAvatarService,\n private configService: ConfigService,\n private wiseLinkService: WiseLinkService\n ) {}\n\n ngOnInit(): void {\n this.text = this.wiseLinkService.generateHtmlWithWiseLink(this.response.text);\n this.isStudent = this.response.user === 'Student';\n if (this.isStudent) {\n this.displayNames = this.configService\n .getStudentFirstNamesByWorkgroupId(this.response.workgroupId)\n .join(', ');\n this.avatarColor = getAvatarColorForWorkgroupId(this.response.workgroupId);\n } else {\n this.displayNames = this.computerAvatar.name;\n if (this.computerAvatar != null) {\n this.computerAvatarImageSrc =\n this.computerAvatarService.getAvatarsPath() + this.computerAvatar.image;\n }\n }\n }\n}\n", + "styleUrl": "./dialog-response.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "computerAvatarService", + "type": "ComputerAvatarService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "wiseLinkService", + "type": "WiseLinkService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 25, + "jsdoctags": [ + { + "name": "computerAvatarService", + "type": "ComputerAvatarService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "wiseLinkService", + "type": "WiseLinkService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "
\n @if (isStudent) {\n account_circle\n } @else {\n @if (computerAvatar == null) {\n smart_toy\n } @else {\n \n }\n }\n
\n \n
{{ displayNames }}
\n
\n
\n
\n\n" + }, + { + "name": "DialogResponsesComponent", + "id": "component-DialogResponsesComponent-efe3750a058d14f89bddd3485f73891e103b0aad20c977591833c30df3d398c89bcf0e1d18b3c3a51c4394ebf303ebc7543521d9fd8cb004891820a5a39e34f5", + "file": "src/assets/wise5/components/dialogGuidance/dialog-responses/dialog-responses.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "dialog-responses", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./dialog-responses.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "computerAvatar", + "deprecated": false, + "deprecationMessage": "", + "line": 19, + "type": "ComputerAvatar", + "decorators": [] + }, + { + "name": "cRaterRubric", + "deprecated": false, + "deprecationMessage": "", + "line": 20, + "type": "CRaterRubric", + "decorators": [] + }, + { + "name": "isWaitingForComputerResponse", + "deprecated": false, + "deprecationMessage": "", + "line": 22, + "type": "boolean", + "decorators": [] + }, + { + "name": "responses", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "line": 23, + "type": "DialogResponse[]", + "decorators": [] + }, + { + "name": "showDetectedIdeas", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "line": 25, + "type": "boolean", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "hasRubricData", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 21, + "modifierKind": [ + 124 + ] + }, + { + "name": "rubricDialog", + "deprecated": false, + "deprecationMessage": "", + "type": "MatDialogRef", + "indexKey": "", + "optional": false, + "description": "", + "line": 24, + "modifierKind": [ + 123 + ] + } + ], + "methodsClass": [ + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 36, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 32, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "openIdeasRubric", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 42, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "DetectedIdeasComponent", + "type": "component" + }, + { + "name": "DialogResponseComponent", + "type": "component" + }, + { + "name": "MatIconModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input } from '@angular/core';\nimport { ComputerAvatar } from '../../../common/computer-avatar/ComputerAvatar';\nimport { CRaterRubric } from '../../common/cRater/CRaterRubric';\nimport { CRaterRubricComponent } from '../../common/cRater/crater-rubric/crater-rubric.component';\nimport { DetectedIdeasComponent } from '../detected-ideas/detected-ideas.component';\nimport { DialogResponse } from '../DialogResponse';\nimport { DialogResponseComponent } from '../dialog-response/dialog-response.component';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { RubricEventService } from '../../common/cRater/crater-rubric/RubricEventService';\n\n@Component({\n imports: [DetectedIdeasComponent, DialogResponseComponent, MatIconModule],\n selector: 'dialog-responses',\n styleUrl: './dialog-responses.component.scss',\n templateUrl: './dialog-responses.component.html'\n})\nexport class DialogResponsesComponent {\n @Input() computerAvatar: ComputerAvatar;\n @Input() cRaterRubric: CRaterRubric;\n protected hasRubricData: boolean;\n @Input() isWaitingForComputerResponse: boolean;\n @Input() responses: DialogResponse[] = [];\n private rubricDialog: MatDialogRef;\n @Input() showDetectedIdeas: boolean = false;\n\n constructor(\n protected dialog: MatDialog,\n protected rubricEventService: RubricEventService\n ) {}\n\n ngOnInit(): void {\n this.hasRubricData = this.cRaterRubric?.hasRubricData() ?? false;\n }\n\n ngOnDestroy(): void {\n if (this.rubricEventService.getIsRubricOpen()) {\n this.rubricDialog.close();\n }\n }\n\n protected openIdeasRubric(): void {\n if (!this.rubricEventService.getIsRubricOpen()) {\n this.rubricDialog = this.dialog.open(CRaterRubricComponent, {\n panelClass: 'dialog-sm',\n position: { right: '0', bottom: '0' },\n hasBackdrop: false,\n data: this.cRaterRubric,\n autoFocus: false\n });\n }\n }\n}\n", + "styleUrl": "./dialog-responses.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "rubricEventService", + "type": "RubricEventService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 25, + "jsdoctags": [ + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "rubricEventService", + "type": "RubricEventService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "@if (showDetectedIdeas && hasRubricData) {\n
\n auto_awesome Detectable ideas\n
\n}\n@for (response of responses; track response.timestamp) {\n @if (response.user === 'Computer' && showDetectedIdeas && cRaterRubric.ideas.length) {\n \n }\n \n}\n@if (isWaitingForComputerResponse) {\n \n}\n" + }, + { + "name": "DialogWithCloseComponent", + "id": "component-DialogWithCloseComponent-991272ccbbb30823ccaf554143520baa6e6411d397565d508b4e73ec6acca5d0289da6dcb0b601c2f462d0cc76ca88194f5f8aeecee03d2c100126a4b5be4373", + "file": "src/assets/wise5/directives/dialog-with-close/dialog-with-close.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./dialog-with-close.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "dialogData", + "deprecated": false, + "deprecationMessage": "", + "type": "DialogData", + "indexKey": "", + "optional": false, + "description": "", + "line": 8, + "decorators": [ + { + "name": "Inject", + "stringifiedArguments": "MAT_DIALOG_DATA" + } + ], + "modifierKind": [ + 171, + 125 + ], + "inheritance": { + "file": "DialogComponent" + } + } + ], + "methodsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatDialogModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { DialogComponent } from '../dialog/dialog.component';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n imports: [MatButtonModule, MatDialogModule],\n templateUrl: './dialog-with-close.component.html'\n})\nexport class DialogWithCloseComponent extends DialogComponent {}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [ + "DialogComponent" + ], + "templateData": "

\n@if (dialogData.scroll) {\n
\n}\n@if (!dialogData.scroll) {\n
\n
\n
\n}\n\n \n\n" + }, + { + "name": "DialogWithConfirmComponent", + "id": "component-DialogWithConfirmComponent-50fbbe02b0cb66033c2ec3e394a4ea89a8b7f6d5e442a10bc6145ff7f3d255f022507dcc95a0bdbb5c61456fd45a2c13f1def732e0cf07311d3bf0f933be2f5b", + "file": "src/assets/wise5/directives/dialog-with-confirm/dialog-with-confirm.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./dialog-with-confirm.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "dialogData", + "deprecated": false, + "deprecationMessage": "", + "type": "DialogData", + "indexKey": "", + "optional": false, + "description": "", + "line": 8, + "decorators": [ + { + "name": "Inject", + "stringifiedArguments": "MAT_DIALOG_DATA" + } + ], + "modifierKind": [ + 171, + 125 + ], + "inheritance": { + "file": "DialogComponent" + } + } + ], + "methodsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatDialogTitle" + }, + { + "name": "CdkScrollable" + }, + { + "name": "MatDialogContent" + }, + { + "name": "MatDialogActions" + }, + { + "name": "MatButton" + }, + { + "name": "MatDialogClose" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { DialogComponent } from '../dialog/dialog.component';\nimport {\n MatDialogTitle,\n MatDialogContent,\n MatDialogActions,\n MatDialogClose\n} from '@angular/material/dialog';\nimport { CdkScrollable } from '@angular/cdk/scrolling';\nimport { MatButton } from '@angular/material/button';\n\n@Component({\n imports: [\n MatDialogTitle,\n CdkScrollable,\n MatDialogContent,\n MatDialogActions,\n MatButton,\n MatDialogClose\n ],\n templateUrl: './dialog-with-confirm.component.html'\n})\nexport class DialogWithConfirmComponent extends DialogComponent {}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [ + "DialogComponent" + ], + "templateData": "

\n@if (dialogData.scroll) {\n
\n}\n@if (!dialogData.scroll) {\n
\n
\n
\n}\n\n \n \n\n" + }, + { + "name": "DialogWithOpenInNewWindowComponent", + "id": "component-DialogWithOpenInNewWindowComponent-d6752bd47e37473cc7c049f41453d3cbdb4be721760bc04baa0ff20e4b2ce825aa91fc2bc75771caf7bf118df3880a752a6754043e48512702f6abe747d072c7", + "file": "src/assets/wise5/directives/dialog-with-open-in-new-window/dialog-with-open-in-new-window.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./dialog-with-open-in-new-window.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "dialogData", + "deprecated": false, + "deprecationMessage": "", + "type": "DialogData", + "indexKey": "", + "optional": false, + "description": "", + "line": 8, + "decorators": [ + { + "name": "Inject", + "stringifiedArguments": "MAT_DIALOG_DATA" + } + ], + "modifierKind": [ + 171, + 125 + ], + "inheritance": { + "file": "DialogComponent" + } + } + ], + "methodsClass": [ + { + "name": "openInNewWindow", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 24, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatDialogTitle" + }, + { + "name": "CdkScrollable" + }, + { + "name": "MatDialogContent" + }, + { + "name": "MatDialogActions" + }, + { + "name": "MatButton" + }, + { + "name": "MatDialogClose" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { DialogComponent } from '../dialog/dialog.component';\nimport {\n MatDialogTitle,\n MatDialogContent,\n MatDialogActions,\n MatDialogClose\n} from '@angular/material/dialog';\nimport { CdkScrollable } from '@angular/cdk/scrolling';\nimport { MatButton } from '@angular/material/button';\n\n@Component({\n imports: [\n MatDialogTitle,\n CdkScrollable,\n MatDialogContent,\n MatDialogActions,\n MatButton,\n MatDialogClose\n ],\n templateUrl: './dialog-with-open-in-new-window.component.html'\n})\nexport class DialogWithOpenInNewWindowComponent extends DialogComponent {\n openInNewWindow(): void {\n const w = window.open('', '_blank');\n const content = `

${this.dialogData.title}

${this.dialogData.content}
`;\n w.document.write(content);\n this.dialogRef.close();\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [ + "DialogComponent" + ], + "templateData": "

\n@if (dialogData.scroll) {\n
\n}\n@if (!dialogData.scroll) {\n
\n
\n
\n}\n\n \n \n\n" + }, + { + "name": "DialogWithoutCloseComponent", + "id": "component-DialogWithoutCloseComponent-e8ff644c82eb10ef548743ad8c0ec32d2dc3786f0b5992902d58e783ed8f16c96bd39f49e4ccc7dd69df659adf7f2b1285a549f90484d05b7c830dad2e6b3937", + "file": "src/assets/wise5/directives/dialog-without-close/dialog-without-close.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./dialog-without-close.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "dialogData", + "deprecated": false, + "deprecationMessage": "", + "type": "DialogData", + "indexKey": "", + "optional": false, + "description": "", + "line": 8, + "decorators": [ + { + "name": "Inject", + "stringifiedArguments": "MAT_DIALOG_DATA" + } + ], + "modifierKind": [ + 171, + 125 + ], + "inheritance": { + "file": "DialogComponent" + } + } + ], + "methodsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatDialogTitle" + }, + { + "name": "CdkScrollable" + }, + { + "name": "MatDialogContent" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { DialogComponent } from '../dialog/dialog.component';\nimport { MatDialogTitle, MatDialogContent } from '@angular/material/dialog';\nimport { CdkScrollable } from '@angular/cdk/scrolling';\n\n@Component({\n imports: [MatDialogTitle, CdkScrollable, MatDialogContent],\n templateUrl: './dialog-without-close.component.html'\n})\nexport class DialogWithoutCloseComponent extends DialogComponent {}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [ + "DialogComponent" + ], + "templateData": "

\n\n" + }, + { + "name": "DialogWithSpinnerComponent", + "id": "component-DialogWithSpinnerComponent-1a13d52d0f1c64476a98de82715b77993bed6242788655f72c7e6a5b308a2786b14b6de191937967450f780b504a2ae6a092da783787b328ff88b422699d4828", + "file": "src/assets/wise5/directives/dialog-with-spinner/dialog-with-spinner.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "template": "

\n
\n \n
\n", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "dialogData", + "deprecated": false, + "deprecationMessage": "", + "type": "DialogData", + "indexKey": "", + "optional": false, + "description": "", + "line": 8, + "decorators": [ + { + "name": "Inject", + "stringifiedArguments": "MAT_DIALOG_DATA" + } + ], + "modifierKind": [ + 171, + 125 + ], + "inheritance": { + "file": "DialogComponent" + } + } + ], + "methodsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatDialogModule", + "type": "module" + }, + { + "name": "MatProgressSpinnerModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { DialogComponent } from '../dialog/dialog.component';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\n\n@Component({\n imports: [MatDialogModule, MatProgressSpinnerModule],\n template: `\n

\n
\n \n
\n `\n})\nexport class DialogWithSpinnerComponent extends DialogComponent {}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [ + "DialogComponent" + ] + }, + { + "name": "DiscourseCategoryActivityComponent", + "id": "component-DiscourseCategoryActivityComponent-d1293438648e28e0d6b2eac9f59523b0e5421278e1f22b03ce61f1fd073ce2aa9edfacc722f1806b0d14422c72400802883079136e824ac3214e6c13f002a9ee", + "file": "src/app/modules/library/discourse-category-activity/discourse-category-activity.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "discourse-category-activity", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "discourse-category-activity.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "categoryURL", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "line": 13, + "type": "string", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "discourseBaseUrl", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "modifierKind": [ + 124 + ] + }, + { + "name": "hasMoreTopics", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 124 + ] + }, + { + "name": "postCount", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "modifierKind": [ + 124 + ] + }, + { + "name": "topics", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "modifierKind": [ + 124 + ] + }, + { + "name": "validCategoryURL", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "retrieveCategory", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatDividerModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { HttpClient } from '@angular/common/http';\nimport { Component, Input } from '@angular/core';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n imports: [MatDividerModule, MatIconModule],\n selector: 'discourse-category-activity',\n styleUrl: 'discourse-category-activity.component.scss',\n templateUrl: 'discourse-category-activity.component.html'\n})\nexport class DiscourseCategoryActivityComponent {\n @Input() categoryURL: string = '';\n protected discourseBaseUrl: string = '';\n protected hasMoreTopics: boolean;\n protected postCount: number = 0;\n protected topics: any[] = [];\n protected validCategoryURL: boolean;\n\n constructor(private http: HttpClient) {}\n\n ngOnInit(): void {\n this.retrieveCategory();\n }\n\n private retrieveCategory(): void {\n this.http.get(`${this.categoryURL}.json?order=latest`).subscribe(({ topic_list }: any) => {\n if (topic_list.topics) {\n this.validCategoryURL = true;\n this.topics = topic_list.topics;\n this.postCount = this.topics.reduce((sum, topic) => sum + topic.posts_count, 0);\n this.discourseBaseUrl = this.categoryURL.match(/(.+)\\/c\\/.+/)[1];\n this.hasMoreTopics = topic_list.more_topics_url ? true : false;\n }\n });\n }\n}\n", + "styleUrl": "discourse-category-activity.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 18, + "jsdoctags": [ + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "@if (validCategoryURL) {\n \n

\n forum \n \n Discuss ({{ postCount }}{{ hasMoreTopics ? '+' : '' }})\n \n

\n @if (topics.length > 0) {\n \n }\n}\n" + }, + { + "name": "DiscourseLatestNewsComponent", + "id": "component-DiscourseLatestNewsComponent-0ace3f3ed85e72cbf6d7c9c8f6b3f278ed70636b4dd28225dbc2c3f6c5ff7a1bb5ad3f00e0e076a41d692da62ebe21281df7e7fa72a9d29bdee12f6ba7367b60", + "file": "src/app/home/discourse-latest-news/discourse-latest-news.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "discourse-latest-news", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "discourse-latest-news.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "baseUrl", + "deprecated": false, + "deprecationMessage": "", + "line": 6, + "type": "string", + "decorators": [], + "inheritance": { + "file": "DiscourseFeedComponent" + } + }, + { + "name": "category", + "deprecated": false, + "deprecationMessage": "", + "line": 7, + "type": "string", + "decorators": [], + "inheritance": { + "file": "DiscourseFeedComponent" + } + }, + { + "name": "queryString", + "deprecated": false, + "deprecationMessage": "", + "line": 9, + "type": "string", + "decorators": [], + "inheritance": { + "file": "DiscourseFeedComponent" + } + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "smallScreen", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 124 + ] + }, + { + "name": "xsScreen", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "modifierKind": [ + 124 + ] + }, + { + "name": "isLoaded", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 8, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "DiscourseFeedComponent" + } + }, + { + "name": "topics", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "DiscourseFeedComponent" + } + } + ], + "methodsClass": [ + { + "name": "getUrl", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 25, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "DiscourseFeedComponent" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 14, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "DiscourseFeedComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { HttpClient } from '@angular/common/http';\nimport { Component } from '@angular/core';\nimport { BreakpointObserver } from '@angular/cdk/layout';\nimport { DiscourseFeedComponent } from '../../discourse-feed/discourse-feed.component';\nimport { CommonModule } from '@angular/common';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n imports: [CommonModule, MatIconModule],\n selector: 'discourse-latest-news',\n styleUrl: 'discourse-latest-news.component.scss',\n templateUrl: 'discourse-latest-news.component.html'\n})\nexport class DiscourseLatestNewsComponent extends DiscourseFeedComponent {\n protected smallScreen: boolean;\n protected xsScreen: boolean;\n\n constructor(\n protected http: HttpClient,\n private breakpointObserver: BreakpointObserver\n ) {\n super(http);\n this.breakpointObserver\n .observe(['(max-width: 40rem)', '(max-width: 48rem)'])\n .subscribe((result) => {\n this.smallScreen = result.matches;\n });\n this.breakpointObserver.observe(['(max-width: 40rem)']).subscribe((result) => {\n this.xsScreen = result.matches;\n });\n }\n}\n", + "styleUrl": "discourse-latest-news.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "breakpointObserver", + "type": "BreakpointObserver", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 16, + "jsdoctags": [ + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "breakpointObserver", + "type": "BreakpointObserver", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "DiscourseFeedComponent" + ], + "templateData": "
\n \n rss_feed\n What's New? \n \n
    \n @for (topic of topics; track topic; let index = $index) {\n @if (!xsScreen || index === 0) {\n
  • \n \n {{ topic.title }}\n \n @if (smallScreen) {\n •\n }\n
  • \n }\n }\n
\n
\n More news\n
\n
\n" + }, + { + "name": "DiscourseRecentActivityComponent", + "id": "component-DiscourseRecentActivityComponent-f5b3b4da220f1c724f0c350e9e95389bcf8044a967ac7f100df599632fce370483c2c554e47ec01430cda6e7a48d306d69360c71b22b0ca845ff864a21b09e60", + "file": "src/app/teacher/discourse-recent-activity/discourse-recent-activity.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "discourse-recent-activity", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "discourse-recent-activity.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "baseUrl", + "deprecated": false, + "deprecationMessage": "", + "line": 6, + "type": "string", + "decorators": [], + "inheritance": { + "file": "DiscourseFeedComponent" + } + }, + { + "name": "category", + "deprecated": false, + "deprecationMessage": "", + "line": 7, + "type": "string", + "decorators": [], + "inheritance": { + "file": "DiscourseFeedComponent" + } + }, + { + "name": "queryString", + "deprecated": false, + "deprecationMessage": "", + "line": 9, + "type": "string", + "decorators": [], + "inheritance": { + "file": "DiscourseFeedComponent" + } + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "isLoaded", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 8, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "DiscourseFeedComponent" + } + }, + { + "name": "topics", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "DiscourseFeedComponent" + } + } + ], + "methodsClass": [ + { + "name": "getUrl", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 25, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "DiscourseFeedComponent" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 14, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "DiscourseFeedComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { DiscourseFeedComponent } from '../../discourse-feed/discourse-feed.component';\nimport { CommonModule } from '@angular/common';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n imports: [CommonModule, MatButtonModule, MatIconModule],\n selector: 'discourse-recent-activity',\n styleUrl: 'discourse-recent-activity.component.scss',\n templateUrl: 'discourse-recent-activity.component.html'\n})\nexport class DiscourseRecentActivityComponent extends DiscourseFeedComponent {}\n", + "styleUrl": "discourse-recent-activity.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [ + "DiscourseFeedComponent" + ], + "templateData": "
\n
\n

\n groups\n Latest from the WISE Community\n

\n \n launch\n \n
\n
    \n @for (topic of topics; track topic) {\n
  • \n \n {{ topic.title }}\n \n \n ({{ topic.last_posted_at | date: 'MMM dd y' }})\n \n
  • \n }\n
\n
\n" + }, + { + "name": "DiscussionAuthoring", + "id": "component-DiscussionAuthoring-0f234d8943ebe1ba512770263694379ddd0f3511ccbf93f9895c96e1f18dd4a53f6c7b3fbeec590721cf7ecbeba0bfcacfb5c5719973bec07260dd6f61d821ef", + "file": "src/assets/wise5/components/discussion/discussion-authoring/discussion-authoring.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [ + "mat-checkbox { display: block; }" + ], + "templateUrl": [ + "discussion-authoring.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "allowedConnectedComponentTypes", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "idToOrder", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "inputChange", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "promptChange", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + } + ], + "methodsClass": [ + { + "name": "assetSelected", + "args": [ + { + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 100, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "componentChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 73, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "confirmAndRemove", + "args": [ + { + "name": "message", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "array", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 110, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "message", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "array", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "deleteStarterState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 81, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "getComponent", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 106, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "getComponents", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 102, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "isForThisComponent", + "args": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 77, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "moveObjectDown", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 122, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "moveObjectUp", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 117, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 65, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 28, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "promptChanged", + "args": [ + { + "name": "prompt", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 69, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "prompt", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "saveStarterState", + "args": [ + { + "name": "starterState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "starterState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "setShowSubmitButtonValue", + "args": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 85, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "EditComponentPrompt", + "type": "component" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatCheckboxModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { AbstractComponentAuthoring } from '../../../authoringTool/components/AbstractComponentAuthoring';\nimport { EditComponentPrompt } from '../../../../../app/authoring-tool/edit-component-prompt/edit-component-prompt.component';\nimport { FormsModule } from '@angular/forms';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\n\n@Component({\n imports: [EditComponentPrompt, FormsModule, MatCheckboxModule],\n styles: ['mat-checkbox { display: block; }'],\n templateUrl: 'discussion-authoring.component.html'\n})\nexport class DiscussionAuthoring extends AbstractComponentAuthoring {}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "mat-checkbox { display: block; }\n", + "extends": [ + "AbstractComponentAuthoring" + ], + "templateData": "\n\n Students can upload and use images in their posts\n\n\n Students must create a post before viewing classmates' posts\n\n" + }, + { + "name": "DiscussionGradingComponent", + "id": "component-DiscussionGradingComponent-ce181e89583e5ecd5c9db9a21e08776e24646b6193b23d7502fe5876efcf6b8ceac81a7523821cc053d7da41f015a20094672896da4f0bb059614963bd48d1e5", + "file": "src/assets/wise5/components/discussion/discussion-grading/discussion-grading.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "template": "\n", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "workgroupId", + "deprecated": false, + "deprecationMessage": "", + "line": 18, + "type": "any", + "decorators": [] + }, + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "line": 8, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "componentState", + "deprecated": false, + "deprecationMessage": "", + "line": 9, + "type": "any", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "isRevision", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "line": 10, + "type": "boolean", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 7, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "inheritance": { + "file": "ComponentShowWorkDirective" + } + } + ], + "methodsClass": [ + { + "name": "ngAfterViewInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 33, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 19, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentShowWorkDirective" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "DiscussionShowWorkComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input } from '@angular/core';\nimport { ComponentShowWorkDirective } from '../../component-show-work.directive';\nimport { DiscussionShowWorkComponent } from '../discussion-show-work/discussion-show-work.component';\n\n@Component({\n imports: [DiscussionShowWorkComponent],\n template: `\n \n `\n})\nexport class DiscussionGradingComponent extends ComponentShowWorkDirective {\n @Input() workgroupId: any;\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [ + "ComponentShowWorkDirective" + ] + }, + { + "name": "DiscussionShowWorkComponent", + "id": "component-DiscussionShowWorkComponent-5b6a67f4399d0fd507b3a5b6eb338fddab79ba597278cc3b05d3c2e823163d2b9fcaa8dbab909ba74b22ae7f1997a83583242aed2c397be1f72367bcbc5aa5a8", + "file": "src/assets/wise5/components/discussion/discussion-show-work/discussion-show-work.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "discussion-show-work", + "styleUrls": [], + "styles": [ + ".discussion-content { padding: 16px; }" + ], + "templateUrl": [ + "discussion-show-work.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "workgroupId", + "deprecated": false, + "deprecationMessage": "", + "line": 19, + "type": "any", + "decorators": [] + }, + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "line": 8, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "componentState", + "deprecated": false, + "deprecationMessage": "", + "line": 9, + "type": "any", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "isRevision", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "line": 10, + "type": "boolean", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 7, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "topLevelResponses", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "modifierKind": [ + 124 + ] + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "inheritance": { + "file": "ComponentShowWorkDirective" + } + } + ], + "methodsClass": [ + { + "name": "flagPost", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "action", + "type": "\"Delete\" | \"Undo Delete\"", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 112, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "action", + "type": "\"Delete\" | \"Undo Delete\"", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getGradingComponentIds", + "args": [], + "optional": false, + "returnType": "string[]", + "typeParameters": [], + "line": 66, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "getInappropriateFlagAnnotationsByComponentStates", + "args": [ + { + "name": "componentStates", + "type": "[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 51, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the inappropriate flag annotations for these component states\n", + "description": "

Get the inappropriate flag annotations for these component states

\n", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": { + "pos": 1822, + "end": 1837, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentStates" + }, + "type": "[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]", + "tagName": { + "pos": 1816, + "end": 1821, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

an array of component states

\n" + }, + { + "tagName": { + "pos": 1873, + "end": 1879, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

an array of inappropriate flag annotations associated with the component states

\n" + } + ] + }, + { + "name": "hidePost", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 98, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nThe teacher has clicked the delete button to delete a post. We won't actually delete the\nstudent work, we'll just create an inappropriate flag annotation which prevents the students in\nthe class from seeing the post.\n", + "description": "

The teacher has clicked the delete button to delete a post. We won't actually delete the\nstudent work, we'll just create an inappropriate flag annotation which prevents the students in\nthe class from seeing the post.

\n", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": { + "pos": 3566, + "end": 3580, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3560, + "end": 3565, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the student component state the teacher wants to delete.

\n" + } + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 31, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "setClassResponses", + "args": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "annotations", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 76, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "annotations", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setStudentWork", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 37, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "showPost", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 108, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nThe teacher has clicked the 'Undo Delete' button to undo a previous deletion of a post. This\nfunction will create an inappropriate flag annotation with the action set to 'Undo Delete'.\nThis will make the post visible to the students.\n", + "description": "

The teacher has clicked the 'Undo Delete' button to undo a previous deletion of a post. This\nfunction will create an inappropriate flag annotation with the action set to 'Undo Delete'.\nThis will make the post visible to the students.

\n", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": { + "pos": 4011, + "end": 4025, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 4005, + "end": 4010, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the student component state the teacher wants to show again.

\n" + } + ] + }, + { + "name": "ngAfterViewInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 33, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentShowWorkDirective" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "ClassResponse" + }, + { + "name": "CommonModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input } from '@angular/core';\nimport { AnnotationService } from '../../../services/annotationService';\nimport { ConfigService } from '../../../services/configService';\nimport { NodeService } from '../../../services/nodeService';\nimport { ProjectService } from '../../../services/projectService';\nimport { ComponentShowWorkDirective } from '../../component-show-work.directive';\nimport { TeacherDiscussionService } from '../teacherDiscussionService';\nimport { ClassResponse } from '../class-response/class-response.component';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n imports: [ClassResponse, CommonModule],\n selector: 'discussion-show-work',\n styles: ['.discussion-content { padding: 16px; }'],\n templateUrl: 'discussion-show-work.component.html'\n})\nexport class DiscussionShowWorkComponent extends ComponentShowWorkDirective {\n protected topLevelResponses: any = {};\n @Input() workgroupId: any;\n\n constructor(\n private annotationService: AnnotationService,\n private configService: ConfigService,\n private discussionService: TeacherDiscussionService,\n protected nodeService: NodeService,\n protected projectService: ProjectService\n ) {\n super(nodeService, projectService);\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n this.workgroupId = parseInt(this.workgroupId);\n this.setStudentWork();\n }\n\n private setStudentWork(): void {\n const componentStates = this.discussionService.getPostsAssociatedWithComponentIdsAndWorkgroupId(\n this.getGradingComponentIds(),\n this.workgroupId\n );\n const annotations = this.getInappropriateFlagAnnotationsByComponentStates(componentStates);\n this.setClassResponses(componentStates, annotations);\n }\n\n /**\n * Get the inappropriate flag annotations for these component states\n * @param componentStates an array of component states\n * @return an array of inappropriate flag annotations associated with the component states\n */\n private getInappropriateFlagAnnotationsByComponentStates(componentStates = []): any[] {\n const annotations = [];\n for (const componentState of componentStates) {\n const latestInappropriateFlagAnnotation =\n this.annotationService.getLatestAnnotationByStudentWorkIdAndType(\n componentState.id,\n 'inappropriateFlag'\n );\n if (latestInappropriateFlagAnnotation != null) {\n annotations.push(latestInappropriateFlagAnnotation);\n }\n }\n return annotations;\n }\n\n private getGradingComponentIds(): string[] {\n const connectedComponentIds = [this.componentId];\n if (this.componentContent.connectedComponents != null) {\n for (const connectedComponent of this.componentContent.connectedComponents) {\n connectedComponentIds.push(connectedComponent.componentId);\n }\n }\n return connectedComponentIds;\n }\n\n private setClassResponses(componentStates: any[], annotations: any[] = []): void {\n const isStudentMode = false;\n const classResponses = this.discussionService.getClassResponses(\n componentStates,\n annotations,\n isStudentMode\n );\n const isGradingMode = true;\n this.topLevelResponses = this.discussionService.getLevel1Responses(\n classResponses,\n this.componentId,\n this.workgroupId,\n isGradingMode\n );\n }\n\n /**\n * The teacher has clicked the delete button to delete a post. We won't actually delete the\n * student work, we'll just create an inappropriate flag annotation which prevents the students in\n * the class from seeing the post.\n * @param componentState the student component state the teacher wants to delete.\n */\n protected hidePost(componentState: any): void {\n this.flagPost(componentState, 'Delete');\n }\n\n /**\n * The teacher has clicked the 'Undo Delete' button to undo a previous deletion of a post. This\n * function will create an inappropriate flag annotation with the action set to 'Undo Delete'.\n * This will make the post visible to the students.\n * @param componentState the student component state the teacher wants to show again.\n */\n protected showPost(componentState: any): void {\n this.flagPost(componentState, 'Undo Delete');\n }\n\n private flagPost(componentState: any, action: 'Delete' | 'Undo Delete'): void {\n const toWorkgroupId = componentState.workgroupId;\n const userInfo = this.configService.getUserInfoByWorkgroupId(toWorkgroupId);\n const periodId = userInfo.periodId;\n const teacherUserInfo = this.configService.getMyUserInfo();\n const fromWorkgroupId = teacherUserInfo.workgroupId;\n const runId = this.configService.getRunId();\n const nodeId = this.nodeId;\n const componentId = this.componentId;\n const studentWorkId = componentState.id;\n const data = {\n action: action\n };\n const annotation = this.annotationService.createInappropriateFlagAnnotation(\n runId,\n periodId,\n nodeId,\n componentId,\n fromWorkgroupId,\n toWorkgroupId,\n studentWorkId,\n data\n );\n this.annotationService.saveAnnotation(annotation).then(() => {\n const componentStates =\n this.discussionService.getPostsAssociatedWithComponentIdsAndWorkgroupId(\n this.getGradingComponentIds(),\n this.workgroupId\n );\n const annotations = this.getInappropriateFlagAnnotationsByComponentStates(componentStates);\n this.setClassResponses(componentStates, annotations);\n });\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": ".discussion-content { padding: 16px; }\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "discussionService", + "type": "TeacherDiscussionService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 19, + "jsdoctags": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "discussionService", + "type": "TeacherDiscussionService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "ComponentShowWorkDirective" + ], + "templateData": "
\n
\n @for (componentState of topLevelResponses.all; track componentState) {\n \n }\n
\n
\n" + }, + { + "name": "DiscussionStudent", + "id": "component-DiscussionStudent-0d0f72e45083f901b854c89ca3b73b102ce63e0e886e3cfb76eceb98e1828a04bddef352058d8492434488b6d285c6e5dd585bf73fa0fc9b4b7c1d8927a821e5", + "file": "src/assets/wise5/components/discussion/discussion-student/discussion-student.component.ts", + "encapsulation": [ + "ViewEncapsulation.None" + ], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "discussion-student", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "discussion-student.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "component", + "deprecated": false, + "deprecationMessage": "", + "line": 24, + "type": "Component", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentState", + "deprecated": false, + "deprecationMessage": "", + "line": 25, + "type": "any", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isDisabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "line": 26, + "type": "boolean", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "mode", + "deprecated": false, + "deprecationMessage": "", + "line": 27, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 28, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "workgroupId", + "deprecated": false, + "deprecationMessage": "", + "line": 29, + "type": "number", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "outputsClass": [ + { + "name": "saveComponentStateEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 30, + "type": "EventEmitter", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "starterStateChangedEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 31, + "type": "EventEmitter", + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "propertiesClass": [ + { + "name": "classResponses", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 48 + }, + { + "name": "componentStateIdReplyingTo", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 49 + }, + { + "name": "newResponse", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 50 + }, + { + "name": "responsesMap", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 51 + }, + { + "name": "retrievedClassmateResponses", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 52 + }, + { + "name": "studentResponse", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 53 + }, + { + "name": "topLevelResponses", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 54 + }, + { + "name": "annotationSavedToServerSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 53, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "attachments", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 33, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 34, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 35, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentType", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 36, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isDirty", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 45, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSaveButtonVisible", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 38, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSaveOrSubmitButtonVisible", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 41, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isShowAddToNotebookButton", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 39, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isStudentAttachmentEnabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 46, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmit", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 44, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmitButtonDisabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 42, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmitButtonVisible", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 40, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmitDirty", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 43, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "latestAnnotations", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 48, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "latestComponentState", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 50, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "nodeSubmitClickedSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 54, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "parentStudentWorkIds", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 49, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "prompt", + "deprecated": false, + "deprecationMessage": "", + "type": "SafeHtml", + "indexKey": "", + "optional": false, + "description": "", + "line": 37, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "requestComponentStateSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 52, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "showAddToNotebookButton", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 51, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "studentWorkSavedToServerSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 55, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "submitCounter", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 47, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 56, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "methodsClass": [ + { + "name": "addClassResponse", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 469, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addResponseToResponsesMap", + "args": [ + { + "name": "responsesMap", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 483, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "responsesMap", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "clearComponentValues", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 423, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "createComponentState", + "args": [ + { + "name": "action", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 373, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCreate a new component state populated with the student data\ne.g. 'submit', 'save', 'change'\n", + "description": "

Create a new component state populated with the student data\ne.g. 'submit', 'save', 'change'

\n", + "jsdoctags": [ + { + "name": { + "pos": 12731, + "end": 12737, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "action" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 12725, + "end": 12730, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the action that is triggering creating of this component state\ne.g. 'submit', 'save', 'change'

\n" + }, + { + "tagName": { + "pos": 12844, + "end": 12850, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

a promise that will return a component state

\n" + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "disableComponentIfNecessary", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 430, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "doAttachStudentAsset", + "args": [ + { + "name": "studentAssetRequest", + "type": "StudentAssetRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 313, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "studentAssetRequest", + "type": "StudentAssetRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getClassmateResponses", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 346, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getClassmateResponsesFromComponents", + "args": [ + { + "name": "components", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 336, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "components", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "handleStudentWorkSavedToServerAdditionalProcessing", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 193, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "handleSubmitButtonClicked", + "args": [ + { + "name": "componentStateReplyingTo", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 171, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentStateReplyingTo", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isClassmateResponsesGated", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 449, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isConnectedComponentImportWorkMode", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 160, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isConnectedComponentShowWorkMode", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 149, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isWorkFromThisComponent", + "args": [ + { + "name": "componentState", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 332, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 145, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 80, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "registerStudentWorkReceivedListener", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 317, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "sendPostToStudentsInThread", + "args": [ + { + "name": "componentState", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 209, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "sendPostToThreadCreator", + "args": [ + { + "name": "componentStateIdReplyingTo", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "notificationType", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "fromWorkgroupId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "notificationMessage", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "workgroupsNotifiedSoFar", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 250, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentStateIdReplyingTo", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "notificationType", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "fromWorkgroupId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "notificationMessage", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "workgroupsNotifiedSoFar", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "sendPostToThreadRepliers", + "args": [ + { + "name": "componentStateIdReplyingTo", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "notificationType", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "fromWorkgroupId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "notificationMessage", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "workgroupsNotifiedSoFar", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 277, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentStateIdReplyingTo", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "notificationType", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "fromWorkgroupId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "notificationMessage", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "workgroupsNotifiedSoFar", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setClassResponses", + "args": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "annotations", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 453, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "annotations", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "shouldCreateComponentState", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 496, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "showSaveButton", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 441, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "showSubmitButton", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 445, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentDataChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 362, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "submitButtonClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 356, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "addDefaultFeedback", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 688, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "attachStudentAsset", + "args": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 232, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "broadcastDoneRenderingComponent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 325, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "canSubmit", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 488, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "clearLatestComponentState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 555, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "confirmSubmit", + "args": [ + { + "name": "numberOfSubmitsLeft", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 468, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "numberOfSubmitsLeft", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "connectedComponentStudentDataSaved", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 796, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nThis function is called when a connected component of this component saves student data.\nThis was added to handle a race condition when a step has a connected component on a previous\nstep but the connected component student work on the previous step was not being imported\nbecause it wasn't being saved in time.\nHere is an example of what was happening\n- Student generates work on step 1 but does not click the save button\n- Student goes to step 2 which triggers a promise to save the student work on step 1\n- Step 2 is loaded and checks if there is any work it needs to import from step 1\n- The work in step 1 has not saved yet so step 2 does not import any work and loads without\n importing any work\n- The work from step 1 is then saved\nHere is the additional process that this function performs to fix this problem\n- Step 2 listens for when work is saved on step 1\n- When the work for step 1 is saved, step 2 checks to see if it needs to import that work\n", + "description": "

This function is called when a connected component of this component saves student data.\nThis was added to handle a race condition when a step has a connected component on a previous\nstep but the connected component student work on the previous step was not being imported\nbecause it wasn't being saved in time.\nHere is an example of what was happening

\n
    \n
  • Student generates work on step 1 but does not click the save button
  • \n
  • Student goes to step 2 which triggers a promise to save the student work on step 1
  • \n
  • Step 2 is loaded and checks if there is any work it needs to import from step 1
  • \n
  • The work in step 1 has not saved yet so step 2 does not import any work and loads without\nimporting any work
  • \n
  • The work from step 1 is then saved\nHere is the additional process that this function performs to fix this problem
  • \n
  • Step 2 listens for when work is saved on step 1
  • \n
  • When the work for step 1 is saved, step 2 checks to see if it needs to import that work
  • \n
\n", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "copyAndAttachStudentAsset", + "args": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 218, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "copyPublicNotebookItem", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 632, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "copyPublicNotebookItemButtonClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 747, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createAutoCommentAnnotation", + "args": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 725, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createAutoScoreAnnotation", + "args": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 714, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createComponentStateAdditionalProcessing", + "args": [ + { + "name": "promise", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 598, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "promise", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createComponentStateAndBroadcast", + "args": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 559, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createDefaultFeedbackAnnotation", + "args": [ + { + "name": "feedbackText", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 706, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "feedbackText", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createMergedComponentState", + "args": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 377, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createNewComponentState", + "args": [], + "optional": false, + "returnType": "Partial", + "typeParameters": [], + "line": 818, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "disableAllInput", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 492, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "disableSubmitButton", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 496, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 541, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentStudentDataChanged", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 572, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentSubmitDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 548, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentSubmitTriggered", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 512, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "generateImageFromComponentState", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 615, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nRender the component state and then generate an image from it.\n", + "description": "

Render the component state and then generate an image from it.

\n", + "jsdoctags": [ + { + "name": { + "pos": 18804, + "end": 18818, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 18798, + "end": 18803, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The component state to render.

\n" + }, + { + "tagName": { + "pos": 18856, + "end": 18862, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

A promise that will return an image.

\n" + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "generateStarterState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 216, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getAction", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 321, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getClientSaveTime", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 684, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getComponentStatePromise", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 309, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getComponentStateWrapper", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "ComponentStateWrapper", + "typeParameters": [], + "line": 301, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getDefaultFeedback", + "args": [ + { + "name": "submitCount", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 702, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "submitCount", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getElementById", + "args": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getFirstResult", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 758, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "getFirstResult", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getIsDirty", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 277, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getMaxScore", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 680, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getMaxSubmitCount", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 460, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getNumberOfSubmitsLeft", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 456, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "handleConnectedComponents", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 352, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "handleConnectedComponentsPostProcess", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 385, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "handleStudentWorkSavedToServer", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 263, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasAnySubmissions", + "args": [ + { + "name": "componentStates", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 344, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentStates", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasDefaultFeedback", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 695, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasMaxScore", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 676, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasMaxSubmitCount", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 437, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasMaxSubmitCountAndUsedAllSubmits", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 452, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasSubmitMessage", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 504, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasSubmitsLeft", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 500, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasUsedAllSubmits", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 441, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "importWorkAsBackground", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 658, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "importWorkByStudentWorkId", + "args": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 170, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "incrementSubmitCounter", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 389, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isAddToNotebookEnabled", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 624, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isForThisComponent", + "args": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 192, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isFromConnectedComponent", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 766, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isHandleConnectedComponentAfterConnectedComponentStudentDataSaved", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 802, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isLockAfterSubmit", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 348, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isNotebookEnabled", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 643, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isPreviewMode", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 109, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSameComponent", + "args": [ + { + "name": "component", + "type": "Component", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 188, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "component", + "type": "Component", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isStudentNoteClippingEnabled", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 647, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isWorkFromClassmate", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 196, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "lockIfNecessary", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 281, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "performSubmit", + "args": [ + { + "name": "submitTriggeredBy", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 472, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "submitTriggeredBy", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "processConnectedComponentState", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 184, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "processLatestStudentWork", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 580, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "registerNotebookItemChosenListener", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 736, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "removeAttachment", + "args": [ + { + "name": "attachment", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 245, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "attachment", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "saveButtonClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 393, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "saveForAuthoringPreviewMode", + "args": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 404, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setBackgroundImage", + "args": [ + { + "name": "image", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 674, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "image", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setComponentStateAsBackgroundImage", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 668, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 537, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsDirtyAndBroadcast", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 527, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsSubmit", + "args": [ + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 464, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsSubmitDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 508, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsSubmitDirtyAndBroadcast", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 532, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setParentStudentWorkIdToCurrentStudentWork", + "args": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 180, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setStudentWork", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 381, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setSubmitCounter", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 811, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "showStudentAssets", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 651, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "submit", + "args": [ + { + "name": "submitTriggeredBy", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 416, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "submitTriggeredBy", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToAnnotationSavedToServer", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 123, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToAttachStudentAsset", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 200, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToNodeSubmitClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 137, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToNotebookItemChosen", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 159, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToNotifyConnectedComponents", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 147, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToRequestComponentState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 289, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToStudentWorkSavedToServer", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 252, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToSubscriptions", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 113, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "tryDisableComponent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 445, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CdkTextareaAutosize" + }, + { + "name": "ClassResponse" + }, + { + "name": "ComponentAnnotationsComponent", + "type": "component" + }, + { + "name": "ComponentHeaderComponent", + "type": "component" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatButton" + }, + { + "name": "MatCard" + }, + { + "name": "MatFormField" + }, + { + "name": "MatIcon" + }, + { + "name": "MatInput" + }, + { + "name": "NgClass" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, ViewEncapsulation } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { generateRandomKey } from '../../../common/string/string';\nimport { AnnotationService } from '../../../services/annotationService';\nimport { ConfigService } from '../../../services/configService';\nimport { NodeService } from '../../../services/nodeService';\nimport { NotebookService } from '../../../services/notebookService';\nimport { NotificationService } from '../../../services/notificationService';\nimport { StudentAssetService } from '../../../services/studentAssetService';\nimport { StudentDataService } from '../../../services/studentDataService';\nimport { StudentAssetRequest } from '../../../vle/studentAsset/StudentAssetRequest';\nimport { ComponentStudent } from '../../component-student.component';\nimport { ComponentService } from '../../componentService';\nimport { ComponentStateRequest } from '../../ComponentStateRequest';\nimport { DiscussionService } from '../discussionService';\nimport { ComponentHeaderComponent } from '../../../directives/component-header/component-header.component';\nimport { ComponentAnnotationsComponent } from '../../../directives/componentAnnotations/component-annotations.component';\nimport { MatCard } from '@angular/material/card';\nimport { NgClass } from '@angular/common';\nimport { MatFormField } from '@angular/material/form-field';\nimport { FormsModule } from '@angular/forms';\nimport { MatInput } from '@angular/material/input';\nimport { CdkTextareaAutosize } from '@angular/cdk/text-field';\nimport { MatButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\nimport { ClassResponse } from '../class-response/class-response.component';\n\n@Component({\n encapsulation: ViewEncapsulation.None,\n imports: [\n CdkTextareaAutosize,\n ClassResponse,\n ComponentAnnotationsComponent,\n ComponentHeaderComponent,\n FormsModule,\n MatButton,\n MatCard,\n MatFormField,\n MatIcon,\n MatInput,\n NgClass\n ],\n selector: 'discussion-student',\n styleUrl: 'discussion-student.component.scss',\n templateUrl: 'discussion-student.component.html'\n})\nexport class DiscussionStudent extends ComponentStudent {\n classResponses: any[] = [];\n componentStateIdReplyingTo: number;\n newResponse: string = '';\n responsesMap: any = {};\n retrievedClassmateResponses: boolean = false;\n studentResponse: string = '';\n topLevelResponses: any = {};\n\n constructor(\n protected annotationService: AnnotationService,\n protected componentService: ComponentService,\n protected configService: ConfigService,\n protected dialog: MatDialog,\n private discussionService: DiscussionService,\n protected nodeService: NodeService,\n protected notebookService: NotebookService,\n private notificationService: NotificationService,\n protected studentAssetService: StudentAssetService,\n protected dataService: StudentDataService\n ) {\n super(\n annotationService,\n componentService,\n configService,\n dialog,\n nodeService,\n notebookService,\n studentAssetService,\n dataService\n );\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n\n if (this.configService.isPreview()) {\n let componentStates = [];\n if (this.component.hasConnectedComponent()) {\n for (const connectedComponent of this.componentContent.connectedComponents) {\n componentStates = componentStates.concat(\n this.dataService.getComponentStatesByNodeIdAndComponentId(\n connectedComponent.nodeId,\n connectedComponent.componentId\n )\n );\n }\n if (this.isConnectedComponentImportWorkMode()) {\n componentStates = componentStates.concat(\n this.dataService.getComponentStatesByNodeIdAndComponentId(this.nodeId, this.componentId)\n );\n }\n } else {\n componentStates = this.dataService.getComponentStatesByNodeIdAndComponentId(\n this.nodeId,\n this.componentId\n );\n }\n this.setClassResponses(componentStates);\n } else {\n if (this.component.hasConnectedComponent()) {\n const retrieveWorkFromTheseComponents = [];\n for (const connectedComponent of this.componentContent.connectedComponents) {\n retrieveWorkFromTheseComponents.push({\n nodeId: connectedComponent.nodeId,\n componentId: connectedComponent.componentId\n });\n }\n if (this.isConnectedComponentImportWorkMode()) {\n retrieveWorkFromTheseComponents.push({\n nodeId: this.nodeId,\n componentId: this.componentId\n });\n }\n this.getClassmateResponsesFromComponents(retrieveWorkFromTheseComponents);\n } else {\n if (this.isClassmateResponsesGated()) {\n const componentState = this.componentState;\n if (componentState != null) {\n if (\n this.discussionService.componentStateHasStudentWork(\n componentState,\n this.componentContent\n )\n ) {\n this.getClassmateResponses();\n }\n }\n } else {\n this.getClassmateResponses();\n }\n }\n }\n this.disableComponentIfNecessary();\n this.registerStudentWorkReceivedListener();\n this.broadcastDoneRenderingComponent();\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n\n isConnectedComponentShowWorkMode() {\n if (this.component.hasConnectedComponent()) {\n let isShowWorkMode = true;\n for (const connectedComponent of this.componentContent.connectedComponents) {\n isShowWorkMode = isShowWorkMode && connectedComponent.type === 'showWork';\n }\n return isShowWorkMode;\n }\n return false;\n }\n\n isConnectedComponentImportWorkMode() {\n if (this.component.hasConnectedComponent()) {\n let isImportWorkMode = true;\n for (const connectedComponent of this.componentContent.connectedComponents) {\n isImportWorkMode = isImportWorkMode && connectedComponent.type === 'importWork';\n }\n return isImportWorkMode;\n }\n return false;\n }\n\n handleSubmitButtonClicked(componentStateReplyingTo: any = null): void {\n if (componentStateReplyingTo && componentStateReplyingTo.replyText) {\n const componentState = componentStateReplyingTo;\n const componentStateId = componentState.id;\n this.studentResponse = componentState.replyText;\n this.componentStateIdReplyingTo = componentStateId;\n this.isSubmit = true;\n this.isDirty = true;\n componentStateReplyingTo.replyText = null;\n } else {\n this.studentResponse = this.newResponse;\n this.isSubmit = true;\n }\n this.dataService.broadcastComponentSubmitTriggered({\n nodeId: this.nodeId,\n componentId: this.componentId\n });\n if (this.isPreviewMode()) {\n this.saveForAuthoringPreviewMode('submit');\n }\n }\n\n handleStudentWorkSavedToServerAdditionalProcessing(componentState: any): void {\n this.clearComponentValues();\n if (\n !this.isPreviewMode() &&\n this.isClassmateResponsesGated() &&\n !this.retrievedClassmateResponses\n ) {\n this.getClassmateResponses();\n } else {\n this.addClassResponse(componentState);\n }\n this.disableComponentIfNecessary();\n this.sendPostToStudentsInThread(componentState);\n this.isSubmit = null;\n }\n\n sendPostToStudentsInThread(componentState) {\n const studentData = componentState.studentData;\n if (studentData != null && this.responsesMap != null) {\n const componentStateIdReplyingTo = studentData.componentStateIdReplyingTo;\n if (componentStateIdReplyingTo != null) {\n const fromWorkgroupId = componentState.workgroupId;\n const notificationType = 'DiscussionReply';\n const nodeId = componentState.nodeId;\n const componentId = componentState.componentId;\n const usernamesArray = this.configService.getUsernamesByWorkgroupId(fromWorkgroupId);\n const usernames = usernamesArray\n .map((obj) => {\n return obj.name;\n })\n .join(', ');\n const notificationMessage = $localize`${usernames} replied to a discussion you were in!`;\n const workgroupsNotifiedSoFar = [];\n if (this.responsesMap[componentStateIdReplyingTo] != null) {\n this.sendPostToThreadCreator(\n componentStateIdReplyingTo,\n notificationType,\n nodeId,\n componentId,\n fromWorkgroupId,\n notificationMessage,\n workgroupsNotifiedSoFar\n );\n this.sendPostToThreadRepliers(\n componentStateIdReplyingTo,\n notificationType,\n nodeId,\n componentId,\n fromWorkgroupId,\n notificationMessage,\n workgroupsNotifiedSoFar\n );\n }\n }\n }\n }\n\n sendPostToThreadCreator(\n componentStateIdReplyingTo,\n notificationType,\n nodeId,\n componentId,\n fromWorkgroupId,\n notificationMessage,\n workgroupsNotifiedSoFar\n ) {\n const originalPostComponentState = this.responsesMap[componentStateIdReplyingTo];\n const toWorkgroupId = originalPostComponentState.workgroupId;\n if (toWorkgroupId != null && toWorkgroupId !== fromWorkgroupId) {\n const notification = this.notificationService.createNewNotification(\n this.configService.getRunId(),\n this.configService.getPeriodId(),\n notificationType,\n nodeId,\n componentId,\n fromWorkgroupId,\n toWorkgroupId,\n notificationMessage\n );\n this.notificationService.saveNotificationToServer(notification);\n workgroupsNotifiedSoFar.push(toWorkgroupId);\n }\n }\n\n sendPostToThreadRepliers(\n componentStateIdReplyingTo,\n notificationType,\n nodeId,\n componentId,\n fromWorkgroupId,\n notificationMessage,\n workgroupsNotifiedSoFar\n ) {\n if (this.responsesMap[componentStateIdReplyingTo].replies != null) {\n const replies = this.responsesMap[componentStateIdReplyingTo].replies;\n for (let r = 0; r < replies.length; r++) {\n const reply = replies[r];\n const toWorkgroupId = reply.workgroupId;\n if (\n toWorkgroupId != null &&\n toWorkgroupId !== fromWorkgroupId &&\n workgroupsNotifiedSoFar.indexOf(toWorkgroupId) === -1\n ) {\n const notification = this.notificationService.createNewNotification(\n this.configService.getRunId(),\n this.configService.getPeriodId(),\n notificationType,\n nodeId,\n componentId,\n fromWorkgroupId,\n toWorkgroupId,\n notificationMessage\n );\n this.notificationService.saveNotificationToServer(notification);\n workgroupsNotifiedSoFar.push(toWorkgroupId);\n }\n }\n }\n }\n\n protected doAttachStudentAsset(studentAssetRequest: StudentAssetRequest): void {\n this.attachStudentAsset(studentAssetRequest.asset);\n }\n\n registerStudentWorkReceivedListener() {\n this.subscriptions.add(\n this.dataService.studentWorkReceived$.subscribe((componentState) => {\n if (\n (this.isWorkFromThisComponent(componentState) ||\n this.isFromConnectedComponent(componentState)) &&\n this.isWorkFromClassmate(componentState) &&\n this.retrievedClassmateResponses\n ) {\n this.addClassResponse(componentState);\n }\n })\n );\n }\n\n isWorkFromThisComponent(componentState) {\n return this.isForThisComponent(componentState);\n }\n\n getClassmateResponsesFromComponents(components: any[] = []): void {\n const runId = this.configService.getRunId();\n const periodId = this.configService.getPeriodId();\n this.discussionService\n .getClassmateResponsesFromComponents(runId, periodId, components)\n .subscribe((response: any) =>\n this.setClassResponses(response.studentWork, response.annotations)\n );\n }\n\n getClassmateResponses(): void {\n const runId = this.configService.getRunId();\n const periodId = this.configService.getPeriodId();\n this.discussionService\n .getClassmateResponses(runId, periodId, this.nodeId, this.componentId)\n .subscribe((response: any) =>\n this.setClassResponses(response.studentWork, response.annotations)\n );\n }\n\n submitButtonClicked() {\n this.isSubmit = true;\n this.disableComponentIfNecessary();\n this.handleSubmitButtonClicked();\n }\n\n studentDataChanged() {\n this.setIsDirty(true);\n this.createComponentStateAndBroadcast('change');\n }\n\n /**\n * Create a new component state populated with the student data\n * @param action the action that is triggering creating of this component state\n * e.g. 'submit', 'save', 'change'\n * @return a promise that will return a component state\n */\n createComponentState(action) {\n const componentState: any = this.createNewComponentState();\n const studentData: any = {\n response: this.studentResponse,\n attachments: this.attachments\n };\n if (this.componentStateIdReplyingTo != null) {\n studentData.componentStateIdReplyingTo = this.componentStateIdReplyingTo;\n }\n componentState.studentData = studentData;\n componentState.componentType = 'Discussion';\n componentState.nodeId = this.nodeId;\n componentState.componentId = this.componentId;\n componentState.isSubmit = this.isSubmit;\n if (\n (this.configService.isPreview() && !this.componentStateIdReplyingTo) ||\n this.mode === 'authoring'\n ) {\n componentState.id = generateRandomKey();\n }\n if (this.isSubmit) {\n componentState.studentData.isSubmit = this.isSubmit;\n this.isSubmit = false;\n if (this.mode === 'authoring') {\n if (this.dataService.studentData == null) {\n this.dataService.studentData = {\n componentStates: [],\n events: [],\n annotations: []\n };\n }\n this.dataService.studentData.componentStates.push(componentState);\n const componentStates = this.dataService.getComponentStatesByNodeIdAndComponentId(\n this.nodeId,\n this.componentId\n );\n this.setClassResponses(componentStates);\n this.clearComponentValues();\n this.isDirty = false;\n }\n }\n return new Promise((resolve, reject) => {\n this.createComponentStateAdditionalProcessing(\n { resolve: resolve, reject: reject },\n componentState,\n action\n );\n });\n }\n\n clearComponentValues() {\n this.studentResponse = '';\n this.newResponse = '';\n this.attachments = [];\n this.componentStateIdReplyingTo = null;\n }\n\n disableComponentIfNecessary() {\n super.disableComponentIfNecessary();\n if (this.component.hasConnectedComponent()) {\n for (const connectedComponent of this.componentContent.connectedComponents) {\n if (connectedComponent.type === 'showWork') {\n this.isDisabled = true;\n }\n }\n }\n }\n\n showSaveButton() {\n return this.componentContent.showSaveButton;\n }\n\n showSubmitButton() {\n return this.componentContent.showSubmitButton;\n }\n\n isClassmateResponsesGated() {\n return this.componentContent.gateClassmateResponses;\n }\n\n setClassResponses(componentStates: any[], annotations: any[] = []): void {\n const isStudentMode = true;\n this.classResponses = this.discussionService.getClassResponses(\n componentStates,\n annotations,\n isStudentMode\n );\n this.responsesMap = this.discussionService.getResponsesMap(this.classResponses);\n this.topLevelResponses = this.discussionService.getLevel1Responses(\n this.classResponses,\n this.componentId,\n this.workgroupId\n );\n this.retrievedClassmateResponses = true;\n }\n\n addClassResponse(componentState: any): void {\n if (componentState.studentData.isSubmit) {\n this.discussionService.setUsernames(componentState);\n componentState.replies = [];\n this.classResponses.push(componentState);\n this.addResponseToResponsesMap(this.responsesMap, componentState);\n this.topLevelResponses = this.discussionService.getLevel1Responses(\n this.classResponses,\n this.componentId,\n this.workgroupId\n );\n }\n }\n\n addResponseToResponsesMap(responsesMap: any, componentState: any): void {\n responsesMap[componentState.id] = componentState;\n const componentStateIdReplyingTo = componentState.studentData.componentStateIdReplyingTo;\n if (componentStateIdReplyingTo) {\n if (\n responsesMap[componentStateIdReplyingTo] &&\n responsesMap[componentStateIdReplyingTo].replies\n ) {\n responsesMap[componentStateIdReplyingTo].replies.push(componentState);\n }\n }\n }\n\n shouldCreateComponentState(request: ComponentStateRequest): boolean {\n return this.isDirty && request.isSubmit;\n }\n}\n", + "styleUrl": "discussion-student.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentService", + "type": "ComponentService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "discussionService", + "type": "DiscussionService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "notebookService", + "type": "NotebookService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "notificationService", + "type": "NotificationService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentAssetService", + "type": "StudentAssetService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 54, + "jsdoctags": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentService", + "type": "ComponentService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "discussionService", + "type": "DiscussionService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "notebookService", + "type": "NotebookService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "notificationService", + "type": "NotificationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentAssetService", + "type": "StudentAssetService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "ComponentStudent" + ], + "templateData": "\n
\n @if (mode === 'student') {\n \n }\n
\n
\n @if (!isDisabled) {\n \n \n \n \n \n @if (isStudentAttachmentEnabled && attachments.length) {\n
\n @for (attachment of attachments; track attachment) {\n
\n \n \n cancel\n \n
\n }\n
\n }\n
\n @if (isStudentAttachmentEnabled) {\n \n image\n \n }\n \n Post\n \n
\n \n } @else {\n
\n }\n
\n @for (componentState of topLevelResponses.all; track componentState) {\n \n }\n
\n
\n @for (componentState of topLevelResponses.col2; track componentState) {\n \n }\n
\n
\n \n
\n\n" + }, + { + "name": "DismissAmbientNotificationDialogComponent", + "id": "component-DismissAmbientNotificationDialogComponent-8bf2dc33e176615147756aa3b87a5e0b59b6aaa0d8a0147753786f15bd1a6369363fe4f2bdc58758cda8d7f2633f25a42e5b8cf1084b67165a576c505749b13c", + "file": "src/assets/wise5/vle/dismiss-ambient-notification-dialog/dismiss-ambient-notification-dialog.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [ + ".notification-dismiss__input { width: 100%; }" + ], + "templateUrl": [ + "./dismiss-ambient-notification-dialog.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "dialogRef", + "deprecated": false, + "deprecationMessage": "", + "type": "MatDialogRef", + "indexKey": "", + "optional": false, + "description": "", + "line": 57, + "modifierKind": [ + 125 + ] + }, + { + "name": "dismiss$", + "defaultValue": "this.dismissSource.asObservable()", + "deprecated": false, + "deprecationMessage": "", + "type": "Observable", + "indexKey": "", + "optional": false, + "description": "", + "line": 47, + "modifierKind": [ + 125 + ] + }, + { + "name": "dismissCodeInput", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 48 + }, + { + "name": "dismissSource", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 46, + "modifierKind": [ + 123 + ] + }, + { + "name": "errorMessage", + "defaultValue": "$localize`Invalid dismiss code. Please try again.`", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 49 + }, + { + "name": "formGroup", + "deprecated": false, + "deprecationMessage": "", + "type": "FormGroup", + "indexKey": "", + "optional": false, + "description": "", + "line": 50 + }, + { + "name": "hasDismissCode", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 51 + }, + { + "name": "isShowInvalidDismissCodeMessage", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 52 + }, + { + "name": "nodePositionAndTitle", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 53 + }, + { + "name": "notification", + "deprecated": false, + "deprecationMessage": "", + "type": "Notification", + "indexKey": "", + "optional": false, + "description": "", + "line": 56, + "decorators": [ + { + "name": "Inject", + "stringifiedArguments": "MAT_DIALOG_DATA" + } + ], + "modifierKind": [ + 171, + 125 + ] + } + ], + "methodsClass": [ + { + "name": "checkDismissCode", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 103, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "closeDialog", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 155, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dismissCodeValidator", + "args": [ + { + "name": "control", + "type": "AbstractControl", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "ValidationErrors", + "typeParameters": [], + "line": 84, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "control", + "type": "AbstractControl", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "initializeFormGroup", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 71, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "initializeHasDismissCode", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 91, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "initializeNodePositionAndTitle", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 97, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 64, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "saveEvent", + "args": [ + { + "name": "eventName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 126, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "eventName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "saveNotificationDismissedWithCodeEvent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 118, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "saveNotificationWindowClosedEvent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 122, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "saveNotificationWindowOpenedEvent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 114, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "visitNode", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 143, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatDialogTitle" + }, + { + "name": "CdkScrollable" + }, + { + "name": "MatDialogContent" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "ReactiveFormsModule", + "type": "module" + }, + { + "name": "MatFormField" + }, + { + "name": "MatLabel" + }, + { + "name": "MatInput" + }, + { + "name": "MatError" + }, + { + "name": "MatDialogActions" + }, + { + "name": "MatButton" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Inject, OnInit } from '@angular/core';\nimport {\n AbstractControl,\n FormBuilder,\n FormControl,\n FormGroup,\n ValidationErrors,\n FormsModule,\n ReactiveFormsModule\n} from '@angular/forms';\nimport {\n MatDialogRef,\n MAT_DIALOG_DATA,\n MatDialogTitle,\n MatDialogContent,\n MatDialogActions\n} from '@angular/material/dialog';\nimport { Observable, Subject } from 'rxjs';\nimport { Notification } from '../../../../app/domain/notification';\nimport { ProjectService } from '../../services/projectService';\nimport { StudentDataService } from '../../services/studentDataService';\nimport { NodeService } from '../../services/nodeService';\nimport { CdkScrollable } from '@angular/cdk/scrolling';\nimport { MatFormField, MatLabel, MatError } from '@angular/material/form-field';\nimport { MatInput } from '@angular/material/input';\nimport { MatButton } from '@angular/material/button';\n\n@Component({\n imports: [\n MatDialogTitle,\n CdkScrollable,\n MatDialogContent,\n FormsModule,\n ReactiveFormsModule,\n MatFormField,\n MatLabel,\n MatInput,\n MatError,\n MatDialogActions,\n MatButton\n ],\n styles: ['.notification-dismiss__input { width: 100%; }'],\n templateUrl: './dismiss-ambient-notification-dialog.component.html'\n})\nexport class DismissAmbientNotificationDialogComponent implements OnInit {\n private dismissSource: Subject = new Subject();\n public dismiss$: Observable = this.dismissSource.asObservable();\n dismissCodeInput: string = '';\n errorMessage: string = $localize`Invalid dismiss code. Please try again.`;\n formGroup: FormGroup;\n hasDismissCode: boolean = false;\n isShowInvalidDismissCodeMessage: boolean = false;\n nodePositionAndTitle: string;\n\n constructor(\n @Inject(MAT_DIALOG_DATA) public notification: Notification,\n public dialogRef: MatDialogRef,\n private formBuilder: FormBuilder,\n private nodeService: NodeService,\n private projectService: ProjectService,\n private studentDataService: StudentDataService\n ) {}\n\n ngOnInit(): void {\n this.initializeFormGroup();\n this.initializeHasDismissCode();\n this.initializeNodePositionAndTitle();\n this.saveNotificationWindowOpenedEvent();\n }\n\n private initializeFormGroup(): void {\n this.formGroup = this.formBuilder.group(\n {\n dismissCode: new FormControl('')\n },\n {\n validators: (control: AbstractControl): ValidationErrors => {\n return this.dismissCodeValidator(control);\n }\n }\n );\n }\n\n private dismissCodeValidator(control: AbstractControl): ValidationErrors {\n if (this.isShowInvalidDismissCodeMessage) {\n control.get('dismissCode').setErrors({ incorrect: true });\n }\n return null;\n }\n\n private initializeHasDismissCode(): void {\n if (this.notification.data && this.notification.data.dismissCode) {\n this.hasDismissCode = true;\n }\n }\n\n private initializeNodePositionAndTitle(): void {\n this.nodePositionAndTitle = this.projectService.getNodePositionAndTitle(\n this.notification.nodeId\n );\n }\n\n checkDismissCode(): void {\n if (!this.hasDismissCode || this.dismissCodeInput === this.notification.data.dismissCode) {\n this.dismissSource.next(this.notification);\n this.saveNotificationDismissedWithCodeEvent();\n this.dialogRef.close();\n } else {\n this.isShowInvalidDismissCodeMessage = true;\n this.formGroup.controls['dismissCode'].updateValueAndValidity();\n }\n }\n\n private saveNotificationWindowOpenedEvent(): void {\n this.saveEvent('currentAmbientNotificationWindowOpened');\n }\n\n private saveNotificationDismissedWithCodeEvent(): void {\n this.saveEvent('currentAmbientNotificationDimissedWithCode');\n }\n\n private saveNotificationWindowClosedEvent(): void {\n this.saveEvent('currentAmbientNotificationWindowClosed');\n }\n\n private saveEvent(eventName: string): void {\n const nodeId = null;\n const componentId = null;\n const componentType = null;\n const category = 'Notification';\n const event = eventName;\n const eventData = {};\n this.studentDataService.saveVLEEvent(\n nodeId,\n componentId,\n componentType,\n category,\n event,\n eventData\n );\n }\n\n visitNode(): void {\n if (!this.hasDismissCode) {\n // only close notifications that don't require a dismiss code\n this.saveNotificationWindowClosedEvent();\n }\n\n const goToNodeId = this.notification.nodeId;\n if (goToNodeId != null) {\n this.nodeService.setCurrentNode(goToNodeId);\n }\n }\n\n closeDialog(): void {\n this.saveNotificationWindowClosedEvent();\n this.dialogRef.close();\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": ".notification-dismiss__input { width: 100%; }\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "notification", + "type": "Notification", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialogRef", + "type": "MatDialogRef", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "formBuilder", + "type": "FormBuilder", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentDataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 53, + "jsdoctags": [ + { + "name": "notification", + "type": "Notification", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialogRef", + "type": "MatDialogRef", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "formBuilder", + "type": "FormBuilder", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentDataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "
\n

Action Required

\n \n

{{ notification.message }}

\n

\n {{ nodePositionAndTitle }}\n

\n @if (hasDismissCode) {\n
\n
\n
\n

Teacher, enter code to dismiss this alert:

\n \n Dismiss Code\n \n @if (formGroup.controls['dismissCode'].errors) {\n {{ errorMessage }}\n }\n \n
\n
\n }\n
\n \n \n \n Dismiss\n \n \n
\n" + }, + { + "name": "DisplayBranchPathStepsComponent", + "id": "component-DisplayBranchPathStepsComponent-f4a9e358e8809b6fe9cbfc9ff93959de866380c7ae335e8085340e6a461dc676a3a2690d8ff79c7a8036af4f3a3d1d518dcce4f9246e0b3b8dc5dd734ca443ec", + "file": "src/assets/wise5/authoringTool/display-branch-path-steps/display-branch-path-steps.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "display-branch-path-steps", + "styleUrls": [], + "styles": [ + ".branch-path-step { border-radius: 6px; padding: 8px; }" + ], + "templateUrl": [ + "./display-branch-path-steps.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "nodes", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "line": 14, + "type": "any[]", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "nodeIdToBackgroundColor", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "literal type", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "modifierKind": [ + 124 + ] + }, + { + "name": "nodeIdToStepTitle", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "literal type", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "ngOnChanges", + "args": [ + { + "name": "changes", + "type": "SimpleChanges", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 18, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "changes", + "type": "SimpleChanges", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setStepTitlesAndBackgroundColor", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 24, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input, SimpleChanges } from '@angular/core';\nimport { TeacherProjectService } from '../../services/teacherProjectService';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n imports: [CommonModule],\n selector: 'display-branch-path-steps',\n styles: ['.branch-path-step { border-radius: 6px; padding: 8px; }'],\n templateUrl: './display-branch-path-steps.component.html'\n})\nexport class DisplayBranchPathStepsComponent {\n protected nodeIdToBackgroundColor: { [key: string]: string } = {};\n protected nodeIdToStepTitle: { [key: string]: string } = {};\n @Input() nodes: any[] = [];\n\n constructor(private projectService: TeacherProjectService) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.nodes) {\n this.setStepTitlesAndBackgroundColor();\n }\n }\n\n private setStepTitlesAndBackgroundColor(): void {\n for (const branchPathNode of this.nodes) {\n this.nodeIdToBackgroundColor[branchPathNode.nodeId] = this.projectService.getBackgroundColor(\n branchPathNode.nodeId\n );\n this.nodeIdToStepTitle[branchPathNode.nodeId] = this.projectService.getNodePositionAndTitle(\n branchPathNode.nodeId\n );\n }\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": ".branch-path-step { border-radius: 6px; padding: 8px; }\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 14, + "jsdoctags": [ + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "
\n @for (node of nodes; track node) {\n \n {{ nodeIdToStepTitle[node.nodeId] }}\n
\n }\n\n@if (nodes.length === 0) {\n A new step will automatically be created in this path\n}\n" + }, + { + "name": "DrawAuthoring", + "id": "component-DrawAuthoring-bc0cc10262c1e7d1c2db47d8a6c458ea07bf181b315373d2a7aa9d88afef2aa8f13809691879b8a6fe752d3e3bba020c94ac7b2333b80c8d01ade23959851bf3", + "file": "src/assets/wise5/components/draw/draw-authoring/draw-authoring.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "draw-authoring", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "draw-authoring.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "allToolNames", + "defaultValue": "[\n 'select',\n 'line',\n 'shape',\n 'freeHand',\n 'text',\n 'stamp',\n 'strokeColor',\n 'fillColor',\n 'clone',\n 'strokeWidth',\n 'sendBack',\n 'sendForward',\n 'undo',\n 'redo',\n 'delete'\n ]", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 40 + }, + { + "name": "backgroundImageChange", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 63 + }, + { + "name": "canvasHeightChange", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 65 + }, + { + "name": "canvasWidthChange", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 64 + }, + { + "name": "defaultHeight", + "defaultValue": "600", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 60 + }, + { + "name": "defaultWidth", + "defaultValue": "800", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 59 + }, + { + "name": "height", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 58 + }, + { + "name": "stampImageChange", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 66 + }, + { + "name": "stamps", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 61 + }, + { + "name": "width", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 57 + }, + { + "name": "allowedConnectedComponentTypes", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "idToOrder", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "inputChange", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "promptChange", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + } + ], + "methodsClass": [ + { + "name": "addStamp", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 211, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "assetSelected", + "args": [ + { + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 177, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "canvasHeightChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 143, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "canvasWidthChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 123, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "chooseStampImage", + "args": [ + { + "name": "stampIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 167, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "stampIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "convertStampObjectsToStampStrings", + "args": [ + { + "name": "stampObjects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string[]", + "typeParameters": [], + "line": 284, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "stampObjects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "convertStampStringsToStampObjects", + "args": [ + { + "name": "stampStrings", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 276, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "stampStrings", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createStamp", + "args": [ + { + "name": "image", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "''" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 226, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "image", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "''", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "deleteStamp", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 257, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "deleteStarterState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 118, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "enableAllTools", + "args": [ + { + "name": "doEnable", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 103, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "doEnable", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "initializeAuthoringComponentContentStampsIfNecessary", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 217, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "moveStampDown", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 248, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "moveStampUp", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 239, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 98, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "saveStarterState", + "args": [ + { + "name": "starterState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 113, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "starterState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "setStampImage", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "fileName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 268, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "fileName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "stampChanged", + "args": [ + { + "name": "stampImage", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 272, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "stampImage", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "toolClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 163, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "updateAuthoringComponentContentStamps", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 235, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "updateAuthoringComponentContentStampsAndSave", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 230, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "updateStarterDrawDataBackground", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 192, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "updateStarterDrawDataBackgroundAndSave", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 187, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "updateStarterDrawDataHeight", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 149, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "updateStarterDrawDataWidth", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 129, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 73, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "confirmAndRemove", + "args": [ + { + "name": "message", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "array", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 110, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "message", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "array", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "getComponent", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 106, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "getComponents", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 102, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "isForThisComponent", + "args": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 77, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "moveObjectDown", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 122, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "moveObjectUp", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 117, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 65, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "promptChanged", + "args": [ + { + "name": "prompt", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 69, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "prompt", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "setShowSubmitButtonValue", + "args": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 85, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "EditComponentPrompt", + "type": "component" + }, + { + "name": "TranslatableInputComponent", + "type": "component" + }, + { + "name": "TranslatableAssetChooserComponent", + "type": "component" + }, + { + "name": "MatCheckbox" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatInput" + }, + { + "name": "MatButton" + }, + { + "name": "MatTooltip" + }, + { + "name": "MatIcon" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatButton } from '@angular/material/button';\nimport { MatCheckbox } from '@angular/material/checkbox';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInput } from '@angular/material/input';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { Subject } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, filter } from 'rxjs/operators';\nimport { EditComponentPrompt } from '../../../../../app/authoring-tool/edit-component-prompt/edit-component-prompt.component';\nimport { ProjectAssetService } from '../../../../../app/services/projectAssetService';\nimport { AbstractComponentAuthoring } from '../../../authoringTool/components/AbstractComponentAuthoring';\nimport { TranslatableAssetChooserComponent } from '../../../authoringTool/components/translatable-asset-chooser/translatable-asset-chooser.component';\nimport { TranslatableInputComponent } from '../../../authoringTool/components/translatable-input/translatable-input.component';\nimport { AssetChooser } from '../../../authoringTool/project-asset-authoring/asset-chooser';\nimport { ConfigService } from '../../../services/configService';\nimport { TeacherNodeService } from '../../../services/teacherNodeService';\nimport { TeacherProjectService } from '../../../services/teacherProjectService';\n\n@Component({\n selector: 'draw-authoring',\n templateUrl: 'draw-authoring.component.html',\n styleUrl: 'draw-authoring.component.scss',\n imports: [\n EditComponentPrompt,\n TranslatableInputComponent,\n TranslatableAssetChooserComponent,\n MatCheckbox,\n FormsModule,\n MatFormFieldModule,\n MatInput,\n MatButton,\n MatTooltip,\n MatIcon\n ]\n})\nexport class DrawAuthoring extends AbstractComponentAuthoring {\n allToolNames: string[] = [\n 'select',\n 'line',\n 'shape',\n 'freeHand',\n 'text',\n 'stamp',\n 'strokeColor',\n 'fillColor',\n 'clone',\n 'strokeWidth',\n 'sendBack',\n 'sendForward',\n 'undo',\n 'redo',\n 'delete'\n ];\n width: number;\n height: number;\n defaultWidth: number = 800;\n defaultHeight: number = 600;\n stamps: any[] = [];\n\n backgroundImageChange: Subject = new Subject();\n canvasWidthChange: Subject = new Subject();\n canvasHeightChange: Subject = new Subject();\n stampImageChange: Subject = new Subject();\n\n constructor(\n protected configService: ConfigService,\n private dialog: MatDialog,\n protected nodeService: TeacherNodeService,\n protected projectAssetService: ProjectAssetService,\n protected projectService: TeacherProjectService\n ) {\n super(configService, nodeService, projectAssetService, projectService);\n this.subscriptions.add(\n this.backgroundImageChange.pipe(debounceTime(1000), distinctUntilChanged()).subscribe(() => {\n this.updateStarterDrawDataBackgroundAndSave();\n })\n );\n this.subscriptions.add(\n this.canvasWidthChange.pipe(debounceTime(1000), distinctUntilChanged()).subscribe(() => {\n this.canvasWidthChanged();\n })\n );\n this.subscriptions.add(\n this.canvasHeightChange.pipe(debounceTime(1000), distinctUntilChanged()).subscribe(() => {\n this.canvasHeightChanged();\n })\n );\n this.subscriptions.add(\n this.stampImageChange.pipe(debounceTime(1000), distinctUntilChanged()).subscribe(() => {\n this.updateAuthoringComponentContentStampsAndSave();\n })\n );\n }\n\n ngOnInit() {\n super.ngOnInit();\n this.stamps = this.convertStampStringsToStampObjects(this.componentContent.stamps.Stamps);\n }\n\n enableAllTools(doEnable: boolean) {\n if (this.componentContent.tools == null) {\n this.componentContent.tools = {};\n }\n this.allToolNames.map((toolName) => {\n this.componentContent.tools[toolName] = doEnable;\n });\n this.componentChanged();\n }\n\n saveStarterState(starterState: any): void {\n this.componentContent.starterDrawData = starterState;\n this.componentChanged();\n }\n\n deleteStarterState(): void {\n this.componentContent.starterDrawData = null;\n this.componentChanged();\n }\n\n canvasWidthChanged(): void {\n this.width = this.componentContent.width;\n this.updateStarterDrawDataWidth();\n this.componentChanged();\n }\n\n updateStarterDrawDataWidth(): void {\n if (this.componentContent.starterDrawData != null) {\n const starterDrawDataJSONObject = JSON.parse(this.componentContent.starterDrawData);\n if (starterDrawDataJSONObject != null && starterDrawDataJSONObject.dt != null) {\n if (this.width == null) {\n starterDrawDataJSONObject.dt.width = this.defaultWidth;\n } else {\n starterDrawDataJSONObject.dt.width = this.width;\n }\n this.componentContent.starterDrawData = JSON.stringify(starterDrawDataJSONObject);\n }\n }\n }\n\n canvasHeightChanged(): void {\n this.height = this.componentContent.height;\n this.updateStarterDrawDataHeight();\n this.componentChanged();\n }\n\n updateStarterDrawDataHeight(): void {\n if (this.componentContent.starterDrawData != null) {\n const starterDrawDataJSONObject = JSON.parse(this.componentContent.starterDrawData);\n if (starterDrawDataJSONObject != null && starterDrawDataJSONObject.dt != null) {\n if (this.height == null) {\n starterDrawDataJSONObject.dt.height = this.defaultHeight;\n } else {\n starterDrawDataJSONObject.dt.height = this.height;\n }\n this.componentContent.starterDrawData = JSON.stringify(starterDrawDataJSONObject);\n }\n }\n }\n\n toolClicked(): void {\n this.componentChanged();\n }\n\n chooseStampImage(stampIndex: number): void {\n new AssetChooser(this.dialog, this.nodeId, this.componentId)\n .open('stamp', stampIndex)\n .afterClosed()\n .pipe(filter((data) => data != null))\n .subscribe((data: any) => {\n return this.assetSelected(data);\n });\n }\n\n assetSelected({ nodeId, componentId, assetItem, target, targetObject }): void {\n super.assetSelected({ nodeId, componentId, assetItem, target });\n const fileName = assetItem.fileName;\n if (target === 'stamp') {\n const stampIndex = targetObject;\n this.setStampImage(stampIndex, fileName);\n this.updateAuthoringComponentContentStampsAndSave();\n }\n }\n\n updateStarterDrawDataBackgroundAndSave(): void {\n this.updateStarterDrawDataBackground();\n this.componentChanged();\n }\n\n updateStarterDrawDataBackground(): void {\n const starterDrawData = this.componentContent.starterDrawData;\n if (starterDrawData != null) {\n const starterDrawDataJSON = JSON.parse(starterDrawData);\n if (\n starterDrawDataJSON != null &&\n starterDrawDataJSON.canvas != null &&\n starterDrawDataJSON.canvas.backgroundImage != null &&\n starterDrawDataJSON.canvas.backgroundImage.src != null\n ) {\n const projectAssetsDirectoryPath = this.configService.getProjectAssetsDirectoryPath(true);\n const background = this.componentContent.background;\n const newSrc = projectAssetsDirectoryPath + '/' + background;\n starterDrawDataJSON.canvas.backgroundImage.src = newSrc;\n this.componentContent.starterDrawData = JSON.stringify(starterDrawDataJSON);\n }\n }\n }\n\n addStamp(): void {\n this.initializeAuthoringComponentContentStampsIfNecessary();\n this.stamps.push(this.createStamp());\n this.updateAuthoringComponentContentStampsAndSave();\n }\n\n initializeAuthoringComponentContentStampsIfNecessary(): void {\n if (this.componentContent.stamps == null) {\n this.componentContent.stamps = {};\n }\n if (this.componentContent.stamps.Stamps == null) {\n this.componentContent.stamps.Stamps = [];\n }\n }\n\n createStamp(image: string = ''): any {\n return { image: image };\n }\n\n updateAuthoringComponentContentStampsAndSave(): void {\n this.updateAuthoringComponentContentStamps();\n this.componentChanged();\n }\n\n updateAuthoringComponentContentStamps(): void {\n this.componentContent.stamps.Stamps = this.convertStampObjectsToStampStrings(this.stamps);\n }\n\n moveStampUp(index: number): void {\n if (index != 0) {\n const stamp = this.stamps[index];\n this.stamps.splice(index, 1);\n this.stamps.splice(index - 1, 0, stamp);\n this.updateAuthoringComponentContentStampsAndSave();\n }\n }\n\n moveStampDown(index: number): void {\n if (index != this.componentContent.stamps.Stamps.length - 1) {\n const stamp = this.stamps[index];\n this.stamps.splice(index, 1);\n this.stamps.splice(index + 1, 0, stamp);\n this.updateAuthoringComponentContentStampsAndSave();\n }\n }\n\n deleteStamp(index: number): void {\n if (\n confirm(\n $localize`Are you sure you want to delete this stamp?\\n\\n${this.componentContent.stamps.Stamps[index]}`\n )\n ) {\n this.stamps.splice(index, 1);\n this.updateAuthoringComponentContentStampsAndSave();\n }\n }\n\n setStampImage(index: number, fileName: string): void {\n this.stamps[index].image = fileName;\n }\n\n stampChanged(stampImage: string, index: number): void {\n this.stampImageChange.next(`${index}-${stampImage}`);\n }\n\n convertStampStringsToStampObjects(stampStrings: string[]): any[] {\n const stampObjects: any[] = [];\n for (let stampString of stampStrings) {\n stampObjects.push(this.createStamp(stampString));\n }\n return stampObjects;\n }\n\n convertStampObjectsToStampStrings(stampObjects: any[]): string[] {\n const stampStrings: string[] = [];\n for (let stampObject of stampObjects) {\n stampStrings.push(stampObject.image);\n }\n return stampStrings;\n }\n}\n", + "styleUrl": "draw-authoring.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeService", + "type": "TeacherNodeService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectAssetService", + "type": "ProjectAssetService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 66, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeService", + "type": "TeacherNodeService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectAssetService", + "type": "ProjectAssetService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "AbstractComponentAuthoring" + ], + "templateData": "\n
\n \n \n
\n
\n \n Allow student to upload background image\n \n
\n
\n \n Canvas Width (Optional)\n \n \n \n Canvas Height (Optional)\n \n \n
\n\n check\n\n\n check_box_outline_blank\n\n
\n
\n \n Select Tool\n \n
\n \n Line Tool\n \n
\n \n Shape Tool\n \n
\n \n Free Hand Tool\n \n
\n
\n \n Text Tool\n \n
\n \n Stamp Tool\n \n
\n \n Clone Tool\n \n
\n \n Stroke Color Tool\n \n
\n
\n \n Fill Color Tool\n \n
\n \n Stroke Width Tool\n \n
\n \n Send Back Tool\n \n
\n \n Send Forward Tool\n \n
\n
\n \n Undo Tool\n \n
\n \n Redo Tool\n \n
\n \n Delete Tool\n \n
\n
\n@if (componentContent.tools.stamp) {\n
\n
\n Stamps\n \n add\n \n
\n @if (componentContent.stamps.Stamps.length == 0) {\n
There are no stamps. Click the \"Add Stamp\" button to add a stamp.
\n }\n @for (\n stamp of stamps;\n track stamp;\n let stampIndex = $index;\n let isFirst = $first;\n let isLast = $last\n ) {\n
\n \n Stamp Image\n \n \n \n insert_photo\n \n \n arrow_upward\n \n \n arrow_downward\n \n \n delete\n \n
\n }\n
\n}\n" + }, + { + "name": "DrawShowWorkComponent", + "id": "component-DrawShowWorkComponent-59b73efa60b4201004ffdb4df21901dec8f3a95b32660a327aadb033dade1d24ade9c550b03b0987d0e629a5444f6482694f8881b73eb8cb6a5bf49101199d01", + "file": "src/assets/wise5/components/draw/draw-show-work/draw-show-work.component.ts", + "encapsulation": [ + "ViewEncapsulation.None" + ], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "draw-show-work", + "styleUrls": [ + "draw-show-work.component.scss", + "../drawing-tool.scss" + ], + "styles": [], + "template": "
\n
", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "line": 8, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "componentState", + "deprecated": false, + "deprecationMessage": "", + "line": 9, + "type": "any", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "isRevision", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "line": 10, + "type": "boolean", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 7, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "drawingTool", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "modifierKind": [ + 123 + ] + }, + { + "name": "drawingToolId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "modifierKind": [ + 124 + ] + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "inheritance": { + "file": "ComponentShowWorkDirective" + } + } + ], + "methodsClass": [ + { + "name": "getDrawingToolId", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 41, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "initializeDrawingTool", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 48, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "ngAfterViewInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 32, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 37, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 27, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "setStudentWork", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 60, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, ViewEncapsulation } from '@angular/core';\nimport { NodeService } from '../../../services/nodeService';\nimport { ProjectService } from '../../../services/projectService';\nimport { ComponentShowWorkDirective } from '../../component-show-work.directive';\nimport { DrawService } from '../drawService';\n\n@Component({\n encapsulation: ViewEncapsulation.None,\n selector: 'draw-show-work',\n styleUrls: ['draw-show-work.component.scss', '../drawing-tool.scss'],\n template: `
\n
\n
`\n})\nexport class DrawShowWorkComponent extends ComponentShowWorkDirective {\n private drawingTool: any;\n protected drawingToolId: string;\n\n constructor(\n private drawService: DrawService,\n protected nodeService: NodeService,\n protected projectService: ProjectService\n ) {\n super(nodeService, projectService);\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n this.drawingToolId = this.getDrawingToolId();\n }\n\n ngAfterViewInit(): void {\n this.initializeDrawingTool();\n this.setStudentWork();\n }\n\n ngOnDestroy(): void {\n $(`#${this.drawingToolId}`).remove();\n }\n\n private getDrawingToolId(): string {\n const componentStateId = this.componentState.id;\n return this.isRevision\n ? `drawing-tool-revision-${componentStateId}`\n : `drawing-tool-${componentStateId}`;\n }\n\n private initializeDrawingTool(): void {\n this.drawingTool = this.drawService.initializeDrawingTool(\n this.drawingToolId,\n this.componentContent.stamps,\n this.componentContent.width,\n this.componentContent.height\n );\n this.drawService.setUpTools(this.drawingToolId, this.componentContent.tools, false);\n this.drawingTool.canvasOnly();\n this.drawingTool.canvas.removeListeners();\n }\n\n private setStudentWork(): void {\n this.drawingTool.load(this.componentState.studentData.drawData);\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": [ + { + "data": ".drawing-tool {\n border: 1px solid black;\n}", + "styleUrl": "draw-show-work.component.scss" + }, + { + "data": "$buttonSize: 40px;\n$buttonFontSize: 12px;\n$textButtonFontSize: 12px;\n$buttonLineHeight: 45px;\n\n$hi-green-dark-2: #1d8500;\n$hi-green-dark-1: #29ba00;\n$hi-green: #5fff32;\n$hi-green-light-1: #8f6;\n$hi-green-light-2: #afff98;\n$hi-green-light-3: #d7ffcc;\n$white: #fff;\n$cc-charcoal: #3f3f3f;\n$cc-charcoal-hint: #828282;\n$cc-charcoal-light-1: #979797;\n$cc-charcoal-light-2: #dfdfdf;\n$cc-teal-dark-2: #016082;\n$cc-teal-dark-1: #0481a0;\n$cc-teal: #0592af;\n$cc-teal-light-1: #2ba5c1;\n$cc-teal-light-2: #6fc6da;\n$cc-teal-light-3: #93d5e4;\n$cc-teal-light-4: #b7e2ec;\n$cc-teal-light-5: #cdebf2;\n$cc-teal-light5B: #D8EFF5;\n$cc-teal-light-6: #e2f4f8;\n$cc-teal-light-7: #f5fbfc;\n$cc-orange-dark-1: #ea6d2f;\n$cc-orange: #ff8415;\n$cc-orange-light-1: #ffa350;\n$cc-orange-light-2: #ffc18a;\n$cc-orange-light-3: #ffcea1;\n$cc-orange-light-4: #ffe6d0;\n$cc-orange-light-4-b: #ffeddc;\n$cc-orange-light-5: #fff2e7;\n$cc-orange-light-6: #fff9f3;\n$feedback-green-light-4: #dcecde;\n$feedback-green: #4ea15a;\n$hi-yellow-light-3: #fffebf;\n$cc-logo-text: #231f20;\n$facebook-blue: #1877f2;\n$twitter-blue: #1da1f2;\n$activity-blue: #31b6ff;\n$activity-yellow: #edd200;\n$activity-red: #ff234e;\n$activity-green: #1bdf00;\n$activity-purple: #e325af;\n\n$buttonColor: $cc-teal-light-7;\n$borderRadius: 8px;\n$border-width: 1px;\n$border: $border-width solid $cc-charcoal-light-2;\n\n$text: Arial,\nsans-serif;\n\n@import url('https://fonts.googleapis.com/css2?family=Lato&display=swap');\n\n.dt-container {\n white-space: nowrap;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n overflow: auto;\n\n .dt-canvas-container {\n vertical-align: top; // not needed but why not\n display: inline-block;\n border: $border;\n border-radius: 0 $borderRadius $borderRadius 0;\n outline: 0;\n\n canvas {\n border-radius: 0 $borderRadius $borderRadius 0;\n }\n }\n\n .dt-tools {\n display: inline-block;\n vertical-align: top;\n width: $buttonSize;\n margin: 0;\n position: relative;\n\n border: $border;\n border-radius: $borderRadius 0 0 $borderRadius;\n border-right: none;\n\n /* the following unset boostrap styles set in the question-interactives */\n -webkit-box-sizing: initial;\n box-sizing: initial;\n\n img {\n vertical-align: initial;\n }\n }\n\n .dt-btn {\n z-index: 1000;\n display: block;\n overflow: hidden;\n position: relative;\n text-indent: 0;\n white-space: nowrap;\n font-size: $buttonFontSize;\n line-height: $buttonLineHeight;\n height: $buttonSize;\n width: $buttonSize;\n color: $cc-charcoal;\n background: $buttonColor;\n vertical-align: middle;\n text-align: center;\n padding: 0;\n cursor: pointer;\n -moz-user-select: none;\n -webkit-user-select: none;\n -ms-user-select: none;\n\n &:hover {\n background: $cc-teal-light5B;\n cursor: pointer;\n }\n\n &.dt-active {\n background: $cc-teal-light-4;\n }\n\n &.dt-locked {\n cursor: default;\n\n img {\n opacity: 0.35;\n }\n }\n\n // Text buttons:\n &.dt-text-btn {\n font-size: $textButtonFontSize;\n font-family: $text;\n width: auto;\n padding: 0 3px;\n border-top: $border;\n border-right: $border;\n border-bottom: $border;\n line-height: $buttonSize;\n margin-top: -1px;\n\n &.dt-active {\n border-right: $border-width solid $cc-teal-light-4;\n }\n }\n\n &.dt-img-btn {\n position: relative;\n line-height: normal;\n\n span {\n // To make rotation work in all browsers (used during waiting for image load).\n display: inline-block;\n }\n\n img {\n max-width: $buttonSize * 0.8;\n max-height: $buttonSize * 0.9;\n width: initial !important;\n height: initial !important;\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n }\n }\n\n // Stroke and fill color buttons:\n &.dt-stroke-color:before,\n &.dt-fill-color:before {\n content: '';\n background: #fff;\n position: absolute;\n top: 8px;\n left: 8px;\n width: 24px;\n height: 24px;\n }\n\n &.dt-stroke-color {\n .dt-inner1 {\n /* inset/overlay white box with black border */\n background: #fff;\n position: absolute;\n height: 12px;\n width: 12px;\n left: 5px;\n top: 5px;\n }\n\n .dt-inner2 {\n /* inset/overlay blue box with no border */\n background: #3e8acc;\n border: none;\n position: absolute;\n height: 10px;\n width: 10px;\n left: 6px;\n top: 6px;\n }\n }\n\n &.dt-first {\n border-radius: ($borderRadius * 0.8) 0 0 0;\n /* the 0.8 removes the border gap between the button and the container */\n }\n\n &.dt-last {\n border-radius: 0 0 0 ($borderRadius * 0.8);\n /* the 0.8 removes the border gap between the button and the container */\n }\n\n &.dt-separator-after {\n border-bottom: $border;\n }\n\n .dt-color {\n background: #fff;\n overflow: hidden;\n position: absolute;\n top: 9px;\n left: 9px;\n width: 22px;\n height: 22px;\n\n &.dt-no-color:after {\n content: 'L';\n color: #e66665;\n position: absolute;\n left: -12px;\n bottom: -14px;\n font-size: 50px;\n }\n }\n\n // Color buttons:\n &.dt-transparent {\n background: #f4f4f4;\n\n &:after {\n content: 'L';\n color: #e66665;\n position: absolute;\n left: -32px;\n bottom: -16px;\n font-size: 100px;\n }\n }\n\n // Undo and redo buttons, send to front and back buttons:\n &.dt-send-to,\n &.dt-undo-redo {\n // These icons are placed somehow lower, modify line-height to move them up.\n line-height: 41px;\n }\n }\n\n .dt-expand {\n position: relative;\n\n &:after {\n position: absolute;\n display: block;\n content: ' ';\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40' viewBox='0 0 40 40'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cg%3E%3Cg%3E%3Cpath d='M0 0H40V40H0z' transform='translate(-1947.000000, -892.000000) translate(1947.000000, 892.000000)'/%3E%3Cpath fill='%230481A0' d='M7 0L7 7 0 7z' transform='translate(-1947.000000, -892.000000) translate(1947.000000, 892.000000) translate(28.500000, 29.500000)'/%3E%3C/g%3E%3C/g%3E%3C/g%3E%3C/svg%3E%0A\");\n // background-image: url('../assets/menu-secondary-caret.svg');\n bottom: -0;\n right: 0;\n width: $buttonSize;\n height: $buttonSize;\n }\n }\n\n .dt-selected-line-width {\n position: absolute;\n bottom: 0;\n text-align: center;\n right: 0;\n left: 0;\n height: $buttonSize - 4px;\n }\n\n .dt-palette {\n &.dt-horizontal {\n .dt-btn {\n display: inline-block;\n vertical-align: middle;\n\n border-top: $border;\n border-bottom: $border;\n\n &:first-of-type {\n width: $buttonSize + 2;\n }\n\n &:last-of-type {\n border-right: $border;\n border-radius: 0 $borderRadius $borderRadius 0;\n width: $buttonSize + 2;\n }\n\n img {\n width: $buttonSize;\n height: $buttonSize;\n }\n }\n }\n\n &.dt-vertical {\n .dt-btn {\n display: block;\n }\n\n .dt-text-btn {\n border-bottom: none;\n\n &:last-of-type {\n border-bottom: $border;\n }\n }\n\n border-radius: $borderRadius 0 0 $borderRadius;\n }\n }\n\n .dt-spin {\n -webkit-animation: dt-spin 2s infinite linear;\n animation: dt-spin 2s infinite linear;\n }\n}\n\n@-webkit-keyframes dt-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n\n 100% {\n -webkit-transform: rotate(359deg);\n transform: rotate(359deg);\n }\n}\n\n@keyframes dt-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n\n 100% {\n -webkit-transform: rotate(359deg);\n transform: rotate(359deg);\n }\n}", + "styleUrl": "../drawing-tool.scss" + } + ], + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "drawService", + "type": "DrawService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 17, + "jsdoctags": [ + { + "name": "drawService", + "type": "DrawService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "ComponentShowWorkDirective" + ] + }, + { + "name": "DrawStudent", + "id": "component-DrawStudent-0efe3f827c7d7decb3d08f256fd96c279de6d70fc06e925e60f1fd23db616b36a65ebf5dbfa509f22563598aaf1abf6b13d4bae7830dec9f8491b7a46de77e69", + "file": "src/assets/wise5/components/draw/draw-student/draw-student.component.ts", + "encapsulation": [ + "ViewEncapsulation.None" + ], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [ + "draw-student.component.scss", + "../drawing-tool.scss" + ], + "styles": [], + "templateUrl": [ + "draw-student.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "component", + "deprecated": false, + "deprecationMessage": "", + "line": 24, + "type": "Component", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentState", + "deprecated": false, + "deprecationMessage": "", + "line": 25, + "type": "any", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isDisabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "line": 26, + "type": "boolean", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "mode", + "deprecated": false, + "deprecationMessage": "", + "line": 27, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 28, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "workgroupId", + "deprecated": false, + "deprecationMessage": "", + "line": 29, + "type": "number", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "outputsClass": [ + { + "name": "saveComponentStateEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 30, + "type": "EventEmitter", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "starterStateChangedEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 31, + "type": "EventEmitter", + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "propertiesClass": [ + { + "name": "drawingTool", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 38 + }, + { + "name": "drawingToolId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 39 + }, + { + "name": "height", + "defaultValue": "600", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 40 + }, + { + "name": "isResetButtonVisible", + "defaultValue": "true", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 43 + }, + { + "name": "latestConnectedComponentState", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 41 + }, + { + "name": "parentStudentWorkIds", + "defaultValue": "null", + "deprecated": false, + "deprecationMessage": "", + "type": "number[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 42, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "showCopyPublicNotebookItemButton", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 44 + }, + { + "name": "width", + "defaultValue": "800", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 45 + }, + { + "name": "annotationSavedToServerSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 53, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "attachments", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 33, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 34, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 35, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentType", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 36, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isDirty", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 45, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSaveButtonVisible", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 38, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSaveOrSubmitButtonVisible", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 41, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isShowAddToNotebookButton", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 39, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isStudentAttachmentEnabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 46, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmit", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 44, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmitButtonDisabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 42, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmitButtonVisible", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 40, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmitDirty", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 43, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "latestAnnotations", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 48, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "latestComponentState", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 50, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "nodeSubmitClickedSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 54, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "prompt", + "deprecated": false, + "deprecationMessage": "", + "type": "SafeHtml", + "indexKey": "", + "optional": false, + "description": "", + "line": 37, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "requestComponentStateSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 52, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "showAddToNotebookButton", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 51, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "studentWorkSavedToServerSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 55, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "submitCounter", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 47, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 56, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "methodsClass": [ + { + "name": "addNoteWithImage", + "args": [ + { + "name": "componentStateId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 357, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentStateId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addToNotebook", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 338, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "attachStudentAsset", + "args": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 306, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nAdd student asset image as object in the drawing canvas\n", + "description": "

Add student asset image as object in the drawing canvas

\n", + "jsdoctags": [ + { + "name": { + "pos": 10773, + "end": 10785, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "studentAsset" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 10767, + "end": 10772, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "" + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createComponentState", + "args": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 226, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCreate a new component state populated with the student data\ne.g. 'submit', 'save', 'change'\n", + "description": "

Create a new component state populated with the student data\ne.g. 'submit', 'save', 'change'

\n", + "jsdoctags": [ + { + "name": { + "pos": 7991, + "end": 7997, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "action" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 7985, + "end": 7990, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

the action that is triggering creating of this component state\ne.g. 'submit', 'save', 'change'

\n" + }, + { + "tagName": { + "pos": 8104, + "end": 8110, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

a promise that will return a component state

\n" + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createComponentStateObject", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 238, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "createComponentStateWithCanvasObjects", + "args": [ + { + "name": "canvasObjects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 395, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "canvasObjects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createMergedComponentState", + "args": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 373, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCreate a component state with the merged student responses\n", + "description": "

Create a component state with the merged student responses

\n", + "jsdoctags": [ + { + "name": { + "pos": 12755, + "end": 12770, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentStates" + }, + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 12749, + "end": 12754, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

an array of component states

\n" + }, + { + "tagName": { + "pos": 12806, + "end": 12812, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

a component state with the merged student responses

\n" + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "generateStarterState", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 420, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getCanvas", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 364, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getDrawCanvasBackground", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 411, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getDrawCanvasObjects", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 405, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getDrawData", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 314, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "handleConnectedComponentsPostProcess", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 201, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "handleStudentWorkSavedToServerAdditionalProcessing", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 258, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "initializeDrawingTool", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 95, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "initializeStudentData", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 128, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isAuthoredBackgroundAvailable", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 167, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isCanvasEmpty", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 333, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if the student has drawn anything\n", + "description": "

Check if the student has drawn anything

\n", + "jsdoctags": [ + { + "tagName": { + "pos": 11524, + "end": 11531, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

whether the canvas is empty

\n" + } + ] + }, + { + "name": "isComponentStateFromConnectedComponent", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 290, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isPerformUpdate", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 298, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isStarterDrawDataAvailable", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 153, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isUpdateImmediately", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 283, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "loadConnectedComponentOrStarterDrawDataIfAvailable", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 145, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngAfterViewInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 86, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 71, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "resetDrawing", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 211, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "setAuthoredBackgroundAfterTimeout", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 171, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "setAuthoredBackgroundIfAvailable", + "args": [ + { + "name": "useTimeout", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 157, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "useTimeout", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setBackgroundImage", + "args": [ + { + "name": "image", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 180, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "image", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setDrawData", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 318, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setDrawingChangedListener", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 184, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "setStudentWork", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 205, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setWidthAndHeight", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 119, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "addDefaultFeedback", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 688, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "broadcastDoneRenderingComponent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 325, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "canSubmit", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 488, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "clearLatestComponentState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 555, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "confirmSubmit", + "args": [ + { + "name": "numberOfSubmitsLeft", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 468, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "numberOfSubmitsLeft", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "connectedComponentStudentDataSaved", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 796, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nThis function is called when a connected component of this component saves student data.\nThis was added to handle a race condition when a step has a connected component on a previous\nstep but the connected component student work on the previous step was not being imported\nbecause it wasn't being saved in time.\nHere is an example of what was happening\n- Student generates work on step 1 but does not click the save button\n- Student goes to step 2 which triggers a promise to save the student work on step 1\n- Step 2 is loaded and checks if there is any work it needs to import from step 1\n- The work in step 1 has not saved yet so step 2 does not import any work and loads without\n importing any work\n- The work from step 1 is then saved\nHere is the additional process that this function performs to fix this problem\n- Step 2 listens for when work is saved on step 1\n- When the work for step 1 is saved, step 2 checks to see if it needs to import that work\n", + "description": "

This function is called when a connected component of this component saves student data.\nThis was added to handle a race condition when a step has a connected component on a previous\nstep but the connected component student work on the previous step was not being imported\nbecause it wasn't being saved in time.\nHere is an example of what was happening

\n
    \n
  • Student generates work on step 1 but does not click the save button
  • \n
  • Student goes to step 2 which triggers a promise to save the student work on step 1
  • \n
  • Step 2 is loaded and checks if there is any work it needs to import from step 1
  • \n
  • The work in step 1 has not saved yet so step 2 does not import any work and loads without\nimporting any work
  • \n
  • The work from step 1 is then saved\nHere is the additional process that this function performs to fix this problem
  • \n
  • Step 2 listens for when work is saved on step 1
  • \n
  • When the work for step 1 is saved, step 2 checks to see if it needs to import that work
  • \n
\n", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "copyAndAttachStudentAsset", + "args": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 218, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "copyPublicNotebookItem", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 632, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "copyPublicNotebookItemButtonClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 747, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createAutoCommentAnnotation", + "args": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 725, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createAutoScoreAnnotation", + "args": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 714, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createComponentStateAdditionalProcessing", + "args": [ + { + "name": "promise", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 598, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "promise", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createComponentStateAndBroadcast", + "args": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 559, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createDefaultFeedbackAnnotation", + "args": [ + { + "name": "feedbackText", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 706, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "feedbackText", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createNewComponentState", + "args": [], + "optional": false, + "returnType": "Partial", + "typeParameters": [], + "line": 818, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "disableAllInput", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 492, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "disableComponentIfNecessary", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 332, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "disableSubmitButton", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 496, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "doAttachStudentAsset", + "args": [ + { + "name": "studentAssetRequest", + "type": "StudentAssetRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 212, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "studentAssetRequest", + "type": "StudentAssetRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 541, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentStudentDataChanged", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 572, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentSubmitDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 548, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentSubmitTriggered", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 512, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "generateImageFromComponentState", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 615, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nRender the component state and then generate an image from it.\n", + "description": "

Render the component state and then generate an image from it.

\n", + "jsdoctags": [ + { + "name": { + "pos": 18804, + "end": 18818, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 18798, + "end": 18803, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

The component state to render.

\n" + }, + { + "tagName": { + "pos": 18856, + "end": 18862, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

A promise that will return an image.

\n" + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getAction", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 321, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getClientSaveTime", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 684, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getComponentStatePromise", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 309, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getComponentStateWrapper", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "ComponentStateWrapper", + "typeParameters": [], + "line": 301, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getDefaultFeedback", + "args": [ + { + "name": "submitCount", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 702, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "submitCount", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getElementById", + "args": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getFirstResult", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 758, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "getFirstResult", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getIsDirty", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 277, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getMaxScore", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 680, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getMaxSubmitCount", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 460, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getNumberOfSubmitsLeft", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 456, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "handleConnectedComponents", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 352, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "handleStudentWorkSavedToServer", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 263, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasAnySubmissions", + "args": [ + { + "name": "componentStates", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 344, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentStates", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasDefaultFeedback", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 695, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasMaxScore", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 676, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasMaxSubmitCount", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 437, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasMaxSubmitCountAndUsedAllSubmits", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 452, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasSubmitMessage", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 504, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasSubmitsLeft", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 500, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasUsedAllSubmits", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 441, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "importWorkAsBackground", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 658, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "importWorkByStudentWorkId", + "args": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 170, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "incrementSubmitCounter", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 389, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isAddToNotebookEnabled", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 624, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isForThisComponent", + "args": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 192, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isFromConnectedComponent", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 766, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isHandleConnectedComponentAfterConnectedComponentStudentDataSaved", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 802, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isLockAfterSubmit", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 348, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isNotebookEnabled", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 643, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isPreviewMode", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 109, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSameComponent", + "args": [ + { + "name": "component", + "type": "Component", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 188, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "component", + "type": "Component", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isStudentNoteClippingEnabled", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 647, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isWorkFromClassmate", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 196, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "lockIfNecessary", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 281, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 97, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "performSubmit", + "args": [ + { + "name": "submitTriggeredBy", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 472, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "submitTriggeredBy", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "processConnectedComponentState", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 184, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "processLatestStudentWork", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 580, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "registerNotebookItemChosenListener", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 736, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "removeAttachment", + "args": [ + { + "name": "attachment", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 245, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "attachment", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "saveButtonClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 393, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "saveForAuthoringPreviewMode", + "args": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 404, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setComponentStateAsBackgroundImage", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 668, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 537, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsDirtyAndBroadcast", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 527, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsSubmit", + "args": [ + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 464, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsSubmitDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 508, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsSubmitDirtyAndBroadcast", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 532, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setParentStudentWorkIdToCurrentStudentWork", + "args": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 180, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setSubmitCounter", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 811, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "shouldCreateComponentState", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 317, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "showStudentAssets", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 651, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "studentDataChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 519, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "submit", + "args": [ + { + "name": "submitTriggeredBy", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 416, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "submitTriggeredBy", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "submitButtonClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 412, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToAnnotationSavedToServer", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 123, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToAttachStudentAsset", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 200, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToNodeSubmitClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 137, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToNotebookItemChosen", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 159, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToNotifyConnectedComponents", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 147, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToRequestComponentState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 289, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToStudentWorkSavedToServer", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 252, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToSubscriptions", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 113, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "tryDisableComponent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 445, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "ComponentHeaderComponent", + "type": "component" + }, + { + "name": "MatButton" + }, + { + "name": "MatIcon" + }, + { + "name": "AddToNotebookButtonComponent", + "type": "component" + }, + { + "name": "ComponentSaveSubmitButtonsComponent", + "type": "component" + }, + { + "name": "ComponentAnnotationsComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { fabric } from 'fabric';\nimport { Component, ViewEncapsulation } from '@angular/core';\nimport { AnnotationService } from '../../../services/annotationService';\nimport { ConfigService } from '../../../services/configService';\nimport { NodeService } from '../../../services/nodeService';\nimport { NotebookService } from '../../../services/notebookService';\nimport { ProjectService } from '../../../services/projectService';\nimport { StudentAssetService } from '../../../services/studentAssetService';\nimport { StudentDataService } from '../../../services/studentDataService';\nimport { ComponentStudent } from '../../component-student.component';\nimport { ComponentService } from '../../componentService';\nimport { DrawService } from '../drawService';\nimport { MatDialog } from '@angular/material/dialog';\nimport { copy } from '../../../common/object/object';\nimport { convertToPNGFile } from '../../../common/canvas/canvas';\nimport { hasConnectedComponent } from '../../../common/ComponentContent';\nimport { ComponentHeaderComponent } from '../../../directives/component-header/component-header.component';\nimport { MatButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\nimport { AddToNotebookButtonComponent } from '../../../directives/add-to-notebook-button/add-to-notebook-button.component';\nimport { ComponentSaveSubmitButtonsComponent } from '../../../directives/component-save-submit-buttons/component-save-submit-buttons.component';\nimport { ComponentAnnotationsComponent } from '../../../directives/componentAnnotations/component-annotations.component';\n\n@Component({\n encapsulation: ViewEncapsulation.None,\n imports: [\n ComponentHeaderComponent,\n MatButton,\n MatIcon,\n AddToNotebookButtonComponent,\n ComponentSaveSubmitButtonsComponent,\n ComponentAnnotationsComponent\n ],\n styleUrls: ['draw-student.component.scss', '../drawing-tool.scss'],\n templateUrl: 'draw-student.component.html'\n})\nexport class DrawStudent extends ComponentStudent {\n drawingTool: any;\n drawingToolId: string;\n height: number = 600;\n latestConnectedComponentState: any;\n parentStudentWorkIds: number[] = null;\n isResetButtonVisible: boolean = true;\n showCopyPublicNotebookItemButton: boolean = false;\n width: number = 800;\n\n constructor(\n protected annotationService: AnnotationService,\n protected componentService: ComponentService,\n protected configService: ConfigService,\n protected dialog: MatDialog,\n private drawService: DrawService,\n protected nodeService: NodeService,\n protected notebookService: NotebookService,\n private projectService: ProjectService,\n protected studentAssetService: StudentAssetService,\n protected studentDataService: StudentDataService\n ) {\n super(\n annotationService,\n componentService,\n configService,\n dialog,\n nodeService,\n notebookService,\n studentAssetService,\n studentDataService\n );\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n const domIdEnding = this.drawService.getDomIdEnding(\n this.nodeId,\n this.componentId,\n this.componentState\n );\n this.drawingToolId = this.drawService.getDrawingToolId(domIdEnding);\n this.showCopyPublicNotebookItemButton = this.projectService.isSpaceExists('public');\n if (this.isDisabled) {\n this.isResetButtonVisible = false;\n }\n this.subscribeToNotebookItemChosen();\n }\n\n ngAfterViewInit(): void {\n // When a draw is imported into another component as a background, it is rendered in a popup\n // but sometimes the drawing tool in the popup is not rendered. Using a setTimeout allows the\n // drawing tool to render in the popup consistently.\n setTimeout(() => {\n this.initializeDrawingTool();\n });\n }\n\n initializeDrawingTool(): void {\n this.setWidthAndHeight();\n this.drawingTool = this.drawService.initializeDrawingTool(\n this.drawingToolId,\n this.componentContent.stamps,\n this.width,\n this.height\n );\n this.initializeStudentData();\n this.disableComponentIfNecessary();\n this.setDrawingChangedListener();\n this.drawService.setUpTools(this.drawingToolId, this.componentContent.tools, this.isDisabled);\n\n if (this.hasMaxSubmitCountAndUsedAllSubmits()) {\n this.disableSubmitButton();\n }\n if (this.isDisabled) {\n this.drawingTool.canvasOnly();\n this.drawingTool.canvas.removeListeners();\n }\n\n this.broadcastDoneRenderingComponent();\n }\n\n setWidthAndHeight(): void {\n if (this.componentContent.width != null) {\n this.width = this.componentContent.width;\n }\n if (this.componentContent.height != null) {\n this.height = this.componentContent.height;\n }\n }\n\n initializeStudentData(): void {\n if (hasConnectedComponent(this.componentContent, 'showWork')) {\n this.handleConnectedComponents();\n } else if (\n this.drawService.componentStateHasStudentWork(this.componentState, this.componentContent)\n ) {\n this.setStudentWork(this.componentState);\n } else {\n this.loadConnectedComponentOrStarterDrawDataIfAvailable();\n }\n if (\n !this.drawService.componentStateHasStudentWork(this.componentState, this.componentContent)\n ) {\n this.setAuthoredBackgroundIfAvailable(true);\n }\n }\n\n loadConnectedComponentOrStarterDrawDataIfAvailable(): void {\n if (this.component.hasConnectedComponent()) {\n this.handleConnectedComponents();\n } else if (this.isStarterDrawDataAvailable()) {\n this.drawingTool.load(this.componentContent.starterDrawData);\n }\n }\n\n isStarterDrawDataAvailable(): boolean {\n return this.componentContent.starterDrawData != null;\n }\n\n setAuthoredBackgroundIfAvailable(useTimeout: boolean = false): void {\n if (this.isAuthoredBackgroundAvailable()) {\n if (useTimeout) {\n this.setAuthoredBackgroundAfterTimeout();\n } else {\n this.setBackgroundImage(this.componentContent.background);\n }\n }\n }\n\n isAuthoredBackgroundAvailable(): boolean {\n return this.componentContent.background != null && this.componentContent.background !== '';\n }\n\n setAuthoredBackgroundAfterTimeout(): void {\n // set the background after a timeout to make sure it gets set after the draw data is set.\n // if we don't do this, the background may not overwrite the existing background that is already\n // in the draw data.\n setTimeout(() => {\n this.setBackgroundImage(this.componentContent.background);\n }, 500);\n }\n\n setBackgroundImage(image: string): void {\n this.drawingTool.setBackgroundImage(image);\n }\n\n setDrawingChangedListener(): void {\n /*\n * Wait before we start listening for the drawing:changed event. We need to wait\n * because the calls above to this.drawingTool.setBackgroundImage() will cause\n * the drawing:changed event to be fired from the drawingTool, but when that happens,\n * we don't want to call this.studentDataChanged() because it marks the student work\n * as dirty. We only want to call this.studentDataChanged() when the drawing:changed\n * event occurs in response to the student changing the drawing and this timeout\n * will help make sure of that.\n */\n setTimeout(() => {\n this.drawingTool.on('drawing:changed', () => {\n this.studentDataChanged();\n });\n }, 500);\n }\n\n handleConnectedComponentsPostProcess(): void {\n this.setAuthoredBackgroundIfAvailable();\n }\n\n setStudentWork(componentState: any): void {\n this.setDrawData(componentState);\n this.setSubmitCounter(componentState);\n this.processLatestStudentWork();\n }\n\n resetDrawing(): void {\n if (confirm($localize`Are you sure you want to clear your drawing?`)) {\n this.drawingTool.clear();\n this.loadConnectedComponentOrStarterDrawDataIfAvailable();\n this.setAuthoredBackgroundIfAvailable(true);\n this.parentStudentWorkIds = null;\n }\n }\n\n /**\n * Create a new component state populated with the student data\n * @param action the action that is triggering creating of this component state\n * e.g. 'submit', 'save', 'change'\n * @return a promise that will return a component state\n */\n createComponentState(action: string): Promise {\n const componentState = this.createComponentStateObject();\n this.isSubmit = false;\n return new Promise((resolve, reject) => {\n this.createComponentStateAdditionalProcessing(\n { resolve: resolve, reject: reject },\n componentState,\n action\n );\n });\n }\n\n createComponentStateObject() {\n const componentState: any = this.createNewComponentState();\n const studentData: any = {\n drawData: this.getDrawData(),\n submitCounter: this.submitCounter\n };\n if (this.parentStudentWorkIds != null) {\n studentData.parentStudentWorkIds = this.parentStudentWorkIds;\n }\n componentState.studentData = studentData;\n componentState.isSubmit = this.isSubmit;\n componentState.componentType = 'Draw';\n componentState.nodeId = this.nodeId;\n componentState.componentId = this.componentId;\n if (this.isSubmit && this.hasDefaultFeedback()) {\n this.addDefaultFeedback(componentState);\n }\n return componentState;\n }\n\n handleStudentWorkSavedToServerAdditionalProcessing(componentState: any): void {\n if (this.isComponentStateFromConnectedComponent(componentState)) {\n const connectedComponent: any = this.projectService.getConnectedComponentParams(\n this.componentContent,\n componentState.componentId\n );\n if (this.isUpdateImmediately(connectedComponent, componentState) && this.isPerformUpdate()) {\n switch (componentState.componentType) {\n case 'Draw':\n componentState = copy(componentState);\n this.setDrawData(componentState);\n this.setAuthoredBackgroundIfAvailable(true);\n break;\n case 'ConceptMap':\n case 'Embedded':\n case 'Graph':\n case 'Label':\n case 'Table':\n this.importWorkAsBackground(componentState);\n }\n this.studentDataChanged();\n }\n }\n }\n\n isUpdateImmediately(connectedComponent: any, componentState: any): boolean {\n return (\n connectedComponent.updateOn === 'save' ||\n (connectedComponent.updateOn === 'submit' && componentState.isSubmit)\n );\n }\n\n isComponentStateFromConnectedComponent(componentState: any): boolean {\n return this.projectService.isConnectedComponent(\n this.nodeId,\n this.componentId,\n componentState.componentId\n );\n }\n\n isPerformUpdate(): boolean {\n return this.isCanvasEmpty() || confirm($localize`Do you want to update the connected drawing?`);\n }\n\n /**\n * Add student asset image as object in the drawing canvas\n * @param studentAsset\n */\n attachStudentAsset(studentAsset: any): void {\n fabric.Image.fromURL(studentAsset.url, (oImg: any) => {\n oImg.scaleToWidth(this.width);\n oImg.studentAssetId = studentAsset.id;\n this.setBackgroundImage(studentAsset.url);\n });\n }\n\n getDrawData(): any {\n return this.drawingTool.save();\n }\n\n setDrawData(componentState: any): void {\n const studentData = componentState.studentData;\n if (studentData.submitCounter != null) {\n this.submitCounter = studentData.submitCounter;\n }\n const drawData = studentData.drawData;\n if (drawData != null && drawData != '' && drawData != '{}') {\n this.drawingTool.load(drawData);\n }\n }\n\n /**\n * Check if the student has drawn anything\n * @returns whether the canvas is empty\n */\n isCanvasEmpty(): boolean {\n const objects = this.drawingTool.canvas.getObjects();\n return objects == null || objects.length === 0;\n }\n\n addToNotebook(): void {\n if (this.isDirty) {\n const studentWorkSavedToServerSubscription =\n this.studentDataService.studentWorkSavedToServer$.subscribe((componentState: any) => {\n if (this.isForThisComponent(componentState)) {\n this.addNoteWithImage(componentState.id);\n studentWorkSavedToServerSubscription.unsubscribe();\n }\n });\n this.saveButtonClicked();\n } else {\n const componentState = this.studentDataService.getLatestComponentStateByNodeIdAndComponentId(\n this.nodeId,\n this.componentId\n );\n this.addNoteWithImage(componentState.id);\n }\n }\n\n addNoteWithImage(componentStateId: number) {\n const pngFile = convertToPNGFile(this.getCanvas());\n this.notebookService.addNote(this.studentDataService.getCurrentNodeId(), pngFile, null, [\n componentStateId\n ]);\n }\n\n getCanvas(): any {\n return $(`#${this.drawingToolId} canvas`)[0];\n }\n\n /**\n * Create a component state with the merged student responses\n * @param componentStates an array of component states\n * @return a component state with the merged student responses\n */\n createMergedComponentState(componentStates: any[]): any {\n const allDrawCanvasObjects = [];\n for (const componentState of componentStates) {\n switch (componentState.componentType) {\n case 'Draw':\n allDrawCanvasObjects.push(...this.getDrawCanvasObjects(componentState));\n const backgroundImage = this.getDrawCanvasBackground(componentState);\n if (backgroundImage != null) {\n this.setBackgroundImage(backgroundImage);\n }\n break;\n case 'ConceptMap':\n case 'Embedded':\n case 'Graph':\n case 'Label':\n case 'Table':\n this.importWorkAsBackground(componentState);\n }\n }\n return this.createComponentStateWithCanvasObjects(allDrawCanvasObjects);\n }\n\n createComponentStateWithCanvasObjects(canvasObjects: any[]): any {\n const drawData: any = JSON.parse(this.getDrawData());\n drawData.canvas.objects = canvasObjects;\n const componentState: any = this.createNewComponentState();\n componentState.studentData = {\n drawData: JSON.stringify(drawData)\n };\n return componentState;\n }\n\n getDrawCanvasObjects(componentState: any): any[] {\n const studentData = componentState.studentData;\n const drawDataJSON = JSON.parse(studentData.drawData);\n return drawDataJSON.canvas.objects;\n }\n\n getDrawCanvasBackground(componentState: any): string {\n const studentData = componentState.studentData;\n const drawDataJSON = JSON.parse(studentData.drawData);\n if (drawDataJSON.canvas.backgroundImage != null) {\n return drawDataJSON.canvas.backgroundImage.src;\n }\n return null;\n }\n\n generateStarterState(): any {\n return this.getDrawData();\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": [ + { + "data": "$margin-spacing: 20px;\n\n.buttons-div {\n margin-bottom: $margin-spacing\n}\n\n.top-button {\n margin-right: $margin-spacing\n}\n\n.drawing-tool-div {\n margin-bottom: $margin-spacing;\n}", + "styleUrl": "draw-student.component.scss" + }, + { + "data": "$buttonSize: 40px;\n$buttonFontSize: 12px;\n$textButtonFontSize: 12px;\n$buttonLineHeight: 45px;\n\n$hi-green-dark-2: #1d8500;\n$hi-green-dark-1: #29ba00;\n$hi-green: #5fff32;\n$hi-green-light-1: #8f6;\n$hi-green-light-2: #afff98;\n$hi-green-light-3: #d7ffcc;\n$white: #fff;\n$cc-charcoal: #3f3f3f;\n$cc-charcoal-hint: #828282;\n$cc-charcoal-light-1: #979797;\n$cc-charcoal-light-2: #dfdfdf;\n$cc-teal-dark-2: #016082;\n$cc-teal-dark-1: #0481a0;\n$cc-teal: #0592af;\n$cc-teal-light-1: #2ba5c1;\n$cc-teal-light-2: #6fc6da;\n$cc-teal-light-3: #93d5e4;\n$cc-teal-light-4: #b7e2ec;\n$cc-teal-light-5: #cdebf2;\n$cc-teal-light5B: #D8EFF5;\n$cc-teal-light-6: #e2f4f8;\n$cc-teal-light-7: #f5fbfc;\n$cc-orange-dark-1: #ea6d2f;\n$cc-orange: #ff8415;\n$cc-orange-light-1: #ffa350;\n$cc-orange-light-2: #ffc18a;\n$cc-orange-light-3: #ffcea1;\n$cc-orange-light-4: #ffe6d0;\n$cc-orange-light-4-b: #ffeddc;\n$cc-orange-light-5: #fff2e7;\n$cc-orange-light-6: #fff9f3;\n$feedback-green-light-4: #dcecde;\n$feedback-green: #4ea15a;\n$hi-yellow-light-3: #fffebf;\n$cc-logo-text: #231f20;\n$facebook-blue: #1877f2;\n$twitter-blue: #1da1f2;\n$activity-blue: #31b6ff;\n$activity-yellow: #edd200;\n$activity-red: #ff234e;\n$activity-green: #1bdf00;\n$activity-purple: #e325af;\n\n$buttonColor: $cc-teal-light-7;\n$borderRadius: 8px;\n$border-width: 1px;\n$border: $border-width solid $cc-charcoal-light-2;\n\n$text: Arial,\nsans-serif;\n\n@import url('https://fonts.googleapis.com/css2?family=Lato&display=swap');\n\n.dt-container {\n white-space: nowrap;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n overflow: auto;\n\n .dt-canvas-container {\n vertical-align: top; // not needed but why not\n display: inline-block;\n border: $border;\n border-radius: 0 $borderRadius $borderRadius 0;\n outline: 0;\n\n canvas {\n border-radius: 0 $borderRadius $borderRadius 0;\n }\n }\n\n .dt-tools {\n display: inline-block;\n vertical-align: top;\n width: $buttonSize;\n margin: 0;\n position: relative;\n\n border: $border;\n border-radius: $borderRadius 0 0 $borderRadius;\n border-right: none;\n\n /* the following unset boostrap styles set in the question-interactives */\n -webkit-box-sizing: initial;\n box-sizing: initial;\n\n img {\n vertical-align: initial;\n }\n }\n\n .dt-btn {\n z-index: 1000;\n display: block;\n overflow: hidden;\n position: relative;\n text-indent: 0;\n white-space: nowrap;\n font-size: $buttonFontSize;\n line-height: $buttonLineHeight;\n height: $buttonSize;\n width: $buttonSize;\n color: $cc-charcoal;\n background: $buttonColor;\n vertical-align: middle;\n text-align: center;\n padding: 0;\n cursor: pointer;\n -moz-user-select: none;\n -webkit-user-select: none;\n -ms-user-select: none;\n\n &:hover {\n background: $cc-teal-light5B;\n cursor: pointer;\n }\n\n &.dt-active {\n background: $cc-teal-light-4;\n }\n\n &.dt-locked {\n cursor: default;\n\n img {\n opacity: 0.35;\n }\n }\n\n // Text buttons:\n &.dt-text-btn {\n font-size: $textButtonFontSize;\n font-family: $text;\n width: auto;\n padding: 0 3px;\n border-top: $border;\n border-right: $border;\n border-bottom: $border;\n line-height: $buttonSize;\n margin-top: -1px;\n\n &.dt-active {\n border-right: $border-width solid $cc-teal-light-4;\n }\n }\n\n &.dt-img-btn {\n position: relative;\n line-height: normal;\n\n span {\n // To make rotation work in all browsers (used during waiting for image load).\n display: inline-block;\n }\n\n img {\n max-width: $buttonSize * 0.8;\n max-height: $buttonSize * 0.9;\n width: initial !important;\n height: initial !important;\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n }\n }\n\n // Stroke and fill color buttons:\n &.dt-stroke-color:before,\n &.dt-fill-color:before {\n content: '';\n background: #fff;\n position: absolute;\n top: 8px;\n left: 8px;\n width: 24px;\n height: 24px;\n }\n\n &.dt-stroke-color {\n .dt-inner1 {\n /* inset/overlay white box with black border */\n background: #fff;\n position: absolute;\n height: 12px;\n width: 12px;\n left: 5px;\n top: 5px;\n }\n\n .dt-inner2 {\n /* inset/overlay blue box with no border */\n background: #3e8acc;\n border: none;\n position: absolute;\n height: 10px;\n width: 10px;\n left: 6px;\n top: 6px;\n }\n }\n\n &.dt-first {\n border-radius: ($borderRadius * 0.8) 0 0 0;\n /* the 0.8 removes the border gap between the button and the container */\n }\n\n &.dt-last {\n border-radius: 0 0 0 ($borderRadius * 0.8);\n /* the 0.8 removes the border gap between the button and the container */\n }\n\n &.dt-separator-after {\n border-bottom: $border;\n }\n\n .dt-color {\n background: #fff;\n overflow: hidden;\n position: absolute;\n top: 9px;\n left: 9px;\n width: 22px;\n height: 22px;\n\n &.dt-no-color:after {\n content: 'L';\n color: #e66665;\n position: absolute;\n left: -12px;\n bottom: -14px;\n font-size: 50px;\n }\n }\n\n // Color buttons:\n &.dt-transparent {\n background: #f4f4f4;\n\n &:after {\n content: 'L';\n color: #e66665;\n position: absolute;\n left: -32px;\n bottom: -16px;\n font-size: 100px;\n }\n }\n\n // Undo and redo buttons, send to front and back buttons:\n &.dt-send-to,\n &.dt-undo-redo {\n // These icons are placed somehow lower, modify line-height to move them up.\n line-height: 41px;\n }\n }\n\n .dt-expand {\n position: relative;\n\n &:after {\n position: absolute;\n display: block;\n content: ' ';\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40' viewBox='0 0 40 40'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cg%3E%3Cg%3E%3Cpath d='M0 0H40V40H0z' transform='translate(-1947.000000, -892.000000) translate(1947.000000, 892.000000)'/%3E%3Cpath fill='%230481A0' d='M7 0L7 7 0 7z' transform='translate(-1947.000000, -892.000000) translate(1947.000000, 892.000000) translate(28.500000, 29.500000)'/%3E%3C/g%3E%3C/g%3E%3C/g%3E%3C/svg%3E%0A\");\n // background-image: url('../assets/menu-secondary-caret.svg');\n bottom: -0;\n right: 0;\n width: $buttonSize;\n height: $buttonSize;\n }\n }\n\n .dt-selected-line-width {\n position: absolute;\n bottom: 0;\n text-align: center;\n right: 0;\n left: 0;\n height: $buttonSize - 4px;\n }\n\n .dt-palette {\n &.dt-horizontal {\n .dt-btn {\n display: inline-block;\n vertical-align: middle;\n\n border-top: $border;\n border-bottom: $border;\n\n &:first-of-type {\n width: $buttonSize + 2;\n }\n\n &:last-of-type {\n border-right: $border;\n border-radius: 0 $borderRadius $borderRadius 0;\n width: $buttonSize + 2;\n }\n\n img {\n width: $buttonSize;\n height: $buttonSize;\n }\n }\n }\n\n &.dt-vertical {\n .dt-btn {\n display: block;\n }\n\n .dt-text-btn {\n border-bottom: none;\n\n &:last-of-type {\n border-bottom: $border;\n }\n }\n\n border-radius: $borderRadius 0 0 $borderRadius;\n }\n }\n\n .dt-spin {\n -webkit-animation: dt-spin 2s infinite linear;\n animation: dt-spin 2s infinite linear;\n }\n}\n\n@-webkit-keyframes dt-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n\n 100% {\n -webkit-transform: rotate(359deg);\n transform: rotate(359deg);\n }\n}\n\n@keyframes dt-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n\n 100% {\n -webkit-transform: rotate(359deg);\n transform: rotate(359deg);\n }\n}", + "styleUrl": "../drawing-tool.scss" + } + ], + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentService", + "type": "ComponentService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "drawService", + "type": "DrawService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "notebookService", + "type": "NotebookService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentAssetService", + "type": "StudentAssetService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentDataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 45, + "jsdoctags": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentService", + "type": "ComponentService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "drawService", + "type": "DrawService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "notebookService", + "type": "NotebookService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentAssetService", + "type": "StudentAssetService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentDataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "ComponentStudent" + ], + "templateData": "\n
\n @if (showCopyPublicNotebookItemButton) {\n \n file_download\n Import Classmate Work\n \n }\n @if (isShowAddToNotebookButton) {\n \n }\n @if (isStudentAttachmentEnabled) {\n \n image\n Upload Background Image\n \n }\n @if (isResetButtonVisible) {\n \n restore\n Reset\n \n }\n
\n
\n@if (isSaveOrSubmitButtonVisible) {\n \n}\n@if (mode === 'student') {\n \n}\n" + }, + { + "name": "DynamicPromptComponent", + "id": "component-DynamicPromptComponent-babc26696e928aeebbc888f370f374bf3e91e61a7f8345d35b5e2f557f45ba051622f0e5a4298b06ac08c85fd0ae64122aef62a40030cd2b24b6f54837323368", + "file": "src/assets/wise5/directives/dynamic-prompt/dynamic-prompt.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "dynamic-prompt", + "styleUrls": [], + "styles": [ + ".prompt { font-weight: 500; }" + ], + "templateUrl": [ + "./dynamic-prompt.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "line": 20, + "type": "string", + "decorators": [] + }, + { + "name": "dynamicPrompt", + "deprecated": false, + "deprecationMessage": "", + "line": 21, + "type": "DynamicPrompt", + "decorators": [] + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 23, + "type": "string", + "decorators": [] + } + ], + "outputsClass": [ + { + "name": "dynamicPromptChanged", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 22, + "type": "EventEmitter" + } + ], + "propertiesClass": [ + { + "name": "annotationService", + "deprecated": false, + "deprecationMessage": "", + "type": "AnnotationService", + "indexKey": "", + "optional": false, + "description": "", + "line": 28, + "modifierKind": [ + 125 + ] + }, + { + "name": "configService", + "deprecated": false, + "deprecationMessage": "", + "type": "ConfigService", + "indexKey": "", + "optional": false, + "description": "", + "line": 29, + "modifierKind": [ + 125 + ] + }, + { + "name": "constraintService", + "deprecated": false, + "deprecationMessage": "", + "type": "ConstraintService", + "indexKey": "", + "optional": false, + "description": "", + "line": 30, + "modifierKind": [ + 125 + ] + }, + { + "name": "dataService", + "deprecated": false, + "deprecationMessage": "", + "type": "StudentDataService", + "indexKey": "", + "optional": false, + "description": "", + "line": 31, + "modifierKind": [ + 125 + ] + }, + { + "name": "peerGroup", + "deprecated": false, + "deprecationMessage": "", + "type": "PeerGroup", + "indexKey": "", + "optional": false, + "description": "", + "line": 24, + "modifierKind": [ + 125 + ] + }, + { + "name": "peerGroupService", + "deprecated": false, + "deprecationMessage": "", + "type": "PeerGroupService", + "indexKey": "", + "optional": false, + "description": "", + "line": 32, + "modifierKind": [ + 125 + ] + }, + { + "name": "prompt", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 25, + "modifierKind": [ + 125 + ] + } + ], + "methodsClass": [ + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 36, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FeedbackRule } from '../../components/common/feedbackRule/FeedbackRule';\nimport { AnnotationService } from '../../services/annotationService';\nimport { ConfigService } from '../../services/configService';\nimport { PeerGroupService } from '../../services/peerGroupService';\nimport { ProjectService } from '../../services/projectService';\nimport { StudentDataService } from '../../services/studentDataService';\nimport { DynamicPrompt } from './DynamicPrompt';\nimport { ConstraintService } from '../../services/constraintService';\nimport { DynamicPromptOpenResponseEvaluator } from './DynamicPromptOpenResponseEvaluator';\nimport { DynamicPromptMultipleChoiceEvaluator } from './DynamicPromptMultipleChoiceEvaluator';\nimport { PeerGroup } from '../../components/peerChat/PeerGroup';\n\n@Component({\n selector: 'dynamic-prompt',\n styles: ['.prompt { font-weight: 500; }'],\n templateUrl: './dynamic-prompt.component.html'\n})\nexport class DynamicPromptComponent implements OnInit {\n @Input() componentId: string;\n @Input() dynamicPrompt: DynamicPrompt;\n @Output() dynamicPromptChanged: EventEmitter = new EventEmitter();\n @Input() nodeId: string;\n public peerGroup: PeerGroup;\n public prompt: string;\n\n constructor(\n public annotationService: AnnotationService,\n public configService: ConfigService,\n public constraintService: ConstraintService,\n public dataService: StudentDataService,\n public peerGroupService: PeerGroupService,\n private projectService: ProjectService\n ) {}\n\n ngOnInit(): void {\n const referenceComponent = this.projectService.getReferenceComponent(this.dynamicPrompt);\n if (referenceComponent.content.type === 'OpenResponse') {\n new DynamicPromptOpenResponseEvaluator(this).evaluate(referenceComponent);\n } else if (referenceComponent.content.type === 'MultipleChoice') {\n new DynamicPromptMultipleChoiceEvaluator(this).evaluate(referenceComponent);\n }\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": ".prompt { font-weight: 500; }\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "constraintService", + "type": "ConstraintService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "peerGroupService", + "type": "PeerGroupService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 25, + "jsdoctags": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "constraintService", + "type": "ConstraintService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "peerGroupService", + "type": "PeerGroupService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "@if (dynamicPrompt.prePrompt !== '') {\n
\n}\n@if (prompt !== '') {\n
\n}\n@if (dynamicPrompt.postPrompt !== '') {\n
\n}\n" + }, + { + "name": "EditAiChatAdvancedComponent", + "id": "component-EditAiChatAdvancedComponent-0b52a83344685f80eaaff4a9c83138c4ce9fd843bc6e27150d8246cf7b39711d14fb716117e4f5d0fcc2fce610c0e18007c576942dfec1152b5a92d12e36e0c5", + "file": "src/assets/wise5/components/aiChat/edit-ai-chat-advanced/edit-ai-chat-advanced.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./edit-ai-chat-advanced.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "line": 13, + "type": "string", + "decorators": [], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 14, + "type": "string", + "decorators": [], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "allowedConnectedComponentTypes", + "defaultValue": "['OpenResponse']", + "deprecated": false, + "deprecationMessage": "", + "type": "[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 23, + "modifierKind": [ + 124 + ] + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "AiChatContent", + "indexKey": "", + "optional": false, + "description": "", + "line": 24, + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "models", + "defaultValue": "['gpt-3.5-turbo', 'gpt-4']", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 25, + "modifierKind": [ + 124 + ] + }, + { + "name": "component", + "deprecated": false, + "deprecationMessage": "", + "type": "Component", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + } + ], + "methodsClass": [ + { + "name": "componentChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 47, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "connectedComponentsChanged", + "args": [ + { + "name": "connectedComponents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 42, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "isNotebookEnabled", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 38, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "moveObjectDown", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 56, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "moveObjectUp", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 51, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "setShowSubmitButtonValue", + "args": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 28, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "EditComponentJsonComponent", + "type": "component" + }, + { + "name": "EditComponentWidthComponent", + "type": "component" + }, + { + "name": "EditConnectedComponentsComponent", + "type": "component" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatSelectModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatSelectModule } from '@angular/material/select';\nimport { EditAdvancedComponentComponent } from '../../../../../app/authoring-tool/edit-advanced-component/edit-advanced-component.component';\nimport { EditComponentJsonComponent } from '../../../../../app/authoring-tool/edit-component-json/edit-component-json.component';\nimport { EditConnectedComponentsComponent } from '../../../../../app/authoring-tool/edit-connected-components/edit-connected-components.component';\nimport { AiChatContent } from '../AiChatContent';\nimport { EditComponentWidthComponent } from '../../../../../app/authoring-tool/edit-component-width/edit-component-width.component';\n\n@Component({\n imports: [\n EditComponentJsonComponent,\n EditComponentWidthComponent,\n EditConnectedComponentsComponent,\n FormsModule,\n MatFormFieldModule,\n MatSelectModule\n ],\n templateUrl: './edit-ai-chat-advanced.component.html'\n})\nexport class EditAiChatAdvancedComponent extends EditAdvancedComponentComponent {\n protected allowedConnectedComponentTypes = ['OpenResponse'];\n componentContent: AiChatContent;\n protected models: string[] = ['gpt-3.5-turbo', 'gpt-4'];\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [ + "EditAdvancedComponentComponent" + ], + "templateData": "\n Model\n \n @for (model of models; track model) {\n {{ model }}\n }\n \n\n
\n\n\n\n" + }, + { + "name": "EditAnimationAdvancedComponent", + "id": "component-EditAnimationAdvancedComponent-7732ecc30d773be4ff60c027950d04c881f5bb33b207262f5f62673d5083f306c602205499cb17070cf7a93abec8dc4dd5b210764e8485a89aa690323ae9a060", + "file": "src/assets/wise5/components/animation/edit-animation-advanced/edit-animation-advanced.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "template": "", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "line": 13, + "type": "string", + "decorators": [], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 14, + "type": "string", + "decorators": [], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "allowedConnectedComponentTypes", + "defaultValue": "['Animation', 'Graph']", + "deprecated": false, + "deprecationMessage": "", + "type": "[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 13 + }, + { + "name": "component", + "deprecated": false, + "deprecationMessage": "", + "type": "Component", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "ComponentContent", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + } + ], + "methodsClass": [ + { + "name": "componentChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 47, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "connectedComponentsChanged", + "args": [ + { + "name": "connectedComponents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 42, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "isNotebookEnabled", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 38, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "moveObjectDown", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 56, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "moveObjectUp", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 51, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "setShowSubmitButtonValue", + "args": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 28, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "EditCommonAdvancedComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { EditAdvancedComponentComponent } from '../../../../../app/authoring-tool/edit-advanced-component/edit-advanced-component.component';\nimport { EditCommonAdvancedComponent } from '../../../../../app/authoring-tool/edit-common-advanced/edit-common-advanced.component';\n\n@Component({\n imports: [EditCommonAdvancedComponent],\n template: ` `\n})\nexport class EditAnimationAdvancedComponent extends EditAdvancedComponentComponent {\n allowedConnectedComponentTypes = ['Animation', 'Graph'];\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [ + "EditAdvancedComponentComponent" + ] + }, + { + "name": "EditAudioOscillatorAdvancedComponent", + "id": "component-EditAudioOscillatorAdvancedComponent-a1f634f3ce2e02ebc209dc181ff10c87d41072232e184e446c3d70edf81c963d6a014eeedb3ac3b32e360f3fca421249071ce4eed0b0568b3d5bd6503e4f0475", + "file": "src/assets/wise5/components/audioOscillator/edit-audio-oscillator-advanced/edit-audio-oscillator-advanced.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "template": "", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "line": 13, + "type": "string", + "decorators": [], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 14, + "type": "string", + "decorators": [], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "allowedConnectedComponentTypes", + "defaultValue": "['AudioOscillator']", + "deprecated": false, + "deprecationMessage": "", + "type": "[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 13 + }, + { + "name": "component", + "deprecated": false, + "deprecationMessage": "", + "type": "Component", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "ComponentContent", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + } + ], + "methodsClass": [ + { + "name": "componentChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 47, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "connectedComponentsChanged", + "args": [ + { + "name": "connectedComponents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 42, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "isNotebookEnabled", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 38, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "moveObjectDown", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 56, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "moveObjectUp", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 51, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "setShowSubmitButtonValue", + "args": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 28, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "EditCommonAdvancedComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { EditCommonAdvancedComponent } from '../../../../../app/authoring-tool/edit-common-advanced/edit-common-advanced.component';\nimport { EditAdvancedComponentComponent } from '../../../../../app/authoring-tool/edit-advanced-component/edit-advanced-component.component';\n\n@Component({\n imports: [EditCommonAdvancedComponent],\n template: ``\n})\nexport class EditAudioOscillatorAdvancedComponent extends EditAdvancedComponentComponent {\n allowedConnectedComponentTypes = ['AudioOscillator'];\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [ + "EditAdvancedComponentComponent" + ] + }, + { + "name": "EditBranchComponent", + "id": "component-EditBranchComponent-bcf27cf1e0935eadd72b2265969d675e8ae9c420c2b9d9e9dc8d32d898b126ebb0b109990c1ccb68fff52e38db8842b95acb7a187deb785fff2b61cd1159ce6b", + "file": "src/assets/wise5/authoringTool/edit-branch/edit-branch.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [ + ".title { display: inline }" + ], + "templateUrl": [ + "./edit-branch.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "branchPaths", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 33, + "modifierKind": [ + 124 + ] + }, + { + "name": "items", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 34, + "modifierKind": [ + 123 + ] + }, + { + "name": "mergeStepTitle", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 35, + "modifierKind": [ + 124 + ] + }, + { + "name": "node", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 36, + "modifierKind": [ + 123 + ] + }, + { + "name": "submitting", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 37, + "modifierKind": [ + 124 + ] + }, + { + "name": "allowedComponentTypes", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 20, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractBranchAuthoringComponent" + } + }, + { + "name": "CHOICE_CHOSEN_VALUE", + "defaultValue": "CHOICE_CHOSEN_VALUE", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 124, + 148 + ], + "inheritance": { + "file": "AbstractBranchAuthoringComponent" + } + }, + { + "name": "components", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 21, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "AbstractBranchAuthoringComponent" + } + }, + { + "name": "formGroup", + "defaultValue": "this.fb.group({\n pathCount: new FormControl('', [Validators.required]),\n criteria: new FormControl('', [Validators.required]),\n pathFormGroup: this.pathFormGroup,\n mergeStep: new FormControl('')\n })", + "deprecated": false, + "deprecationMessage": "", + "type": "FormGroup", + "indexKey": "", + "optional": false, + "description": "", + "line": 26, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractBranchAuthoringComponent" + } + }, + { + "name": "pathFormGroup", + "defaultValue": "this.fb.group({})", + "deprecated": false, + "deprecationMessage": "", + "type": "FormGroup", + "indexKey": "", + "optional": false, + "description": "", + "line": 22, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractBranchAuthoringComponent" + } + }, + { + "name": "RANDOM_VALUE", + "defaultValue": "RANDOM_VALUE", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "modifierKind": [ + 124, + 148 + ], + "inheritance": { + "file": "AbstractBranchAuthoringComponent" + } + }, + { + "name": "SCORE_VALUE", + "defaultValue": "SCORE_VALUE", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "modifierKind": [ + 124, + 148 + ], + "inheritance": { + "file": "AbstractBranchAuthoringComponent" + } + }, + { + "name": "targetId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 23, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractBranchAuthoringComponent" + } + }, + { + "name": "targetTitle", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 24, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractBranchAuthoringComponent" + } + }, + { + "name": "WORKGROUP_ID_VALUE", + "defaultValue": "WORKGROUP_ID_VALUE", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "modifierKind": [ + 124, + 148 + ], + "inheritance": { + "file": "AbstractBranchAuthoringComponent" + } + } + ], + "methodsClass": [ + { + "name": "getBranchCriteria", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 119, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "getBranchParamByField", + "args": [ + { + "name": "fieldName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 140, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "fieldName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getBranchPaths", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 80, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "getCriteriaFromTransitions", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 124, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "getItems", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 165, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "ngAfterViewInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 61, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 51, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractBranchAuthoringComponent" + } + }, + { + "name": "populateBranchAuthoring", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 65, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "populateBranchParams", + "args": [ + { + "name": "branch", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "transition", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 93, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "branch", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "transition", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "populateChoiceBranchParam", + "args": [ + { + "name": "branch", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "criterion", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 108, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "branch", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "criterion", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "removeBranch", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 154, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "saveProject", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 173, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "submit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 180, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "criteriaRequiresAdditionalParams", + "args": [ + { + "name": "criteria", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 53, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "criteria", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractBranchAuthoringComponent" + } + }, + { + "name": "getBranchParams", + "args": [], + "optional": false, + "returnType": "AuthorBranchParams", + "typeParameters": [], + "line": 174, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractBranchAuthoringComponent" + } + }, + { + "name": "initializeComponentIdSelector", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 102, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "AbstractBranchAuthoringComponent" + } + }, + { + "name": "initializeNodeIdSelector", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 88, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "AbstractBranchAuthoringComponent" + } + }, + { + "name": "removeAdditionalParams", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 149, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "AbstractBranchAuthoringComponent" + } + }, + { + "name": "setComponentId", + "args": [ + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 166, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractBranchAuthoringComponent" + } + }, + { + "name": "setCriteria", + "args": [ + { + "name": "criteria", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 158, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "criteria", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractBranchAuthoringComponent" + } + }, + { + "name": "setMergeStep", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 170, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractBranchAuthoringComponent" + } + }, + { + "name": "setNodeId", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 162, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractBranchAuthoringComponent" + } + }, + { + "name": "setPathCount", + "args": [ + { + "name": "pathCount", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 154, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "pathCount", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractBranchAuthoringComponent" + } + }, + { + "name": "tryAutoSelectChoiceChosenComponent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 138, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "AbstractBranchAuthoringComponent" + } + }, + { + "name": "tryAutoSelectComponentId", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 118, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "AbstractBranchAuthoringComponent" + } + }, + { + "name": "tryAutoSelectScoreComponent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 127, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "AbstractBranchAuthoringComponent" + } + }, + { + "name": "updateAllowedComponentTypes", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 57, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "AbstractBranchAuthoringComponent" + } + }, + { + "name": "updateComponentIdSelector", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 108, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "AbstractBranchAuthoringComponent" + } + }, + { + "name": "updateStepAndComponentParams", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 82, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "AbstractBranchAuthoringComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "EditBranchPathsComponent", + "type": "component" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatDividerModule", + "type": "module" + }, + { + "name": "MatProgressBarModule", + "type": "module" + }, + { + "name": "ReactiveFormsModule", + "type": "module" + }, + { + "name": "RouterModule", + "type": "module" + }, + { + "name": "SelectBranchCriteriaComponent", + "type": "component" + }, + { + "name": "SelectComponentComponent", + "type": "component" + }, + { + "name": "SelectStepComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { ChangeDetectorRef, Component } from '@angular/core';\nimport { FormBuilder, ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { ActivatedRoute, Router, RouterModule } from '@angular/router';\nimport { SelectComponentComponent } from '../../../../app/authoring-tool/select-component/select-component.component';\nimport { SelectStepComponent } from '../../../../app/authoring-tool/select-step/select-step.component';\nimport { copy } from '../../common/object/object';\nimport { DeleteBranchService } from '../../services/deleteBranchService';\nimport { EditBranchService } from '../../services/editBranchService';\nimport { TeacherProjectService } from '../../services/teacherProjectService';\nimport { AbstractBranchAuthoringComponent } from '../abstract-branch-authoring/abstract-branch-authoring.component';\nimport { EditBranchPathsComponent } from '../edit-branch-paths/edit-branch-paths.component';\nimport { SelectBranchCriteriaComponent } from '../select-branch-criteria/select-branch-criteria.component';\n\n@Component({\n imports: [\n EditBranchPathsComponent,\n MatButtonModule,\n MatDividerModule,\n MatProgressBarModule,\n ReactiveFormsModule,\n RouterModule,\n SelectBranchCriteriaComponent,\n SelectComponentComponent,\n SelectStepComponent\n ],\n styles: ['.title { display: inline }'],\n templateUrl: './edit-branch.component.html'\n})\nexport class EditBranchComponent extends AbstractBranchAuthoringComponent {\n protected branchPaths: any[] = [];\n private items: any;\n protected mergeStepTitle: string;\n private node: any;\n protected submitting: boolean;\n\n constructor(\n private changeDetector: ChangeDetectorRef,\n private deleteBranchService: DeleteBranchService,\n private editBranchService: EditBranchService,\n protected fb: FormBuilder,\n protected projectService: TeacherProjectService,\n protected route: ActivatedRoute,\n protected router: Router\n ) {\n super(fb, projectService, route, router);\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n const branch = this.projectService.getBranchesByBranchStartPointNodeId(this.targetId)[0];\n this.setPathCount(branch.paths.length);\n this.setMergeStep(branch.endPoint);\n this.mergeStepTitle = this.projectService.getNodePositionAndTitle(branch.endPoint);\n this.node = this.projectService.getNodeById(this.targetId);\n this.items = this.getItems();\n }\n\n ngAfterViewInit(): void {\n this.populateBranchAuthoring();\n }\n\n private populateBranchAuthoring(): void {\n this.branchPaths = this.getBranchPaths();\n const criteria = this.getBranchCriteria();\n this.setCriteria(criteria);\n const branchParamNodeId = this.getBranchParamByField('nodeId');\n if (branchParamNodeId != null) {\n this.setNodeId(branchParamNodeId);\n }\n const branchParamComponentId = this.getBranchParamByField('componentId');\n if (branchParamComponentId != null) {\n this.setComponentId(branchParamComponentId);\n }\n this.changeDetector.detectChanges();\n }\n\n private getBranchPaths(): any[] {\n const branchPaths = [];\n for (const transition of this.node.transitionLogic.transitions) {\n const branchPath: any = {\n nodesInBranchPath: [],\n transition: transition\n };\n branchPaths.push(branchPath);\n this.populateBranchParams(branchPath, transition);\n }\n return branchPaths;\n }\n\n private populateBranchParams(branch: any, transition: any): void {\n if (transition.criteria != null) {\n for (const criterion of transition.criteria) {\n if (criterion.name === this.SCORE_VALUE) {\n branch.scores = criterion.params.scores;\n } else if (criterion.name === this.CHOICE_CHOSEN_VALUE) {\n this.populateChoiceBranchParam(branch, criterion);\n }\n }\n }\n for (const nodeId of this.projectService.getNodeIdsInBranch(this.targetId, transition.to)) {\n branch.nodesInBranchPath.push(this.items[nodeId]);\n }\n }\n\n private populateChoiceBranchParam(branch: any, criterion: any): void {\n const params = criterion.params;\n if (params.choiceIds.length > 0) {\n branch.choiceId = params.choiceIds[0];\n }\n if (params.nodeId && params.componentId) {\n const choices = this.projectService.getChoices(params.nodeId, params.componentId);\n branch.choices = copy(choices);\n }\n }\n\n private getBranchCriteria(): string {\n const criteria = this.getCriteriaFromTransitions();\n return criteria == null ? this.node.transitionLogic.howToChooseAmongAvailablePaths : criteria;\n }\n\n private getCriteriaFromTransitions(): string {\n for (const transition of this.node.transitionLogic.transitions) {\n const criteria = transition.criteria;\n if (criteria != null) {\n for (const criterion of transition.criteria) {\n if (criterion.name === this.SCORE_VALUE) {\n return this.SCORE_VALUE;\n } else if (criterion.name === this.CHOICE_CHOSEN_VALUE) {\n return this.CHOICE_CHOSEN_VALUE;\n }\n }\n }\n }\n return null;\n }\n\n private getBranchParamByField(fieldName: string): string {\n for (const transition of this.node.transitionLogic.transitions) {\n const criteria = transition.criteria;\n if (criteria != null) {\n for (const criterion of transition.criteria) {\n if (criterion.params != null) {\n return criterion.params[fieldName];\n }\n }\n }\n }\n return null;\n }\n\n protected removeBranch(): void {\n if (\n confirm(\n $localize`Are you sure you want to remove this branching structure?\\n\\nThe branches will be removed but the steps will remain in the unit.`\n )\n ) {\n this.deleteBranchService.deleteBranch(this.branchPaths, this.targetId);\n this.saveProject();\n }\n }\n\n private getItems(): any {\n const items = copy(this.projectService.idToOrder);\n for (const nodeId of Object.keys(items)) {\n items[nodeId].nodeId = nodeId;\n }\n return items;\n }\n\n protected saveProject(): void {\n this.projectService.parseProject();\n this.projectService.saveProject().then(() => {\n this.router.navigate(['..'], { relativeTo: this.route });\n });\n }\n\n protected submit(): void {\n this.submitting = true;\n this.editBranchService\n .editBranch(this.node, this.branchPaths, this.getBranchParams())\n .then(() => {\n this.router.navigate(['..'], { relativeTo: this.route });\n });\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": ".title { display: inline }\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "changeDetector", + "type": "ChangeDetectorRef", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "deleteBranchService", + "type": "DeleteBranchService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "editBranchService", + "type": "EditBranchService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "fb", + "type": "FormBuilder", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 37, + "jsdoctags": [ + { + "name": "changeDetector", + "type": "ChangeDetectorRef", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "deleteBranchService", + "type": "DeleteBranchService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "editBranchService", + "type": "EditBranchService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "fb", + "type": "FormBuilder", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "AbstractBranchAuthoringComponent" + ], + "templateData": "
\n

Edit Branching Structure

\n \n
\n

Branch Step: {{ targetTitle }}

\n\n
\n \n @if (\n formGroup.controls['criteria'].value === SCORE_VALUE ||\n formGroup.controls['criteria'].value === CHOICE_CHOSEN_VALUE\n ) {\n

Reference component:

\n
\n \n @if (formGroup.controls['nodeId']?.value !== '') {\n \n }\n
\n }\n

Paths:

\n \n \n

Merge Step: {{ mergeStepTitle }}

\n \n
\n \n \n @if (submitting) {\n \n }\n Submit\n \n
\n\n" + }, + { + "name": "EditBranchPathsComponent", + "id": "component-EditBranchPathsComponent-b69de6135c348ddf25a17189155b4eb1e95bf82d8af98c4f2b30d96712e9d5a0ccaaf1d5691f219f4eacb25aa0f5d7d69de51ed47c27da6486e4869e7d309faf", + "file": "src/assets/wise5/authoringTool/edit-branch-paths/edit-branch-paths.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "edit-branch-paths", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./edit-branch-paths.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "branchPaths", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "line": 29, + "type": "any[]", + "decorators": [] + }, + { + "name": "componentId", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "line": 42, + "type": "string", + "decorators": [], + "inheritance": { + "file": "CreateBranchPathsComponent" + } + }, + { + "name": "criteria", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "line": 43, + "type": "string", + "decorators": [], + "inheritance": { + "file": "CreateBranchPathsComponent" + } + }, + { + "name": "nodeId", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "line": 44, + "type": "string", + "decorators": [], + "inheritance": { + "file": "CreateBranchPathsComponent" + } + }, + { + "name": "pathCount", + "deprecated": false, + "deprecationMessage": "", + "line": 45, + "type": "number", + "decorators": [], + "inheritance": { + "file": "CreateBranchPathsComponent" + } + }, + { + "name": "pathFormGroup", + "deprecated": false, + "deprecationMessage": "", + "line": 47, + "type": "FormGroup", + "decorators": [], + "inheritance": { + "file": "CreateBranchPathsComponent" + } + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "CHOICE_CHOSEN_VALUE", + "defaultValue": "CHOICE_CHOSEN_VALUE", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 38, + "modifierKind": [ + 124, + 148 + ], + "inheritance": { + "file": "CreateBranchPathsComponent" + } + }, + { + "name": "choices", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "Choice[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 41, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "CreateBranchPathsComponent" + } + }, + { + "name": "pathsFormArray", + "defaultValue": "new FormArray([])", + "deprecated": false, + "deprecationMessage": "", + "type": "FormArray", + "indexKey": "", + "optional": false, + "description": "", + "line": 46, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "CreateBranchPathsComponent" + } + }, + { + "name": "SCORE_VALUE", + "defaultValue": "SCORE_VALUE", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 39, + "modifierKind": [ + 124, + 148 + ], + "inheritance": { + "file": "CreateBranchPathsComponent" + } + } + ], + "methodsClass": [ + { + "name": "addPath", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 95, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "deletePath", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 110, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "deletePathFormControls", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "disablePathFormControls", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 79, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "enablePathFormControls", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 75, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "hasTwoPaths", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 106, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "initializeChoiceChosenOptions", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 58, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "CreateBranchPathsComponent" + } + }, + { + "name": "initializeFormControls", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 50, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "CreateBranchPathsComponent" + } + }, + { + "name": "isComponentSet", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 66, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "ngOnChanges", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 31, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "CreateBranchPathsComponent" + } + }, + { + "name": "setPathFormControlValue", + "args": [ + { + "name": "branchPath", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "formControl", + "type": "FormControl", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 87, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "branchPath", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "formControl", + "type": "FormControl", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "autoFillChoiceChosenValues", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 123, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "CreateBranchPathsComponent" + } + }, + { + "name": "clearPathFormControlValues", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 69, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "CreateBranchPathsComponent" + } + }, + { + "name": "createPathFormControl", + "args": [], + "optional": false, + "returnType": "FormControl", + "typeParameters": [], + "line": 103, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "CreateBranchPathsComponent" + } + }, + { + "name": "criteriaRequiresAdditionalParams", + "args": [ + { + "name": "criteria", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 87, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "criteria", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "CreateBranchPathsComponent" + } + }, + { + "name": "decreasePaths", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 97, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "CreateBranchPathsComponent" + } + }, + { + "name": "getComponent", + "args": [], + "optional": false, + "returnType": "ComponentContent", + "typeParameters": [], + "line": 131, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "CreateBranchPathsComponent" + } + }, + { + "name": "increasePaths", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 91, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "CreateBranchPathsComponent" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 51, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "CreateBranchPathsComponent" + } + }, + { + "name": "populateChoices", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 118, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "CreateBranchPathsComponent" + } + }, + { + "name": "updateNumPathFormControls", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 77, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "CreateBranchPathsComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "DisplayBranchPathStepsComponent", + "type": "component" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatInputModule", + "type": "module" + }, + { + "name": "MatSelectModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + }, + { + "name": "ReactiveFormsModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input } from '@angular/core';\nimport { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { CreateBranchPathsComponent } from '../create-branch-paths/create-branch-paths.component';\nimport { DisplayBranchPathStepsComponent } from '../display-branch-path-steps/display-branch-path-steps.component';\n\n@Component({\n imports: [\n DisplayBranchPathStepsComponent,\n FormsModule,\n MatButtonModule,\n MatFormFieldModule,\n MatIconModule,\n MatInputModule,\n MatSelectModule,\n MatTooltipModule,\n ReactiveFormsModule\n ],\n selector: 'edit-branch-paths',\n styleUrl: '../create-branch-paths/create-branch-paths.component.scss',\n templateUrl: './edit-branch-paths.component.html'\n})\nexport class EditBranchPathsComponent extends CreateBranchPathsComponent {\n @Input() branchPaths: any[] = [];\n\n ngOnChanges(): void {\n if (this.criteriaRequiresAdditionalParams(this.criteria)) {\n this.clearPathFormControlValues();\n if (this.pathsFormArray.length === 0) {\n this.initializeFormControls();\n }\n if (this.criteria === this.CHOICE_CHOSEN_VALUE) {\n this.initializeChoiceChosenOptions();\n }\n if (this.isComponentSet()) {\n this.enablePathFormControls();\n } else {\n this.disablePathFormControls();\n }\n } else {\n this.deletePathFormControls();\n }\n }\n\n protected initializeFormControls(): void {\n this.branchPaths.forEach((branchPath) => {\n const formControl = this.createPathFormControl();\n this.setPathFormControlValue(branchPath, formControl);\n branchPath.formControl = formControl;\n });\n }\n\n protected initializeChoiceChosenOptions(): void {\n if (this.getComponent()?.type === 'MultipleChoice') {\n this.populateChoices();\n } else {\n this.choices = [];\n }\n }\n\n protected isComponentSet(): boolean {\n return (\n this.nodeId != null &&\n this.nodeId !== '' &&\n this.componentId != null &&\n this.componentId !== ''\n );\n }\n\n private enablePathFormControls(): void {\n this.pathsFormArray.controls.forEach((formControl) => formControl.enable());\n }\n\n private disablePathFormControls(): void {\n this.pathsFormArray.controls.forEach((formControl) => formControl.disable());\n }\n\n private deletePathFormControls(): void {\n this.pathsFormArray.clear();\n }\n\n private setPathFormControlValue(branchPath: any, formControl: FormControl): void {\n if (this.criteria === this.CHOICE_CHOSEN_VALUE && branchPath.choiceId != null) {\n formControl.setValue(branchPath.choiceId);\n } else if (this.criteria === this.SCORE_VALUE && branchPath.scores != null) {\n formControl.setValue(branchPath.scores.toString());\n }\n }\n\n protected addPath(): void {\n const branchPath: any = {\n new: true,\n nodesInBranchPath: []\n };\n if (this.criteria === this.CHOICE_CHOSEN_VALUE || this.criteria === this.SCORE_VALUE) {\n branchPath.formControl = this.createPathFormControl();\n }\n this.branchPaths.push(branchPath);\n }\n\n protected hasTwoPaths(): boolean {\n return this.branchPaths.filter((branchPath) => !branchPath.delete).length == 2;\n }\n\n protected deletePath(index: number): void {\n const branchPath = this.branchPaths[index];\n if (branchPath.new) {\n this.branchPaths.splice(index, 1);\n if (branchPath.formControl != null) {\n this.pathsFormArray.removeAt(index);\n }\n } else {\n branchPath.delete = true;\n if (branchPath.formControl != null) {\n branchPath.formControl.disable();\n branchPath.formControl.clearValidators();\n }\n }\n }\n}\n", + "styleUrl": "../create-branch-paths/create-branch-paths.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [ + "CreateBranchPathsComponent" + ], + "templateData": "
\n \n @for (path of branchPaths; track path; let index = $index) {\n
\n
\n
\n Path {{ index + 1 }}\n @if (criteria === SCORE_VALUE) {\n \n Score\n \n \n } @else if (criteria === CHOICE_CHOSEN_VALUE) {\n \n Choice Chosen\n \n @for (choice of choices; track choice) {\n \n {{ choice.text }}\n \n }\n \n \n }\n
\n @if (path.delete) {\n This path will be deleted and its steps will be moved after the branching\n structure\n } @else {\n \n delete\n \n }\n
\n
\n \n
\n
\n }\n
\n
\n
\n \n
\n" + }, + { + "name": "EditCommonAdvancedComponent", + "id": "component-EditCommonAdvancedComponent-6bb35a48bee07fc0373c6c5a0cb1e0a85f37cec047dbe1f45b82291b34a2f40be7aecef0f007e8d434defbbc8d0074db9c3a16d22054aa262e2454568c37e32a", + "file": "src/app/authoring-tool/edit-common-advanced/edit-common-advanced.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "edit-common-advanced", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./edit-common-advanced.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "allowedConnectedComponentTypes", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "line": 36, + "type": "string[]", + "decorators": [] + }, + { + "name": "component", + "deprecated": false, + "deprecationMessage": "", + "line": 37, + "type": "WISEComponent", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [], + "methodsClass": [ + { + "name": "connectedComponentsChanged", + "args": [ + { + "name": "connectedComponents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 41, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "connectedComponents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "EditComponentConstraintsComponent", + "type": "component" + }, + { + "name": "EditComponentDefaultFeedback", + "type": "component" + }, + { + "name": "EditComponentExcludeFromTotalScoreComponent", + "type": "component" + }, + { + "name": "EditComponentMaxScoreComponent", + "type": "component" + }, + { + "name": "EditComponentMaxSubmitComponent", + "type": "component" + }, + { + "name": "EditComponentJsonComponent", + "type": "component" + }, + { + "name": "EditComponentRubricComponent", + "type": "component" + }, + { + "name": "EditComponentSaveButtonComponent", + "type": "component" + }, + { + "name": "EditComponentSubmitButtonComponent", + "type": "component" + }, + { + "name": "EditComponentTagsComponent", + "type": "component" + }, + { + "name": "EditComponentWidthComponent", + "type": "component" + }, + { + "name": "EditConnectedComponentsComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input } from '@angular/core';\nimport { Component as WISEComponent } from '../../../assets/wise5/common/Component';\nimport { TeacherProjectService } from '../../../assets/wise5/services/teacherProjectService';\nimport { EditConnectedComponentsComponent } from '../edit-connected-components/edit-connected-components.component';\nimport { EditComponentWidthComponent } from '../edit-component-width/edit-component-width.component';\nimport { EditComponentTagsComponent } from '../edit-component-tags/edit-component-tags.component';\nimport { EditComponentSaveButtonComponent } from '../edit-component-save-button/edit-component-save-button.component';\nimport { EditComponentSubmitButtonComponent } from '../edit-component-submit-button/edit-component-submit-button.component';\nimport { EditComponentRubricComponent } from '../edit-component-rubric/edit-component-rubric.component';\nimport { EditComponentJsonComponent } from '../edit-component-json/edit-component-json.component';\nimport { EditComponentMaxSubmitComponent } from '../edit-component-max-submit/edit-component-max-submit.component';\nimport { EditComponentMaxScoreComponent } from '../edit-component-max-score/edit-component-max-score.component';\nimport { EditComponentExcludeFromTotalScoreComponent } from '../edit-component-exclude-from-total-score/edit-component-exclude-from-total-score.component';\nimport { EditComponentDefaultFeedback } from '../edit-advanced-component/edit-component-default-feedback/edit-component-default-feedback.component';\nimport { EditComponentConstraintsComponent } from '../edit-component-constraints/edit-component-constraints.component';\n\n@Component({\n imports: [\n EditComponentConstraintsComponent,\n EditComponentDefaultFeedback,\n EditComponentExcludeFromTotalScoreComponent,\n EditComponentMaxScoreComponent,\n EditComponentMaxSubmitComponent,\n EditComponentJsonComponent,\n EditComponentRubricComponent,\n EditComponentSaveButtonComponent,\n EditComponentSubmitButtonComponent,\n EditComponentTagsComponent,\n EditComponentWidthComponent,\n EditConnectedComponentsComponent\n ],\n selector: 'edit-common-advanced',\n templateUrl: './edit-common-advanced.component.html'\n})\nexport class EditCommonAdvancedComponent {\n @Input() allowedConnectedComponentTypes: string[] = [];\n @Input() component: WISEComponent;\n\n constructor(protected projectService: TeacherProjectService) {}\n\n protected connectedComponentsChanged(connectedComponents: any[]): void {\n this.component.content.connectedComponents = connectedComponents;\n this.projectService.nodeChanged();\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 37, + "jsdoctags": [ + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "
\n \n \n @if (component.content.showSubmitButton) {\n \n }\n \n \n \n \n \n \n \n \n \n
\n" + }, + { + "name": "EditComponent", + "id": "component-EditComponent-9a37916420d61278e634c103990d3b86b4db33941ad855449e0e85ed3bf40c8401ef954c3233a5ef6561e7e413be4dcf3ed8fcb3b710dd57c9d8508f0b8ac9e8", + "file": "src/app/student/account/edit/edit.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./edit.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [], + "methodsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\n\n@Component({\n standalone: false,\n templateUrl: './edit.component.html'\n})\nexport class EditComponent {}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [], + "templateData": "
\n

\n editEdit Profile\n

\n
\n\n
\n \n \n
\n \n
\n
\n \n
\n \n
\n
\n
\n
\n" + }, + { + "name": "EditComponent", + "id": "component-EditComponent-a54475e269a7af395000fe86ac624486773fe958a08d622b27373d1e723986a5e31bfd5c6e2db3533452433a7d44550142214143881606f3c4e171a0ca25ac44-1", + "file": "src/app/teacher/account/edit/edit.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./edit.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [], + "methodsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatIcon" + }, + { + "name": "MatTabGroup" + }, + { + "name": "MatTab" + }, + { + "name": "TeacherEditProfileComponent", + "type": "component" + }, + { + "name": "SharedModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatTabGroup, MatTab } from '@angular/material/tabs';\nimport { TeacherEditProfileComponent } from '../edit-profile/edit-profile.component';\nimport { SharedModule } from '../../../modules/shared/shared.module';\n\n@Component({\n imports: [MatIcon, MatTabGroup, MatTab, TeacherEditProfileComponent, SharedModule],\n templateUrl: './edit.component.html'\n})\nexport class EditComponent {}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [], + "isDuplicate": true, + "duplicateId": 1, + "duplicateName": "EditComponent-1", + "templateData": "
\n

\n editEdit Profile\n

\n
\n\n
\n \n \n
\n \n
\n
\n \n
\n \n
\n
\n
\n
\n" + }, + { + "name": "EditComponentAddToNotebookButtonComponent", + "id": "component-EditComponentAddToNotebookButtonComponent-2b82b30d4ad407f6c696b2707cb806c759be3a5d64ca9ac5b9b915d49da7728767ab7d93ab65aee33636567c3bde29a7e4160044ffd35091dede62d3abbeb2eb", + "file": "src/app/authoring-tool/edit-component-add-to-notebook-button/edit-component-add-to-notebook-button.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "edit-component-add-to-notebook-button", + "styleUrls": [], + "styles": [ + "mat-checkbox { margin-top: 4px; margin-bottom: 4px; }" + ], + "template": "\n Show Add to Notebook Button\n ", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "line": 8, + "type": "any", + "decorators": [], + "inheritance": { + "file": "EditComponentFieldComponent" + } + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "inputChanged", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 9, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "EditComponentFieldComponent" + } + }, + { + "name": "inputChangedSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "EditComponentFieldComponent" + } + } + ], + "methodsClass": [ + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditComponentFieldComponent" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 14, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditComponentFieldComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatCheckboxModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { EditComponentFieldComponent } from '../edit-component-field.component';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n imports: [FormsModule, MatCheckboxModule],\n selector: 'edit-component-add-to-notebook-button',\n styles: ['mat-checkbox { margin-top: 4px; margin-bottom: 4px; }'],\n template: `\n Show Add to Notebook Button\n `\n})\nexport class EditComponentAddToNotebookButtonComponent extends EditComponentFieldComponent {}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "mat-checkbox { margin-top: 4px; margin-bottom: 4px; }\n", + "extends": [ + "EditComponentFieldComponent" + ] + }, + { + "name": "EditComponentAdvancedButtonComponent", + "id": "component-EditComponentAdvancedButtonComponent-757ed7f2fc6085aadb3cf0b77d8f6c8fd19723304e74ad364fdd2b1a3db20a15395f203406cc9958b46b2e6ece57f01e269ecef525a51577b4ec27fca8dbd626", + "file": "src/assets/wise5/authoringTool/components/edit-component-advanced-button/edit-component-advanced-button.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "edit-component-advanced-button", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "edit-component-advanced-button.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "line": 16, + "type": "ComponentContent", + "decorators": [] + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 17, + "type": "string", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [], + "methodsClass": [ + { + "name": "showComponentAdvancedAuthoring", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 21, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { ComponentContent } from '../../../common/ComponentContent';\nimport { EditComponentAdvancedComponent } from '../../../../../app/authoring-tool/edit-component-advanced/edit-component-advanced.component';\nimport { Component as WiseComponent } from '../../../common/Component';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n imports: [MatButtonModule, MatIconModule, MatTooltipModule],\n selector: 'edit-component-advanced-button',\n templateUrl: 'edit-component-advanced-button.component.html'\n})\nexport class EditComponentAdvancedButtonComponent {\n @Input() componentContent: ComponentContent;\n @Input() nodeId: string;\n\n constructor(private dialog: MatDialog) {}\n\n protected showComponentAdvancedAuthoring(): void {\n this.dialog.open(EditComponentAdvancedComponent, {\n data: new WiseComponent(this.componentContent, this.nodeId),\n width: '80%'\n });\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 17, + "jsdoctags": [ + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "\n build\n\n" + }, + { + "name": "EditComponentAdvancedComponent", + "id": "component-EditComponentAdvancedComponent-d13e7a556b530afa455857527a27efc32d0f083e7b8c84469aabec850e220269781432cf4ff29b796575423c7c8917866063365a3d60ad48a05c37a2ba22ae62", + "file": "src/app/authoring-tool/edit-component-advanced/edit-component-advanced.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [ + ".mat-divider { margin: 0 -16px; } .mat-mdc-dialog-content { padding-top: 10px !important; padding-bottom: 10px !important; }" + ], + "templateUrl": [ + "./edit-component-advanced.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "componentElementRef", + "deprecated": false, + "deprecationMessage": "", + "type": "ElementRef", + "indexKey": "", + "optional": false, + "description": "", + "line": 25, + "decorators": [ + { + "name": "ViewChild", + "stringifiedArguments": "'component'" + } + ], + "modifierKind": [ + 171, + 123 + ] + }, + { + "name": "componentRef", + "deprecated": false, + "deprecationMessage": "", + "type": "ComponentRef", + "indexKey": "", + "optional": false, + "description": "", + "line": 26, + "modifierKind": [ + 123 + ] + } + ], + "methodsClass": [ + { + "name": "ngAfterViewInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 33, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatDivider" + }, + { + "name": "MatDialogModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import {\n ApplicationRef,\n Component,\n ComponentRef,\n createComponent,\n ElementRef,\n EnvironmentInjector,\n Inject,\n ViewChild\n} from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';\nimport { MatDivider } from '@angular/material/divider';\nimport { Component as WISEComponent } from '../../../assets/wise5/common/Component';\nimport { components } from '../../../assets/wise5/components/Components';\n\n@Component({\n templateUrl: './edit-component-advanced.component.html',\n styles: [\n '.mat-divider { margin: 0 -16px; } .mat-mdc-dialog-content { padding-top: 10px !important; padding-bottom: 10px !important; }'\n ],\n imports: [MatDivider, MatDialogModule, MatButtonModule]\n})\nexport class EditComponentAdvancedComponent {\n @ViewChild('component') private componentElementRef: ElementRef;\n private componentRef: ComponentRef;\n constructor(\n private applicationRef: ApplicationRef,\n @Inject(MAT_DIALOG_DATA) protected component: WISEComponent,\n private injector: EnvironmentInjector\n ) {}\n\n ngAfterViewInit(): void {\n this.componentRef = createComponent(components[this.component.content.type].authoringAdvanced, {\n hostElement: this.componentElementRef.nativeElement,\n environmentInjector: this.injector\n });\n Object.assign(this.componentRef.instance, {\n nodeId: this.component.nodeId,\n componentId: this.component.id\n });\n this.applicationRef.attachView(this.componentRef.hostView);\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": ".mat-divider { margin: 0 -16px; } .mat-mdc-dialog-content { padding-top: 10px !important; padding-bottom: 10px !important; }\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "applicationRef", + "type": "ApplicationRef", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "component", + "type": "WISEComponent", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "injector", + "type": "EnvironmentInjector", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 26, + "jsdoctags": [ + { + "name": "applicationRef", + "type": "ApplicationRef", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "component", + "type": "WISEComponent", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "injector", + "type": "EnvironmentInjector", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "

Advanced Settings

\n\n
\n
\n
\n\n\n \n\n" + }, + { + "name": "EditComponentAnnotationsComponent", + "id": "component-EditComponentAnnotationsComponent-5439feee83c0d0ffaebf9fecc61c813856150b116537d172f87b7bf5fd8a1a378a032aa5d1ebed74256764469bba70c51d03e81ca849191f45357bffcf7c4b5f", + "file": "src/assets/wise5/classroomMonitor/classroomMonitorComponents/edit-component-annotations/edit-component-annotations.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "edit-component-annotations", + "styleUrls": [], + "styles": [ + ".disabled-text { color: gray; }" + ], + "templateUrl": [ + "edit-component-annotations.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "line": 22, + "type": "string", + "decorators": [] + }, + { + "name": "componentStateId", + "deprecated": false, + "deprecationMessage": "", + "line": 23, + "type": "number", + "decorators": [] + }, + { + "name": "fromWorkgroupId", + "deprecated": false, + "deprecationMessage": "", + "line": 24, + "type": "number", + "decorators": [] + }, + { + "name": "isDisabled", + "deprecated": false, + "deprecationMessage": "", + "line": 25, + "type": "boolean", + "decorators": [] + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 26, + "type": "string", + "decorators": [] + }, + { + "name": "showAllAnnotations", + "deprecated": false, + "deprecationMessage": "", + "line": 27, + "type": "boolean", + "decorators": [] + }, + { + "name": "toWorkgroupId", + "deprecated": false, + "deprecationMessage": "", + "line": 28, + "type": "number", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "canAuthorProject", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 30, + "modifierKind": [ + 124 + ] + }, + { + "name": "canGradeStudentWork", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 31, + "modifierKind": [ + 124 + ] + }, + { + "name": "comment", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 32, + "modifierKind": [ + 124 + ] + }, + { + "name": "componentStates", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 33, + "modifierKind": [ + 123 + ] + }, + { + "name": "edit", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 34, + "modifierKind": [ + 124 + ] + }, + { + "name": "latestAnnotations", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 35, + "modifierKind": [ + 124 + ] + }, + { + "name": "periodId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 36, + "modifierKind": [ + 124 + ] + }, + { + "name": "runId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 37, + "modifierKind": [ + 124 + ] + }, + { + "name": "subscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 38, + "modifierKind": [ + 123 + ] + } + ], + "methodsClass": [ + { + "name": "hasAutoAnnotations", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 132, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "hasNoAnnotations", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 140, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "hasTeacherAndAutoAnnotations", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 136, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "hasTeacherAnnotations", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 128, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "ngOnChanges", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 69, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 65, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 46, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "processAllAnnotations", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 85, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "processAnnotations", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 77, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "processLatestAnnotations", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 99, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "showAutoComment", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 113, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "toggleEditComment", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 144, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "EditComponentCommentComponent", + "type": "component" + }, + { + "name": "EditComponentScoreComponent", + "type": "component" + }, + { + "name": "GradingEditComponentMaxScoreComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { AnnotationService } from '../../../services/annotationService';\nimport { ConfigService } from '../../../services/configService';\nimport { TeacherDataService } from '../../../services/teacherDataService';\nimport { Annotation } from '../../../common/Annotation';\nimport { EditComponentScoreComponent } from '../edit-component-score/edit-component-score.component';\nimport { GradingEditComponentMaxScoreComponent } from '../grading-edit-component-max-score/grading-edit-component-max-score.component';\nimport { EditComponentCommentComponent } from '../edit-component-comment/edit-component-comment.component';\n\n@Component({\n imports: [\n EditComponentCommentComponent,\n EditComponentScoreComponent,\n GradingEditComponentMaxScoreComponent\n ],\n selector: 'edit-component-annotations',\n styles: ['.disabled-text { color: gray; }'],\n templateUrl: 'edit-component-annotations.component.html'\n})\nexport class EditComponentAnnotationsComponent {\n @Input() componentId: string;\n @Input() componentStateId: number;\n @Input() fromWorkgroupId: number;\n @Input() isDisabled: boolean;\n @Input() nodeId: string;\n @Input() showAllAnnotations: boolean;\n @Input() toWorkgroupId: number;\n\n protected canAuthorProject: boolean;\n protected canGradeStudentWork: boolean;\n protected comment: string;\n private componentStates: any;\n protected edit: boolean;\n protected latestAnnotations: any;\n protected periodId: number;\n protected runId: number;\n private subscription: Subscription;\n\n constructor(\n private annotationService: AnnotationService,\n private configService: ConfigService,\n private dataService: TeacherDataService\n ) {}\n\n ngOnInit(): void {\n this.runId = this.configService.getRunId();\n const permissions = this.configService.getPermissions();\n this.canGradeStudentWork = permissions.canGradeStudentWork;\n this.canAuthorProject = permissions.canAuthorProject;\n const toUserInfo = this.configService.getUserInfoByWorkgroupId(this.toWorkgroupId);\n if (toUserInfo) {\n this.periodId = toUserInfo.periodId;\n }\n this.subscription = this.annotationService.annotationSavedToServer$.subscribe(\n (annotation: Annotation) => {\n // TODO: we're watching this here and in the parent component's controller; probably want to optimize!\n if (annotation.nodeId === this.nodeId && annotation.componentId === this.componentId) {\n this.processAnnotations();\n }\n }\n );\n }\n\n ngOnDestroy(): void {\n this.subscription.unsubscribe();\n }\n\n ngOnChanges(): void {\n this.componentStates = this.dataService.getComponentStatesByWorkgroupIdAndComponentId(\n this.toWorkgroupId,\n this.componentId\n );\n this.processAnnotations();\n }\n\n private processAnnotations(): void {\n if (this.showAllAnnotations) {\n this.processAllAnnotations();\n } else {\n this.processLatestAnnotations();\n }\n }\n\n private processAllAnnotations(): void {\n this.latestAnnotations = {};\n this.latestAnnotations.score =\n this.annotationService.getLatestTeacherScoreAnnotationByStudentWorkId(this.componentStateId);\n this.latestAnnotations.autoScore =\n this.annotationService.getLatestAutoScoreAnnotationByStudentWorkId(this.componentStateId);\n this.latestAnnotations.comment =\n this.annotationService.getLatestTeacherCommentAnnotationByStudentWorkId(\n this.componentStateId\n );\n this.latestAnnotations.autoComment =\n this.annotationService.getLatestAutoCommentAnnotationByStudentWorkId(this.componentStateId);\n }\n\n private processLatestAnnotations(): void {\n this.latestAnnotations = this.annotationService.getLatestComponentAnnotations(\n this.nodeId,\n this.componentId,\n this.toWorkgroupId\n );\n if (this.latestAnnotations && this.latestAnnotations.comment) {\n const latestComment = this.latestAnnotations.comment;\n if (latestComment.type === 'comment') {\n this.comment = latestComment.data.value;\n }\n }\n }\n\n protected showAutoComment(): boolean {\n if (this.latestAnnotations) {\n const latestComment = this.latestAnnotations.comment;\n if (latestComment && latestComment.type === 'autoComment') {\n if (this.componentStates.length > 0) {\n const latestComponentState = this.componentStates[this.componentStates.length - 1];\n if (latestComponentState.id === latestComment.studentWorkId) {\n return true;\n }\n }\n }\n }\n return false;\n }\n\n protected hasTeacherAnnotations(): boolean {\n return this.latestAnnotations.score || this.latestAnnotations.comment;\n }\n\n protected hasAutoAnnotations(): boolean {\n return this.latestAnnotations.autoScore || this.latestAnnotations.autoComment;\n }\n\n protected hasTeacherAndAutoAnnotations(): boolean {\n return this.hasTeacherAnnotations() && this.hasAutoAnnotations();\n }\n\n protected hasNoAnnotations(): boolean {\n return !(this.hasTeacherAnnotations() || this.hasAutoAnnotations());\n }\n\n protected toggleEditComment(): void {\n this.edit = !this.edit;\n if (this.edit) {\n document.getElementById(`commentInput_${this.componentId}_${this.toWorkgroupId}`).focus();\n }\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": ".disabled-text { color: gray; }\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 38, + "jsdoctags": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "@if (showAllAnnotations) {\n
\n @if (hasNoAnnotations()) {\n
\n No feedback given for this version\n
\n }\n @if (hasTeacherAnnotations()) {\n
\n @if (latestAnnotations.score) {\n \n \n / \n \n
\n }\n @if (latestAnnotations.comment) {\n
\n \n
\n }\n
\n }\n @if (hasTeacherAndAutoAnnotations()) {\n
\n }\n @if (hasAutoAnnotations()) {\n
\n @if (latestAnnotations.autoScore) {\n \n \n / \n \n
\n }\n @if (latestAnnotations.autoComment) {\n
\n
Auto Comment:
\n
\n \n
\n
\n }\n \n }\n \n} @else {\n
\n \n \n / \n \n
\n @if (edit || !showAutoComment()) {\n
\n \n
\n }\n @if (showAutoComment()) {\n
\n
\n Auto Comment\n @if (!isDisabled) {\n (Edit):\n }\n
\n
\n \n
\n
\n }\n \n}\n" + }, + { + "name": "EditComponentCommentComponent", + "id": "component-EditComponentCommentComponent-91e0b708a7aebcdeb41f299a2bcf7efd8798ce4ef489ffd7b2832754d5b9c4c0cb7e993232a932b4236760e83c575307d9b45f748e47a8723f2ea74c33284bdb", + "file": "src/assets/wise5/classroomMonitor/classroomMonitorComponents/edit-component-comment/edit-component-comment.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "edit-component-comment", + "styleUrls": [], + "styles": [ + ".mat-mdc-form-field { display: initial }", + "textarea { resize: none }" + ], + "templateUrl": [ + "edit-component-comment.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "comment", + "deprecated": false, + "deprecationMessage": "", + "line": 18, + "type": "string", + "decorators": [] + }, + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "line": 19, + "type": "string", + "decorators": [] + }, + { + "name": "componentStateId", + "deprecated": false, + "deprecationMessage": "", + "line": 20, + "type": "string", + "decorators": [] + }, + { + "name": "disabled", + "deprecated": false, + "deprecationMessage": "", + "line": 21, + "type": "boolean", + "decorators": [] + }, + { + "name": "fromWorkgroupId", + "deprecated": false, + "deprecationMessage": "", + "line": 22, + "type": "number", + "decorators": [] + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 23, + "type": "string", + "decorators": [] + }, + { + "name": "periodId", + "deprecated": false, + "deprecationMessage": "", + "line": 24, + "type": "string", + "decorators": [] + }, + { + "name": "runId", + "deprecated": false, + "deprecationMessage": "", + "line": 25, + "type": "string", + "decorators": [] + }, + { + "name": "toWorkgroupId", + "deprecated": false, + "deprecationMessage": "", + "line": 26, + "type": "number", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "commentChanged", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 28, + "modifierKind": [ + 124 + ] + }, + { + "name": "isDirty", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 29, + "modifierKind": [ + 123 + ] + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 30, + "modifierKind": [ + 123 + ] + } + ], + "methodsClass": [ + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 54, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 37, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "saveComment", + "args": [ + { + "name": "comment", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 61, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "comment", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CdkTextareaAutosize" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatInputModule", + "type": "module" + }, + { + "name": "TextFieldModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input } from '@angular/core';\nimport { Subject, Subscription } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, tap } from 'rxjs/operators';\nimport { AnnotationService } from '../../../services/annotationService';\nimport { NotificationService } from '../../../services/notificationService';\nimport { FormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { CdkTextareaAutosize, TextFieldModule } from '@angular/cdk/text-field';\n\n@Component({\n imports: [CdkTextareaAutosize, FormsModule, MatFormFieldModule, MatInputModule, TextFieldModule],\n selector: 'edit-component-comment',\n styles: ['.mat-mdc-form-field { display: initial }', 'textarea { resize: none }'],\n templateUrl: 'edit-component-comment.component.html'\n})\nexport class EditComponentCommentComponent {\n @Input() comment: string;\n @Input() componentId: string;\n @Input() componentStateId: string;\n @Input() disabled: boolean;\n @Input() fromWorkgroupId: number;\n @Input() nodeId: string;\n @Input() periodId: string;\n @Input() runId: string;\n @Input() toWorkgroupId: number;\n\n protected commentChanged: Subject = new Subject();\n private isDirty: boolean;\n private subscriptions: Subscription = new Subscription();\n\n constructor(\n private annotationService: AnnotationService,\n private notificationService: NotificationService\n ) {}\n\n ngOnInit(): void {\n this.subscriptions.add(\n this.commentChanged\n .pipe(\n debounceTime(1000),\n distinctUntilChanged(),\n tap(() => {\n this.isDirty = true;\n this.notificationService.showSavingMessage();\n })\n )\n .subscribe(() => {\n this.saveComment(this.comment);\n })\n );\n }\n\n ngOnDestroy(): void {\n if (this.isDirty) {\n this.saveComment(this.comment);\n }\n this.subscriptions.unsubscribe();\n }\n\n saveComment(comment: string): void {\n const annotation = this.annotationService.createAnnotation(\n null,\n this.runId,\n this.periodId,\n this.fromWorkgroupId,\n this.toWorkgroupId,\n this.nodeId,\n this.componentId,\n this.componentStateId,\n null,\n null,\n 'comment',\n { value: comment },\n new Date().getTime()\n );\n this.annotationService.saveAnnotation(annotation).then(() => {\n this.isDirty = false;\n this.notificationService.showSavedMessage($localize`Saved comment`);\n });\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": ".mat-mdc-form-field { display: initial }\ntextarea { resize: none }\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "notificationService", + "type": "NotificationService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 30, + "jsdoctags": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "notificationService", + "type": "NotificationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "\n Teacher Comment:\n \n\n" + }, + { + "name": "EditComponentComponent", + "id": "component-EditComponentComponent-12ec16bd3f15ba8d77e982330428388ba9dfc800e2d3fcfb8a12c925f232df7c54b93c6e19c0fe29f29882cf734f52b064f004f0f23ddae509fda5413d8ad1c6", + "file": "src/assets/wise5/authoringTool/components/edit-component/edit-component.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "edit-component", + "styleUrls": [], + "styles": [], + "template": "
", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "line": 19, + "type": "ComponentContent", + "decorators": [] + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 22, + "type": "string", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "componentElementRef", + "deprecated": false, + "deprecationMessage": "", + "type": "ElementRef", + "indexKey": "", + "optional": false, + "description": "", + "line": 20, + "decorators": [ + { + "name": "ViewChild", + "stringifiedArguments": "'component'" + } + ], + "modifierKind": [ + 171, + 123 + ] + }, + { + "name": "componentRef", + "deprecated": false, + "deprecationMessage": "", + "type": "ComponentRef", + "indexKey": "", + "optional": false, + "description": "", + "line": 21, + "modifierKind": [ + 123 + ] + } + ], + "methodsClass": [ + { + "name": "ngAfterViewInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 29, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 43, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import {\n ApplicationRef,\n Component,\n ComponentRef,\n ElementRef,\n EnvironmentInjector,\n Input,\n ViewChild,\n createComponent\n} from '@angular/core';\nimport { ComponentContent } from '../../../common/ComponentContent';\nimport { components } from '../../../components/Components';\n\n@Component({\n selector: 'edit-component',\n template: '
'\n})\nexport class EditComponentComponent {\n @Input() componentContent: ComponentContent;\n @ViewChild('component') private componentElementRef: ElementRef;\n private componentRef: ComponentRef;\n @Input() nodeId: string;\n\n constructor(\n private applicationRef: ApplicationRef,\n private injector: EnvironmentInjector\n ) {}\n\n ngAfterViewInit(): void {\n const hostElement = this.componentElementRef.nativeElement;\n this.componentRef = createComponent(components[this.componentContent.type].authoring, {\n hostElement: hostElement,\n environmentInjector: this.injector\n });\n Object.assign(this.componentRef.instance, {\n componentContent: this.componentContent,\n nodeId: this.nodeId\n });\n this.applicationRef.attachView(this.componentRef.hostView);\n setTimeout(() => hostElement.focus());\n }\n\n ngOnDestroy(): void {\n this.componentRef.destroy();\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "applicationRef", + "type": "ApplicationRef", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "injector", + "type": "EnvironmentInjector", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 22, + "jsdoctags": [ + { + "name": "applicationRef", + "type": "ApplicationRef", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "injector", + "type": "EnvironmentInjector", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [] + }, + { + "name": "EditComponentConstraintsComponent", + "id": "component-EditComponentConstraintsComponent-25a3c9a074a8b10d94d27f0ac2fac69fb5cc0f7d68a7f7a377b6e3a1699d66aa79554023b8023fc4c51847870e5e687bd66c9f5da8cee260f5c5cf4bfffd2c9e", + "file": "src/app/authoring-tool/edit-component-constraints/edit-component-constraints.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "edit-component-constraints", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./edit-component-constraints.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "line": 23, + "type": "ComponentContent", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "content", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 7, + "inheritance": { + "file": "ConstraintsAuthoringComponent" + } + } + ], + "methodsClass": [ + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 25, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "addConstraint", + "args": [], + "optional": false, + "returnType": "Constraint", + "typeParameters": [], + "line": 11, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ConstraintsAuthoringComponent" + } + }, + { + "name": "deleteConstraint", + "args": [ + { + "name": "constraintIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 44, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "constraintIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ConstraintsAuthoringComponent" + } + }, + { + "name": "getNewNodeConstraintId", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 29, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ConstraintsAuthoringComponent" + } + }, + { + "name": "saveProject", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 51, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ConstraintsAuthoringComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "ComponentConstraintAuthoringComponent", + "type": "component" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input } from '@angular/core';\nimport { ConstraintsAuthoringComponent } from '../../../assets/wise5/authoringTool/constraint/constraints-authoring/constraints-authoring.component';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatIconModule } from '@angular/material/icon';\nimport { ComponentConstraintAuthoringComponent } from '../../../assets/wise5/authoringTool/constraint/component-constraint-authoring/component-constraint-authoring.component';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { ComponentContent } from '../../../assets/wise5/common/ComponentContent';\n\n@Component({\n imports: [\n ComponentConstraintAuthoringComponent,\n MatButtonModule,\n MatFormFieldModule,\n MatIconModule,\n MatTooltipModule\n ],\n selector: 'edit-component-constraints',\n styleUrl: './edit-component-constraints.component.scss',\n templateUrl: './edit-component-constraints.component.html'\n})\nexport class EditComponentConstraintsComponent extends ConstraintsAuthoringComponent {\n @Input() componentContent: ComponentContent;\n\n ngOnInit(): void {\n if (this.componentContent.constraints == null) {\n this.componentContent.constraints = [];\n }\n this.content = this.componentContent;\n }\n}\n", + "styleUrl": "./edit-component-constraints.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [ + "ConstraintsAuthoringComponent" + ], + "templateData": "
\n
\n Add Visibility Constraint\n 0\"\n matTooltip=\"Add Constraint\"\n matTooltipPosition=\"above\"\n i18n-matTooltip\n >\n add\n \n
\n @for (constraint of content.constraints; track constraint; let constraintIndex = $index) {\n
\n \n Constraint\n \n delete\n \n \n \n
\n }\n
\n" + }, + { + "name": "EditComponentDefaultFeedback", + "id": "component-EditComponentDefaultFeedback-12baa3a576ce28d758a8636b1c9c732eaf0b7a1e87c66a1df9296e55003dd00aa2fe6787acfd055658d862fefcf4ce32852029f81773d9e2e9b8f44537db2579", + "file": "src/app/authoring-tool/edit-advanced-component/edit-component-default-feedback/edit-component-default-feedback.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "edit-component-default-feedback", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "edit-component-default-feedback.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "line": 27, + "type": "any", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "feedbackChanged", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 28, + "modifierKind": [ + 124 + ] + }, + { + "name": "feedbackChangedSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 29, + "modifierKind": [ + 123 + ] + } + ], + "methodsClass": [ + { + "name": "addDefaultFeedback", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 43, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 73, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "customTrackBy", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 69, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "deleteDefaultFeedback", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 62, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "moveDefaultFeedbackDown", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 57, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "moveDefaultFeedbackUp", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 52, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 39, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 33, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatInputModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input } from '@angular/core';\nimport { Subject, Subscription } from 'rxjs';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport { TeacherProjectService } from '../../../../assets/wise5/services/teacherProjectService';\nimport { moveObjectDown, moveObjectUp } from '../../../../assets/wise5/common/array/array';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatFormFieldModule } from '@angular/material/form-field';\n\n@Component({\n imports: [\n FormsModule,\n MatButtonModule,\n MatFormFieldModule,\n MatIconModule,\n MatInputModule,\n MatTooltipModule\n ],\n selector: 'edit-component-default-feedback',\n styleUrl: 'edit-component-default-feedback.component.scss',\n templateUrl: 'edit-component-default-feedback.component.html'\n})\nexport class EditComponentDefaultFeedback {\n @Input() componentContent: any;\n protected feedbackChanged: Subject = new Subject();\n private feedbackChangedSubscription: Subscription;\n\n constructor(private projectService: TeacherProjectService) {}\n\n ngOnInit(): void {\n this.feedbackChangedSubscription = this.feedbackChanged\n .pipe(debounceTime(1000), distinctUntilChanged())\n .subscribe(() => this.componentChanged());\n }\n\n ngOnDestroy(): void {\n this.feedbackChangedSubscription.unsubscribe();\n }\n\n addDefaultFeedback(): void {\n if (this.componentContent.defaultFeedback == null) {\n this.componentContent.defaultFeedback = [];\n }\n this.componentContent.defaultFeedback.push('');\n this.componentContent.showSubmitButton = true;\n this.componentChanged();\n }\n\n moveDefaultFeedbackUp(index: number): void {\n moveObjectUp(this.componentContent.defaultFeedback, index);\n this.componentChanged();\n }\n\n moveDefaultFeedbackDown(index: number): void {\n moveObjectDown(this.componentContent.defaultFeedback, index);\n this.componentChanged();\n }\n\n deleteDefaultFeedback(index: number): void {\n if (confirm($localize`Are you sure you want to delete this default feedback?`)) {\n this.componentContent.defaultFeedback.splice(index, 1);\n this.componentChanged();\n }\n }\n\n customTrackBy(index: number): any {\n return index;\n }\n\n componentChanged(): void {\n this.projectService.nodeChanged();\n }\n}\n", + "styleUrl": "edit-component-default-feedback.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 29, + "jsdoctags": [ + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "
\n \n \n add\n \n
\n@for (\n singleDefaultFeedback of componentContent.defaultFeedback;\n track singleDefaultFeedback;\n let i = $index;\n let isFirst = $first;\n let isLast = $last\n) {\n
\n \n Default Feedback on Submit {{ i + 1 }}\n \n \n \n arrow_upward\n \n \n arrow_downward\n \n \n delete\n \n
\n}\n" + }, + { + "name": "EditComponentExcludeFromTotalScoreComponent", + "id": "component-EditComponentExcludeFromTotalScoreComponent-62f6bc8099d7725cb9946b34dd6972e159763e0afae286b50ec9a9c254f4de7c6da9bfeb9d7b0762faed5e3e0cb231336681138ac09670276362133ddb48691b", + "file": "src/app/authoring-tool/edit-component-exclude-from-total-score/edit-component-exclude-from-total-score.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "edit-component-exclude-from-total-score", + "styleUrls": [], + "styles": [ + "mat-checkbox { margin-top: 4px; margin-bottom: 4px; }" + ], + "template": "\n Do not count score on this activity towards the total score\n ", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "line": 8, + "type": "any", + "decorators": [], + "inheritance": { + "file": "EditComponentFieldComponent" + } + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "inputChanged", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 9, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "EditComponentFieldComponent" + } + }, + { + "name": "inputChangedSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "EditComponentFieldComponent" + } + } + ], + "methodsClass": [ + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditComponentFieldComponent" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 14, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditComponentFieldComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatCheckboxModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { EditComponentFieldComponent } from '../edit-component-field.component';\nimport { FormsModule } from '@angular/forms';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\n\n@Component({\n imports: [FormsModule, MatCheckboxModule],\n selector: 'edit-component-exclude-from-total-score',\n styles: ['mat-checkbox { margin-top: 4px; margin-bottom: 4px; }'],\n template: `\n Do not count score on this activity towards the total score\n `\n})\nexport class EditComponentExcludeFromTotalScoreComponent extends EditComponentFieldComponent {}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "mat-checkbox { margin-top: 4px; margin-bottom: 4px; }\n", + "extends": [ + "EditComponentFieldComponent" + ] + }, + { + "name": "EditComponentJsonComponent", + "id": "component-EditComponentJsonComponent-bac11d65bca6781e232070c8fce14f6ef5b357d2c5d3f8ab8f04aaa66dceeeeba27c8f4ff178397c0924f4e84548e3b0f301b45bdf626b5b2b0b27a4abac3ba9", + "file": "src/app/authoring-tool/edit-component-json/edit-component-json.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "edit-component-json", + "styleUrls": [], + "styles": [ + "div { margin-top: 10px; margin-bottom: 10px; } .mat-icon { margin: 0px; }" + ], + "templateUrl": [ + "edit-component-json.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "component", + "deprecated": false, + "deprecationMessage": "", + "line": 30, + "type": "WISEComponent", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "componentContentJSONString", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 31, + "modifierKind": [ + 124 + ] + }, + { + "name": "jsonChanged", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 32, + "modifierKind": [ + 124 + ] + }, + { + "name": "showJSONAuthoring", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 33, + "modifierKind": [ + 124 + ] + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 34, + "modifierKind": [ + 123 + ] + }, + { + "name": "validComponentContentJSONString", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 35, + "modifierKind": [ + 123 + ] + } + ], + "methodsClass": [ + { + "name": "isJSONValid", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 89, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 61, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 42, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "rememberRecentValidJSON", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 109, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "rollbackToRecentValidJSON", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 113, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "saveChanges", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 98, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "setComponentContentJsonString", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 65, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "toggleJSONView", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 69, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CdkTextareaAutosize" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatInputModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input } from '@angular/core';\nimport { Subject, Subscription } from 'rxjs';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport { NotificationService } from '../../../assets/wise5/services/notificationService';\nimport { TeacherProjectService } from '../../../assets/wise5/services/teacherProjectService';\nimport { Component as WISEComponent } from '../../../assets/wise5/common/Component';\nimport { FormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { CdkTextareaAutosize } from '@angular/cdk/text-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n imports: [\n CdkTextareaAutosize,\n FormsModule,\n MatButtonModule,\n MatFormFieldModule,\n MatIconModule,\n MatInputModule,\n MatTooltipModule\n ],\n selector: 'edit-component-json',\n styles: ['div { margin-top: 10px; margin-bottom: 10px; } .mat-icon { margin: 0px; }'],\n templateUrl: 'edit-component-json.component.html'\n})\nexport class EditComponentJsonComponent {\n @Input() component: WISEComponent;\n protected componentContentJSONString: string;\n protected jsonChanged: Subject = new Subject();\n protected showJSONAuthoring: boolean = false;\n private subscriptions: Subscription = new Subscription();\n private validComponentContentJSONString: string;\n\n constructor(\n private notificationService: NotificationService,\n private projectService: TeacherProjectService\n ) {}\n\n ngOnInit(): void {\n this.setComponentContentJsonString();\n this.subscriptions.add(\n this.jsonChanged.pipe(debounceTime(1000), distinctUntilChanged()).subscribe(() => {\n if (this.isJSONValid()) {\n this.rememberRecentValidJSON();\n this.notificationService.showJSONValidMessage();\n } else {\n this.notificationService.showJSONInvalidMessage();\n }\n })\n );\n this.subscriptions.add(\n this.projectService.nodeChanged$.subscribe(() => {\n this.setComponentContentJsonString();\n })\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n private setComponentContentJsonString(): void {\n this.componentContentJSONString = JSON.stringify(this.component.content, null, 4);\n }\n\n protected toggleJSONView(): void {\n if (this.showJSONAuthoring) {\n if (this.isJSONValid()) {\n this.saveChanges();\n this.showJSONAuthoring = false;\n } else {\n const doRollback = confirm(\n $localize`The JSON is invalid. Invalid JSON will not be saved.\\nClick \"OK\" to revert back to the last valid JSON.\\nClick \"Cancel\" to keep the invalid JSON open so you can fix it.`\n );\n if (doRollback) {\n this.rollbackToRecentValidJSON();\n this.saveChanges();\n }\n }\n } else {\n this.showJSONAuthoring = true;\n this.rememberRecentValidJSON();\n }\n }\n\n private isJSONValid(): boolean {\n try {\n JSON.parse(this.componentContentJSONString);\n return true;\n } catch (e) {\n return false;\n }\n }\n\n private saveChanges(): void {\n try {\n this.projectService\n .getNode(this.component.nodeId)\n .replaceComponent(this.component.id, JSON.parse(this.componentContentJSONString));\n this.projectService.componentChanged();\n } catch (e) {\n this.notificationService.showJSONInvalidMessage();\n }\n }\n\n private rememberRecentValidJSON(): void {\n this.validComponentContentJSONString = this.componentContentJSONString;\n }\n\n private rollbackToRecentValidJSON(): void {\n this.componentContentJSONString = this.validComponentContentJSONString;\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "div { margin-top: 10px; margin-bottom: 10px; } .mat-icon { margin: 0px; }\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "notificationService", + "type": "NotificationService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 35, + "jsdoctags": [ + { + "name": "notificationService", + "type": "NotificationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "
\n JSON\n \n code\n \n
\n@if (showJSONAuthoring) {\n
\n Close the JSON view to save the changes\n \n Edit Component JSON\n \n \n
\n}\n" + }, + { + "name": "EditComponentMaxScoreComponent", + "id": "component-EditComponentMaxScoreComponent-73fec49fa7290565db4dd460d1f3cdeabd6599d2c3102cadc59db219210adbbfcd316a7a1bf44e411e07d85f500fff06503dcad2a99b4bc1f3f8c5d512e3a3d1", + "file": "src/app/authoring-tool/edit-component-max-score/edit-component-max-score.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "edit-component-max-score", + "styleUrls": [], + "styles": [], + "template": " Max Score\n \n ", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "line": 8, + "type": "any", + "decorators": [], + "inheritance": { + "file": "EditComponentFieldComponent" + } + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "inputChanged", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 9, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "EditComponentFieldComponent" + } + }, + { + "name": "inputChangedSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "EditComponentFieldComponent" + } + } + ], + "methodsClass": [ + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditComponentFieldComponent" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 14, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditComponentFieldComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatInputModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { EditComponentFieldComponent } from '../edit-component-field.component';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { FormsModule } from '@angular/forms';\nimport { MatInputModule } from '@angular/material/input';\n\n@Component({\n imports: [FormsModule, MatFormFieldModule, MatInputModule],\n selector: 'edit-component-max-score',\n template: `\n Max Score\n \n `\n})\nexport class EditComponentMaxScoreComponent extends EditComponentFieldComponent {}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [ + "EditComponentFieldComponent" + ] + }, + { + "name": "EditComponentMaxSubmitComponent", + "id": "component-EditComponentMaxSubmitComponent-4fdec36b08e7783240a23b0a8385d576939a6dbc84d183a6257d430cddc71cdbb3f9a93ad443efd3d75fecdc9a98006842e8b97d38c32edb700d43246f3e8448", + "file": "src/app/authoring-tool/edit-component-max-submit/edit-component-max-submit.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "edit-component-max-submit", + "styleUrls": [], + "styles": [ + "mat-form-field { margin-top: 10px; margin-bottom: 10px; }" + ], + "template": " Max Submit\n \n ", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "line": 8, + "type": "any", + "decorators": [], + "inheritance": { + "file": "EditComponentFieldComponent" + } + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "inputChanged", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 9, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "EditComponentFieldComponent" + } + }, + { + "name": "inputChangedSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "EditComponentFieldComponent" + } + } + ], + "methodsClass": [ + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditComponentFieldComponent" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 14, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditComponentFieldComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatInputModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { EditComponentFieldComponent } from '../edit-component-field.component';\nimport { FormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\n\n@Component({\n imports: [FormsModule, MatFormFieldModule, MatInputModule],\n selector: 'edit-component-max-submit',\n styles: ['mat-form-field { margin-top: 10px; margin-bottom: 10px; }'],\n template: `\n Max Submit\n \n `\n})\nexport class EditComponentMaxSubmitComponent extends EditComponentFieldComponent {}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "mat-form-field { margin-top: 10px; margin-bottom: 10px; }\n", + "extends": [ + "EditComponentFieldComponent" + ] + }, + { + "name": "EditComponentPeerGroupingTagComponent", + "id": "component-EditComponentPeerGroupingTagComponent-7bde97357f9475d0d394b11002bcbdfd1eda56930149b78cf0445560893dcafd787cfbf6a62358e9654a7faa8ff11631ff178870174dbf09234be0194ee53220", + "file": "src/app/authoring-tool/edit-component-peer-grouping-tag/edit-component-peer-grouping-tag.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "edit-component-peer-grouping-tag", + "styleUrls": [], + "styles": [], + "template": "", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "line": 14, + "type": "any", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [], + "methodsClass": [ + { + "name": "peerGroupingTagChanged", + "args": [ + { + "name": "tag", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 18, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "tag", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "SelectPeerGroupingAuthoringComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input } from '@angular/core';\nimport { TeacherProjectService } from '../../../assets/wise5/services/teacherProjectService';\nimport { SelectPeerGroupingAuthoringComponent } from '../../../assets/wise5/authoringTool/peer-grouping/select-peer-grouping-authoring/select-peer-grouping-authoring.component';\n\n@Component({\n imports: [SelectPeerGroupingAuthoringComponent],\n selector: 'edit-component-peer-grouping-tag',\n template: ``\n})\nexport class EditComponentPeerGroupingTagComponent {\n @Input() componentContent: any;\n\n constructor(private projectService: TeacherProjectService) {}\n\n peerGroupingTagChanged(tag: string): void {\n this.componentContent.peerGroupingTag = tag;\n this.projectService.componentChanged();\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 14, + "jsdoctags": [ + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [] + }, + { + "name": "EditComponentPrompt", + "id": "component-EditComponentPrompt-2cec5db1e65793358082c9a4ea05f3fdd532d05646bd71181831e6d8d609e1a6a0363d961ea5fe18d5fc8f8f2fd3c0ed44f55fcbf364cbbdf9928a52b9034dab", + "file": "src/app/authoring-tool/edit-component-prompt/edit-component-prompt.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "edit-component-prompt", + "styleUrls": [], + "styles": [ + ".prompt {width: 100%; mat-form-field { width:100%} }" + ], + "template": "\n", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "line": 24, + "type": "ComponentContent", + "decorators": [] + } + ], + "outputsClass": [ + { + "name": "promptChangedEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 25, + "type": "EventEmitter" + } + ], + "propertiesClass": [], + "methodsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "TranslatableTextareaComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { ComponentContent } from '../../../assets/wise5/common/ComponentContent';\nimport { TranslatableTextareaComponent } from '../../../assets/wise5/authoringTool/components/translatable-textarea/translatable-textarea.component';\n\n@Component({\n imports: [TranslatableTextareaComponent],\n selector: 'edit-component-prompt',\n styles: ['.prompt {width: 100%; mat-form-field { width:100%} }'],\n template: `\n \n `\n})\nexport class EditComponentPrompt {\n @Input() componentContent: ComponentContent;\n @Output() promptChangedEvent = new EventEmitter();\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": ".prompt {width: 100%; mat-form-field { width:100%} }\n", + "extends": [] + }, + { + "name": "EditComponentRubricComponent", + "id": "component-EditComponentRubricComponent-b2160fa4f9d6961397c8dde29320a8a2906e179a663d5b7174c2e994f3e023423c6a676d1aeff833908da65771f048faae36e919f250d796a5bb78fef7fc9e97", + "file": "src/app/authoring-tool/edit-component-rubric/edit-component-rubric.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "edit-component-rubric", + "styleUrls": [], + "styles": [ + "label { margin-right: 10px; } div { margin-bottom: 10px; } .mat-icon { margin: 0px; } " + ], + "templateUrl": [ + "edit-component-rubric.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "line": 24, + "type": "any", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "showRubricAuthoring", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 25, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "save", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 29, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + }, + { + "name": "TranslatableRichTextEditorComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input } from '@angular/core';\nimport { TeacherProjectService } from '../../../assets/wise5/services/teacherProjectService';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { TranslatableRichTextEditorComponent } from '../../../assets/wise5/authoringTool/components/translatable-rich-text-editor/translatable-rich-text-editor.component';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatFormFieldModule } from '@angular/material/form-field';\n\n@Component({\n imports: [\n MatButtonModule,\n MatFormFieldModule,\n MatIconModule,\n MatTooltipModule,\n TranslatableRichTextEditorComponent\n ],\n selector: 'edit-component-rubric',\n styles: [\n 'label { margin-right: 10px; } div { margin-bottom: 10px; } .mat-icon { margin: 0px; } '\n ],\n templateUrl: 'edit-component-rubric.component.html'\n})\nexport class EditComponentRubricComponent {\n @Input() componentContent: any;\n protected showRubricAuthoring: boolean;\n\n constructor(private projectService: TeacherProjectService) {}\n\n protected save(): void {\n this.projectService.componentChanged();\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "label { margin-right: 10px; } div { margin-bottom: 10px; } .mat-icon { margin: 0px; } \n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 25, + "jsdoctags": [ + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "
\n Rubric\n \n message\n \n
\n@if (showRubricAuthoring) {\n \n}\n" + }, + { + "name": "EditComponentSaveButtonComponent", + "id": "component-EditComponentSaveButtonComponent-f79f535e593ecc648839c74de09bfe13bdf485f90c7b4fbea64180be3c62aa2b8417bc359a822a9760fc34d1588abfa1048f0967485c1f62aed214f5f7cbe652", + "file": "src/app/authoring-tool/edit-component-save-button/edit-component-save-button.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "edit-component-save-button", + "styleUrls": [], + "styles": [ + "mat-checkbox { margin-top: 4px; margin-bottom: 4px; }" + ], + "template": "Show Save Button
", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "line": 8, + "type": "any", + "decorators": [], + "inheritance": { + "file": "EditComponentFieldComponent" + } + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "inputChanged", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 9, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "EditComponentFieldComponent" + } + }, + { + "name": "inputChangedSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "EditComponentFieldComponent" + } + } + ], + "methodsClass": [ + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditComponentFieldComponent" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 14, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditComponentFieldComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatCheckboxModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { EditComponentFieldComponent } from '../edit-component-field.component';\nimport { FormsModule } from '@angular/forms';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\n\n@Component({\n imports: [FormsModule, MatCheckboxModule],\n selector: 'edit-component-save-button',\n styles: ['mat-checkbox { margin-top: 4px; margin-bottom: 4px; }'],\n template: `Show Save Button`\n})\nexport class EditComponentSaveButtonComponent extends EditComponentFieldComponent {}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "mat-checkbox { margin-top: 4px; margin-bottom: 4px; }\n", + "extends": [ + "EditComponentFieldComponent" + ] + }, + { + "name": "EditComponentScoreComponent", + "id": "component-EditComponentScoreComponent-4944778f52e264c04c13add3a9d87a687166939f943dcd4df63de6002e0890eeaf8d4e2f04cc44c8b8dee24a0d36b11e4e4905b6cc9eff06dd33d9fcab1b848f", + "file": "src/assets/wise5/classroomMonitor/classroomMonitorComponents/edit-component-score/edit-component-score.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "edit-component-score", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "edit-component-score.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "line": 16, + "type": "string", + "decorators": [] + }, + { + "name": "componentStateId", + "deprecated": false, + "deprecationMessage": "", + "line": 17, + "type": "string", + "decorators": [] + }, + { + "name": "disabled", + "deprecated": false, + "deprecationMessage": "", + "line": 18, + "type": "boolean", + "decorators": [] + }, + { + "name": "fromWorkgroupId", + "deprecated": false, + "deprecationMessage": "", + "line": 19, + "type": "number", + "decorators": [] + }, + { + "name": "latestAnnotationScore", + "deprecated": false, + "deprecationMessage": "", + "line": 21, + "type": "any", + "decorators": [] + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 22, + "type": "string", + "decorators": [] + }, + { + "name": "periodId", + "deprecated": false, + "deprecationMessage": "", + "line": 23, + "type": "string", + "decorators": [] + }, + { + "name": "runId", + "deprecated": false, + "deprecationMessage": "", + "line": 24, + "type": "string", + "decorators": [] + }, + { + "name": "toWorkgroupId", + "deprecated": false, + "deprecationMessage": "", + "line": 29, + "type": "number", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "isAutoScore", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 20, + "modifierKind": [ + 124 + ] + }, + { + "name": "score", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 25 + }, + { + "name": "scoreChanged", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 26, + "modifierKind": [ + 124 + ] + }, + { + "name": "scoreInputElement", + "deprecated": false, + "deprecationMessage": "", + "type": "ElementRef", + "indexKey": "", + "optional": false, + "description": "", + "line": 27, + "decorators": [ + { + "name": "ViewChild", + "stringifiedArguments": "'scoreInput'" + } + ], + "modifierKind": [ + 171 + ] + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 28, + "modifierKind": [ + 123 + ] + } + ], + "methodsClass": [ + { + "name": "focusScoreInput", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 72, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 47, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 36, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "saveScore", + "args": [ + { + "name": "score", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 51, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "score", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatInputModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, ElementRef, Input, ViewChild } from '@angular/core';\nimport { Subject, Subscription } from 'rxjs';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport { AnnotationService } from '../../../services/annotationService';\nimport { NotificationService } from '../../../services/notificationService';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n imports: [FormsModule, MatFormFieldModule, MatInputModule],\n selector: 'edit-component-score',\n templateUrl: 'edit-component-score.component.html'\n})\nexport class EditComponentScoreComponent {\n @Input() componentId: string;\n @Input() componentStateId: string;\n @Input() disabled: boolean;\n @Input() fromWorkgroupId: number;\n protected isAutoScore: boolean;\n @Input() latestAnnotationScore: any;\n @Input() nodeId: string;\n @Input() periodId: string;\n @Input() runId: string;\n score: number;\n protected scoreChanged: Subject = new Subject();\n @ViewChild('scoreInput') scoreInputElement: ElementRef;\n private subscriptions: Subscription = new Subscription();\n @Input() toWorkgroupId: number;\n\n constructor(\n private annotationService: AnnotationService,\n private notificationService: NotificationService\n ) {}\n\n ngOnInit(): void {\n this.isAutoScore = this.latestAnnotationScore?.type === 'autoScore';\n this.score = this.latestAnnotationScore?.data.value ?? 0;\n this.subscriptions.add(\n this.scoreChanged.pipe(debounceTime(1000), distinctUntilChanged()).subscribe((newScore) => {\n this.notificationService.showSavingMessage();\n this.saveScore(newScore);\n })\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n saveScore(score: number): void {\n const annotation = this.annotationService.createAnnotation(\n null,\n this.runId,\n this.periodId,\n this.fromWorkgroupId,\n this.toWorkgroupId,\n this.nodeId,\n this.componentId,\n this.componentStateId,\n null,\n null,\n 'score',\n { value: score },\n new Date().getTime()\n );\n this.annotationService.saveAnnotation(annotation).then(() => {\n this.notificationService.showSavedMessage($localize`Saved score`);\n });\n }\n\n protected focusScoreInput(): void {\n this.scoreInputElement.nativeElement.focus();\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "notificationService", + "type": "NotificationService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 29, + "jsdoctags": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "notificationService", + "type": "NotificationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "\n \n \n \n \n\n" + }, + { + "name": "EditComponentSubmitButtonComponent", + "id": "component-EditComponentSubmitButtonComponent-2e0fbd856e90fa515ef77ed9057d498da2a8ce4e0a7d0ffa5fcb65a3ad38d7e785d48a9573b7153cb9549ed74d0cadea0bdbd4fd8660700728067ff09950170e", + "file": "src/app/authoring-tool/edit-component-submit-button/edit-component-submit-button.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "edit-component-submit-button", + "styleUrls": [], + "styles": [ + "mat-checkbox { margin-top: 4px; margin-bottom: 4px; }" + ], + "template": "Show Submit Button
", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "line": 8, + "type": "any", + "decorators": [], + "inheritance": { + "file": "EditComponentFieldComponent" + } + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "inputChanged", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 9, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "EditComponentFieldComponent" + } + }, + { + "name": "inputChangedSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "EditComponentFieldComponent" + } + } + ], + "methodsClass": [ + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditComponentFieldComponent" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 14, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditComponentFieldComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatCheckboxModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { EditComponentFieldComponent } from '../edit-component-field.component';\nimport { FormsModule } from '@angular/forms';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\n\n@Component({\n imports: [FormsModule, MatCheckboxModule],\n selector: 'edit-component-submit-button',\n styles: ['mat-checkbox { margin-top: 4px; margin-bottom: 4px; }'],\n template: `Show Submit Button `\n})\nexport class EditComponentSubmitButtonComponent extends EditComponentFieldComponent {}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "mat-checkbox { margin-top: 4px; margin-bottom: 4px; }\n", + "extends": [ + "EditComponentFieldComponent" + ] + }, + { + "name": "EditComponentTagsComponent", + "id": "component-EditComponentTagsComponent-929d9e930309fe02fcff53196f336e0b505ddc5aa9688620e0ddc3f42a05300509a3d9c85a2dbffda1bd8e88ac51db5f6e9c5c278c1ac155fe7d854fda18f66d", + "file": "src/app/authoring-tool/edit-component-tags/edit-component-tags.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "edit-component-tags", + "styleUrls": [], + "styles": [ + "\n label {\n margin-right: 10px;\n }\n div {\n margin-top: 10px;\n margin-bottom: 10px;\n }\n .mat-icon {\n margin: 0px;\n }\n " + ], + "templateUrl": [ + "edit-component-tags.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "line": 39, + "type": "any", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "tagChanged", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 40, + "modifierKind": [ + 124 + ] + }, + { + "name": "tagChangedSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 41, + "modifierKind": [ + 123 + ] + } + ], + "methodsClass": [ + { + "name": "addTag", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 58, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "deleteTag", + "args": [ + { + "name": "indexOfTagToDelete", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 84, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "indexOfTagToDelete", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "moveTagDown", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 75, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "moveTagUp", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 66, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 54, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 45, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatInputModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input } from '@angular/core';\nimport { Subject, Subscription } from 'rxjs';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport { TeacherProjectService } from '../../../assets/wise5/services/teacherProjectService';\nimport { FormsModule } from '@angular/forms';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatFormFieldModule } from '@angular/material/form-field';\n\n@Component({\n imports: [\n FormsModule,\n MatButtonModule,\n MatFormFieldModule,\n MatIconModule,\n MatInputModule,\n MatTooltipModule\n ],\n selector: 'edit-component-tags',\n styles: [\n `\n label {\n margin-right: 10px;\n }\n div {\n margin-top: 10px;\n margin-bottom: 10px;\n }\n .mat-icon {\n margin: 0px;\n }\n `\n ],\n templateUrl: 'edit-component-tags.component.html'\n})\nexport class EditComponentTagsComponent {\n @Input() componentContent: any;\n protected tagChanged: Subject = new Subject();\n private tagChangedSubscription: Subscription;\n\n constructor(private projectService: TeacherProjectService) {}\n\n ngOnInit(): void {\n this.tagChangedSubscription = this.tagChanged\n .pipe(debounceTime(1000), distinctUntilChanged())\n .subscribe(({ tagIndex, tag }) => {\n this.componentContent.tags[tagIndex] = tag;\n this.projectService.componentChanged();\n });\n }\n\n ngOnDestroy(): void {\n this.tagChangedSubscription.unsubscribe();\n }\n\n addTag(): void {\n if (this.componentContent.tags == null) {\n this.componentContent.tags = [];\n }\n this.componentContent.tags.push('');\n this.projectService.componentChanged();\n }\n\n moveTagUp(index: number): void {\n if (index > 0) {\n const tag = this.componentContent.tags[index];\n this.componentContent.tags.splice(index, 1);\n this.componentContent.tags.splice(index - 1, 0, tag);\n this.projectService.componentChanged();\n }\n }\n\n moveTagDown(index: number): void {\n if (index < this.componentContent.tags.length - 1) {\n const tag = this.componentContent.tags[index];\n this.componentContent.tags.splice(index, 1);\n this.componentContent.tags.splice(index + 1, 0, tag);\n this.projectService.componentChanged();\n }\n }\n\n deleteTag(indexOfTagToDelete: number): void {\n if (confirm($localize`Are you sure you want to delete this tag?`)) {\n this.componentContent.tags.splice(indexOfTagToDelete, 1);\n this.projectService.componentChanged();\n }\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "\n label {\n margin-right: 10px;\n }\n div {\n margin-top: 10px;\n margin-bottom: 10px;\n }\n .mat-icon {\n margin: 0px;\n }\n \n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 41, + "jsdoctags": [ + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "
\n Tags\n \n add\n \n
\n@for (tag of componentContent.tags; track tag; let i = $index) {\n
\n \n Tag Name\n \n \n \n arrow_upward\n \n \n arrow_downward\n \n \n delete\n \n
\n}\n" + }, + { + "name": "EditComponentWidthComponent", + "id": "component-EditComponentWidthComponent-ff0b2f94c2e3f7d83fdd075eacf58528cfed1e14c58b57574c63b3514a71f6609c56a2ce88ee4a9f791b7fc071c2230c82a67a2ebb66d1f2a1fc4f8c66f4eb7d", + "file": "src/app/authoring-tool/edit-component-width/edit-component-width.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "edit-component-width", + "styleUrls": [], + "styles": [], + "template": " Component Width\n \n ", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "line": 8, + "type": "any", + "decorators": [], + "inheritance": { + "file": "EditComponentFieldComponent" + } + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "inputChanged", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 9, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "EditComponentFieldComponent" + } + }, + { + "name": "inputChangedSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "EditComponentFieldComponent" + } + } + ], + "methodsClass": [ + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditComponentFieldComponent" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 14, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditComponentFieldComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatInputModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { EditComponentFieldComponent } from '../edit-component-field.component';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n imports: [FormsModule, MatFormFieldModule, MatInputModule],\n selector: 'edit-component-width',\n template: `\n Component Width\n \n `\n})\nexport class EditComponentWidthComponent extends EditComponentFieldComponent {}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [ + "EditComponentFieldComponent" + ] + }, + { + "name": "EditConceptMapAdvancedComponent", + "id": "component-EditConceptMapAdvancedComponent-30e0d0194a19e9495e6c1df094feeb30683d6ca8c8c8f2312ad41c347e6f2ff35b22c99057d45006c76567e25afcdbd3830519a64a47b9e031e4515df986de69", + "file": "src/assets/wise5/components/conceptMap/edit-concept-map-advanced/edit-concept-map-advanced.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "edit-concept-map-advanced.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "line": 13, + "type": "string", + "decorators": [], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 14, + "type": "string", + "decorators": [], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "allowedConnectedComponentTypes", + "defaultValue": "['ConceptMap', 'Draw', 'Embedded', 'Graph', 'Label', 'Table']", + "deprecated": false, + "deprecationMessage": "", + "type": "[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 33 + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "ConceptMapContent", + "indexKey": "", + "optional": false, + "description": "", + "line": 32, + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "component", + "deprecated": false, + "deprecationMessage": "", + "type": "Component", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + } + ], + "methodsClass": [ + { + "name": "addCategoryToRule", + "args": [ + { + "name": "rule", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 84, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "rule", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addRule", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 48, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "customTrackBy", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 102, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "deleteCategoryFromRule", + "args": [ + { + "name": "rule", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 89, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "rule", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ruleDeleteButtonClicked", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 69, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ruleTypeChanged", + "args": [ + { + "name": "ruleIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 35, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "ruleIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "componentChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 47, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "connectedComponentsChanged", + "args": [ + { + "name": "connectedComponents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 42, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "isNotebookEnabled", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 38, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "moveObjectDown", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 56, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "moveObjectUp", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 51, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "setShowSubmitButtonValue", + "args": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 28, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatCheckbox" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatButton" + }, + { + "name": "MatIcon" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatInput" + }, + { + "name": "MatSelectModule", + "type": "module" + }, + { + "name": "MatTooltip" + }, + { + "name": "EditComponentAddToNotebookButtonComponent", + "type": "component" + }, + { + "name": "EditCommonAdvancedComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatButton } from '@angular/material/button';\nimport { MatCheckbox } from '@angular/material/checkbox';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInput } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { EditAdvancedComponentComponent } from '../../../../../app/authoring-tool/edit-advanced-component/edit-advanced-component.component';\nimport { EditCommonAdvancedComponent } from '../../../../../app/authoring-tool/edit-common-advanced/edit-common-advanced.component';\nimport { EditComponentAddToNotebookButtonComponent } from '../../../../../app/authoring-tool/edit-component-add-to-notebook-button/edit-component-add-to-notebook-button.component';\nimport { ConceptMapContent } from '../ConceptMapContent';\n\n@Component({\n templateUrl: 'edit-concept-map-advanced.component.html',\n styleUrl: 'edit-concept-map-advanced.component.scss',\n imports: [\n MatCheckbox,\n FormsModule,\n MatButton,\n MatIcon,\n MatFormFieldModule,\n MatInput,\n MatSelectModule,\n MatTooltip,\n EditComponentAddToNotebookButtonComponent,\n EditCommonAdvancedComponent\n ]\n})\nexport class EditConceptMapAdvancedComponent extends EditAdvancedComponentComponent {\n componentContent: ConceptMapContent;\n allowedConnectedComponentTypes = ['ConceptMap', 'Draw', 'Embedded', 'Graph', 'Label', 'Table'];\n\n ruleTypeChanged(ruleIndex: number): void {\n const rule = this.componentContent.rules[ruleIndex];\n if (rule.type === 'node') {\n /*\n * the rule has been set to 'node' instead of 'link' so we\n * will remove the link label and other node label\n */\n delete rule.linkLabel;\n delete rule.otherNodeLabel;\n }\n this.componentChanged();\n }\n\n addRule(): void {\n const newRule = {\n name: '',\n type: 'node',\n categories: [],\n nodeLabel: '',\n comparison: 'exactly',\n number: 1,\n not: false\n };\n\n this.componentContent.rules.push(newRule);\n let showSubmitButton = false;\n if (this.componentContent.rules.length > 0) {\n showSubmitButton = true;\n }\n\n this.setShowSubmitButtonValue(showSubmitButton);\n this.componentChanged();\n }\n\n ruleDeleteButtonClicked(index: number): void {\n const rule = this.componentContent.rules[index];\n const ruleName = rule.name;\n if (confirm($localize`Are you sure you want to delete this rule?\\n\\nRule Name: ${ruleName}`)) {\n this.componentContent.rules.splice(index, 1);\n this.componentChanged();\n }\n\n let showSubmitButton = false;\n if (this.componentContent.rules.length > 0) {\n showSubmitButton = true;\n }\n this.setShowSubmitButtonValue(showSubmitButton);\n }\n\n addCategoryToRule(rule: any): void {\n rule.categories.push('');\n this.componentChanged();\n }\n\n deleteCategoryFromRule(rule: any, index: number): void {\n const ruleName = rule.name;\n const categoryName = rule.categories[index];\n if (\n confirm(\n $localize`Are you sure you want to delete the category from this rule?\\n\\nRule Name: ${ruleName}\\nCategory Name: ${categoryName}`\n )\n ) {\n rule.categories.splice(index, 1);\n this.componentChanged();\n }\n }\n\n customTrackBy(index: number): any {\n return index;\n }\n}\n", + "styleUrl": "edit-concept-map-advanced.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [ + "EditAdvancedComponentComponent" + ], + "templateData": "
\n
\n \n Show Auto Score\n \n
\n
\n \n Show Auto Feedback\n \n
\n
\n
Rules
\n \n
\n @for (rule of componentContent.rules; track rule; let ruleIndex = $index) {\n
\n \n Rule Name\n \n \n
\n \n Rule Type\n \n should contain\n should not contain\n \n \n \n Comparison\n \n exactly\n more than\n less than\n \n \n \n Count\n \n \n
\n
\n \n Node\n \n \n Any\n @for (node of componentContent.nodes; track node) {\n \n {{ node.label }}\n \n }\n \n \n \n Link Connection\n \n with any or no link\n with specific link\n \n \n @if (rule.type === 'link') {\n \n Link\n \n \n Any\n @for (link of componentContent.links; track link) {\n \n {{ link.label }}\n \n }\n \n \n to\n \n Node\n \n \n Any\n @for (node of componentContent.nodes; track node) {\n \n {{ node.label }}\n \n }\n \n \n }\n
\n
\n
\n \n
\n @for (category of rule.categories; track customTrackBy; let categoryIndex = $index) {\n
\n \n Category Name\n \n \n \n clear\n \n
\n }\n
\n
\n \n arrow_upward\n \n \n arrow_downward\n \n \n delete\n \n
\n
\n }\n
\n \n Custom Rule Evaluator\n \n \n \n
\n @if (isNotebookEnabled()) {\n
\n \n
\n }\n
\n\n" + }, + { + "name": "EditConceptMapConnectedComponentsComponent", + "id": "component-EditConceptMapConnectedComponentsComponent-f70b3286ab3bc78a3f42cf5222f8e9a421f65ff9b7b74971a84a88ed3d2a6e16d05e33d275d5040d1fd3d29e28a428d85b3801fde7ea238546384cb6da9a8523", + "file": "src/assets/wise5/components/conceptMap/edit-concept-map-connected-components/edit-concept-map-connected-components.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "app-edit-concept-map-connected-components", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./edit-concept-map-connected-components.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "allowedConnectedComponentTypes", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "line": 21, + "type": "string[]", + "decorators": [], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "line": 18, + "type": "any", + "decorators": [], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "line": 19, + "type": "string", + "decorators": [], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "connectedComponents", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "line": 22, + "type": "any[]", + "decorators": [], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 20, + "type": "string", + "decorators": [], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + } + ], + "outputsClass": [ + { + "name": "connectedComponentsChanged", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 23, + "type": "EventEmitter", + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + } + ], + "propertiesClass": [ + { + "name": "componentTypesThatCanImportWorkAsBackground", + "defaultValue": "[\n 'Draw',\n 'Embedded',\n 'Graph',\n 'Label',\n 'Table'\n ]", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 24, + "inheritance": { + "file": "EditConnectedComponentsWithBackgroundComponent" + } + }, + { + "name": "nodeIds", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 24, + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + } + ], + "methodsClass": [ + { + "name": "afterComponentIdChanged", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 32, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "askIfWantToCopyNodesAndLinks", + "args": [ + { + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 39, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "canConnectedComponentTypeImportWorkAsBackground", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 15, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsWithBackgroundComponent" + } + }, + { + "name": "addConnectedComponent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 34, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "automaticallySetConnectedComponentFieldsIfPossible", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 74, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "automaticallySetConnectedComponentTypeIfPossible", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 57, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "connectedComponentChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "connectedComponentComponentIdChanged", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 51, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "connectedComponentNodeIdChanged", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 47, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "connectedComponentTypeChanged", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 66, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "connectedComponentTypeIsSpecificType", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 106, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "createConnectedComponent", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 39, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "deleteConnectedComponent", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 76, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "getComponents", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 87, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "getConnectedComponentType", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 95, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "getNodePositionAndTitle", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 91, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "isConnectedComponentTypeAllowed", + "args": [ + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 70, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 28, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "EditConnectedComponentsAddButtonComponent", + "type": "component" + }, + { + "name": "EditConnectedComponentDefaultSelectsComponent", + "type": "component" + }, + { + "name": "MatCheckbox" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "EditConnectedComponentDeleteButtonComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatCheckbox } from '@angular/material/checkbox';\nimport { EditConnectedComponentDefaultSelectsComponent } from '../../../../../app/authoring-tool/edit-connected-component-default-selects/edit-connected-component-default-selects.component';\nimport { EditConnectedComponentDeleteButtonComponent } from '../../../../../app/authoring-tool/edit-connected-component-delete-button/edit-connected-component-delete-button.component';\nimport { EditConnectedComponentsAddButtonComponent } from '../../../../../app/authoring-tool/edit-connected-components-add-button/edit-connected-components-add-button.component';\nimport { EditConnectedComponentsWithBackgroundComponent } from '../../../../../app/authoring-tool/edit-connected-components-with-background/edit-connected-components-with-background.component';\nimport { ConceptMapContent } from '../ConceptMapContent';\n\n@Component({\n selector: 'app-edit-concept-map-connected-components',\n templateUrl: './edit-concept-map-connected-components.component.html',\n styleUrl:\n '../../../../../app/authoring-tool/edit-connected-components/edit-connected-components.component.scss',\n imports: [\n EditConnectedComponentsAddButtonComponent,\n EditConnectedComponentDefaultSelectsComponent,\n MatCheckbox,\n FormsModule,\n EditConnectedComponentDeleteButtonComponent\n ]\n})\nexport class EditConceptMapConnectedComponentsComponent extends EditConnectedComponentsWithBackgroundComponent {\n componentTypesThatCanImportWorkAsBackground: string[] = [\n 'Draw',\n 'Embedded',\n 'Graph',\n 'Label',\n 'Table'\n ];\n\n afterComponentIdChanged(connectedComponent: any): void {\n super.afterComponentIdChanged(connectedComponent);\n if (this.connectedComponentTypeIsSpecificType(connectedComponent, 'ConceptMap')) {\n this.askIfWantToCopyNodesAndLinks(connectedComponent);\n }\n }\n\n askIfWantToCopyNodesAndLinks({ nodeId, componentId }): void {\n if (\n confirm(\n $localize`Do you want to copy the nodes and links from the connected component?` +\n '\\n\\n' +\n $localize`Warning: This will delete all existing nodes and links in this component.`\n )\n ) {\n const connectedComponent = this.projectService.getComponent(\n nodeId,\n componentId\n ) as ConceptMapContent;\n this.componentContent.nodes = connectedComponent.nodes;\n this.componentContent.links = connectedComponent.links;\n this.connectedComponentChanged();\n }\n }\n}\n", + "styleUrl": "../../../../../app/authoring-tool/edit-connected-components/edit-connected-components.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [ + "EditConnectedComponentsWithBackgroundComponent" + ], + "templateData": "\n@for (\n connectedComponent of connectedComponents;\n track connectedComponent;\n let connectedComponentIndex = $index\n) {\n
\n
\n \n @if (canConnectedComponentTypeImportWorkAsBackground(connectedComponent)) {\n
\n \n Import Work As Background\n \n
\n }\n \n \n
\n
\n}\n" + }, + { + "name": "EditConnectedComponentDefaultSelectsComponent", + "id": "component-EditConnectedComponentDefaultSelectsComponent-b550c5b0160a1440a8855a7c35e27fb643da4810b12f90f00b22df4fcf5fb04048d5928d32e817f904cafcc9270c2e4ca8dba549889b6a973461b5c1eef1e235", + "file": "src/app/authoring-tool/edit-connected-component-default-selects/edit-connected-component-default-selects.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "edit-connected-component-default-selects", + "styleUrls": [], + "styles": [], + "template": "
\n \n
", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "allowedConnectedComponentTypes", + "deprecated": false, + "deprecationMessage": "", + "line": 23, + "type": "string[]", + "decorators": [] + }, + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "line": 24, + "type": "string", + "decorators": [] + }, + { + "name": "connectedComponent", + "deprecated": false, + "deprecationMessage": "", + "line": 25, + "type": "any", + "decorators": [] + } + ], + "outputsClass": [ + { + "name": "connectedComponentComponentIdChange", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 26, + "type": "EventEmitter" + }, + { + "name": "connectedComponentNodeIdChange", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 27, + "type": "EventEmitter" + }, + { + "name": "connectedComponentTypeChange", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 28, + "type": "EventEmitter" + } + ], + "propertiesClass": [], + "methodsClass": [ + { + "name": "connectedComponentComponentIdChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 34, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "connectedComponentNodeIdChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 30, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "connectedComponentTypeChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 38, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "EditConnectedComponentTypeSelectComponent", + "type": "component" + }, + { + "name": "SelectStepAndComponentComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { SelectStepAndComponentComponent } from '../select-step-and-component/select-step-and-component.component';\nimport { EditConnectedComponentTypeSelectComponent } from '../edit-connected-component-type-select/edit-connected-component-type-select.component';\n\n@Component({\n imports: [EditConnectedComponentTypeSelectComponent, SelectStepAndComponentComponent],\n selector: 'edit-connected-component-default-selects',\n template: `
\n \n \n
`\n})\nexport class EditConnectedComponentDefaultSelectsComponent {\n @Input() allowedConnectedComponentTypes: string[];\n @Input() componentId: string;\n @Input() connectedComponent: any;\n @Output() connectedComponentComponentIdChange: EventEmitter = new EventEmitter();\n @Output() connectedComponentNodeIdChange: EventEmitter = new EventEmitter();\n @Output() connectedComponentTypeChange: EventEmitter = new EventEmitter();\n\n protected connectedComponentNodeIdChanged(): void {\n this.connectedComponentNodeIdChange.emit(this.connectedComponent);\n }\n\n protected connectedComponentComponentIdChanged(): void {\n this.connectedComponentComponentIdChange.emit(this.connectedComponent);\n }\n\n protected connectedComponentTypeChanged(): void {\n this.connectedComponentTypeChange.emit(this.connectedComponent);\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [] + }, + { + "name": "EditConnectedComponentDeleteButtonComponent", + "id": "component-EditConnectedComponentDeleteButtonComponent-d64ce4afdf79ad9c7d7dfbef0a69d4f5aab2cb352e538a4e9f251215d07f7ebfbac69cc027eaca227da30b854297585a9dcc85118828d962042f4ff6651e7099", + "file": "src/app/authoring-tool/edit-connected-component-delete-button/edit-connected-component-delete-button.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "edit-connected-component-delete-button", + "styleUrls": [], + "styles": [ + ".mat-icon { margin: 0px; }" + ], + "template": "", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "connectedComponentIndex", + "deprecated": false, + "deprecationMessage": "", + "line": 22, + "type": "number", + "decorators": [] + } + ], + "outputsClass": [ + { + "name": "connectedComponentChange", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 23, + "type": "EventEmitter" + } + ], + "propertiesClass": [], + "methodsClass": [ + { + "name": "deleteConnectedComponent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 25, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@Component({\n imports: [MatButtonModule, MatIconModule, MatTooltipModule],\n selector: 'edit-connected-component-delete-button',\n styles: ['.mat-icon { margin: 0px; }'],\n template: `\n delete\n `\n})\nexport class EditConnectedComponentDeleteButtonComponent {\n @Input() connectedComponentIndex: number;\n @Output() connectedComponentChange: EventEmitter = new EventEmitter();\n\n protected deleteConnectedComponent(): void {\n this.connectedComponentChange.emit(this.connectedComponentIndex);\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": ".mat-icon { margin: 0px; }\n", + "extends": [] + }, + { + "name": "EditConnectedComponentsAddButtonComponent", + "id": "component-EditConnectedComponentsAddButtonComponent-5f22cecf76f2873888ff9a9185bac58eef430fde15a07a615ff8d848fab6bdb167ec57c9b49351fb7a9d6fc203354a1f53c0d4d7ecac0f37486fa14b3c9139bd", + "file": "src/app/authoring-tool/edit-connected-components-add-button/edit-connected-components-add-button.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "edit-connected-components-add-button", + "styleUrls": [], + "styles": [ + ".connected-components-label-div { margin-bottom: 10px; } .mat-icon { margin: 0px; }" + ], + "template": "
\n \n \n add\n \n
", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [ + { + "name": "connectedComponentsChanged", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 27, + "type": "EventEmitter" + } + ], + "propertiesClass": [], + "methodsClass": [ + { + "name": "addConnectedComponent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 29, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, EventEmitter, Output } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@Component({\n imports: [MatButtonModule, MatIconModule, MatTooltipModule],\n selector: 'edit-connected-components-add-button',\n styles: ['.connected-components-label-div { margin-bottom: 10px; } .mat-icon { margin: 0px; }'],\n template: `\n \n \n add\n \n `\n})\nexport class EditConnectedComponentsAddButtonComponent {\n @Output() connectedComponentsChanged: EventEmitter = new EventEmitter();\n\n protected addConnectedComponent(): void {\n this.connectedComponentsChanged.emit();\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": ".connected-components-label-div { margin-bottom: 10px; } .mat-icon { margin: 0px; }\n", + "extends": [] + }, + { + "name": "EditConnectedComponentsComponent", + "id": "component-EditConnectedComponentsComponent-6de75538543180d2cc60d12549acc94f042dfaa203fe0770ff7dc08e2df5057531862f740699f29014584a3532ad82b57b3862caa67b0f74a6d13ccfba403a26", + "file": "src/app/authoring-tool/edit-connected-components/edit-connected-components.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "edit-connected-components", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./edit-connected-components.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "allowedConnectedComponentTypes", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "line": 21, + "type": "string[]", + "decorators": [] + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "line": 18, + "type": "any", + "decorators": [] + }, + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "line": 19, + "type": "string", + "decorators": [] + }, + { + "name": "connectedComponents", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "line": 22, + "type": "any[]", + "decorators": [] + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 20, + "type": "string", + "decorators": [] + } + ], + "outputsClass": [ + { + "name": "connectedComponentsChanged", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 23, + "type": "EventEmitter" + } + ], + "propertiesClass": [ + { + "name": "nodeIds", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 24 + } + ], + "methodsClass": [ + { + "name": "addConnectedComponent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 34, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "afterComponentIdChanged", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 64, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "automaticallySetConnectedComponentFieldsIfPossible", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 74, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "automaticallySetConnectedComponentTypeIfPossible", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 57, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "connectedComponentChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "connectedComponentComponentIdChanged", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 51, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "connectedComponentNodeIdChanged", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 47, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "connectedComponentTypeChanged", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 66, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "connectedComponentTypeIsSpecificType", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 106, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createConnectedComponent", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 39, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "deleteConnectedComponent", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 76, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getComponents", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 87, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getConnectedComponentType", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 95, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getNodePositionAndTitle", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 91, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isConnectedComponentTypeAllowed", + "args": [ + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 70, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 28, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "EditConnectedComponentDefaultSelectsComponent", + "type": "component" + }, + { + "name": "EditConnectedComponentDeleteButtonComponent", + "type": "component" + }, + { + "name": "EditConnectedComponentsAddButtonComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { ProjectService } from '../../../assets/wise5/services/projectService';\nimport { EditConnectedComponentsAddButtonComponent } from '../edit-connected-components-add-button/edit-connected-components-add-button.component';\nimport { EditConnectedComponentDefaultSelectsComponent } from '../edit-connected-component-default-selects/edit-connected-component-default-selects.component';\nimport { EditConnectedComponentDeleteButtonComponent } from '../edit-connected-component-delete-button/edit-connected-component-delete-button.component';\n\n@Component({\n imports: [\n EditConnectedComponentDefaultSelectsComponent,\n EditConnectedComponentDeleteButtonComponent,\n EditConnectedComponentsAddButtonComponent\n ],\n selector: 'edit-connected-components',\n styleUrl: './edit-connected-components.component.scss',\n templateUrl: './edit-connected-components.component.html'\n})\nexport class EditConnectedComponentsComponent implements OnInit {\n @Input() componentContent: any;\n @Input() componentId: string;\n @Input() nodeId: string;\n @Input() allowedConnectedComponentTypes: string[] = [];\n @Input() connectedComponents: any[] = [];\n @Output() connectedComponentsChanged: EventEmitter = new EventEmitter();\n nodeIds: string[];\n\n constructor(protected projectService: ProjectService) {}\n\n ngOnInit(): void {\n if (this.connectedComponents == null) {\n this.connectedComponents = [];\n }\n }\n\n addConnectedComponent(): void {\n this.connectedComponents.push(this.createConnectedComponent());\n this.connectedComponentChanged();\n }\n\n createConnectedComponent(): any {\n return {\n nodeId: this.nodeId,\n componentId: null,\n type: null\n };\n }\n\n connectedComponentNodeIdChanged(connectedComponent: any): void {\n this.connectedComponentChanged();\n }\n\n connectedComponentComponentIdChanged(connectedComponent: any): void {\n this.automaticallySetConnectedComponentTypeIfPossible(connectedComponent);\n this.afterComponentIdChanged(connectedComponent);\n this.connectedComponentChanged();\n }\n\n automaticallySetConnectedComponentTypeIfPossible(connectedComponent: any): void {\n if (connectedComponent.componentId != null && connectedComponent.type == null) {\n connectedComponent.type = 'importWork';\n }\n this.automaticallySetConnectedComponentFieldsIfPossible(connectedComponent);\n }\n\n afterComponentIdChanged(connectedComponent: any): void {}\n\n connectedComponentTypeChanged(connectedComponent: any): void {\n this.connectedComponentChanged();\n }\n\n isConnectedComponentTypeAllowed(componentType: string): boolean {\n return this.allowedConnectedComponentTypes.includes(componentType);\n }\n\n automaticallySetConnectedComponentFieldsIfPossible(connectedComponent: any): void {}\n\n deleteConnectedComponent(index: number): void {\n if (confirm($localize`Are you sure you want to delete this connected component?`)) {\n this.connectedComponents.splice(index, 1);\n this.connectedComponentChanged();\n }\n }\n\n connectedComponentChanged(): void {\n this.connectedComponentsChanged.emit(this.connectedComponents);\n }\n\n getComponents(nodeId: string): any[] {\n return this.projectService.getComponents(nodeId);\n }\n\n getNodePositionAndTitle(nodeId: string): string {\n return this.projectService.getNodePositionAndTitle(nodeId);\n }\n\n getConnectedComponentType(connectedComponent: any): string {\n const component: any = this.projectService.getComponent(\n connectedComponent.nodeId,\n connectedComponent.componentId\n );\n if (component != null) {\n return component.type;\n }\n return null;\n }\n\n connectedComponentTypeIsSpecificType(connectedComponent: any, componentType: string): boolean {\n return this.getConnectedComponentType(connectedComponent) === componentType;\n }\n}\n", + "styleUrl": "./edit-connected-components.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 24, + "jsdoctags": [ + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "\n@for (connectedComponent of connectedComponents; track connectedComponent; let i = $index) {\n
\n \n \n \n
\n}\n" + }, + { + "name": "EditConnectedComponentsWithBackgroundComponent", + "id": "component-EditConnectedComponentsWithBackgroundComponent-3b25f833685417041f959cd4cccc680228ef9ceda6772549180cc543673f264b9a1b509d4d99da1dc739a5bcab7878e431b83904f7acb577ce9d372d50dcee07", + "file": "src/app/authoring-tool/edit-connected-components-with-background/edit-connected-components-with-background.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "template": "", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "allowedConnectedComponentTypes", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "line": 21, + "type": "string[]", + "decorators": [], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "line": 18, + "type": "any", + "decorators": [], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "line": 19, + "type": "string", + "decorators": [], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "connectedComponents", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "line": 22, + "type": "any[]", + "decorators": [], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 20, + "type": "string", + "decorators": [], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + } + ], + "outputsClass": [ + { + "name": "connectedComponentsChanged", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 23, + "type": "EventEmitter", + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + } + ], + "propertiesClass": [ + { + "name": "componentTypesThatCanImportWorkAsBackground", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 9 + }, + { + "name": "nodeIds", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 24, + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + } + ], + "methodsClass": [ + { + "name": "afterComponentIdChanged", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 21, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "canConnectedComponentTypeImportWorkAsBackground", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 15, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addConnectedComponent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 34, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "automaticallySetConnectedComponentFieldsIfPossible", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 74, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "automaticallySetConnectedComponentTypeIfPossible", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 57, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "connectedComponentChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "connectedComponentComponentIdChanged", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 51, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "connectedComponentNodeIdChanged", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 47, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "connectedComponentTypeChanged", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 66, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "connectedComponentTypeIsSpecificType", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 106, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "createConnectedComponent", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 39, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "deleteConnectedComponent", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 76, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "getComponents", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 87, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "getConnectedComponentType", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 95, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "getNodePositionAndTitle", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 91, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "isConnectedComponentTypeAllowed", + "args": [ + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 70, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 28, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { ProjectService } from '../../../assets/wise5/services/projectService';\nimport { EditConnectedComponentsComponent } from '../edit-connected-components/edit-connected-components.component';\n\n@Component({\n template: ''\n})\nexport class EditConnectedComponentsWithBackgroundComponent extends EditConnectedComponentsComponent {\n componentTypesThatCanImportWorkAsBackground: string[] = [];\n\n constructor(protected projectService: ProjectService) {\n super(projectService);\n }\n\n canConnectedComponentTypeImportWorkAsBackground(connectedComponent: any): boolean {\n return this.componentTypesThatCanImportWorkAsBackground.includes(\n this.getConnectedComponentType(connectedComponent)\n );\n }\n\n afterComponentIdChanged(connectedComponent: any): void {\n if (this.canConnectedComponentTypeImportWorkAsBackground(connectedComponent)) {\n connectedComponent.importWorkAsBackground = true;\n } else {\n delete connectedComponent.importWorkAsBackground;\n }\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 9, + "jsdoctags": [ + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "EditConnectedComponentsComponent" + ] + }, + { + "name": "EditConnectedComponentTypeSelectComponent", + "id": "component-EditConnectedComponentTypeSelectComponent-d90889033a7a680a919128217f0c30895d8e4b9356b8e370d9ca5aede65c7c9119db10db0821aaecd57c0c4f8d0b16751ba2e50a5116d89d9923806647444e4c", + "file": "src/app/authoring-tool/edit-connected-component-type-select/edit-connected-component-type-select.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "edit-connected-component-type-select", + "styleUrls": [], + "styles": [], + "template": " Type\n \n Import Work\n Show Work\n \n ", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "connectedComponent", + "deprecated": false, + "deprecationMessage": "", + "line": 21, + "type": "any", + "decorators": [] + } + ], + "outputsClass": [ + { + "name": "connectedComponentChange", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 22, + "type": "EventEmitter" + } + ], + "propertiesClass": [], + "methodsClass": [ + { + "name": "connectedComponentTypeChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 24, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatSelectModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatSelectModule } from '@angular/material/select';\n\n@Component({\n imports: [FormsModule, MatFormFieldModule, MatSelectModule],\n selector: 'edit-connected-component-type-select',\n template: `\n Type\n \n Import Work\n Show Work\n \n `\n})\nexport class EditConnectedComponentTypeSelectComponent {\n @Input() connectedComponent: any;\n @Output() connectedComponentChange: EventEmitter = new EventEmitter();\n\n protected connectedComponentTypeChanged(): void {\n this.connectedComponentChange.emit(this.connectedComponent);\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [] + }, + { + "name": "EditConstraintRemovalCriteriaComponent", + "id": "component-EditConstraintRemovalCriteriaComponent-d8513da4018207ff1e5477b6969830b777602e5b0389f42e1368118a934d28c10eb617de1a8173ea7b6302962ef3de961358cf09e93a42f3cfd6a5ed9ee96220", + "file": "src/assets/wise5/authoringTool/constraint/edit-constraint-removal-criteria/edit-constraint-removal-criteria.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "edit-constraint-removal-criteria", + "styleUrls": [], + "styles": [ + ".common-width { width: 400px; } .red { color: red; } .mat-icon { margin: 0px; }" + ], + "templateUrl": [ + "./edit-constraint-removal-criteria.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "constraint", + "deprecated": false, + "deprecationMessage": "", + "line": 43, + "type": "any", + "decorators": [] + }, + { + "name": "criteria", + "deprecated": false, + "deprecationMessage": "", + "line": 44, + "type": "any", + "decorators": [] + }, + { + "name": "node", + "deprecated": false, + "deprecationMessage": "", + "line": 45, + "type": "any", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "allNodeIds", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 37, + "modifierKind": [ + 123 + ] + }, + { + "name": "componentIdToIsSelectable", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "literal type", + "indexKey": "", + "optional": false, + "description": "", + "line": 38, + "modifierKind": [ + 124 + ] + }, + { + "name": "componentParam", + "defaultValue": "new RemovalCriteriaParam(\n 'componentId',\n $localize`Component`\n )", + "deprecated": false, + "deprecationMessage": "", + "type": "RemovalCriteriaParam", + "indexKey": "", + "optional": false, + "description": "", + "line": 39, + "modifierKind": [ + 123 + ] + }, + { + "name": "nodeIds", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 46, + "modifierKind": [ + 124 + ] + }, + { + "name": "removalCriteria", + "defaultValue": "[\n new RemovalCriteria('', $localize`Please Choose a Removal Criteria`, []),\n new RemovalCriteria('isCompleted', $localize`Is Completed`, [this.stepParam]),\n new RemovalCriteria('score', $localize`Score`, [\n this.stepParam,\n this.componentParam,\n new RemovalCriteriaParam('scores', $localize`Score(s)`)\n ]),\n new RemovalCriteria('branchPathTaken', $localize`Branch Path Taken`, [\n new RemovalCriteriaParam('fromNodeId', $localize`From Step`),\n new RemovalCriteriaParam('toNodeId', $localize`To Step`)\n ]),\n new RemovalCriteria('choiceChosen', $localize`Choice Chosen`, [\n this.stepParam,\n this.componentParam,\n new RemovalCriteriaParam('choiceIds', $localize`Choices`)\n ]),\n new RemovalCriteria('isCorrect', $localize`Is Correct`, [this.stepParam, this.componentParam]),\n new RemovalCriteria('usedXSubmits', $localize`Used X Submits`, [\n this.stepParam,\n this.componentParam,\n new RemovalCriteriaParam('requiredSubmitCount', $localize`Required Submit Count`)\n ]),\n new RemovalCriteria('isVisible', $localize`Is Visible`, [this.stepParam]),\n new RemovalCriteria('isVisitable', $localize`Is Visitable`, [this.stepParam]),\n new RemovalCriteria('isVisited', $localize`Is Visited`, [this.stepParam]),\n new RemovalCriteria('wroteXNumberOfWords', $localize`Wrote X Number of Words`, [\n this.stepParam,\n this.componentParam,\n new RemovalCriteriaParam('requiredNumberOfWords', $localize`Required Number of Words`)\n ]),\n new RemovalCriteria(\n 'addXNumberOfNotesOnThisStep',\n $localize`Add X Number of Notes On This Step`,\n [\n this.stepParam,\n new RemovalCriteriaParam('requiredNumberOfNotes', $localize`Required Number of Notes`)\n ]\n ),\n new RemovalCriteria('fillXNumberOfRows', $localize`Fill X Number of Rows`, [\n this.stepParam,\n this.componentParam,\n new RemovalCriteriaParam(\n 'requiredNumberOfFilledRows',\n $localize`Required Number of Filled Rows (Not Including Header Row)`\n ),\n new RemovalCriteriaParam('tableHasHeaderRow', $localize`Table Has Header Row`, true),\n new RemovalCriteriaParam(\n 'requireAllCellsInARowToBeFilled',\n $localize`Require All Cells In a Row To Be Filled`,\n true\n )\n ]),\n new RemovalCriteria('teacherRemoval', $localize`Teacher Removes Constraint`, [])\n ]", + "deprecated": false, + "deprecationMessage": "", + "type": "[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 50, + "modifierKind": [ + 124 + ] + }, + { + "name": "removalCriteriaHelper", + "deprecated": false, + "deprecationMessage": "", + "type": "EditConstraintRemovalCriteriaHelper", + "indexKey": "", + "optional": false, + "description": "", + "line": 47, + "modifierKind": [ + 123 + ] + }, + { + "name": "stepParam", + "defaultValue": "new RemovalCriteriaParam('nodeId', $localize`Step`)", + "deprecated": false, + "deprecationMessage": "", + "type": "RemovalCriteriaParam", + "indexKey": "", + "optional": false, + "description": "", + "line": 48, + "modifierKind": [ + 123 + ] + } + ], + "methodsClass": [ + { + "name": "deleteRemovalCriteria", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 135, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "getChoices", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 203, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getChoiceType", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 195, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getComponents", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "ComponentContent[]", + "typeParameters": [], + "line": 186, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getNodePosition", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 178, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getNodeTitle", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 182, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getParamsByName", + "args": [ + { + "name": "name", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 162, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "name", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getStepsWithComponentType", + "args": [ + { + "name": "allNodeIds", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 127, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "allNodeIds", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "nameChanged", + "args": [ + { + "name": "criteria", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 143, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "criteria", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 108, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeIdChanged", + "args": [ + { + "name": "criteria", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 171, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "criteria", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "saveProject", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 207, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "scoresChanged", + "args": [ + { + "name": "value", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "params", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 190, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "value", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "params", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setNodeIds", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 118, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatCheckboxModule", + "type": "module" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatInputModule", + "type": "module" + }, + { + "name": "MatSelectModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + }, + { + "name": "RequiredErrorLabelComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input, OnInit } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { RemovalCriteria } from '../../../../../app/domain/removalCriteria';\nimport { RemovalCriteriaParam } from '../../../../../app/domain/removalCriteriaParam';\nimport { ComponentContent } from '../../../common/ComponentContent';\nimport { MultipleChoiceContent } from '../../../components/multipleChoice/MultipleChoiceContent';\nimport { TeacherProjectService } from '../../../services/teacherProjectService';\nimport { RequiredErrorLabelComponent } from '../../node/advanced/required-error-label/required-error-label.component';\nimport { EditConstraintRemovalCriteriaHelper } from './edit-constraint-removal-criteria-helper';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n imports: [\n CommonModule,\n FormsModule,\n MatButtonModule,\n MatCheckboxModule,\n MatFormFieldModule,\n MatIconModule,\n MatInputModule,\n MatSelectModule,\n MatTooltipModule,\n RequiredErrorLabelComponent\n ],\n selector: 'edit-constraint-removal-criteria',\n styles: ['.common-width { width: 400px; } .red { color: red; } .mat-icon { margin: 0px; }'],\n templateUrl: './edit-constraint-removal-criteria.component.html'\n})\nexport class EditConstraintRemovalCriteriaComponent implements OnInit {\n private allNodeIds: string[];\n protected componentIdToIsSelectable: { [componentId: string]: boolean } = {};\n private componentParam: RemovalCriteriaParam = new RemovalCriteriaParam(\n 'componentId',\n $localize`Component`\n );\n @Input() constraint: any;\n @Input() criteria: any;\n @Input() node: any;\n protected nodeIds: string[];\n private removalCriteriaHelper: EditConstraintRemovalCriteriaHelper;\n private stepParam: RemovalCriteriaParam = new RemovalCriteriaParam('nodeId', $localize`Step`);\n\n protected removalCriteria = [\n new RemovalCriteria('', $localize`Please Choose a Removal Criteria`, []),\n new RemovalCriteria('isCompleted', $localize`Is Completed`, [this.stepParam]),\n new RemovalCriteria('score', $localize`Score`, [\n this.stepParam,\n this.componentParam,\n new RemovalCriteriaParam('scores', $localize`Score(s)`)\n ]),\n new RemovalCriteria('branchPathTaken', $localize`Branch Path Taken`, [\n new RemovalCriteriaParam('fromNodeId', $localize`From Step`),\n new RemovalCriteriaParam('toNodeId', $localize`To Step`)\n ]),\n new RemovalCriteria('choiceChosen', $localize`Choice Chosen`, [\n this.stepParam,\n this.componentParam,\n new RemovalCriteriaParam('choiceIds', $localize`Choices`)\n ]),\n new RemovalCriteria('isCorrect', $localize`Is Correct`, [this.stepParam, this.componentParam]),\n new RemovalCriteria('usedXSubmits', $localize`Used X Submits`, [\n this.stepParam,\n this.componentParam,\n new RemovalCriteriaParam('requiredSubmitCount', $localize`Required Submit Count`)\n ]),\n new RemovalCriteria('isVisible', $localize`Is Visible`, [this.stepParam]),\n new RemovalCriteria('isVisitable', $localize`Is Visitable`, [this.stepParam]),\n new RemovalCriteria('isVisited', $localize`Is Visited`, [this.stepParam]),\n new RemovalCriteria('wroteXNumberOfWords', $localize`Wrote X Number of Words`, [\n this.stepParam,\n this.componentParam,\n new RemovalCriteriaParam('requiredNumberOfWords', $localize`Required Number of Words`)\n ]),\n new RemovalCriteria(\n 'addXNumberOfNotesOnThisStep',\n $localize`Add X Number of Notes On This Step`,\n [\n this.stepParam,\n new RemovalCriteriaParam('requiredNumberOfNotes', $localize`Required Number of Notes`)\n ]\n ),\n new RemovalCriteria('fillXNumberOfRows', $localize`Fill X Number of Rows`, [\n this.stepParam,\n this.componentParam,\n new RemovalCriteriaParam(\n 'requiredNumberOfFilledRows',\n $localize`Required Number of Filled Rows (Not Including Header Row)`\n ),\n new RemovalCriteriaParam('tableHasHeaderRow', $localize`Table Has Header Row`, true),\n new RemovalCriteriaParam(\n 'requireAllCellsInARowToBeFilled',\n $localize`Require All Cells In a Row To Be Filled`,\n true\n )\n ]),\n new RemovalCriteria('teacherRemoval', $localize`Teacher Removes Constraint`, [])\n ];\n\n constructor(private projectService: TeacherProjectService) {}\n\n ngOnInit(): void {\n this.allNodeIds = this.projectService.getFlattenedProjectAsNodeIds(true);\n this.removalCriteriaHelper = new EditConstraintRemovalCriteriaHelper(\n this.projectService,\n this.componentIdToIsSelectable\n );\n this.setNodeIds();\n this.removalCriteriaHelper.calculateSelectableComponents(this.criteria);\n }\n\n private setNodeIds(): void {\n this.nodeIds = this.removalCriteriaHelper.hasCriteriaNameToComponentType(this.criteria.name)\n ? this.getStepsWithComponentType(\n this.allNodeIds,\n this.removalCriteriaHelper.getCriteriaNameToComponentType(this.criteria.name)\n )\n : this.allNodeIds;\n }\n\n private getStepsWithComponentType(allNodeIds: string[], componentType: string): any[] {\n return allNodeIds.filter((nodeId) =>\n this.projectService\n .getNode(nodeId)\n .components.some((component) => component.type === componentType)\n );\n }\n\n protected deleteRemovalCriteria(): void {\n if (confirm($localize`Are you sure you want to delete this removal criteria?`)) {\n const removalCriteria = this.constraint.removalCriteria;\n removalCriteria.splice(removalCriteria.indexOf(this.criteria), 1);\n this.saveProject();\n }\n }\n\n protected nameChanged(criteria: any): void {\n criteria.params = {};\n const params = this.getParamsByName(criteria.name);\n for (const paramObject of params) {\n const value = paramObject.value;\n criteria.params[value] = paramObject.defaultValue;\n if (\n value === 'nodeId' &&\n this.removalCriteriaHelper.stepContainsAcceptableComponent(this.node.id, criteria)\n ) {\n criteria.params[value] = this.node.id;\n }\n }\n this.setNodeIds();\n this.removalCriteriaHelper.calculateSelectableComponents(criteria);\n this.removalCriteriaHelper.automaticallySelectComponentIfPossible(criteria);\n this.saveProject();\n }\n\n protected getParamsByName(name: string): any[] {\n for (const singleRemovalCriteria of this.removalCriteria) {\n if (singleRemovalCriteria.value === name) {\n return singleRemovalCriteria.params;\n }\n }\n return [];\n }\n\n protected nodeIdChanged(criteria: any): void {\n criteria.params.componentId = '';\n this.removalCriteriaHelper.calculateSelectableComponents(criteria);\n this.removalCriteriaHelper.automaticallySelectComponentIfPossible(criteria);\n this.saveProject();\n }\n\n protected getNodePosition(nodeId: string): string {\n return this.projectService.getNodePositionById(nodeId);\n }\n\n protected getNodeTitle(nodeId: string): string {\n return this.projectService.getNodeTitle(nodeId);\n }\n\n protected getComponents(nodeId: string): ComponentContent[] {\n return this.projectService.getComponents(nodeId);\n }\n\n protected scoresChanged(value: any, params: any): void {\n params.scores = value.split(',');\n this.saveProject();\n }\n\n protected getChoiceType(nodeId: string, componentId: string): string {\n const component = this.projectService.getComponent(\n nodeId,\n componentId\n ) as MultipleChoiceContent;\n return component != null && component.choiceType != null ? component.choiceType : null;\n }\n\n protected getChoices(nodeId: string, componentId: string): any[] {\n return this.projectService.getChoices(nodeId, componentId);\n }\n\n protected saveProject(): void {\n this.projectService.saveProject();\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": ".common-width { width: 400px; } .red { color: red; } .mat-icon { margin: 0px; }\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 104, + "jsdoctags": [ + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "
\n Removal Criteria\n \n delete\n \n
\n
\n \n Removal Criteria Name\n \n @for (criterion of removalCriteria; track criterion; let criterionIndex = $index) {\n \n {{ criterion.text }}\n \n }\n \n \n @if (criteria.name === '') {\n \n }\n
\n@for (param of getParamsByName(criteria.name); track param) {\n
\n @if (param.value === 'nodeId') {\n
\n \n {{ param.text }}\n \n \n Please Choose a Step\n \n @for (nodeId of nodeIds; track nodeId) {\n \n {{ getNodePosition(nodeId) + ':' }} {{ getNodeTitle(nodeId) }} ({{\n nodeId\n }})\n \n }\n \n \n @if (criteria.params.nodeId === '') {\n \n }\n
\n } @else if (param.value === 'componentId') {\n
\n \n {{ param.text }}\n \n \n Please Choose a Component\n \n @for (\n component of getComponents(criteria.params.nodeId);\n track component;\n let componentIndex = $index\n ) {\n @if (componentIdToIsSelectable[component.id]) {\n \n {{ componentIndex + 1 }}. {{ component.type }} (Prompt:\n {{ component.prompt }})\n \n }\n }\n \n \n @if (criteria.params.componentId === '') {\n \n }\n
\n } @else if (param.value === 'fromNodeId') {\n
\n \n {{ param.text }}\n \n \n Please Select a From Step\n \n @for (nodeId of nodeIds; track nodeId) {\n \n {{ getNodePosition(nodeId) + ':' }} {{ getNodeTitle(nodeId) }} ({{ nodeId }})\n \n \n }\n \n \n @if (criteria.params.fromNodeId == null || criteria.params.fromNodeId === '') {\n \n }\n
\n } @else if (param.value === 'toNodeId') {\n
\n \n {{ param.text }}\n \n \n Please Select a To Step\n \n @for (nodeId of nodeIds; track nodeId) {\n \n {{ getNodePosition(nodeId) + ':' }} {{ getNodeTitle(nodeId) }} ({{\n nodeId\n }})\n \n }\n \n \n @if (criteria.params.toNodeId == null || criteria.params.toNodeId === '') {\n \n }\n
\n } @else if (param.value === 'scores') {\n
\n \n {{ param.text }}\n \n \n @if (\n criteria.params.scores.length === 0 ||\n (criteria.params.scores.length === 1 && criteria.params.scores[0] === '')\n ) {\n \n }\n
\n } @else if (param.value === 'requiredSubmitCount') {\n
\n @if (param.value === 'requiredSubmitCount') {\n \n {{ param.text }}\n \n \n }\n @if (\n criteria.params.requiredSubmitCount == null || criteria.params.requiredSubmitCount === ''\n ) {\n \n }\n
\n } @else if (\n param.value === 'choiceIds' &&\n getChoiceType(criteria.params.nodeId, criteria.params.componentId) === 'radio'\n ) {\n
\n \n {{ param.text }}\n \n \n \n Please Select a Choice\n \n \n @for (\n choice of getChoices(criteria.params.nodeId, criteria.params.componentId);\n track choice.id\n ) {\n \n {{ choice.text }}\n \n }\n \n \n @if (criteria.params.choiceIds === '') {\n \n }\n
\n } @else if (\n param.value === 'choiceIds' &&\n getChoiceType(criteria.params.nodeId, criteria.params.componentId) === 'checkbox'\n ) {\n
\n \n {{ param.text }}\n \n \n \n @if (criteria.params.choiceIds.length === 0) {\n \n }\n
\n } @else if (param.value === 'requiredNumberOfWords') {\n
\n \n {{ param.text }}\n \n \n @if (\n criteria.params.requiredNumberOfWords == null ||\n criteria.params.requiredNumberOfWords === ''\n ) {\n \n }\n
\n } @else if (param.value === 'requiredNumberOfNotes') {\n
\n \n {{ param.text }}\n \n \n @if (\n criteria.params.requiredNumberOfNotes == null ||\n criteria.params.requiredNumberOfNotes === ''\n ) {\n \n }\n
\n } @else if (param.value === 'requiredNumberOfFilledRows') {\n
\n \n {{ param.text }}\n \n \n @if (\n criteria.params.requiredNumberOfFilledRows == null ||\n criteria.params.requiredNumberOfFilledRows === ''\n ) {\n \n }\n
\n } @else if (param.value === 'tableHasHeaderRow') {\n \n {{ param.text }}\n \n } @else if (param.value === 'requireAllCellsInARowToBeFilled') {\n \n {{ param.text }}\n \n }\n
\n}\n" + }, + { + "name": "EditCRaterDescriptionComponent", + "id": "component-EditCRaterDescriptionComponent-df3f12b1beeb6b96644c2f7b6dbd10abfc41197c71c798f9743408935a42158db823a3ad92e6ac6e7bafe64ff07ddd1ef794e930c74416cdb2f6244303b4fa03", + "file": "src/assets/wise5/components/common/cRater/edit-crater-description/edit-crater-description.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "edit-crater-description", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./edit-crater-description.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "cRaterRubric", + "defaultValue": "new CRaterRubric({ description: '', ideas: [] })", + "deprecated": false, + "deprecationMessage": "", + "line": 18, + "type": "CRaterRubric", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "inputChanged", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "modifierKind": [ + 124 + ] + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 20, + "modifierKind": [ + 123 + ] + } + ], + "methodsClass": [ + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 32, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 24, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CdkTextareaAutosize" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatInputModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { CdkTextareaAutosize } from '@angular/cdk/text-field';\nimport { Component, Input } from '@angular/core';\nimport { CRaterRubric } from '../CRaterRubric';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport { FormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { Subject, Subscription } from 'rxjs';\nimport { TeacherProjectService } from '../../../../services/teacherProjectService';\n\n@Component({\n selector: 'edit-crater-description',\n imports: [CdkTextareaAutosize, FormsModule, MatFormFieldModule, MatInputModule],\n templateUrl: './edit-crater-description.component.html',\n styleUrl: './edit-crater-description.component.scss'\n})\nexport class EditCRaterDescriptionComponent {\n @Input() cRaterRubric: CRaterRubric = new CRaterRubric({ description: '', ideas: [] });\n protected inputChanged: Subject = new Subject();\n private subscriptions: Subscription = new Subscription();\n\n constructor(private projectService: TeacherProjectService) {}\n\n ngOnInit(): void {\n this.subscriptions.add(\n this.inputChanged.pipe(debounceTime(1000), distinctUntilChanged()).subscribe(() => {\n this.projectService.nodeChanged();\n })\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n}\n", + "styleUrl": "./edit-crater-description.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 20, + "jsdoctags": [ + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "\n User-Friendly Description\n \n\n" + }, + { + "name": "EditCRaterIdeaDescriptionsComponent", + "id": "component-EditCRaterIdeaDescriptionsComponent-23c7de188bb728244a7d72d6cc974003dc6ff74a4801d4e4b7303d311f20ac404f2deb22f5a55a0024a2202cfd8809d299dfc1ea9532c8744564a3edae5ad113", + "file": "src/assets/wise5/components/common/cRater/edit-crater-idea-descriptions/edit-crater-idea-descriptions.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "edit-crater-idea-descriptions", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./edit-crater-idea-descriptions.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "enableAutoscrolling", + "defaultValue": "true", + "deprecated": false, + "deprecationMessage": "", + "line": 32, + "type": "boolean", + "decorators": [] + }, + { + "name": "ideaDescriptions", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "line": 31, + "type": "CRaterIdea[]", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "inputChanged", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 33, + "modifierKind": [ + 124 + ] + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 34, + "modifierKind": [ + 123 + ] + } + ], + "methodsClass": [ + { + "name": "addNewIdeaDescription", + "args": [ + { + "name": "addToTop", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 50, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "addToTop", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createNewIdea", + "args": [], + "optional": false, + "returnType": "CRaterIdea", + "typeParameters": [], + "line": 63, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "deleteIdeaDescription", + "args": [ + { + "name": "ideaIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 82, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "ideaIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getNumIdeaDescriptions", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 69, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 46, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 38, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "scrollToBottomOfList", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 73, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CdkTextareaAutosize" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatCardModule", + "type": "module" + }, + { + "name": "MatInputModule", + "type": "module" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { CdkTextareaAutosize } from '@angular/cdk/text-field';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { CRaterIdea } from '../CRaterIdea';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { Subject, Subscription } from 'rxjs';\nimport { TeacherProjectService } from '../../../../services/teacherProjectService';\n\n@Component({\n imports: [\n CdkTextareaAutosize,\n FormsModule,\n MatCardModule,\n MatInputModule,\n MatFormFieldModule,\n MatButtonModule,\n MatIconModule,\n MatTooltipModule\n ],\n selector: 'edit-crater-idea-descriptions',\n templateUrl: './edit-crater-idea-descriptions.component.html',\n styleUrl: './edit-crater-idea-descriptions.component.scss'\n})\nexport class EditCRaterIdeaDescriptionsComponent implements OnInit {\n @Input() ideaDescriptions: CRaterIdea[] = [];\n @Input() enableAutoscrolling: boolean = true;\n protected inputChanged: Subject = new Subject();\n private subscriptions: Subscription = new Subscription();\n\n constructor(protected projectService: TeacherProjectService) {}\n\n ngOnInit(): void {\n this.subscriptions.add(\n this.inputChanged.pipe(debounceTime(1000), distinctUntilChanged()).subscribe(() => {\n this.projectService.nodeChanged();\n })\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n protected addNewIdeaDescription(addToTop: boolean): void {\n const newIdeaDescription = this.createNewIdea();\n this.ideaDescriptions.splice(\n addToTop ? 0 : this.getNumIdeaDescriptions(),\n 0,\n newIdeaDescription\n );\n this.projectService.nodeChanged();\n if (!addToTop && this.enableAutoscrolling) {\n this.scrollToBottomOfList();\n }\n }\n\n private createNewIdea(): CRaterIdea {\n const idea = new CRaterIdea('');\n idea.text = '';\n return idea;\n }\n\n protected getNumIdeaDescriptions(): number {\n return this.ideaDescriptions.length;\n }\n\n private scrollToBottomOfList(): void {\n setTimeout(() => {\n const button = document.getElementById('add-new-idea-description-bottom-button');\n if (button) {\n button.scrollIntoView();\n }\n }, 0);\n }\n\n protected deleteIdeaDescription(ideaIndex: number): void {\n if (confirm($localize`Are you sure you want to delete this idea description?`)) {\n this.ideaDescriptions.splice(ideaIndex, 1);\n this.projectService.nodeChanged();\n }\n }\n}\n", + "styleUrl": "./edit-crater-idea-descriptions.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 34, + "jsdoctags": [ + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "
\n
\n Idea Descriptions\n \n add_circle\n \n \n
\n
    \n @for (\n idea of ideaDescriptions;\n track $index;\n let ideaIndex = $index, first = $first, last = $last\n ) {\n
  • \n \n
    \n
    \n {{ ideaIndex + 1 }}\n
    \n
    \n \n Idea ID\n \n \n \n User-Friendly Description\n \n \n \n
    \n
    \n \n clear\n \n
    \n
    \n
    \n
  • \n }\n
\n
\n \n add_circle\n \n
\n
\n" + }, + { + "name": "EditCRaterInfoComponent", + "id": "component-EditCRaterInfoComponent-83119456189a8d50f3c33825f50a38a2b0ebb0dfbc0564dc7ebefde67b07f6e610ed44a054f6d7189d2f3de7afed71ee1a665426a439aa8b820b57b817836936", + "file": "src/assets/wise5/components/common/cRater/edit-crater-info/edit-crater-info.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "edit-crater-info", + "styleUrls": [], + "styles": [], + "template": "
AI Model Details
\n ", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "cRaterRubric", + "deprecated": false, + "deprecationMessage": "", + "line": 14, + "type": "CRaterRubric", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [], + "methodsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "EditCRaterDescriptionComponent", + "type": "component" + }, + { + "name": "EditCRaterIdeaDescriptionsComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input } from '@angular/core';\nimport { CRaterRubric } from '../CRaterRubric';\nimport { EditCRaterDescriptionComponent } from '../edit-crater-description/edit-crater-description.component';\nimport { EditCRaterIdeaDescriptionsComponent } from '../edit-crater-idea-descriptions/edit-crater-idea-descriptions.component';\n\n@Component({\n selector: 'edit-crater-info',\n imports: [EditCRaterDescriptionComponent, EditCRaterIdeaDescriptionsComponent],\n template: `
AI Model Details
\n \n `\n})\nexport class EditCRaterInfoComponent {\n @Input() cRaterRubric: CRaterRubric;\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [] + }, + { + "name": "EditDialogGuidanceAdvancedComponent", + "id": "component-EditDialogGuidanceAdvancedComponent-1515f2ae646c17e80bfdc11cb6b9f9da27a82110041cb3b60b1d232bd0950ac227245e4c0847f4fa9ee566ffcc9d97540233423c5c9eb7234864067b1f6e4e9f", + "file": "src/assets/wise5/components/dialogGuidance/edit-dialog-guidance-advanced/edit-dialog-guidance-advanced.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "template": "\n\n", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "line": 13, + "type": "string", + "decorators": [], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 14, + "type": "string", + "decorators": [], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "component", + "deprecated": false, + "deprecationMessage": "", + "type": "Component", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "ComponentContent", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + } + ], + "methodsClass": [ + { + "name": "componentChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 47, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "connectedComponentsChanged", + "args": [ + { + "name": "connectedComponents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 42, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "isNotebookEnabled", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 38, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "moveObjectDown", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 56, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "moveObjectUp", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 51, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "setShowSubmitButtonValue", + "args": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 28, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "EditComponentConstraintsComponent", + "type": "component" + }, + { + "name": "EditComponentJsonComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { EditAdvancedComponentComponent } from '../../../../../app/authoring-tool/edit-advanced-component/edit-advanced-component.component';\nimport { EditComponentConstraintsComponent } from '../../../../../app/authoring-tool/edit-component-constraints/edit-component-constraints.component';\nimport { EditComponentJsonComponent } from '../../../../../app/authoring-tool/edit-component-json/edit-component-json.component';\n\n@Component({\n imports: [EditComponentConstraintsComponent, EditComponentJsonComponent],\n template: `\n \n \n `\n})\nexport class EditDialogGuidanceAdvancedComponent extends EditAdvancedComponentComponent {}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [ + "EditAdvancedComponentComponent" + ] + }, + { + "name": "EditDialogGuidanceComputerAvatarComponent", + "id": "component-EditDialogGuidanceComputerAvatarComponent-4e8ea00672b4398c8cd3e30753070c872d0c7468e2e913662461c3bf83e212c22c09d687b36341bd6d3ba5071d8d03c57086eee166720a2f10b148d329136975", + "file": "src/assets/wise5/components/dialogGuidance/edit-dialog-guidance-computer-avatar/edit-dialog-guidance-computer-avatar.component.ts", + "encapsulation": [ + "ViewEncapsulation.None" + ], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "edit-dialog-guidance-computer-avatar", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./edit-dialog-guidance-computer-avatar.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "computerAvatarSettings", + "deprecated": false, + "deprecationMessage": "", + "line": 29, + "type": "ComputerAvatarSettings", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "allComputerAvatars", + "deprecated": false, + "deprecationMessage": "", + "type": "ComputerAvatar[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 31 + }, + { + "name": "avatarsPath", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 32 + } + ], + "methodsClass": [ + { + "name": "componentChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 91, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isLastSelectedComputerAvatar", + "args": [ + { + "name": "computerAvatar", + "type": "ComputerAvatar", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 77, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "computerAvatar", + "type": "ComputerAvatar", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 39, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "populateSelectedComputerAvatars", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 46, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "saveSelectedComputerAvatars", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 81, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "selectAllComputerAvatars", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 54, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "toggleSelectComputerAvatar", + "args": [ + { + "name": "computerAvatar", + "type": "ComputerAvatar", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 70, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "computerAvatar", + "type": "ComputerAvatar", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "unselectAllComputerAvatars", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 61, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatCheckbox" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "TranslatableInputComponent", + "type": "component" + }, + { + "name": "MatButton" + }, + { + "name": "MatButtonToggleGroup" + }, + { + "name": "MatButtonToggle" + }, + { + "name": "MatIcon" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input, OnInit, ViewEncapsulation } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatButton } from '@angular/material/button';\nimport { MatButtonToggle, MatButtonToggleGroup } from '@angular/material/button-toggle';\nimport { MatCheckbox } from '@angular/material/checkbox';\nimport { MatIcon } from '@angular/material/icon';\nimport { TranslatableInputComponent } from '../../../authoringTool/components/translatable-input/translatable-input.component';\nimport { ComputerAvatar } from '../../../common/computer-avatar/ComputerAvatar';\nimport { ComputerAvatarSettings } from '../../../common/computer-avatar/ComputerAvatarSettings';\nimport { ComputerAvatarService } from '../../../services/computerAvatarService';\nimport { TeacherProjectService } from '../../../services/teacherProjectService';\n\n@Component({\n encapsulation: ViewEncapsulation.None,\n selector: 'edit-dialog-guidance-computer-avatar',\n styleUrl: 'edit-dialog-guidance-computer-avatar.component.scss',\n templateUrl: './edit-dialog-guidance-computer-avatar.component.html',\n imports: [\n MatCheckbox,\n FormsModule,\n TranslatableInputComponent,\n MatButton,\n MatButtonToggleGroup,\n MatButtonToggle,\n MatIcon\n ]\n})\nexport class EditDialogGuidanceComputerAvatarComponent implements OnInit {\n @Input() computerAvatarSettings: ComputerAvatarSettings;\n\n allComputerAvatars: ComputerAvatar[];\n avatarsPath: string;\n\n constructor(\n private computerAvatarService: ComputerAvatarService,\n private projectService: TeacherProjectService\n ) {}\n\n ngOnInit(): void {\n this.allComputerAvatars = this.computerAvatarService.getAvatars();\n this.avatarsPath = this.computerAvatarService.getAvatarsPath();\n this.populateSelectedComputerAvatars();\n this.componentChanged();\n }\n\n private populateSelectedComputerAvatars(): void {\n for (const availableComputerAvatar of this.allComputerAvatars) {\n if (this.computerAvatarSettings.ids.includes(availableComputerAvatar.id)) {\n availableComputerAvatar.isSelected = true;\n }\n }\n }\n\n selectAllComputerAvatars(): void {\n for (const computerAvatar of this.allComputerAvatars) {\n computerAvatar.isSelected = true;\n }\n this.saveSelectedComputerAvatars();\n }\n\n unselectAllComputerAvatars(): void {\n for (const computerAvatar of this.allComputerAvatars) {\n computerAvatar.isSelected = false;\n }\n // select the first avatar to make sure there is always at least one selected\n this.allComputerAvatars[0].isSelected = true;\n this.saveSelectedComputerAvatars();\n }\n\n toggleSelectComputerAvatar(computerAvatar: ComputerAvatar): void {\n if (!this.isLastSelectedComputerAvatar(computerAvatar)) {\n computerAvatar.isSelected = !computerAvatar.isSelected;\n this.saveSelectedComputerAvatars();\n }\n }\n\n isLastSelectedComputerAvatar(computerAvatar: ComputerAvatar): boolean {\n return computerAvatar.isSelected && this.computerAvatarSettings.ids.length === 1;\n }\n\n saveSelectedComputerAvatars(): void {\n this.computerAvatarSettings.ids = [];\n for (const computerAvatar of this.allComputerAvatars) {\n if (computerAvatar.isSelected) {\n this.computerAvatarSettings.ids.push(computerAvatar.id);\n }\n }\n this.componentChanged();\n }\n\n componentChanged(): void {\n this.projectService.nodeChanged();\n }\n}\n", + "styleUrl": "edit-dialog-guidance-computer-avatar.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "computerAvatarService", + "type": "ComputerAvatarService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 32, + "jsdoctags": [ + { + "name": "computerAvatarService", + "type": "ComputerAvatarService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "
\n Use Global Computer Avatar\n \n \n \n
\n
Computer avatars students can choose:
\n
\n \n Select All\n \n \n Select None\n \n
\n
\n \n @for (computerAvatar of allComputerAvatars; track computerAvatar) {\n \n \n
\n {{ computerAvatar.name }}\n @if (computerAvatar.isSelected) {\n check_circle\n }\n @if (!computerAvatar.isSelected) {\n cancel\n }\n
\n \n }\n \n
\n
\n
\n" + }, + { + "name": "EditDiscussionAdvancedComponent", + "id": "component-EditDiscussionAdvancedComponent-cb288def9cbb524597aed1dab13da0a1da0424e336edc9f69d7bde25701f963d1139bbdfbc19e17fc1c439e0f6362684ed64dae3d71230208001f607ff8a0131", + "file": "src/assets/wise5/components/discussion/edit-discussion-advanced/edit-discussion-advanced.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "edit-discussion-advanced.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "line": 13, + "type": "string", + "decorators": [], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 14, + "type": "string", + "decorators": [], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "allowedConnectedComponentTypes", + "defaultValue": "['Discussion']", + "deprecated": false, + "deprecationMessage": "", + "type": "[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 26 + }, + { + "name": "component", + "deprecated": false, + "deprecationMessage": "", + "type": "Component", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "ComponentContent", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + } + ], + "methodsClass": [ + { + "name": "componentChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 47, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "connectedComponentsChanged", + "args": [ + { + "name": "connectedComponents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 42, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "isNotebookEnabled", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 38, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "moveObjectDown", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 56, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "moveObjectUp", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 51, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "setShowSubmitButtonValue", + "args": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 28, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "EditComponentMaxScoreComponent", + "type": "component" + }, + { + "name": "EditComponentExcludeFromTotalScoreComponent", + "type": "component" + }, + { + "name": "EditComponentWidthComponent", + "type": "component" + }, + { + "name": "EditComponentRubricComponent", + "type": "component" + }, + { + "name": "EditComponentTagsComponent", + "type": "component" + }, + { + "name": "EditDiscussionConnectedComponentsComponent", + "type": "component" + }, + { + "name": "EditComponentConstraintsComponent", + "type": "component" + }, + { + "name": "EditComponentJsonComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { EditAdvancedComponentComponent } from '../../../../../app/authoring-tool/edit-advanced-component/edit-advanced-component.component';\nimport { EditComponentMaxScoreComponent } from '../../../../../app/authoring-tool/edit-component-max-score/edit-component-max-score.component';\nimport { EditComponentExcludeFromTotalScoreComponent } from '../../../../../app/authoring-tool/edit-component-exclude-from-total-score/edit-component-exclude-from-total-score.component';\nimport { EditComponentWidthComponent } from '../../../../../app/authoring-tool/edit-component-width/edit-component-width.component';\nimport { EditComponentRubricComponent } from '../../../../../app/authoring-tool/edit-component-rubric/edit-component-rubric.component';\nimport { EditComponentTagsComponent } from '../../../../../app/authoring-tool/edit-component-tags/edit-component-tags.component';\nimport { EditDiscussionConnectedComponentsComponent } from '../edit-discussion-connected-components/edit-discussion-connected-components.component';\nimport { EditComponentConstraintsComponent } from '../../../../../app/authoring-tool/edit-component-constraints/edit-component-constraints.component';\nimport { EditComponentJsonComponent } from '../../../../../app/authoring-tool/edit-component-json/edit-component-json.component';\n\n@Component({\n templateUrl: 'edit-discussion-advanced.component.html',\n imports: [\n EditComponentMaxScoreComponent,\n EditComponentExcludeFromTotalScoreComponent,\n EditComponentWidthComponent,\n EditComponentRubricComponent,\n EditComponentTagsComponent,\n EditDiscussionConnectedComponentsComponent,\n EditComponentConstraintsComponent,\n EditComponentJsonComponent\n ]\n})\nexport class EditDiscussionAdvancedComponent extends EditAdvancedComponentComponent {\n allowedConnectedComponentTypes = ['Discussion'];\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [ + "EditAdvancedComponentComponent" + ], + "templateData": "
\n \n \n \n \n \n
\n\n\n\n" + }, + { + "name": "EditDiscussionConnectedComponentsComponent", + "id": "component-EditDiscussionConnectedComponentsComponent-abbcaa7907ba39359c018f5fa243c505caf9ef093b3fb0bfe081c4e635458d167493797f236b0657ef3c34db39e91b7849a7fcd8cce990ef1a13e4e1e11b77cb", + "file": "src/assets/wise5/components/discussion/edit-discussion-connected-components/edit-discussion-connected-components.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "edit-discussion-connected-components", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "../../../../../app/authoring-tool/edit-connected-components/edit-connected-components.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "allowedConnectedComponentTypes", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "line": 21, + "type": "string[]", + "decorators": [], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "line": 18, + "type": "any", + "decorators": [], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "line": 19, + "type": "string", + "decorators": [], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "connectedComponents", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "line": 22, + "type": "any[]", + "decorators": [], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 20, + "type": "string", + "decorators": [], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + } + ], + "outputsClass": [ + { + "name": "connectedComponentsChanged", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 23, + "type": "EventEmitter", + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + } + ], + "propertiesClass": [ + { + "name": "nodeIds", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 24, + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + } + ], + "methodsClass": [ + { + "name": "changeAllDiscussionConnectedComponentTypesToMatch", + "args": [ + { + "name": "connectedComponentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 25, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "connectedComponentTypeChanged", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 20, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "addConnectedComponent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 34, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "afterComponentIdChanged", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 64, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "automaticallySetConnectedComponentFieldsIfPossible", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 74, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "automaticallySetConnectedComponentTypeIfPossible", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 57, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "connectedComponentChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "connectedComponentComponentIdChanged", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 51, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "connectedComponentNodeIdChanged", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 47, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "connectedComponentTypeIsSpecificType", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 106, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "createConnectedComponent", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 39, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "deleteConnectedComponent", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 76, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "getComponents", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 87, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "getConnectedComponentType", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 95, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "getNodePositionAndTitle", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 91, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "isConnectedComponentTypeAllowed", + "args": [ + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 70, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 28, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "EditConnectedComponentsAddButtonComponent", + "type": "component" + }, + { + "name": "EditConnectedComponentDefaultSelectsComponent", + "type": "component" + }, + { + "name": "EditConnectedComponentDeleteButtonComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { EditConnectedComponentsComponent } from '../../../../../app/authoring-tool/edit-connected-components/edit-connected-components.component';\nimport { EditConnectedComponentsAddButtonComponent } from '../../../../../app/authoring-tool/edit-connected-components-add-button/edit-connected-components-add-button.component';\nimport { EditConnectedComponentDefaultSelectsComponent } from '../../../../../app/authoring-tool/edit-connected-component-default-selects/edit-connected-component-default-selects.component';\nimport { EditConnectedComponentDeleteButtonComponent } from '../../../../../app/authoring-tool/edit-connected-component-delete-button/edit-connected-component-delete-button.component';\n\n@Component({\n selector: 'edit-discussion-connected-components',\n templateUrl:\n '../../../../../app/authoring-tool/edit-connected-components/edit-connected-components.component.html',\n styleUrl:\n '../../../../../app/authoring-tool/edit-connected-components/edit-connected-components.component.scss',\n imports: [\n EditConnectedComponentsAddButtonComponent,\n EditConnectedComponentDefaultSelectsComponent,\n EditConnectedComponentDeleteButtonComponent\n ]\n})\nexport class EditDiscussionConnectedComponentsComponent extends EditConnectedComponentsComponent {\n connectedComponentTypeChanged(connectedComponent: any) {\n this.changeAllDiscussionConnectedComponentTypesToMatch(connectedComponent.type);\n super.connectedComponentTypeChanged(connectedComponent);\n }\n\n changeAllDiscussionConnectedComponentTypesToMatch(connectedComponentType: string) {\n for (const connectedComponent of this.connectedComponents) {\n connectedComponent.type = connectedComponentType;\n }\n }\n}\n", + "styleUrl": "../../../../../app/authoring-tool/edit-connected-components/edit-connected-components.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [ + "EditConnectedComponentsComponent" + ], + "templateData": "\n@for (connectedComponent of connectedComponents; track connectedComponent; let i = $index) {\n
\n \n \n \n
\n}\n" + }, + { + "name": "EditDrawAdvancedComponent", + "id": "component-EditDrawAdvancedComponent-158220bc4d62b65a9c11791723eeb1ec65a72936f296ca6488f66a16a43970937bc157bc007266a6080b8f39ac48631ff00bb83a8da60e4597f37fb1c2ee1d4c", + "file": "src/assets/wise5/components/draw/edit-draw-advanced/edit-draw-advanced.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "edit-draw-advanced.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "line": 13, + "type": "string", + "decorators": [], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 14, + "type": "string", + "decorators": [], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "allowedConnectedComponentTypes", + "defaultValue": "['ConceptMap', 'Draw', 'Embedded', 'Graph', 'Label', 'Table']", + "deprecated": false, + "deprecationMessage": "", + "type": "[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 36 + }, + { + "name": "component", + "deprecated": false, + "deprecationMessage": "", + "type": "Component", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "ComponentContent", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + } + ], + "methodsClass": [ + { + "name": "componentChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 47, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "connectedComponentsChanged", + "args": [ + { + "name": "connectedComponents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 42, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "isNotebookEnabled", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 38, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "moveObjectDown", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 56, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "moveObjectUp", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 51, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "setShowSubmitButtonValue", + "args": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 28, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "EditComponentAddToNotebookButtonComponent", + "type": "component" + }, + { + "name": "EditComponentSaveButtonComponent", + "type": "component" + }, + { + "name": "EditComponentSubmitButtonComponent", + "type": "component" + }, + { + "name": "EditComponentMaxSubmitComponent", + "type": "component" + }, + { + "name": "EditComponentDefaultFeedback", + "type": "component" + }, + { + "name": "EditComponentMaxScoreComponent", + "type": "component" + }, + { + "name": "EditComponentExcludeFromTotalScoreComponent", + "type": "component" + }, + { + "name": "EditComponentWidthComponent", + "type": "component" + }, + { + "name": "EditComponentRubricComponent", + "type": "component" + }, + { + "name": "EditComponentTagsComponent", + "type": "component" + }, + { + "name": "EditDrawConnectedComponentsComponent", + "type": "component" + }, + { + "name": "EditComponentConstraintsComponent", + "type": "component" + }, + { + "name": "EditComponentJsonComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { EditAdvancedComponentComponent } from '../../../../../app/authoring-tool/edit-advanced-component/edit-advanced-component.component';\nimport { EditComponentDefaultFeedback } from '../../../../../app/authoring-tool/edit-advanced-component/edit-component-default-feedback/edit-component-default-feedback.component';\nimport { EditComponentAddToNotebookButtonComponent } from '../../../../../app/authoring-tool/edit-component-add-to-notebook-button/edit-component-add-to-notebook-button.component';\nimport { EditComponentConstraintsComponent } from '../../../../../app/authoring-tool/edit-component-constraints/edit-component-constraints.component';\nimport { EditComponentExcludeFromTotalScoreComponent } from '../../../../../app/authoring-tool/edit-component-exclude-from-total-score/edit-component-exclude-from-total-score.component';\nimport { EditComponentJsonComponent } from '../../../../../app/authoring-tool/edit-component-json/edit-component-json.component';\nimport { EditComponentMaxScoreComponent } from '../../../../../app/authoring-tool/edit-component-max-score/edit-component-max-score.component';\nimport { EditComponentMaxSubmitComponent } from '../../../../../app/authoring-tool/edit-component-max-submit/edit-component-max-submit.component';\nimport { EditComponentRubricComponent } from '../../../../../app/authoring-tool/edit-component-rubric/edit-component-rubric.component';\nimport { EditComponentSaveButtonComponent } from '../../../../../app/authoring-tool/edit-component-save-button/edit-component-save-button.component';\nimport { EditComponentSubmitButtonComponent } from '../../../../../app/authoring-tool/edit-component-submit-button/edit-component-submit-button.component';\nimport { EditComponentTagsComponent } from '../../../../../app/authoring-tool/edit-component-tags/edit-component-tags.component';\nimport { EditComponentWidthComponent } from '../../../../../app/authoring-tool/edit-component-width/edit-component-width.component';\nimport { EditDrawConnectedComponentsComponent } from '../edit-draw-connected-components/edit-draw-connected-components.component';\n\n@Component({\n templateUrl: 'edit-draw-advanced.component.html',\n imports: [\n EditComponentAddToNotebookButtonComponent,\n EditComponentSaveButtonComponent,\n EditComponentSubmitButtonComponent,\n EditComponentMaxSubmitComponent,\n EditComponentDefaultFeedback,\n EditComponentMaxScoreComponent,\n EditComponentExcludeFromTotalScoreComponent,\n EditComponentWidthComponent,\n EditComponentRubricComponent,\n EditComponentTagsComponent,\n EditDrawConnectedComponentsComponent,\n EditComponentConstraintsComponent,\n EditComponentJsonComponent\n ]\n})\nexport class EditDrawAdvancedComponent extends EditAdvancedComponentComponent {\n allowedConnectedComponentTypes = ['ConceptMap', 'Draw', 'Embedded', 'Graph', 'Label', 'Table'];\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [ + "EditAdvancedComponentComponent" + ], + "templateData": "@if (isNotebookEnabled()) {\n
\n \n
\n}\n\n
\n\n@if (componentContent.showSubmitButton) {\n \n}\n\n
\n \n \n \n \n \n
\n\n\n\n" + }, + { + "name": "EditDrawConnectedComponentsComponent", + "id": "component-EditDrawConnectedComponentsComponent-068d3799b968b29fb0fa04b2d7438cab67396cedaa69317206474dea086d48ae002b52b468e077529d72dbb754f85f43e5e4195f43533ff4ed41a5809e2b2b0c", + "file": "src/assets/wise5/components/draw/edit-draw-connected-components/edit-draw-connected-components.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "edit-draw-connected-components", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./edit-draw-connected-components.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "allowedConnectedComponentTypes", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "line": 21, + "type": "string[]", + "decorators": [], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "line": 18, + "type": "any", + "decorators": [], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "line": 19, + "type": "string", + "decorators": [], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "connectedComponents", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "line": 22, + "type": "any[]", + "decorators": [], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 20, + "type": "string", + "decorators": [], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + } + ], + "outputsClass": [ + { + "name": "connectedComponentsChanged", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 23, + "type": "EventEmitter", + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + } + ], + "propertiesClass": [ + { + "name": "componentTypesThatCanImportWorkAsBackground", + "defaultValue": "[\n 'ConceptMap',\n 'Embedded',\n 'Graph',\n 'Label',\n 'Table'\n ]", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 27, + "inheritance": { + "file": "EditConnectedComponentsWithBackgroundComponent" + } + }, + { + "name": "nodeIds", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 24, + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + } + ], + "methodsClass": [ + { + "name": "afterComponentIdChanged", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 35, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "setUpdateOnIfApplicable", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 40, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "canConnectedComponentTypeImportWorkAsBackground", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 15, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsWithBackgroundComponent" + } + }, + { + "name": "addConnectedComponent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 34, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "automaticallySetConnectedComponentFieldsIfPossible", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 74, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "automaticallySetConnectedComponentTypeIfPossible", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 57, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "connectedComponentChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "connectedComponentComponentIdChanged", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 51, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "connectedComponentNodeIdChanged", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 47, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "connectedComponentTypeChanged", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 66, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "connectedComponentTypeIsSpecificType", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 106, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "createConnectedComponent", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 39, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "deleteConnectedComponent", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 76, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "getComponents", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 87, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "getConnectedComponentType", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 95, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "getNodePositionAndTitle", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 91, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "isConnectedComponentTypeAllowed", + "args": [ + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 70, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 28, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "EditConnectedComponentsAddButtonComponent", + "type": "component" + }, + { + "name": "EditConnectedComponentDefaultSelectsComponent", + "type": "component" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatSelectModule", + "type": "module" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatCheckbox" + }, + { + "name": "EditConnectedComponentDeleteButtonComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatCheckbox } from '@angular/material/checkbox';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatSelectModule } from '@angular/material/select';\nimport { EditConnectedComponentDefaultSelectsComponent } from '../../../../../app/authoring-tool/edit-connected-component-default-selects/edit-connected-component-default-selects.component';\nimport { EditConnectedComponentDeleteButtonComponent } from '../../../../../app/authoring-tool/edit-connected-component-delete-button/edit-connected-component-delete-button.component';\nimport { EditConnectedComponentsAddButtonComponent } from '../../../../../app/authoring-tool/edit-connected-components-add-button/edit-connected-components-add-button.component';\nimport { EditConnectedComponentsWithBackgroundComponent } from '../../../../../app/authoring-tool/edit-connected-components-with-background/edit-connected-components-with-background.component';\n\n@Component({\n selector: 'edit-draw-connected-components',\n templateUrl: './edit-draw-connected-components.component.html',\n styleUrl:\n '../../../../../app/authoring-tool/edit-connected-components/edit-connected-components.component.scss',\n imports: [\n EditConnectedComponentsAddButtonComponent,\n EditConnectedComponentDefaultSelectsComponent,\n MatFormFieldModule,\n MatSelectModule,\n FormsModule,\n MatCheckbox,\n EditConnectedComponentDeleteButtonComponent\n ]\n})\nexport class EditDrawConnectedComponentsComponent extends EditConnectedComponentsWithBackgroundComponent {\n componentTypesThatCanImportWorkAsBackground: string[] = [\n 'ConceptMap',\n 'Embedded',\n 'Graph',\n 'Label',\n 'Table'\n ];\n\n afterComponentIdChanged(connectedComponent: any): void {\n super.afterComponentIdChanged(connectedComponent);\n this.setUpdateOnIfApplicable(connectedComponent);\n }\n\n setUpdateOnIfApplicable(connectedComponent: any) {\n if (connectedComponent.nodeId === this.nodeId) {\n connectedComponent.updateOn = 'submit';\n } else {\n delete connectedComponent.updateOn;\n }\n }\n}\n", + "styleUrl": "../../../../../app/authoring-tool/edit-connected-components/edit-connected-components.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [ + "EditConnectedComponentsWithBackgroundComponent" + ], + "templateData": "\n@for (\n connectedComponent of connectedComponents;\n track connectedComponent;\n let connectedComponentIndex = $index\n) {\n
\n
\n \n @if (connectedComponent.nodeId === nodeId) {\n \n Update On\n \n Submit\n Save\n \n \n }\n @if (canConnectedComponentTypeImportWorkAsBackground(connectedComponent)) {\n
\n \n Import Work As Background\n \n
\n }\n \n \n
\n
\n}\n" + }, + { + "name": "EditDynamicPromptComponent", + "id": "component-EditDynamicPromptComponent-04fbcc14cd5c88be01dc186edfc201d27028703761df105ebd78e0d953e33bd6c2608008e677a89fbabb16561406c9f1c3ec472eb8db4fd5c8e96d5f1e153fa1", + "file": "src/app/authoring-tool/edit-dynamic-prompt/edit-dynamic-prompt.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "edit-dynamic-prompt", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./edit-dynamic-prompt.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "line": 25, + "type": "any", + "decorators": [] + } + ], + "outputsClass": [ + { + "name": "dynamicPromptChangedEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 26, + "type": "EventEmitter" + } + ], + "propertiesClass": [ + { + "name": "allowedReferenceComponentTypes", + "defaultValue": "['MultipleChoice', 'OpenResponse']", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 24, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "toggleDynamicPrompt", + "args": [ + { + "name": "event", + "type": "MatCheckboxChange", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 28, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "event", + "type": "MatCheckboxChange", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatCheckbox" + }, + { + "name": "MatLabel" + }, + { + "name": "SelectStepAndComponentComponent", + "type": "component" + }, + { + "name": "EditComponentPeerGroupingTagComponent", + "type": "component" + }, + { + "name": "TranslatableTextareaComponent", + "type": "component" + }, + { + "name": "EditDynamicPromptRulesComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { MatCheckbox, MatCheckboxChange } from '@angular/material/checkbox';\nimport { MatLabel } from '@angular/material/form-field';\nimport { TranslatableTextareaComponent } from '../../../assets/wise5/authoringTool/components/translatable-textarea/translatable-textarea.component';\nimport { DynamicPrompt } from '../../../assets/wise5/directives/dynamic-prompt/DynamicPrompt';\nimport { EditComponentPeerGroupingTagComponent } from '../edit-component-peer-grouping-tag/edit-component-peer-grouping-tag.component';\nimport { EditDynamicPromptRulesComponent } from '../edit-dynamic-prompt-rules/edit-dynamic-prompt-rules.component';\nimport { SelectStepAndComponentComponent } from '../select-step-and-component/select-step-and-component.component';\n\n@Component({\n selector: 'edit-dynamic-prompt',\n templateUrl: './edit-dynamic-prompt.component.html',\n styleUrl: './edit-dynamic-prompt.component.scss',\n imports: [\n MatCheckbox,\n MatLabel,\n SelectStepAndComponentComponent,\n EditComponentPeerGroupingTagComponent,\n TranslatableTextareaComponent,\n EditDynamicPromptRulesComponent\n ]\n})\nexport class EditDynamicPromptComponent {\n protected allowedReferenceComponentTypes: string[] = ['MultipleChoice', 'OpenResponse'];\n @Input() componentContent: any;\n @Output() dynamicPromptChangedEvent = new EventEmitter();\n\n toggleDynamicPrompt(event: MatCheckboxChange): void {\n if (this.componentContent.dynamicPrompt == null) {\n this.componentContent.dynamicPrompt = new DynamicPrompt({\n referenceComponent: {},\n rules: []\n });\n }\n this.componentContent.dynamicPrompt.enabled = event.checked;\n this.dynamicPromptChangedEvent.next();\n }\n}\n", + "styleUrl": "./edit-dynamic-prompt.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [], + "templateData": "
\n
\n \n Enable Dynamic Prompt\n \n
\n @if (componentContent.dynamicPrompt?.enabled) {\n
\n
\n Reference Component:\n \n \n
\n \n
\n \n
\n \n
\n }\n
\n" + }, + { + "name": "EditDynamicPromptRulesComponent", + "id": "component-EditDynamicPromptRulesComponent-cddfda304fa4141eeed3d6cb45855e0024133ce29729d2fddec373adb14c3a13cffa5f672d83f02050bd35bf2a034db2c427061521d5c013edc361e7a429d166", + "file": "src/app/authoring-tool/edit-dynamic-prompt-rules/edit-dynamic-prompt-rules.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "edit-dynamic-prompt-rules", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./edit-dynamic-prompt-rules.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "feedbackRules", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "line": 38, + "type": "Partial[]", + "decorators": [], + "inheritance": { + "file": "EditFeedbackRulesComponent" + } + }, + { + "name": "version", + "defaultValue": "2", + "deprecated": false, + "deprecationMessage": "", + "line": 41, + "type": "number", + "decorators": [], + "inheritance": { + "file": "EditFeedbackRulesComponent" + } + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "inputChanged", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 39, + "inheritance": { + "file": "EditFeedbackRulesComponent" + } + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 40, + "inheritance": { + "file": "EditFeedbackRulesComponent" + } + } + ], + "methodsClass": [ + { + "name": "createNewFeedbackRule", + "args": [], + "optional": false, + "returnType": "Partial", + "typeParameters": [], + "line": 34, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "EditFeedbackRulesComponent" + } + }, + { + "name": "deleteRule", + "args": [ + { + "name": "ruleIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 38, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "ruleIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditFeedbackRulesComponent" + } + }, + { + "name": "addNewFeedbackToRule", + "args": [ + { + "name": "rule", + "type": "Partial", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 91, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "rule", + "type": "Partial", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditFeedbackRulesComponent" + } + }, + { + "name": "addNewRule", + "args": [ + { + "name": "position", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 77, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "position", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditFeedbackRulesComponent" + } + }, + { + "name": "customTrackBy", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 110, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditFeedbackRulesComponent" + } + }, + { + "name": "deleteFeedbackInRule", + "args": [ + { + "name": "rule", + "type": "FeedbackRule", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "feedbackIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 96, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "rule", + "type": "FeedbackRule", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "feedbackIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditFeedbackRulesComponent" + } + }, + { + "name": "drop", + "args": [ + { + "name": "event", + "type": "CdkDragDrop", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 60, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "event", + "type": "CdkDragDrop", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditFeedbackRulesComponent" + } + }, + { + "name": "moveDown", + "args": [ + { + "name": "ruleIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 68, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "ruleIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditFeedbackRulesComponent" + } + }, + { + "name": "moveRuleItem", + "args": [ + { + "name": "previousIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 72, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "previousIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditFeedbackRulesComponent" + } + }, + { + "name": "moveUp", + "args": [ + { + "name": "ruleIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 64, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "ruleIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditFeedbackRulesComponent" + } + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 56, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditFeedbackRulesComponent" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 48, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditFeedbackRulesComponent" + } + }, + { + "name": "showHelp", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 114, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditFeedbackRulesComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatTooltip" + }, + { + "name": "MatIcon" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "DragDropModule", + "type": "module" + }, + { + "name": "CdkScrollable" + }, + { + "name": "MatCard" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatInput" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "TranslatableTextareaComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { DragDropModule } from '@angular/cdk/drag-drop';\nimport { CdkScrollable } from '@angular/cdk/scrolling';\nimport { Component } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCard } from '@angular/material/card';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInput } from '@angular/material/input';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { TranslatableTextareaComponent } from '../../../assets/wise5/authoringTool/components/translatable-textarea/translatable-textarea.component';\nimport { generateRandomKey } from '../../../assets/wise5/common/string/string';\nimport { EditFeedbackRulesComponent } from '../../../assets/wise5/components/common/feedbackRule/edit-feedback-rules/edit-feedback-rules.component';\nimport { FeedbackRule } from '../../../assets/wise5/components/common/feedbackRule/FeedbackRule';\n\n@Component({\n selector: 'edit-dynamic-prompt-rules',\n templateUrl: './edit-dynamic-prompt-rules.component.html',\n styleUrl: './edit-dynamic-prompt-rules.component.scss',\n imports: [\n MatTooltip,\n MatIcon,\n MatButtonModule,\n DragDropModule,\n CdkScrollable,\n MatCard,\n MatFormFieldModule,\n MatInput,\n FormsModule,\n TranslatableTextareaComponent\n ]\n})\nexport class EditDynamicPromptRulesComponent extends EditFeedbackRulesComponent {\n protected createNewFeedbackRule(): Partial {\n return { id: generateRandomKey(), expression: '', prompt: '' };\n }\n\n deleteRule(ruleIndex: number): void {\n if (confirm($localize`Are you sure you want to delete this prompt rule?`)) {\n this.feedbackRules.splice(ruleIndex, 1);\n this.projectService.nodeChanged();\n }\n }\n}\n", + "styleUrl": "./edit-dynamic-prompt-rules.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [ + "EditFeedbackRulesComponent" + ], + "templateData": "
\n
\n Prompt Rules\n \n add_circle\n \n \n \n
\n \n @for (\n rule of feedbackRules;\n track rule;\n let ruleIndex = $index;\n let first = $first;\n let last = $last\n ) {\n
  • \n \n \n \n {{ ruleIndex + 1 }}\n drag_indicator\n \n \n \n Expression\n \n \n \n \n \n \n clear\n \n @if (feedbackRules.length > 1) {\n \n arrow_upward\n \n }\n \n arrow_downward\n \n \n \n \n
  • \n }\n \n @if (feedbackRules.length > 0) {\n \n add_circle\n \n }\n
    \n" + }, + { + "name": "EditEmbeddedAdvancedComponent", + "id": "component-EditEmbeddedAdvancedComponent-8ad8e451475a304a9a6140d121868621f9d341deb86607ef90e3ac25df271d7eb9608df6d723c6bece7453f588425a2840b483a09ba8e6fbe899dac7ab0e18dd", + "file": "src/assets/wise5/components/embedded/edit-embedded-advanced/edit-embedded-advanced.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [ + ".model-parameters { width: 100%; }" + ], + "templateUrl": [ + "edit-embedded-advanced.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "line": 13, + "type": "string", + "decorators": [], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 14, + "type": "string", + "decorators": [], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "allowedConnectedComponentTypes", + "defaultValue": "[\n 'Animation',\n 'AudioOscillator',\n 'ConceptMap',\n 'Discussion',\n 'Draw',\n 'Embedded',\n 'Graph',\n 'Label',\n 'Match',\n 'MultipleChoice',\n 'OpenResponse',\n 'Table'\n ]", + "deprecated": false, + "deprecationMessage": "", + "type": "[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 18 + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "EmbeddedContent", + "indexKey": "", + "optional": false, + "description": "", + "line": 32, + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "component", + "deprecated": false, + "deprecationMessage": "", + "type": "Component", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + } + ], + "methodsClass": [ + { + "name": "componentChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 47, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "connectedComponentsChanged", + "args": [ + { + "name": "connectedComponents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 42, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "isNotebookEnabled", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 38, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "moveObjectDown", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 56, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "moveObjectUp", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 51, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "setShowSubmitButtonValue", + "args": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 28, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "TranslatableInputComponent", + "type": "component" + }, + { + "name": "EditComponentAddToNotebookButtonComponent", + "type": "component" + }, + { + "name": "EditCommonAdvancedComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { EditAdvancedComponentComponent } from '../../../../../app/authoring-tool/edit-advanced-component/edit-advanced-component.component';\nimport { EmbeddedContent } from '../EmbeddedContent';\nimport { TranslatableInputComponent } from '../../../authoringTool/components/translatable-input/translatable-input.component';\nimport { EditComponentAddToNotebookButtonComponent } from '../../../../../app/authoring-tool/edit-component-add-to-notebook-button/edit-component-add-to-notebook-button.component';\nimport { EditCommonAdvancedComponent } from '../../../../../app/authoring-tool/edit-common-advanced/edit-common-advanced.component';\n\n@Component({\n templateUrl: 'edit-embedded-advanced.component.html',\n styles: ['.model-parameters { width: 100%; }'],\n imports: [\n TranslatableInputComponent,\n EditComponentAddToNotebookButtonComponent,\n EditCommonAdvancedComponent\n ]\n})\nexport class EditEmbeddedAdvancedComponent extends EditAdvancedComponentComponent {\n allowedConnectedComponentTypes = [\n 'Animation',\n 'AudioOscillator',\n 'ConceptMap',\n 'Discussion',\n 'Draw',\n 'Embedded',\n 'Graph',\n 'Label',\n 'Match',\n 'MultipleChoice',\n 'OpenResponse',\n 'Table'\n ];\n componentContent: EmbeddedContent;\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": ".model-parameters { width: 100%; }\n", + "extends": [ + "EditAdvancedComponentComponent" + ], + "templateData": "
    \n \n @if (isNotebookEnabled()) {\n \n }\n \n
    \n" + }, + { + "name": "EditFeedbackRulesComponent", + "id": "component-EditFeedbackRulesComponent-a1d27af3e74c53c32dc078a81a5aa2bd608e0b004b4a2cbe9949cf761ad3ce8b85209144e79d1fce92d743cf80cbb6d65b807c2bf20083fbd4b7e6e9d8f2316c", + "file": "src/assets/wise5/components/common/feedbackRule/edit-feedback-rules/edit-feedback-rules.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "edit-feedback-rules", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./edit-feedback-rules.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "feedbackRules", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "line": 38, + "type": "Partial[]", + "decorators": [] + }, + { + "name": "version", + "defaultValue": "2", + "deprecated": false, + "deprecationMessage": "", + "line": 41, + "type": "number", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "inputChanged", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 39 + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 40 + } + ], + "methodsClass": [ + { + "name": "addNewFeedbackToRule", + "args": [ + { + "name": "rule", + "type": "Partial", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 91, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "rule", + "type": "Partial", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addNewRule", + "args": [ + { + "name": "position", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 77, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "position", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createNewFeedbackRule", + "args": [], + "optional": false, + "returnType": "Partial", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "customTrackBy", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 110, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "deleteFeedbackInRule", + "args": [ + { + "name": "rule", + "type": "FeedbackRule", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "feedbackIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 96, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "rule", + "type": "FeedbackRule", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "feedbackIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "deleteRule", + "args": [ + { + "name": "ruleIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 103, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "ruleIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "drop", + "args": [ + { + "name": "event", + "type": "CdkDragDrop", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 60, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "event", + "type": "CdkDragDrop", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "moveDown", + "args": [ + { + "name": "ruleIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 68, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "ruleIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "moveRuleItem", + "args": [ + { + "name": "previousIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 72, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "previousIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "moveUp", + "args": [ + { + "name": "ruleIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 64, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "ruleIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 56, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 48, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "showHelp", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 114, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatTooltip" + }, + { + "name": "MatIcon" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "DragDropModule", + "type": "module" + }, + { + "name": "CdkScrollable" + }, + { + "name": "MatCard" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatInput" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "CdkTextareaAutosize" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { CdkDragDrop, DragDropModule, moveItemInArray } from '@angular/cdk/drag-drop';\nimport { CdkScrollable } from '@angular/cdk/scrolling';\nimport { CdkTextareaAutosize } from '@angular/cdk/text-field';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCard } from '@angular/material/card';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInput } from '@angular/material/input';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { Subject, Subscription } from 'rxjs';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport { generateRandomKey } from '../../../../common/string/string';\nimport { TeacherProjectService } from '../../../../services/teacherProjectService';\nimport { FeedbackRuleHelpComponent } from '../feedback-rule-help/feedback-rule-help.component';\nimport { FeedbackRule } from '../FeedbackRule';\n\n@Component({\n selector: 'edit-feedback-rules',\n templateUrl: './edit-feedback-rules.component.html',\n styleUrl: './edit-feedback-rules.component.scss',\n imports: [\n MatTooltip,\n MatIcon,\n MatButtonModule,\n DragDropModule,\n CdkScrollable,\n MatCard,\n MatFormFieldModule,\n MatInput,\n FormsModule,\n CdkTextareaAutosize\n ]\n})\nexport class EditFeedbackRulesComponent implements OnInit {\n @Input() feedbackRules: Partial[] = [];\n inputChanged: Subject = new Subject();\n subscriptions: Subscription = new Subscription();\n @Input() version: number = 2;\n\n constructor(\n protected dialog: MatDialog,\n protected projectService: TeacherProjectService\n ) {}\n\n ngOnInit(): void {\n this.subscriptions.add(\n this.inputChanged.pipe(debounceTime(1000), distinctUntilChanged()).subscribe(() => {\n this.projectService.nodeChanged();\n })\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n drop(event: CdkDragDrop): void {\n this.moveRuleItem(event.previousIndex, event.currentIndex);\n }\n\n moveUp(ruleIndex: number): void {\n this.moveRuleItem(ruleIndex, ruleIndex - 1);\n }\n\n moveDown(ruleIndex: number): void {\n this.moveRuleItem(ruleIndex, ruleIndex + 1);\n }\n\n moveRuleItem(previousIndex: number, currentIndex: number): void {\n moveItemInArray(this.feedbackRules, previousIndex, currentIndex);\n this.projectService.nodeChanged();\n }\n\n addNewRule(position: number): void {\n const newFeedbackRule = this.createNewFeedbackRule();\n this.feedbackRules.splice(position, 0, newFeedbackRule);\n this.projectService.nodeChanged();\n }\n\n protected createNewFeedbackRule(): Partial {\n if (this.version === 1) {\n return { expression: '', feedback: '' };\n } else {\n return { id: generateRandomKey(), expression: '', feedback: [''] };\n }\n }\n\n addNewFeedbackToRule(rule: Partial): void {\n (rule.feedback as string[]).push('');\n this.projectService.nodeChanged();\n }\n\n deleteFeedbackInRule(rule: FeedbackRule, feedbackIndex: number): void {\n if (confirm($localize`Are you sure you want to delete this feedback?`)) {\n (rule.feedback as string[]).splice(feedbackIndex, 1);\n this.projectService.nodeChanged();\n }\n }\n\n deleteRule(ruleIndex: number): void {\n if (confirm($localize`Are you sure you want to delete this feedback rule?`)) {\n this.feedbackRules.splice(ruleIndex, 1);\n this.projectService.nodeChanged();\n }\n }\n\n customTrackBy(index: number): number {\n return index;\n }\n\n showHelp(): void {\n this.dialog.open(FeedbackRuleHelpComponent);\n }\n}\n", + "styleUrl": "./edit-feedback-rules.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 41, + "jsdoctags": [ + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "
    \n
    \n Feedback Rules\n \n add_circle\n \n \n \n
    \n \n @for (\n rule of feedbackRules;\n track rule;\n let ruleIndex = $index;\n let first = $first;\n let last = $last\n ) {\n
  • \n \n
    \n
    \n {{ ruleIndex + 1 }}\n drag_indicator\n
    \n
    \n \n Expression\n \n \n @if (version === 2) {\n @for (\n feedback of rule.feedback;\n track customTrackBy;\n let feedbackIndex = $index;\n let last = $last\n ) {\n
    \n \n @if (rule.feedback.length === 1) {\n Feedback\n }\n @if (rule.feedback.length > 1) {\n Feedback #{{ feedbackIndex + 1 }}\n }\n \n \n @if (rule.feedback.length > 1) {\n \n clear\n \n }\n \n @if (last) {\n \n add_circle\n \n }\n
    \n }\n } @else {\n \n Feedback\n \n \n \n }\n
    \n
    \n \n clear\n \n @if (feedbackRules.length > 1) {\n \n arrow_upward\n \n }\n \n arrow_downward\n \n
    \n
    \n
    \n
    \n \n add_circle\n \n
    \n
  • \n }\n \n
    \n" + }, + { + "name": "EditGraphAdvancedComponent", + "id": "component-EditGraphAdvancedComponent-ec39e99895c53850613d90a65a8073598acd0f57bdea0c0498d31ea59f4aa928107f37340bc7cd73d15f1e3cd1fdead5440dcd8b2d6a18505d12cac0cab32749", + "file": "src/assets/wise5/components/graph/edit-graph-advanced/edit-graph-advanced.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "edit-graph-advanced.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "line": 13, + "type": "string", + "decorators": [], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 14, + "type": "string", + "decorators": [], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "allowedConnectedComponentTypes", + "defaultValue": "[\n 'Animation',\n 'ConceptMap',\n 'Draw',\n 'Embedded',\n 'Graph',\n 'Label',\n 'Table'\n ]", + "deprecated": false, + "deprecationMessage": "", + "type": "[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 54 + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "GraphContent", + "indexKey": "", + "optional": false, + "description": "", + "line": 63, + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "component", + "deprecated": false, + "deprecationMessage": "", + "type": "Component", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + } + ], + "methodsClass": [ + { + "name": "addXAxisPlotLine", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 65, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "addYAxisPlotLine", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 92, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "deleteXAxisPlotLine", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 87, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "deleteYAxisPlotLine", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 111, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "componentChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 47, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "connectedComponentsChanged", + "args": [ + { + "name": "connectedComponents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 42, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "isNotebookEnabled", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 38, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "moveObjectDown", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 56, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "moveObjectUp", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 51, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "setShowSubmitButtonValue", + "args": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 28, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "TranslatableInputComponent", + "type": "component" + }, + { + "name": "MatCheckbox" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatButton" + }, + { + "name": "MatTooltip" + }, + { + "name": "MatIcon" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatInput" + }, + { + "name": "EditComponentAddToNotebookButtonComponent", + "type": "component" + }, + { + "name": "EditComponentSaveButtonComponent", + "type": "component" + }, + { + "name": "EditComponentSubmitButtonComponent", + "type": "component" + }, + { + "name": "EditComponentMaxSubmitComponent", + "type": "component" + }, + { + "name": "EditComponentDefaultFeedback", + "type": "component" + }, + { + "name": "EditComponentMaxScoreComponent", + "type": "component" + }, + { + "name": "EditComponentExcludeFromTotalScoreComponent", + "type": "component" + }, + { + "name": "EditComponentWidthComponent", + "type": "component" + }, + { + "name": "EditComponentRubricComponent", + "type": "component" + }, + { + "name": "EditComponentTagsComponent", + "type": "component" + }, + { + "name": "EditGraphConnectedComponentsComponent", + "type": "component" + }, + { + "name": "EditComponentConstraintsComponent", + "type": "component" + }, + { + "name": "EditComponentJsonComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatButton } from '@angular/material/button';\nimport { MatCheckbox } from '@angular/material/checkbox';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInput } from '@angular/material/input';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { EditAdvancedComponentComponent } from '../../../../../app/authoring-tool/edit-advanced-component/edit-advanced-component.component';\nimport { EditComponentDefaultFeedback } from '../../../../../app/authoring-tool/edit-advanced-component/edit-component-default-feedback/edit-component-default-feedback.component';\nimport { EditComponentAddToNotebookButtonComponent } from '../../../../../app/authoring-tool/edit-component-add-to-notebook-button/edit-component-add-to-notebook-button.component';\nimport { EditComponentConstraintsComponent } from '../../../../../app/authoring-tool/edit-component-constraints/edit-component-constraints.component';\nimport { EditComponentExcludeFromTotalScoreComponent } from '../../../../../app/authoring-tool/edit-component-exclude-from-total-score/edit-component-exclude-from-total-score.component';\nimport { EditComponentJsonComponent } from '../../../../../app/authoring-tool/edit-component-json/edit-component-json.component';\nimport { EditComponentMaxScoreComponent } from '../../../../../app/authoring-tool/edit-component-max-score/edit-component-max-score.component';\nimport { EditComponentMaxSubmitComponent } from '../../../../../app/authoring-tool/edit-component-max-submit/edit-component-max-submit.component';\nimport { EditComponentRubricComponent } from '../../../../../app/authoring-tool/edit-component-rubric/edit-component-rubric.component';\nimport { EditComponentSaveButtonComponent } from '../../../../../app/authoring-tool/edit-component-save-button/edit-component-save-button.component';\nimport { EditComponentSubmitButtonComponent } from '../../../../../app/authoring-tool/edit-component-submit-button/edit-component-submit-button.component';\nimport { EditComponentTagsComponent } from '../../../../../app/authoring-tool/edit-component-tags/edit-component-tags.component';\nimport { EditComponentWidthComponent } from '../../../../../app/authoring-tool/edit-component-width/edit-component-width.component';\nimport { TranslatableInputComponent } from '../../../authoringTool/components/translatable-input/translatable-input.component';\nimport { EditGraphConnectedComponentsComponent } from '../edit-graph-connected-components/edit-graph-connected-components.component';\nimport { GraphContent } from '../GraphContent';\n\n@Component({\n templateUrl: 'edit-graph-advanced.component.html',\n styleUrl: 'edit-graph-advanced.component.scss',\n imports: [\n TranslatableInputComponent,\n MatCheckbox,\n FormsModule,\n MatButton,\n MatTooltip,\n MatIcon,\n MatFormFieldModule,\n MatInput,\n EditComponentAddToNotebookButtonComponent,\n EditComponentSaveButtonComponent,\n EditComponentSubmitButtonComponent,\n EditComponentMaxSubmitComponent,\n EditComponentDefaultFeedback,\n EditComponentMaxScoreComponent,\n EditComponentExcludeFromTotalScoreComponent,\n EditComponentWidthComponent,\n EditComponentRubricComponent,\n EditComponentTagsComponent,\n EditGraphConnectedComponentsComponent,\n EditComponentConstraintsComponent,\n EditComponentJsonComponent\n ]\n})\nexport class EditGraphAdvancedComponent extends EditAdvancedComponentComponent {\n allowedConnectedComponentTypes = [\n 'Animation',\n 'ConceptMap',\n 'Draw',\n 'Embedded',\n 'Graph',\n 'Label',\n 'Table'\n ];\n componentContent: GraphContent;\n\n addXAxisPlotLine(): void {\n if (this.componentContent.xAxis.plotLines == null) {\n this.componentContent.xAxis.plotLines = [];\n }\n const plotLine = {\n color: 'gray',\n width: 1,\n value: null,\n label: {\n text: '',\n verticalAlign: 'bottom',\n textAlign: 'right',\n y: -10,\n style: {\n fontWeight: 'bold'\n }\n }\n };\n this.componentContent.xAxis.plotLines.push(plotLine);\n this.componentChanged();\n }\n\n deleteXAxisPlotLine(index: number): void {\n this.componentContent.xAxis.plotLines.splice(index, 1);\n this.componentChanged();\n }\n\n addYAxisPlotLine(): void {\n if (this.componentContent.yAxis.plotLines == null) {\n this.componentContent.yAxis.plotLines = [];\n }\n const plotLine = {\n color: 'gray',\n width: 1,\n value: null,\n label: {\n text: '',\n style: {\n fontWeight: 'bold'\n }\n }\n };\n this.componentContent.yAxis.plotLines.push(plotLine);\n this.componentChanged();\n }\n\n deleteYAxisPlotLine(index: number): void {\n this.componentContent.yAxis.plotLines.splice(index, 1);\n this.componentChanged();\n }\n}\n", + "styleUrl": "edit-graph-advanced.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [ + "EditAdvancedComponentComponent" + ], + "templateData": "
    \n \n
    \n \n Show Mouse X Plot Line\n \n
    \n
    \n \n Highlight X Range From Zero\n \n
    \n
    \n \n Show Mouse Y Plot Line\n \n
    \n
    \n \n Save Mouse Over Points\n \n
    \n
    \n \n Hide Trial Select\n \n
    \n
    \n \n Use Custom Legend\n \n
    \n @if (componentContent.useCustomLegend) {\n \n }\n
    \n X Axis Plot Line\n \n add\n \n
    \n @for (\n plotLine of componentContent.xAxis.plotLines;\n track plotLine;\n let xAxisPlotLineIndex = $index\n ) {\n
    \n
    \n \n \n X Value\n \n \n \n Color\n \n \n
    \n \n delete\n \n
    \n
    \n
    \n }\n
    \n Y Axis Plot Line\n \n add\n \n
    \n @for (\n plotLine of componentContent.yAxis.plotLines;\n track plotLine;\n let yAxisPlotLineIndex = $index\n ) {\n
    \n
    \n \n \n Y Value\n \n \n \n Color\n \n \n
    \n \n delete\n \n
    \n
    \n
    \n }\n
    \n@if (isNotebookEnabled()) {\n
    \n \n
    \n}\n\n
    \n\n\n@if (componentContent.showSubmitButton) {\n \n}\n\n
    \n \n \n \n \n \n
    \n\n\n\n" + }, + { + "name": "EditGraphConnectedComponentsComponent", + "id": "component-EditGraphConnectedComponentsComponent-6b2c3706b4fed38bcf9654bb0afd4b0a5456115ae65d74e5ce34143cddb31653524c1247780210819e7688410b06309c1c1669578bf4c2c03029981eb56097f4", + "file": "src/assets/wise5/components/graph/edit-graph-connected-components/edit-graph-connected-components.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "edit-graph-connected-components", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./edit-graph-connected-components.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "allowedConnectedComponentTypes", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "line": 21, + "type": "string[]", + "decorators": [], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "line": 18, + "type": "any", + "decorators": [], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "line": 19, + "type": "string", + "decorators": [], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "connectedComponents", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "line": 22, + "type": "any[]", + "decorators": [], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 20, + "type": "string", + "decorators": [], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + } + ], + "outputsClass": [ + { + "name": "connectedComponentsChanged", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 23, + "type": "EventEmitter", + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + } + ], + "propertiesClass": [ + { + "name": "componentTypesThatCanImportWorkAsBackground", + "defaultValue": "['ConceptMap', 'Draw', 'Label']", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 35, + "inheritance": { + "file": "EditConnectedComponentsWithBackgroundComponent" + } + }, + { + "name": "nodeIds", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 24, + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + } + ], + "methodsClass": [ + { + "name": "addConnectedComponentSeriesNumber", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 37, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "afterComponentIdChanged", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 54, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "connectedComponentSeriesNumberChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 50, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "connectedComponentShowClassmateWorkChanged", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 81, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "connectedComponentTypeChanged", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 91, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "customTrackBy", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 106, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "deleteConnectedComponentSeriesNumber", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "seriesNumberIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 45, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "seriesNumberIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "canConnectedComponentTypeImportWorkAsBackground", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 15, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsWithBackgroundComponent" + } + }, + { + "name": "addConnectedComponent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 34, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "automaticallySetConnectedComponentFieldsIfPossible", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 74, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "automaticallySetConnectedComponentTypeIfPossible", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 57, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "connectedComponentChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "connectedComponentComponentIdChanged", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 51, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "connectedComponentNodeIdChanged", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 47, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "connectedComponentTypeIsSpecificType", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 106, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "createConnectedComponent", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 39, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "deleteConnectedComponent", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 76, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "getComponents", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 87, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "getConnectedComponentType", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 95, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "getNodePositionAndTitle", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 91, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "isConnectedComponentTypeAllowed", + "args": [ + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 70, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 28, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "EditConnectedComponentsAddButtonComponent", + "type": "component" + }, + { + "name": "SelectStepAndComponentComponent", + "type": "component" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatSelectModule", + "type": "module" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatCheckbox" + }, + { + "name": "MatInput" + }, + { + "name": "MatButton" + }, + { + "name": "MatTooltip" + }, + { + "name": "MatIcon" + }, + { + "name": "EditConnectedComponentDeleteButtonComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatButton } from '@angular/material/button';\nimport { MatCheckbox } from '@angular/material/checkbox';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInput } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { EditConnectedComponentDeleteButtonComponent } from '../../../../../app/authoring-tool/edit-connected-component-delete-button/edit-connected-component-delete-button.component';\nimport { EditConnectedComponentsAddButtonComponent } from '../../../../../app/authoring-tool/edit-connected-components-add-button/edit-connected-components-add-button.component';\nimport { EditConnectedComponentsWithBackgroundComponent } from '../../../../../app/authoring-tool/edit-connected-components-with-background/edit-connected-components-with-background.component';\nimport { SelectStepAndComponentComponent } from '../../../../../app/authoring-tool/select-step-and-component/select-step-and-component.component';\n\n@Component({\n selector: 'edit-graph-connected-components',\n templateUrl: './edit-graph-connected-components.component.html',\n styleUrl:\n '../../../../../app/authoring-tool/edit-connected-components/edit-connected-components.component.scss',\n imports: [\n EditConnectedComponentsAddButtonComponent,\n SelectStepAndComponentComponent,\n MatFormFieldModule,\n MatSelectModule,\n FormsModule,\n MatCheckbox,\n MatInput,\n MatButton,\n MatTooltip,\n MatIcon,\n EditConnectedComponentDeleteButtonComponent\n ]\n})\nexport class EditGraphConnectedComponentsComponent extends EditConnectedComponentsWithBackgroundComponent {\n componentTypesThatCanImportWorkAsBackground: string[] = ['ConceptMap', 'Draw', 'Label'];\n\n addConnectedComponentSeriesNumber(connectedComponent: any) {\n if (connectedComponent.seriesNumbers == null) {\n connectedComponent.seriesNumbers = [];\n }\n connectedComponent.seriesNumbers.push(0);\n this.connectedComponentChanged();\n }\n\n deleteConnectedComponentSeriesNumber(connectedComponent: any, seriesNumberIndex: number) {\n connectedComponent.seriesNumbers.splice(seriesNumberIndex, 1);\n this.connectedComponentChanged();\n }\n\n connectedComponentSeriesNumberChanged() {\n this.connectedComponentChanged();\n }\n\n afterComponentIdChanged(connectedComponent: any) {\n super.afterComponentIdChanged(connectedComponent);\n const connectedComponentType = this.getConnectedComponentType(connectedComponent);\n if (connectedComponentType !== 'Embedded') {\n delete connectedComponent.highlightLatestPoint;\n delete connectedComponent.showXPlotLineOnLatestPoint;\n delete connectedComponent.seriesNumbers;\n }\n if (connectedComponentType !== 'Table') {\n delete connectedComponent.skipFirstRow;\n delete connectedComponent.xColumn;\n delete connectedComponent.yColumn;\n }\n if (connectedComponentType !== 'Graph') {\n delete connectedComponent.importGraphSettings;\n delete connectedComponent.showClassmateWorkSource;\n }\n if (!this.canConnectedComponentTypeImportWorkAsBackground(connectedComponent)) {\n delete connectedComponent.importWorkAsBackground;\n }\n if (connectedComponentType === 'Table') {\n connectedComponent.skipFirstRow = true;\n connectedComponent.xColumn = 0;\n connectedComponent.yColumn = 1;\n }\n }\n\n connectedComponentShowClassmateWorkChanged(connectedComponent: any) {\n if (connectedComponent.showClassmateWork) {\n connectedComponent.showClassmateWorkSource = 'period';\n } else {\n delete connectedComponent.showClassmateWork;\n delete connectedComponent.showClassmateWorkSource;\n }\n this.connectedComponentChanged();\n }\n\n connectedComponentTypeChanged(connectedComponent: any) {\n if (connectedComponent.type === 'importWork') {\n delete connectedComponent.showClassmateWorkSource;\n } else if (connectedComponent.type === 'showWork') {\n delete connectedComponent.showClassmateWorkSource;\n } else if (connectedComponent.type === 'showClassmateWork') {\n // enable trials so each classmate work will show up in a different trial\n this.componentContent.enableTrials = true;\n if (connectedComponent.showClassmateWorkSource == null) {\n connectedComponent.showClassmateWorkSource = 'period';\n }\n }\n this.connectedComponentChanged();\n }\n\n customTrackBy(index: number): any {\n return index;\n }\n}\n", + "styleUrl": "../../../../../app/authoring-tool/edit-connected-components/edit-connected-components.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [ + "EditConnectedComponentsWithBackgroundComponent" + ], + "templateData": "\n@for (\n connectedComponent of connectedComponents;\n track connectedComponent;\n let connectedComponentIndex = $index\n) {\n
    \n
    \n \n \n Type\n \n Import Work\n Show Work\n @if (getConnectedComponentType(connectedComponent) === 'Graph') {\n Show Classmate Work \n }\n \n \n @if (\n connectedComponent.type == 'showClassmateWork' &&\n getConnectedComponentType(connectedComponent) === 'Graph'\n ) {\n \n Show Classmate Work Source\n \n Period\n Class\n \n \n }\n @if (getConnectedComponentType(connectedComponent) === 'Graph') {\n
    \n \n Import Graph Settings\n \n
    \n }\n @if (getConnectedComponentType(connectedComponent) === 'Table') {\n
    \n \n Skip First Row\n \n \n X Column\n \n \n \n Y Column\n \n \n
    \n }\n @if (getConnectedComponentType(connectedComponent) === 'Embedded') {\n
    \n
    \n \n Show X Plot Line On Latest Point\n \n \n Highlight Latest Point\n \n
    \n
    \n \n \n add\n \n
    \n @for (\n seriesNumber of connectedComponent.seriesNumbers;\n track customTrackBy;\n let seriesIndex = $index\n ) {\n
    \n \n Series Number\n \n \n \n delete\n \n
    \n }\n
    \n }\n @if (canConnectedComponentTypeImportWorkAsBackground(connectedComponent)) {\n
    \n \n Import Work As Background\n \n
    \n }\n \n \n
    \n
    \n}\n" + }, + { + "name": "EditHTMLAdvancedComponent", + "id": "component-EditHTMLAdvancedComponent-16c5548e36d5dbcab52e8f492fd7e46061d87bc2685d94db7204915e6b921e8beec1ef86820e96c7509caed04d37ae1001d0d24473e28514c2d92c6cd29aa009", + "file": "src/assets/wise5/components/html/edit-html-advanced/edit-html-advanced.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "template": " \n \n ", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "line": 13, + "type": "string", + "decorators": [], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 14, + "type": "string", + "decorators": [], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "component", + "deprecated": false, + "deprecationMessage": "", + "type": "Component", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "ComponentContent", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + } + ], + "methodsClass": [ + { + "name": "componentChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 47, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "connectedComponentsChanged", + "args": [ + { + "name": "connectedComponents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 42, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "isNotebookEnabled", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 38, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "moveObjectDown", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 56, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "moveObjectUp", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 51, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "setShowSubmitButtonValue", + "args": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 28, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "EditComponentConstraintsComponent", + "type": "component" + }, + { + "name": "EditComponentJsonComponent", + "type": "component" + }, + { + "name": "EditComponentRubricComponent", + "type": "component" + }, + { + "name": "EditComponentWidthComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { EditAdvancedComponentComponent } from '../../../../../app/authoring-tool/edit-advanced-component/edit-advanced-component.component';\nimport { EditComponentWidthComponent } from '../../../../../app/authoring-tool/edit-component-width/edit-component-width.component';\nimport { EditComponentConstraintsComponent } from '../../../../../app/authoring-tool/edit-component-constraints/edit-component-constraints.component';\nimport { EditComponentJsonComponent } from '../../../../../app/authoring-tool/edit-component-json/edit-component-json.component';\nimport { EditComponentRubricComponent } from '../../../../../app/authoring-tool/edit-component-rubric/edit-component-rubric.component';\n\n@Component({\n imports: [\n EditComponentConstraintsComponent,\n EditComponentJsonComponent,\n EditComponentRubricComponent,\n EditComponentWidthComponent\n ],\n template: `\n \n \n `\n})\nexport class EditHTMLAdvancedComponent extends EditAdvancedComponentComponent {}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [ + "EditAdvancedComponentComponent" + ] + }, + { + "name": "EditLabelAdvancedComponent", + "id": "component-EditLabelAdvancedComponent-28f114925a3b0b28cf52646a8e1934ebff4b03130c48af75d567cbe0f2fefebd7863e3048f420e7329cc340d399472371afd6a140f84ae647f4c2835868aa62a", + "file": "src/assets/wise5/components/label/edit-label-advanced/edit-label-advanced.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "edit-label-advanced.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "line": 13, + "type": "string", + "decorators": [], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 14, + "type": "string", + "decorators": [], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "allowedConnectedComponentTypes", + "defaultValue": "[\n 'ConceptMap',\n 'Draw',\n 'Embedded',\n 'Graph',\n 'Label',\n 'OpenResponse',\n 'Table'\n ]", + "deprecated": false, + "deprecationMessage": "", + "type": "[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 36 + }, + { + "name": "component", + "deprecated": false, + "deprecationMessage": "", + "type": "Component", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "ComponentContent", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + } + ], + "methodsClass": [ + { + "name": "componentChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 47, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "connectedComponentsChanged", + "args": [ + { + "name": "connectedComponents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 42, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "isNotebookEnabled", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 38, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "moveObjectDown", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 56, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "moveObjectUp", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 51, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "setShowSubmitButtonValue", + "args": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 28, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "EditComponentAddToNotebookButtonComponent", + "type": "component" + }, + { + "name": "EditComponentSaveButtonComponent", + "type": "component" + }, + { + "name": "EditComponentSubmitButtonComponent", + "type": "component" + }, + { + "name": "EditComponentMaxSubmitComponent", + "type": "component" + }, + { + "name": "EditComponentDefaultFeedback", + "type": "component" + }, + { + "name": "EditComponentMaxScoreComponent", + "type": "component" + }, + { + "name": "EditComponentExcludeFromTotalScoreComponent", + "type": "component" + }, + { + "name": "EditComponentWidthComponent", + "type": "component" + }, + { + "name": "EditComponentRubricComponent", + "type": "component" + }, + { + "name": "EditComponentTagsComponent", + "type": "component" + }, + { + "name": "EditLabelConnectedComponentsComponent", + "type": "component" + }, + { + "name": "EditComponentConstraintsComponent", + "type": "component" + }, + { + "name": "EditComponentJsonComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { EditAdvancedComponentComponent } from '../../../../../app/authoring-tool/edit-advanced-component/edit-advanced-component.component';\nimport { EditComponentAddToNotebookButtonComponent } from '../../../../../app/authoring-tool/edit-component-add-to-notebook-button/edit-component-add-to-notebook-button.component';\nimport { EditComponentSaveButtonComponent } from '../../../../../app/authoring-tool/edit-component-save-button/edit-component-save-button.component';\nimport { EditComponentSubmitButtonComponent } from '../../../../../app/authoring-tool/edit-component-submit-button/edit-component-submit-button.component';\nimport { EditComponentMaxSubmitComponent } from '../../../../../app/authoring-tool/edit-component-max-submit/edit-component-max-submit.component';\nimport { EditComponentDefaultFeedback } from '../../../../../app/authoring-tool/edit-advanced-component/edit-component-default-feedback/edit-component-default-feedback.component';\nimport { EditComponentMaxScoreComponent } from '../../../../../app/authoring-tool/edit-component-max-score/edit-component-max-score.component';\nimport { EditComponentExcludeFromTotalScoreComponent } from '../../../../../app/authoring-tool/edit-component-exclude-from-total-score/edit-component-exclude-from-total-score.component';\nimport { EditComponentWidthComponent } from '../../../../../app/authoring-tool/edit-component-width/edit-component-width.component';\nimport { EditComponentRubricComponent } from '../../../../../app/authoring-tool/edit-component-rubric/edit-component-rubric.component';\nimport { EditComponentTagsComponent } from '../../../../../app/authoring-tool/edit-component-tags/edit-component-tags.component';\nimport { EditLabelConnectedComponentsComponent } from '../edit-label-connected-components/edit-label-connected-components.component';\nimport { EditComponentConstraintsComponent } from '../../../../../app/authoring-tool/edit-component-constraints/edit-component-constraints.component';\nimport { EditComponentJsonComponent } from '../../../../../app/authoring-tool/edit-component-json/edit-component-json.component';\n\n@Component({\n templateUrl: 'edit-label-advanced.component.html',\n imports: [\n EditComponentAddToNotebookButtonComponent,\n EditComponentSaveButtonComponent,\n EditComponentSubmitButtonComponent,\n EditComponentMaxSubmitComponent,\n EditComponentDefaultFeedback,\n EditComponentMaxScoreComponent,\n EditComponentExcludeFromTotalScoreComponent,\n EditComponentWidthComponent,\n EditComponentRubricComponent,\n EditComponentTagsComponent,\n EditLabelConnectedComponentsComponent,\n EditComponentConstraintsComponent,\n EditComponentJsonComponent\n ]\n})\nexport class EditLabelAdvancedComponent extends EditAdvancedComponentComponent {\n allowedConnectedComponentTypes = [\n 'ConceptMap',\n 'Draw',\n 'Embedded',\n 'Graph',\n 'Label',\n 'OpenResponse',\n 'Table'\n ];\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [ + "EditAdvancedComponentComponent" + ], + "templateData": "@if (isNotebookEnabled()) {\n
    \n \n
    \n}\n\n
    \n\n@if (componentContent.showSubmitButton) {\n \n}\n\n
    \n \n \n \n \n \n
    \n\n\n\n" + }, + { + "name": "EditLabelConnectedComponentsComponent", + "id": "component-EditLabelConnectedComponentsComponent-205b84433805c51d7df95c32098c33da4af8c2bac1b9a4e93be58ad6a9dfd572d2156b7fbe2ebc5347146fe18f2ced4902a6793f16bbe074b1ee9026e0f32d6a", + "file": "src/assets/wise5/components/label/edit-label-connected-components/edit-label-connected-components.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "edit-label-connected-components", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./edit-label-connected-components.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "allowedConnectedComponentTypes", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "line": 21, + "type": "string[]", + "decorators": [], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "line": 18, + "type": "any", + "decorators": [], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "line": 19, + "type": "string", + "decorators": [], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "connectedComponents", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "line": 22, + "type": "any[]", + "decorators": [], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 20, + "type": "string", + "decorators": [], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + } + ], + "outputsClass": [ + { + "name": "connectedComponentsChanged", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 23, + "type": "EventEmitter", + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + } + ], + "propertiesClass": [ + { + "name": "componentTypesThatCanImportWorkAsBackground", + "defaultValue": "[\n 'ConceptMap',\n 'Draw',\n 'Embedded',\n 'Graph',\n 'OpenResponse',\n 'Table'\n ]", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 27, + "inheritance": { + "file": "EditConnectedComponentsWithBackgroundComponent" + } + }, + { + "name": "nodeIds", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 24, + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + } + ], + "methodsClass": [ + { + "name": "afterComponentIdChanged", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 36, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "canConnectedComponentTypeImportWorkAsBackground", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 15, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsWithBackgroundComponent" + } + }, + { + "name": "addConnectedComponent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 34, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "automaticallySetConnectedComponentFieldsIfPossible", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 74, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "automaticallySetConnectedComponentTypeIfPossible", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 57, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "connectedComponentChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "connectedComponentComponentIdChanged", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 51, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "connectedComponentNodeIdChanged", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 47, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "connectedComponentTypeChanged", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 66, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "connectedComponentTypeIsSpecificType", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 106, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "createConnectedComponent", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 39, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "deleteConnectedComponent", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 76, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "getComponents", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 87, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "getConnectedComponentType", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 95, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "getNodePositionAndTitle", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 91, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "isConnectedComponentTypeAllowed", + "args": [ + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 70, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 28, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "EditConnectedComponentsAddButtonComponent", + "type": "component" + }, + { + "name": "EditConnectedComponentDefaultSelectsComponent", + "type": "component" + }, + { + "name": "MatCheckbox" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatInput" + }, + { + "name": "EditConnectedComponentDeleteButtonComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatCheckbox } from '@angular/material/checkbox';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInput } from '@angular/material/input';\nimport { EditConnectedComponentDefaultSelectsComponent } from '../../../../../app/authoring-tool/edit-connected-component-default-selects/edit-connected-component-default-selects.component';\nimport { EditConnectedComponentDeleteButtonComponent } from '../../../../../app/authoring-tool/edit-connected-component-delete-button/edit-connected-component-delete-button.component';\nimport { EditConnectedComponentsAddButtonComponent } from '../../../../../app/authoring-tool/edit-connected-components-add-button/edit-connected-components-add-button.component';\nimport { EditConnectedComponentsWithBackgroundComponent } from '../../../../../app/authoring-tool/edit-connected-components-with-background/edit-connected-components-with-background.component';\n\n@Component({\n selector: 'edit-label-connected-components',\n templateUrl: './edit-label-connected-components.component.html',\n styleUrl:\n '../../../../../app/authoring-tool/edit-connected-components/edit-connected-components.component.scss',\n imports: [\n EditConnectedComponentsAddButtonComponent,\n EditConnectedComponentDefaultSelectsComponent,\n MatCheckbox,\n FormsModule,\n MatFormFieldModule,\n MatInput,\n EditConnectedComponentDeleteButtonComponent\n ]\n})\nexport class EditLabelConnectedComponentsComponent extends EditConnectedComponentsWithBackgroundComponent {\n componentTypesThatCanImportWorkAsBackground: string[] = [\n 'ConceptMap',\n 'Draw',\n 'Embedded',\n 'Graph',\n 'OpenResponse',\n 'Table'\n ];\n\n afterComponentIdChanged(connectedComponent: any) {\n super.afterComponentIdChanged(connectedComponent);\n const connectedComponentType = this.getConnectedComponentType(connectedComponent);\n if (connectedComponentType !== 'OpenResponse') {\n delete connectedComponent.charactersPerLine;\n delete connectedComponent.spaceInbetweenLines;\n delete connectedComponent.fontSize;\n }\n if (connectedComponentType === 'OpenResponse') {\n connectedComponent.charactersPerLine ??= 100;\n connectedComponent.spaceInbetweenLines ??= 40;\n connectedComponent.fontSize ??= 16;\n }\n }\n}\n", + "styleUrl": "../../../../../app/authoring-tool/edit-connected-components/edit-connected-components.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [ + "EditConnectedComponentsWithBackgroundComponent" + ], + "templateData": "\n@for (\n connectedComponent of connectedComponents;\n track connectedComponent;\n let connectedComponentIndex = $index\n) {\n
    \n
    \n \n @if (canConnectedComponentTypeImportWorkAsBackground(connectedComponent)) {\n
    \n \n Import Work As Background\n \n
    \n }\n @if (\n getConnectedComponentType(connectedComponent) === 'OpenResponse' &&\n connectedComponent.importWorkAsBackground\n ) {\n \n Characters Per Line\n \n \n \n Space Inbetween Lines\n \n \n \n Font Size\n \n \n }\n \n \n
    \n
    \n}\n" + }, + { + "name": "EditMatchAdvancedComponent", + "id": "component-EditMatchAdvancedComponent-f0754bbdff11d3167ae642322416038c7c7155c0639ecfdb9d772c1fe000ba6483269e24cefab3556c0cfa9522a914419e86dc034141c680cbddf9375cd0b2d7", + "file": "src/assets/wise5/components/match/edit-match-advanced/edit-match-advanced.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [ + ".checkbox { margin-top: 4px; margin-bottom: 4px; }" + ], + "templateUrl": [ + "edit-match-advanced.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "line": 13, + "type": "string", + "decorators": [], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 14, + "type": "string", + "decorators": [], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "allowedConnectedComponentTypes", + "defaultValue": "['DialogGuidance', 'Match']", + "deprecated": false, + "deprecationMessage": "", + "type": "[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 40 + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "MatchContent", + "indexKey": "", + "optional": false, + "description": "", + "line": 41, + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "component", + "deprecated": false, + "deprecationMessage": "", + "type": "Component", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + } + ], + "methodsClass": [ + { + "name": "componentChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 47, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "connectedComponentsChanged", + "args": [ + { + "name": "connectedComponents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 42, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "isNotebookEnabled", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 38, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "moveObjectDown", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 56, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "moveObjectUp", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 51, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "setShowSubmitButtonValue", + "args": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 28, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatCheckbox" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "EditComponentSaveButtonComponent", + "type": "component" + }, + { + "name": "EditComponentSubmitButtonComponent", + "type": "component" + }, + { + "name": "EditComponentMaxSubmitComponent", + "type": "component" + }, + { + "name": "EditComponentDefaultFeedback", + "type": "component" + }, + { + "name": "EditComponentMaxScoreComponent", + "type": "component" + }, + { + "name": "EditComponentExcludeFromTotalScoreComponent", + "type": "component" + }, + { + "name": "EditComponentWidthComponent", + "type": "component" + }, + { + "name": "EditComponentRubricComponent", + "type": "component" + }, + { + "name": "EditComponentTagsComponent", + "type": "component" + }, + { + "name": "EditMatchConnectedComponentsComponent", + "type": "component" + }, + { + "name": "EditComponentConstraintsComponent", + "type": "component" + }, + { + "name": "EditComponentJsonComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { EditAdvancedComponentComponent } from '../../../../../app/authoring-tool/edit-advanced-component/edit-advanced-component.component';\nimport { MatchContent } from '../MatchContent';\nimport { MatCheckbox } from '@angular/material/checkbox';\nimport { FormsModule } from '@angular/forms';\nimport { EditComponentSaveButtonComponent } from '../../../../../app/authoring-tool/edit-component-save-button/edit-component-save-button.component';\nimport { EditComponentSubmitButtonComponent } from '../../../../../app/authoring-tool/edit-component-submit-button/edit-component-submit-button.component';\nimport { EditComponentMaxSubmitComponent } from '../../../../../app/authoring-tool/edit-component-max-submit/edit-component-max-submit.component';\nimport { EditComponentDefaultFeedback } from '../../../../../app/authoring-tool/edit-advanced-component/edit-component-default-feedback/edit-component-default-feedback.component';\nimport { EditComponentMaxScoreComponent } from '../../../../../app/authoring-tool/edit-component-max-score/edit-component-max-score.component';\nimport { EditComponentExcludeFromTotalScoreComponent } from '../../../../../app/authoring-tool/edit-component-exclude-from-total-score/edit-component-exclude-from-total-score.component';\nimport { EditComponentWidthComponent } from '../../../../../app/authoring-tool/edit-component-width/edit-component-width.component';\nimport { EditComponentRubricComponent } from '../../../../../app/authoring-tool/edit-component-rubric/edit-component-rubric.component';\nimport { EditComponentTagsComponent } from '../../../../../app/authoring-tool/edit-component-tags/edit-component-tags.component';\nimport { EditMatchConnectedComponentsComponent } from '../edit-match-connected-components/edit-match-connected-components.component';\nimport { EditComponentConstraintsComponent } from '../../../../../app/authoring-tool/edit-component-constraints/edit-component-constraints.component';\nimport { EditComponentJsonComponent } from '../../../../../app/authoring-tool/edit-component-json/edit-component-json.component';\n\n@Component({\n templateUrl: 'edit-match-advanced.component.html',\n styles: ['.checkbox { margin-top: 4px; margin-bottom: 4px; }'],\n imports: [\n MatCheckbox,\n FormsModule,\n EditComponentSaveButtonComponent,\n EditComponentSubmitButtonComponent,\n EditComponentMaxSubmitComponent,\n EditComponentDefaultFeedback,\n EditComponentMaxScoreComponent,\n EditComponentExcludeFromTotalScoreComponent,\n EditComponentWidthComponent,\n EditComponentRubricComponent,\n EditComponentTagsComponent,\n EditMatchConnectedComponentsComponent,\n EditComponentConstraintsComponent,\n EditComponentJsonComponent\n ]\n})\nexport class EditMatchAdvancedComponent extends EditAdvancedComponentComponent {\n allowedConnectedComponentTypes = ['DialogGuidance', 'Match'];\n componentContent: MatchContent;\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": ".checkbox { margin-top: 4px; margin-bottom: 4px; }\n", + "extends": [ + "EditAdvancedComponentComponent" + ], + "templateData": "\n Student Can Create Choices\n\n
    \n@if (isNotebookEnabled()) {\n \n Show Private Notes As Choices\n \n}\n
    \n\n
    \n\n@if (componentContent.showSubmitButton) {\n \n}\n\n
    \n \n \n \n \n \n
    \n\n\n\n" + }, + { + "name": "EditMatchConnectedComponentsComponent", + "id": "component-EditMatchConnectedComponentsComponent-f6a2a2a130e2a08610eb9ca3070886a94c75b4d7ea29432c9fc8494c3fdf73539695413cede8fee1e200c62dcbe026cfac9865ed2927bccb7e555d368c4a7ead", + "file": "src/assets/wise5/components/match/edit-match-connected-components/edit-match-connected-components.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "edit-match-connected-components", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "../../../../../app/authoring-tool/edit-connected-components/edit-connected-components.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "allowedConnectedComponentTypes", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "line": 21, + "type": "string[]", + "decorators": [], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "line": 18, + "type": "any", + "decorators": [], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "line": 19, + "type": "string", + "decorators": [], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "connectedComponents", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "line": 22, + "type": "any[]", + "decorators": [], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 20, + "type": "string", + "decorators": [], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + } + ], + "outputsClass": [ + { + "name": "connectedComponentsChanged", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 23, + "type": "EventEmitter", + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + } + ], + "propertiesClass": [ + { + "name": "nodeIds", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 24, + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + } + ], + "methodsClass": [ + { + "name": "afterComponentIdChanged", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "askIfWantToCopyChoicesAndBuckets", + "args": [ + { + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 32, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addConnectedComponent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 34, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "automaticallySetConnectedComponentFieldsIfPossible", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 74, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "automaticallySetConnectedComponentTypeIfPossible", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 57, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "connectedComponentChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "connectedComponentComponentIdChanged", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 51, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "connectedComponentNodeIdChanged", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 47, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "connectedComponentTypeChanged", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 66, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "connectedComponentTypeIsSpecificType", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 106, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "createConnectedComponent", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 39, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "deleteConnectedComponent", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 76, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "getComponents", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 87, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "getConnectedComponentType", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 95, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "getNodePositionAndTitle", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 91, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "isConnectedComponentTypeAllowed", + "args": [ + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 70, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 28, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "EditConnectedComponentsAddButtonComponent", + "type": "component" + }, + { + "name": "EditConnectedComponentDefaultSelectsComponent", + "type": "component" + }, + { + "name": "EditConnectedComponentDeleteButtonComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { EditConnectedComponentsComponent } from '../../../../../app/authoring-tool/edit-connected-components/edit-connected-components.component';\nimport { copy } from '../../../common/object/object';\nimport { ProjectService } from '../../../services/projectService';\nimport { EditConnectedComponentsAddButtonComponent } from '../../../../../app/authoring-tool/edit-connected-components-add-button/edit-connected-components-add-button.component';\nimport { EditConnectedComponentDefaultSelectsComponent } from '../../../../../app/authoring-tool/edit-connected-component-default-selects/edit-connected-component-default-selects.component';\nimport { EditConnectedComponentDeleteButtonComponent } from '../../../../../app/authoring-tool/edit-connected-component-delete-button/edit-connected-component-delete-button.component';\n\n@Component({\n selector: 'edit-match-connected-components',\n templateUrl:\n '../../../../../app/authoring-tool/edit-connected-components/edit-connected-components.component.html',\n styleUrl:\n '../../../../../app/authoring-tool/edit-connected-components/edit-connected-components.component.scss',\n imports: [\n EditConnectedComponentsAddButtonComponent,\n EditConnectedComponentDefaultSelectsComponent,\n EditConnectedComponentDeleteButtonComponent\n ]\n})\nexport class EditMatchConnectedComponentsComponent extends EditConnectedComponentsComponent {\n constructor(protected projectService: ProjectService) {\n super(projectService);\n }\n\n afterComponentIdChanged(connectedComponent: any): void {\n if (this.connectedComponentTypeIsSpecificType(connectedComponent, 'Match')) {\n this.askIfWantToCopyChoicesAndBuckets(connectedComponent);\n }\n }\n\n askIfWantToCopyChoicesAndBuckets({ nodeId, componentId }): void {\n if (\n confirm(\n $localize`Do you want to copy the choices and buckets from the connected component?\\n\\nWarning: This will delete all existing choices and buckets in this component.`\n )\n ) {\n const connectedComponentContent = copy(this.projectService.getComponent(nodeId, componentId));\n this.componentContent.choices = connectedComponentContent.choices;\n this.componentContent.buckets = connectedComponentContent.buckets;\n this.componentContent.feedback = connectedComponentContent.feedback;\n this.componentContent.ordered = connectedComponentContent.ordered;\n this.componentContent.canCreateChoices = connectedComponentContent.canCreateChoices;\n this.componentContent.importPrivateNotes = connectedComponentContent.importPrivateNotes;\n }\n }\n}\n", + "styleUrl": "../../../../../app/authoring-tool/edit-connected-components/edit-connected-components.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 21, + "jsdoctags": [ + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "EditConnectedComponentsComponent" + ], + "templateData": "\n@for (connectedComponent of connectedComponents; track connectedComponent; let i = $index) {\n
    \n \n \n \n
    \n}\n" + }, + { + "name": "EditMultipleChoiceAdvancedComponent", + "id": "component-EditMultipleChoiceAdvancedComponent-c388c46b81f140076b6b064f363e046ad2a8ce704c24a22b3d9308aa657abcc6c61a67eec7278aa3cb6bdf0224cba9abbb0376a2152177daabac1af5b50ecc92", + "file": "src/assets/wise5/components/multipleChoice/edit-multiple-choice-advanced/edit-multiple-choice-advanced.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [ + ".show-feedback-checkbox { margin-top: 4px; margin-bottom: 4px; }" + ], + "templateUrl": [ + "edit-multiple-choice-advanced.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "line": 13, + "type": "string", + "decorators": [], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 14, + "type": "string", + "decorators": [], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "allowedConnectedComponentTypes", + "defaultValue": "['MultipleChoice']", + "deprecated": false, + "deprecationMessage": "", + "type": "[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 40 + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "MultipleChoiceContent", + "indexKey": "", + "optional": false, + "description": "", + "line": 41, + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "component", + "deprecated": false, + "deprecationMessage": "", + "type": "Component", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + } + ], + "methodsClass": [ + { + "name": "componentChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 47, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "connectedComponentsChanged", + "args": [ + { + "name": "connectedComponents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 42, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "isNotebookEnabled", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 38, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "moveObjectDown", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 56, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "moveObjectUp", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 51, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "setShowSubmitButtonValue", + "args": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 28, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatCheckbox" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "EditComponentSaveButtonComponent", + "type": "component" + }, + { + "name": "EditComponentSubmitButtonComponent", + "type": "component" + }, + { + "name": "EditComponentMaxSubmitComponent", + "type": "component" + }, + { + "name": "EditComponentDefaultFeedback", + "type": "component" + }, + { + "name": "EditComponentMaxScoreComponent", + "type": "component" + }, + { + "name": "EditComponentExcludeFromTotalScoreComponent", + "type": "component" + }, + { + "name": "EditComponentWidthComponent", + "type": "component" + }, + { + "name": "EditComponentRubricComponent", + "type": "component" + }, + { + "name": "EditComponentTagsComponent", + "type": "component" + }, + { + "name": "EditMultipleChoiceConnectedComponentsComponent", + "type": "component" + }, + { + "name": "EditComponentConstraintsComponent", + "type": "component" + }, + { + "name": "EditComponentJsonComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatCheckbox } from '@angular/material/checkbox';\nimport { EditAdvancedComponentComponent } from '../../../../../app/authoring-tool/edit-advanced-component/edit-advanced-component.component';\nimport { EditComponentDefaultFeedback } from '../../../../../app/authoring-tool/edit-advanced-component/edit-component-default-feedback/edit-component-default-feedback.component';\nimport { EditComponentConstraintsComponent } from '../../../../../app/authoring-tool/edit-component-constraints/edit-component-constraints.component';\nimport { EditComponentExcludeFromTotalScoreComponent } from '../../../../../app/authoring-tool/edit-component-exclude-from-total-score/edit-component-exclude-from-total-score.component';\nimport { EditComponentJsonComponent } from '../../../../../app/authoring-tool/edit-component-json/edit-component-json.component';\nimport { EditComponentMaxScoreComponent } from '../../../../../app/authoring-tool/edit-component-max-score/edit-component-max-score.component';\nimport { EditComponentMaxSubmitComponent } from '../../../../../app/authoring-tool/edit-component-max-submit/edit-component-max-submit.component';\nimport { EditComponentRubricComponent } from '../../../../../app/authoring-tool/edit-component-rubric/edit-component-rubric.component';\nimport { EditComponentSaveButtonComponent } from '../../../../../app/authoring-tool/edit-component-save-button/edit-component-save-button.component';\nimport { EditComponentSubmitButtonComponent } from '../../../../../app/authoring-tool/edit-component-submit-button/edit-component-submit-button.component';\nimport { EditComponentTagsComponent } from '../../../../../app/authoring-tool/edit-component-tags/edit-component-tags.component';\nimport { EditComponentWidthComponent } from '../../../../../app/authoring-tool/edit-component-width/edit-component-width.component';\nimport { EditMultipleChoiceConnectedComponentsComponent } from '../edit-multiple-choice-connected-components/edit-multiple-choice-connected-components.component';\nimport { MultipleChoiceContent } from '../MultipleChoiceContent';\n\n@Component({\n templateUrl: 'edit-multiple-choice-advanced.component.html',\n styles: ['.show-feedback-checkbox { margin-top: 4px; margin-bottom: 4px; }'],\n imports: [\n MatCheckbox,\n FormsModule,\n EditComponentSaveButtonComponent,\n EditComponentSubmitButtonComponent,\n EditComponentMaxSubmitComponent,\n EditComponentDefaultFeedback,\n EditComponentMaxScoreComponent,\n EditComponentExcludeFromTotalScoreComponent,\n EditComponentWidthComponent,\n EditComponentRubricComponent,\n EditComponentTagsComponent,\n EditMultipleChoiceConnectedComponentsComponent,\n EditComponentConstraintsComponent,\n EditComponentJsonComponent\n ]\n})\nexport class EditMultipleChoiceAdvancedComponent extends EditAdvancedComponentComponent {\n allowedConnectedComponentTypes = ['MultipleChoice'];\n componentContent: MultipleChoiceContent;\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": ".show-feedback-checkbox { margin-top: 4px; margin-bottom: 4px; }\n", + "extends": [ + "EditAdvancedComponentComponent" + ], + "templateData": "
    \n \n Show Feedback\n \n
    \n\n
    \n\n@if (componentContent.showSubmitButton) {\n \n}\n\n
    \n \n \n \n \n \n
    \n\n\n\n" + }, + { + "name": "EditMultipleChoiceConnectedComponentsComponent", + "id": "component-EditMultipleChoiceConnectedComponentsComponent-9a299aa2e21c9e09b878036c3103cb4582653be6dd56be7ef32d7029abf2990b0dd406a07d0ee76846556f00acbe041bc53698e874023f3d5d44fa399825a4b1", + "file": "src/assets/wise5/components/multipleChoice/edit-multiple-choice-connected-components/edit-multiple-choice-connected-components.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "edit-multiple-choice-connected-components", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "../../../../../app/authoring-tool/edit-connected-components/edit-connected-components.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "allowedConnectedComponentTypes", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "line": 21, + "type": "string[]", + "decorators": [], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "line": 18, + "type": "any", + "decorators": [], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "line": 19, + "type": "string", + "decorators": [], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "connectedComponents", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "line": 22, + "type": "any[]", + "decorators": [], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 20, + "type": "string", + "decorators": [], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + } + ], + "outputsClass": [ + { + "name": "connectedComponentsChanged", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 23, + "type": "EventEmitter", + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + } + ], + "propertiesClass": [ + { + "name": "nodeIds", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 24, + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + } + ], + "methodsClass": [ + { + "name": "afterComponentIdChanged", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 27, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "askIfWantToCopyChoices", + "args": [ + { + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 33, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "copyChoicesFromComponent", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 49, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "copyChoiceTypeFromComponent", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 44, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getCopyOfChoicesFromComponent", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 53, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addConnectedComponent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 34, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "automaticallySetConnectedComponentFieldsIfPossible", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 74, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "automaticallySetConnectedComponentTypeIfPossible", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 57, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "connectedComponentChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "connectedComponentComponentIdChanged", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 51, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "connectedComponentNodeIdChanged", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 47, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "connectedComponentTypeChanged", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 66, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "connectedComponentTypeIsSpecificType", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 106, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "createConnectedComponent", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 39, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "deleteConnectedComponent", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 76, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "getComponents", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 87, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "getConnectedComponentType", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 95, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "getNodePositionAndTitle", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 91, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "isConnectedComponentTypeAllowed", + "args": [ + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 70, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 28, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "EditConnectedComponentsAddButtonComponent", + "type": "component" + }, + { + "name": "EditConnectedComponentDefaultSelectsComponent", + "type": "component" + }, + { + "name": "EditConnectedComponentDeleteButtonComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { EditConnectedComponentsComponent } from '../../../../../app/authoring-tool/edit-connected-components/edit-connected-components.component';\nimport { copy } from '../../../common/object/object';\nimport { ProjectService } from '../../../services/projectService';\nimport { MultipleChoiceContent } from '../MultipleChoiceContent';\nimport { EditConnectedComponentsAddButtonComponent } from '../../../../../app/authoring-tool/edit-connected-components-add-button/edit-connected-components-add-button.component';\nimport { EditConnectedComponentDefaultSelectsComponent } from '../../../../../app/authoring-tool/edit-connected-component-default-selects/edit-connected-component-default-selects.component';\nimport { EditConnectedComponentDeleteButtonComponent } from '../../../../../app/authoring-tool/edit-connected-component-delete-button/edit-connected-component-delete-button.component';\n\n@Component({\n selector: 'edit-multiple-choice-connected-components',\n templateUrl:\n '../../../../../app/authoring-tool/edit-connected-components/edit-connected-components.component.html',\n styleUrl:\n '../../../../../app/authoring-tool/edit-connected-components/edit-connected-components.component.scss',\n imports: [\n EditConnectedComponentsAddButtonComponent,\n EditConnectedComponentDefaultSelectsComponent,\n EditConnectedComponentDeleteButtonComponent\n ]\n})\nexport class EditMultipleChoiceConnectedComponentsComponent extends EditConnectedComponentsComponent {\n constructor(protected projectService: ProjectService) {\n super(projectService);\n }\n\n afterComponentIdChanged(connectedComponent: any): void {\n if (this.connectedComponentTypeIsSpecificType(connectedComponent, 'MultipleChoice')) {\n this.askIfWantToCopyChoices(connectedComponent);\n }\n }\n\n askIfWantToCopyChoices({ nodeId, componentId }): void {\n if (\n confirm(\n $localize`Do you want to copy the choices from the connected component?\\n\\nWarning: This will delete all existing choices in this component.`\n )\n ) {\n this.copyChoiceTypeFromComponent(nodeId, componentId);\n this.copyChoicesFromComponent(nodeId, componentId);\n }\n }\n\n copyChoiceTypeFromComponent(nodeId: string, componentId: string): void {\n const component = this.projectService.getComponent(nodeId, componentId);\n this.componentContent.choiceType = (component as MultipleChoiceContent).choiceType;\n }\n\n copyChoicesFromComponent(nodeId: string, componentId: string): void {\n this.componentContent.choices = this.getCopyOfChoicesFromComponent(nodeId, componentId);\n }\n\n getCopyOfChoicesFromComponent(nodeId: string, componentId: string): void {\n const component = this.projectService.getComponent(nodeId, componentId);\n return copy((component as MultipleChoiceContent).choices);\n }\n}\n", + "styleUrl": "../../../../../app/authoring-tool/edit-connected-components/edit-connected-components.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 22, + "jsdoctags": [ + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "EditConnectedComponentsComponent" + ], + "templateData": "\n@for (connectedComponent of connectedComponents; track connectedComponent; let i = $index) {\n
    \n \n \n \n
    \n}\n" + }, + { + "name": "EditNodeRubricComponent", + "id": "component-EditNodeRubricComponent-01ec24d51d4a4c78edd3c94ee70027e943378f6c41fa03dff6e597fc1c3c1e6d9d2f18061236969e22e042691fa671983979d0078b5299ac888771c3865a236e", + "file": "src/assets/wise5/authoringTool/node/editRubric/edit-node-rubric.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "template": "
    Edit Step Rubric
    ", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "node", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 23, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "saveProject", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 29, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "TranslatableRichTextEditorComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, OnInit } from '@angular/core';\nimport { TeacherProjectService } from '../../../services/teacherProjectService';\nimport { ActivatedRoute } from '@angular/router';\nimport { TranslatableRichTextEditorComponent } from '../../components/translatable-rich-text-editor/translatable-rich-text-editor.component';\n\n@Component({\n imports: [TranslatableRichTextEditorComponent],\n template: `
    Edit Step Rubric
    \n `\n})\nexport class EditNodeRubricComponent implements OnInit {\n protected node: any;\n\n constructor(\n private projectService: TeacherProjectService,\n private route: ActivatedRoute\n ) {}\n\n ngOnInit(): void {\n this.route.parent.parent.parent.params.subscribe((params) => {\n this.node = this.projectService.getNodeById(params.nodeId);\n });\n }\n\n protected saveProject(): void {\n this.projectService.saveProject();\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 16, + "jsdoctags": [ + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ] + }, + { + "name": "EditNodeTitleComponent", + "id": "component-EditNodeTitleComponent-edf9411132d7a7b250854a1de4c80b5df00271f25c191667d778e8a231b456040b0cb816304e9aff71cb3c726559e2b15e12aae5d9d18c5b177102babda83fa9", + "file": "src/assets/wise5/authoringTool/node/edit-node-title/edit-node-title.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "edit-node-title", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./edit-node-title.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "node", + "deprecated": false, + "deprecationMessage": "", + "line": 14, + "type": "Node", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "label", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "modifierKind": [ + 124 + ] + }, + { + "name": "nodeJson", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "ngOnChanges", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 19, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "save", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 27, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "TranslatableInputComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input } from '@angular/core';\nimport { Node } from '../../../common/Node';\nimport { TeacherProjectService } from '../../../services/teacherProjectService';\nimport { TranslatableInputComponent } from '../../components/translatable-input/translatable-input.component';\n\n@Component({\n imports: [TranslatableInputComponent],\n selector: 'edit-node-title',\n styleUrl: './edit-node-title.component.scss',\n templateUrl: './edit-node-title.component.html'\n})\nexport class EditNodeTitleComponent {\n protected label: string;\n @Input() node: Node;\n protected nodeJson: any;\n\n constructor(private projectService: TeacherProjectService) {}\n\n ngOnChanges(): void {\n this.nodeJson = this.projectService.getNodeById(this.node.id);\n this.label =\n (this.node.isGroup() ? $localize`Lesson Title` : $localize`Step Title`) +\n ' ' +\n this.projectService.getNodePositionById(this.node.id);\n }\n\n protected save(): void {\n this.projectService.saveProject();\n }\n}\n", + "styleUrl": "./edit-node-title.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 15, + "jsdoctags": [ + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "\n" + }, + { + "name": "EditNotebookItemDialogComponent", + "id": "component-EditNotebookItemDialogComponent-8c5e6a646af69ba72641f2c0db4b30f251bdc5614d86e4d3e50b98eaa6cb380e33f2a934d231853892270f49abdc0865140d3c6f749c92964078939af60c7379", + "file": "src/assets/wise5/themes/default/notebook/edit-notebook-item-dialog/edit-notebook-item-dialog.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./edit-notebook-item-dialog.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "color", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 40 + }, + { + "name": "data", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 62, + "decorators": [ + { + "name": "Inject", + "stringifiedArguments": "MAT_DIALOG_DATA" + } + ], + "modifierKind": [ + 171, + 125 + ] + }, + { + "name": "file", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 41 + }, + { + "name": "isEditMode", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 42 + }, + { + "name": "isEditTextEnabled", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 43 + }, + { + "name": "isFileUploadEnabled", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 44 + }, + { + "name": "item", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 45 + }, + { + "name": "itemId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 46 + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 47 + }, + { + "name": "note", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 48 + }, + { + "name": "notebookConfig", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 49 + }, + { + "name": "noteFormGroup", + "deprecated": false, + "deprecationMessage": "", + "type": "FormGroup", + "indexKey": "", + "optional": false, + "description": "", + "line": 50 + }, + { + "name": "saveEnabled", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 51 + }, + { + "name": "showUpload", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 52 + }, + { + "name": "studentWorkIds", + "deprecated": false, + "deprecationMessage": "", + "type": "number[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 53 + }, + { + "name": "text", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 54 + }, + { + "name": "textInputLabel", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 55 + }, + { + "name": "textRequired", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 56 + }, + { + "name": "title", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 57 + } + ], + "methodsClass": [ + { + "name": "attachStudentAssetToNote", + "args": [ + { + "name": "file", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 186, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "file", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "cancel", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 225, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "canCopyPublicNotebookItem", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 300, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "canShareWithClass", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 296, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "close", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 229, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "copyPublicNotebookItem", + "args": [ + { + "name": "ev", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 180, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "ev", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "delete", + "args": [ + { + "name": "ev", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 221, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "ev", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getItemNodeId", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 206, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "getItemNodeLink", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 210, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "intitializeForm", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 146, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "isMyNotebookItem", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 308, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isNotebookItemPrivate", + "args": [ + { + "name": "notebookItem", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 316, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "notebookItem", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isNotebookItemPublic", + "args": [ + { + "name": "notebookItem", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 312, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "notebookItem", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isSharedWithClass", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 159, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 77, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "removeAttachment", + "args": [ + { + "name": "attachment", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 214, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "attachment", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "save", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 233, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "setShowUpload", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 287, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "toggleMakeNotePublic", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 163, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "update", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 281, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "DragAndDropDirective", + "type": "directive" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatCheckboxModule", + "type": "module" + }, + { + "name": "MatDialogModule", + "type": "module" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatInputModule", + "type": "module" + }, + { + "name": "MatToolbarModule", + "type": "module" + }, + { + "name": "ReactiveFormsModule", + "type": "module" + }, + { + "name": "WiseLinkComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Inject, OnInit } from '@angular/core';\nimport { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { copy } from '../../../../common/object/object';\nimport { generateRandomKey } from '../../../../common/string/string';\nimport { ConfigService } from '../../../../services/configService';\nimport { ProjectService } from '../../../../services/projectService';\nimport { StudentAssetService } from '../../../../services/studentAssetService';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { WiseLinkComponent } from '../../../../directives/wise-link/wise-link.component';\nimport { CommonModule } from '@angular/common';\nimport { DragAndDropDirective } from '../../../../common/drag-and-drop/drag-and-drop.directive';\n\n@Component({\n imports: [\n CommonModule,\n DragAndDropDirective,\n FormsModule,\n MatButtonModule,\n MatCheckboxModule,\n MatDialogModule,\n MatFormFieldModule,\n MatIconModule,\n MatInputModule,\n MatToolbarModule,\n ReactiveFormsModule,\n WiseLinkComponent\n ],\n styleUrl: './edit-notebook-item-dialog.component.scss',\n templateUrl: './edit-notebook-item-dialog.component.html'\n})\nexport class EditNotebookItemDialogComponent implements OnInit {\n color: any;\n file: any;\n isEditMode: boolean;\n isEditTextEnabled: boolean;\n isFileUploadEnabled: boolean;\n item: any;\n itemId: string;\n nodeId: string;\n note: any;\n notebookConfig: any;\n noteFormGroup: FormGroup;\n saveEnabled: boolean;\n showUpload: boolean = false;\n studentWorkIds: number[];\n text: string;\n textInputLabel: string;\n textRequired: boolean;\n title: string;\n\n constructor(\n private assetService: StudentAssetService,\n private configService: ConfigService,\n @Inject(MAT_DIALOG_DATA) public data: any,\n private dialogRef: MatDialogRef,\n private fb: FormBuilder,\n private projectService: ProjectService\n ) {\n this.nodeId = this.data.nodeId;\n this.file = this.data.file;\n this.isEditMode = this.data.isEditMode;\n this.isEditTextEnabled = this.data.isEditTextEnabled;\n this.isFileUploadEnabled = this.data.isFileUploadEnabled;\n this.note = this.data.note;\n this.studentWorkIds = this.data.studentWorkIds;\n this.text = this.data.text;\n }\n\n ngOnInit(): void {\n if (this.note == null) {\n const currentNodeTitle = this.projectService.getNodeTitle(this.nodeId);\n\n this.item = {\n id: null, // null id means we're creating a new notebook item.\n localNotebookItemId: generateRandomKey(),\n type: 'note', // the notebook item type, TODO: once questions are enabled, don't hard code\n nodeId: this.nodeId,\n title: $localize`Note from ${currentNodeTitle}`,\n content: {\n text: '',\n attachments: []\n }\n };\n } else {\n this.item = copy(this.note);\n this.itemId = this.item.id;\n // Set to null so we're creating a new notebook item.\n // An edit to a notebook item results in a new entry in the db.\n this.item.id = null;\n if (\n this.isNotebookItemPublic(this.item) &&\n this.item.workgroupId != this.configService.getWorkgroupId()\n ) {\n this.isEditMode = false;\n }\n }\n\n // this.notebookConfig = this.NotebookService.getNotebookConfig();\n this.notebookConfig = this.data.notebookConfig;\n this.color = this.notebookConfig.itemTypes[this.item.type].label.color;\n this.textRequired = this.notebookConfig.itemTypes?.note?.requireTextOnEveryNote;\n\n let label = this.notebookConfig.itemTypes[this.item.type].label.singular;\n if (this.isEditMode) {\n if (this.itemId) {\n this.title = $localize`Edit ${label}`;\n } else {\n this.title = $localize`Add ${label}`;\n }\n } else {\n this.title = $localize`View ${label}`;\n }\n const noteTerm = this.notebookConfig.itemTypes[this.item.type].label.link;\n this.textInputLabel = $localize`:Label for note text input:${noteTerm} text`;\n this.saveEnabled = false;\n\n if (this.file != null) {\n // student is trying to add a file to this notebook item.\n this.attachStudentAssetToNote(this.file);\n } else {\n this.setShowUpload();\n }\n\n if (this.text != null) {\n this.item.content.text = this.text;\n this.saveEnabled = true;\n }\n if (!this.isFileUploadEnabled) {\n this.showUpload = false;\n }\n this.intitializeForm();\n\n if (this.studentWorkIds != null) {\n this.item.content.studentWorkIds = this.studentWorkIds;\n }\n }\n\n private intitializeForm(): void {\n this.noteFormGroup = this.fb.group({\n text: new FormControl('')\n });\n const textInput = this.noteFormGroup.get('text');\n if (!this.isEditMode || !this.isEditTextEnabled) {\n textInput.disable();\n }\n if (this.textRequired) {\n textInput.setValidators(Validators.required);\n }\n }\n\n protected isSharedWithClass(): boolean {\n return this.item.groups != null && this.item.groups.includes('public');\n }\n\n protected toggleMakeNotePublic(): void {\n if (this.item.groups == null) {\n this.item.groups = [];\n }\n if (!this.item.groups.includes('public')) {\n this.item.groups.push('public');\n } else {\n for (let i = 0; i < this.item.groups.length; i++) {\n if (this.item.groups[i] === 'public') {\n this.item.groups.splice(i, 1);\n break;\n }\n }\n }\n this.update();\n }\n\n protected copyPublicNotebookItem(ev): void {\n ev.stopPropagation();\n this.data.copyNotebookItem(this.itemId);\n this.dialogRef.close();\n }\n\n protected attachStudentAssetToNote(file: any): void {\n const attachment: any = {\n studentAssetId: null,\n iconURL: '',\n file: file\n };\n\n /*\n * read image data as URL and set it in the attachment iconURL attribute\n * so students can preview the image\n */\n const reader = new FileReader();\n reader.onload = (event) => {\n attachment.iconURL = event.target.result;\n this.item.content.attachments.push(attachment);\n this.update();\n };\n reader.readAsDataURL(file);\n }\n\n protected getItemNodeId(): string {\n return this.item == null ? null : this.item.nodeId;\n }\n\n protected getItemNodeLink(): string {\n return this.item == null ? '' : this.projectService.getNodePositionAndTitle(this.item.nodeId);\n }\n\n protected removeAttachment(attachment: any): void {\n if (this.item.content.attachments.indexOf(attachment) != -1) {\n this.item.content.attachments.splice(this.item.content.attachments.indexOf(attachment), 1);\n this.update();\n }\n }\n\n delete(ev): void {\n // TODO: add archiving/deleting notebook items\n }\n\n cancel(): void {\n this.dialogRef.close();\n }\n\n close(): void {\n this.dialogRef.close();\n }\n\n save(): Promise {\n // go through the notebook item's attachments and look for any attachments that need to be\n // uploaded and made into StudentAsset.\n let uploadAssetPromises = [];\n if (this.item.content.attachments != null) {\n for (let i = 0; i < this.item.content.attachments.length; i++) {\n let attachment = this.item.content.attachments[i];\n if (attachment.studentAssetId == null && attachment.file != null) {\n // this attachment hasn't been uploaded yet, so we'll do that now.\n let file = attachment.file;\n const promise = new Promise((resolve, reject) => {\n this.assetService.uploadAsset(file).then((studentAsset) => {\n this.assetService.copyAssetForReference(studentAsset).then((copiedAsset) => {\n if (copiedAsset != null) {\n var newAttachment = {\n studentAssetId: copiedAsset.id,\n iconURL: copiedAsset.iconURL\n };\n this.item.content.attachments[i] = newAttachment;\n resolve(newAttachment);\n }\n });\n });\n });\n uploadAssetPromises.push(promise);\n }\n }\n }\n\n // make sure all the assets are created before saving the notebook item.\n return Promise.all(uploadAssetPromises).then(() => {\n this.data\n .saveNotebookItem(\n this.item.id,\n this.item.nodeId,\n this.item.localNotebookItemId,\n this.item.type,\n this.item.title,\n this.item.content,\n this.item.groups,\n Date.parse(new Date().toString())\n )\n .then(() => {\n this.dialogRef.close();\n });\n });\n }\n\n update(): void {\n this.saveEnabled =\n this.item.content.text || (!this.textRequired && this.item.content.attachments.length);\n this.setShowUpload();\n }\n\n setShowUpload(): void {\n this.showUpload =\n this.notebookConfig.itemTypes != null &&\n this.notebookConfig.itemTypes.note != null &&\n this.notebookConfig.itemTypes.note.enableStudentUploads &&\n this.item.content.attachments &&\n this.item.content.attachments.length < 1;\n }\n\n canShareWithClass(): boolean {\n return this.projectService.isSpaceExists('public');\n }\n\n canCopyPublicNotebookItem(): boolean {\n return (\n !this.configService.isClassroomMonitor() &&\n this.projectService.isSpaceExists('public') &&\n !this.isMyNotebookItem()\n );\n }\n\n isMyNotebookItem(): boolean {\n return this.item.workgroupId === this.configService.getWorkgroupId();\n }\n\n isNotebookItemPublic(notebookItem: any): boolean {\n return !this.isNotebookItemPrivate(notebookItem);\n }\n\n isNotebookItemPrivate(notebookItem: any): boolean {\n return notebookItem.groups == null;\n }\n}\n", + "styleUrl": "./edit-notebook-item-dialog.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "assetService", + "type": "StudentAssetService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialogRef", + "type": "MatDialogRef", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "fb", + "type": "FormBuilder", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 57, + "jsdoctags": [ + { + "name": "assetService", + "type": "StudentAssetService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialogRef", + "type": "MatDialogRef", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "fb", + "type": "FormBuilder", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "

    {{ title }}

    \n
    \n \n \n {{ textInputLabel }}\n \n \n @if (noteFormGroup.controls['text'].hasError('required')) {\n {{ textInputLabel }} required\n }\n \n @for (attachment of item.content.attachments; track attachment) {\n
    \n \n \n delete\n \n
    \n }\n @if (isEditMode && showUpload) {\n \n \n image Drop image or file here or click to upload!\n \n }\n
    \n place\n \n
    \n
    \n @if (isEditMode) {\n \n
    \n @if (canShareWithClass()) {\n \n Share with Class\n \n }\n
    \n \n
    \n \n Cancel\n \n \n Save\n \n
    \n
    \n }\n @if (!isEditMode) {\n \n
    \n @if (canCopyPublicNotebookItem()) {\n \n content_copy\n Copy to My Notes\n \n }\n
    \n \n
    \n \n
    \n
    \n }\n
    \n" + }, + { + "name": "EditOpenResponseAdvancedComponent", + "id": "component-EditOpenResponseAdvancedComponent-3714cbcc6e568301f8c832fa5825aa2f0984445e28cf4a7bf70b39b99f14235164d5bf0d58acf66d8eced03c02a7965156317eee81b06968848f446b0f9130f0", + "file": "src/assets/wise5/components/openResponse/edit-open-response-advanced/edit-open-response-advanced.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "edit-open-response-advanced.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "line": 13, + "type": "string", + "decorators": [], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 14, + "type": "string", + "decorators": [], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "allowedConnectedComponentTypes", + "defaultValue": "['OpenResponse']", + "deprecated": false, + "deprecationMessage": "", + "type": "[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 41, + "modifierKind": [ + 124 + ] + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "OpenResponseContent", + "indexKey": "", + "optional": false, + "description": "", + "line": 42, + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "initialFeedbackRules", + "defaultValue": "[\n {\n id: 'isDefault',\n expression: 'isDefault',\n feedback: [$localize`Default feedback`]\n }\n ]", + "deprecated": false, + "deprecationMessage": "", + "type": "[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 43, + "modifierKind": [ + 123 + ] + }, + { + "name": "nodeIds", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 50, + "modifierKind": [ + 124 + ] + }, + { + "name": "useCustomCompletionCriteria", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 51 + }, + { + "name": "component", + "deprecated": false, + "deprecationMessage": "", + "type": "Component", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + } + ], + "methodsClass": [ + { + "name": "addCompletionCriteria", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 264, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "addMultipleAttemptScoringRule", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 130, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "addNotification", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 169, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "addScoringRule", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 103, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "createCompletionCriteria", + "args": [], + "optional": false, + "returnType": "{ criteria: {}; inOrder: boolean; }", + "typeParameters": [], + "line": 257, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "createCRaterAndRubricIfNull", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 64, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "createCRaterObject", + "args": [], + "optional": false, + "returnType": "{ itemType: string; itemId: string; scoreOn: string; showScore: boolean; showFeedback: boolean; scoringRules: {}; feedback: { enabled: boolean; rules: {}; }; enableMultipleAttemptScoringRules: boolean; multipleAttemptScoringRules: {}; rubric: { ...; }; }", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "createMultipleAttemptScoringRule", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 142, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "createNotification", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 179, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "createScoringRule", + "args": [], + "optional": false, + "returnType": "{ score: string; feedbackText: string; }", + "typeParameters": [], + "line": 110, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "deleteCompletionCriteria", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 274, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "enableCRaterClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 73, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "enableMultipleAttemptScoringRulesClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 217, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "enableNotificationsClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 225, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getComponents", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "ComponentContent[]", + "typeParameters": [], + "line": 281, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getNodePositionAndTitle", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 289, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "initializeFeedback", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 299, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "isApplicationNode", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 285, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "multipleAttemptScoringRuleDeleteClicked", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 149, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 53, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "notificationDeleteClicked", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 199, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "scoringRuleDeleteClicked", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 117, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setFeedbackEnabled", + "args": [ + { + "name": "feedbackEnabled", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 293, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "feedbackEnabled", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "useCustomCompletionCriteriaClicked", + "args": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 240, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nThe Use Completion Criteria checkbox was clicked. We will toggle the completion criteria in the\ncomponent content.\n", + "description": "

    The Use Completion Criteria checkbox was clicked. We will toggle the completion criteria in the\ncomponent content.

    \n", + "jsdoctags": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "componentChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 47, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "connectedComponentsChanged", + "args": [ + { + "name": "connectedComponents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 42, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "isNotebookEnabled", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 38, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "moveObjectDown", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 56, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "moveObjectUp", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 51, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "setShowSubmitButtonValue", + "args": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 28, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "TranslatableTextareaComponent", + "type": "component" + }, + { + "name": "MatCheckbox" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatInput" + }, + { + "name": "MatButton" + }, + { + "name": "MatSelectModule", + "type": "module" + }, + { + "name": "EditFeedbackRulesComponent", + "type": "component" + }, + { + "name": "MatTooltip" + }, + { + "name": "MatIcon" + }, + { + "name": "EditComponentAddToNotebookButtonComponent", + "type": "component" + }, + { + "name": "EditCommonAdvancedComponent", + "type": "component" + }, + { + "name": "EditCRaterInfoComponent", + "type": "component" + }, + { + "name": "CRaterItemSelectComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatButton } from '@angular/material/button';\nimport { MatCheckbox } from '@angular/material/checkbox';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInput } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { EditAdvancedComponentComponent } from '../../../../../app/authoring-tool/edit-advanced-component/edit-advanced-component.component';\nimport { EditCommonAdvancedComponent } from '../../../../../app/authoring-tool/edit-common-advanced/edit-common-advanced.component';\nimport { EditComponentAddToNotebookButtonComponent } from '../../../../../app/authoring-tool/edit-component-add-to-notebook-button/edit-component-add-to-notebook-button.component';\nimport { TranslatableTextareaComponent } from '../../../authoringTool/components/translatable-textarea/translatable-textarea.component';\nimport { ComponentContent } from '../../../common/ComponentContent';\nimport { EditFeedbackRulesComponent } from '../../common/feedbackRule/edit-feedback-rules/edit-feedback-rules.component';\nimport { OpenResponseContent } from '../OpenResponseContent';\nimport { CRaterItemSelectComponent } from '../../common/cRater/crater-item-select/crater-item-select.component';\nimport { EditCRaterInfoComponent } from '../../common/cRater/edit-crater-info/edit-crater-info.component';\n\n@Component({\n imports: [\n TranslatableTextareaComponent,\n MatCheckbox,\n FormsModule,\n MatFormFieldModule,\n MatInput,\n MatButton,\n MatSelectModule,\n EditFeedbackRulesComponent,\n MatTooltip,\n MatIcon,\n EditComponentAddToNotebookButtonComponent,\n EditCommonAdvancedComponent,\n EditCRaterInfoComponent,\n CRaterItemSelectComponent\n ],\n styleUrl: 'edit-open-response-advanced.component.scss',\n templateUrl: 'edit-open-response-advanced.component.html'\n})\nexport class EditOpenResponseAdvancedComponent extends EditAdvancedComponentComponent {\n protected allowedConnectedComponentTypes = ['OpenResponse'];\n componentContent: OpenResponseContent;\n private initialFeedbackRules = [\n {\n id: 'isDefault',\n expression: 'isDefault',\n feedback: [$localize`Default feedback`]\n }\n ];\n protected nodeIds: string[] = [];\n useCustomCompletionCriteria: boolean;\n\n ngOnInit(): void {\n super.ngOnInit();\n if (this.componentContent.completionCriteria != null) {\n this.useCustomCompletionCriteria = true;\n }\n this.nodeIds = this.teacherProjectService.getFlattenedProjectAsNodeIds();\n if (this.componentContent.enableCRater) {\n this.createCRaterAndRubricIfNull();\n }\n }\n\n private createCRaterAndRubricIfNull() {\n if (this.componentContent.cRater == null) {\n this.componentContent.cRater = this.createCRaterObject();\n }\n if (!this.componentContent.cRater.rubric) {\n this.componentContent.cRater.rubric = { ideas: [] };\n }\n }\n\n enableCRaterClicked(): void {\n if (this.componentContent.enableCRater) {\n this.createCRaterAndRubricIfNull();\n this.setShowSubmitButtonValue(true);\n } else {\n this.setShowSubmitButtonValue(false);\n }\n this.componentChanged();\n }\n\n createCRaterObject() {\n return {\n itemType: 'CRATER',\n itemId: '',\n scoreOn: 'submit',\n showScore: true,\n showFeedback: true,\n scoringRules: [],\n feedback: {\n enabled: false,\n rules: this.initialFeedbackRules\n },\n enableMultipleAttemptScoringRules: false,\n multipleAttemptScoringRules: [],\n rubric: {\n ideas: []\n }\n };\n }\n\n addScoringRule(): void {\n if (this.componentContent.cRater != null && this.componentContent.cRater.scoringRules != null) {\n this.componentContent.cRater.scoringRules.push(this.createScoringRule());\n this.componentChanged();\n }\n }\n\n createScoringRule() {\n return {\n score: '',\n feedbackText: ''\n };\n }\n\n scoringRuleDeleteClicked(index: number): void {\n const scoringRule = this.componentContent.cRater.scoringRules[index];\n const score = scoringRule.score;\n const feedbackText = scoringRule.feedbackText;\n const answer = confirm(\n $localize`Are you sure you want to delete this scoring rule?\\n\\nScore: ${score}\\n\\nFeedback Text: ${feedbackText}`\n );\n if (answer) {\n this.componentContent.cRater.scoringRules.splice(index, 1);\n this.componentChanged();\n }\n }\n\n addMultipleAttemptScoringRule(): void {\n if (\n this.componentContent.cRater != null &&\n this.componentContent.cRater.multipleAttemptScoringRules != null\n ) {\n this.componentContent.cRater.multipleAttemptScoringRules.push(\n this.createMultipleAttemptScoringRule()\n );\n this.componentChanged();\n }\n }\n\n createMultipleAttemptScoringRule(): any {\n return {\n scoreSequence: ['', ''],\n feedbackText: ''\n };\n }\n\n multipleAttemptScoringRuleDeleteClicked(index: number): void {\n const multipleAttemptScoringRule =\n this.componentContent.cRater.multipleAttemptScoringRules[index];\n const scoreSequence = multipleAttemptScoringRule.scoreSequence;\n let previousScore = '';\n let currentScore = '';\n if (scoreSequence != null) {\n previousScore = scoreSequence[0];\n currentScore = scoreSequence[1];\n }\n const feedbackText = multipleAttemptScoringRule.feedbackText;\n const answer = confirm(\n $localize`Are you sure you want to delete this multiple attempt scoring rule?\\n\\nPrevious Score: ${previousScore}\\n\\nCurrent Score: ${currentScore}\\n\\nFeedback Text: ${feedbackText}`\n );\n if (answer) {\n this.componentContent.cRater.multipleAttemptScoringRules.splice(index, 1);\n this.componentChanged();\n }\n }\n\n addNotification(): void {\n if (\n this.componentContent.notificationSettings != null &&\n this.componentContent.notificationSettings.notifications != null\n ) {\n this.componentContent.notificationSettings.notifications.push(this.createNotification());\n this.componentChanged();\n }\n }\n\n createNotification(): any {\n return {\n notificationType: 'CRaterResult',\n enableCriteria: {\n scoreSequence: ['', '']\n },\n isAmbient: false,\n dismissCode: 'apple',\n isNotifyTeacher: true,\n isNotifyStudent: true,\n notificationMessageToStudent:\n '{{username}}, ' +\n $localize`you got a score of` +\n ' {{score}}. ' +\n $localize`Please talk to your teacher` +\n '.',\n notificationMessageToTeacher: '{{username}} ' + $localize`got a score of` + ' {{score}}.'\n };\n }\n\n notificationDeleteClicked(index: number): void {\n const notification = this.componentContent.notificationSettings.notifications[index];\n const scoreSequence = notification.enableCriteria.scoreSequence;\n let previousScore = '';\n let currentScore = '';\n if (scoreSequence != null) {\n previousScore = scoreSequence[0];\n currentScore = scoreSequence[1];\n }\n const answer = confirm(\n $localize`Are you sure you want to delete this notification?\\n\\nPrevious Score: ${previousScore}\\n\\nCurrent Score: ${currentScore}`\n );\n if (answer) {\n this.componentContent.notificationSettings.notifications.splice(index, 1);\n this.componentChanged();\n }\n }\n\n enableMultipleAttemptScoringRulesClicked(): void {\n const cRater = this.componentContent.cRater;\n if (cRater != null && cRater.multipleAttemptScoringRules == null) {\n cRater.multipleAttemptScoringRules = [];\n }\n this.componentChanged();\n }\n\n enableNotificationsClicked(): void {\n if (this.componentContent.enableNotifications) {\n if (this.componentContent.notificationSettings == null) {\n this.componentContent.notificationSettings = {\n notifications: []\n };\n }\n }\n this.componentChanged();\n }\n\n /**\n * The Use Completion Criteria checkbox was clicked. We will toggle the completion criteria in the\n * component content.\n */\n useCustomCompletionCriteriaClicked(event: any): void {\n if (this.useCustomCompletionCriteria) {\n // The completion criteria is currently enabled and the author is trying to disable it\n if (confirm($localize`Are you sure you want to delete the custom completion criteria?`)) {\n delete this.componentContent.completionCriteria;\n } else {\n event.preventDefault();\n }\n } else {\n // The completion criteria is currently disabled and the author is trying to enable it\n if (this.componentContent.completionCriteria == null) {\n this.componentContent.completionCriteria = this.createCompletionCriteria();\n }\n }\n this.componentChanged();\n }\n\n createCompletionCriteria() {\n return {\n criteria: [],\n inOrder: true\n };\n }\n\n addCompletionCriteria(): void {\n const newCompletionCriteria = {\n nodeId: this.nodeId,\n componentId: this.componentId,\n name: 'isSubmitted'\n };\n this.componentContent.completionCriteria.criteria.push(newCompletionCriteria);\n this.componentChanged();\n }\n\n deleteCompletionCriteria(index: number): void {\n if (confirm($localize`Are you sure you want to delete this completion criteria?`)) {\n this.componentContent.completionCriteria.criteria.splice(index, 1);\n this.componentChanged();\n }\n }\n\n getComponents(nodeId: string): ComponentContent[] {\n return this.teacherProjectService.getComponents(nodeId);\n }\n\n isApplicationNode(nodeId: string): boolean {\n return this.teacherProjectService.isApplicationNode(nodeId);\n }\n\n getNodePositionAndTitle(nodeId: string): string {\n return this.teacherProjectService.getNodePositionAndTitle(nodeId);\n }\n\n setFeedbackEnabled(feedbackEnabled: boolean): void {\n this.initializeFeedback();\n this.componentContent.cRater.feedback.enabled = feedbackEnabled;\n this.componentChanged();\n }\n\n private initializeFeedback(): void {\n if (!this.componentContent.cRater.feedback) {\n this.componentContent.cRater.feedback = {\n enabled: false,\n rules: this.initialFeedbackRules\n };\n }\n }\n}\n", + "styleUrl": "edit-open-response-advanced.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [ + "EditAdvancedComponentComponent" + ], + "templateData": "\n
    \n \n Allow students to record audio response\n \n
    \n
    \n \n Enable AI Model\n \n
    \n@if (componentContent.enableCRater) {\n \n
    \n \n Score On\n \n Submit\n Save\n Change\n \n \n
    \n
    \n \n Show Score\n \n
    \n \n Show Feedback\n \n
    \n \n Enable Feedback Rules\n \n @if (componentContent.cRater.feedback?.enabled) {\n \n }\n
    \n @if (\n !componentContent.cRater.feedback?.enabled && componentContent.cRater.scoringRules.length > 0\n ) {\n
    \n
    \n Scoring Rule\n \n add\n \n
    \n @for (\n scoringRule of componentContent.cRater.scoringRules;\n track $index;\n let scoringRuleIndex = $index;\n let isFirst = $first;\n let isLast = $last\n ) {\n
    \n \n Score\n \n \n \n
    \n \n arrow_upward\n \n \n arrow_downward\n \n \n delete\n \n
    \n
    \n }\n
    \n }\n
    \n
    \n \n Enable Multiple Attempt Feedback\n \n
    \n @if (componentContent.cRater.enableMultipleAttemptScoringRules) {\n
    \n Multiple Attempt Scoring Rules\n \n add\n \n
    \n @for (\n multipleAttemptScoringRule of componentContent.cRater.multipleAttemptScoringRules;\n track $index;\n let multipleAttemptScoringRuleIndex = $index;\n let isFirst = $first;\n let isLast = $last\n ) {\n
    \n \n Previous Score\n \n \n \n Current Score\n \n \n \n
    \n \n arrow_upward\n \n \n arrow_downward\n \n \n delete\n \n
    \n
    \n }\n }\n
    \n
    \n
    \n \n Enable Notifications\n \n
    \n @if (componentContent.enableNotifications) {\n
    \n Notifications\n \n add\n \n
    \n @for (\n notification of componentContent.notificationSettings.notifications;\n track $index;\n let notificationIndex = $index;\n let isFirst = $first;\n let isLast = $last\n ) {\n
    \n
    \n \n Previous Score\n \n \n \n Current Score\n \n \n
    \n
    \n \n arrow_upward\n \n \n arrow_downward\n \n \n delete\n \n
    \n
    \n
    \n \n Enable Ambient Display Dismiss Mode\n \n @if (notification.isAmbient) {\n \n Dismiss Code\n \n \n }\n
    \n
    \n \n Notify Student\n \n @if (notification.isNotifyStudent) {\n \n }\n
    \n
    \n \n Notify Teacher\n \n @if (notification.isNotifyTeacher) {\n \n }\n
    \n
    \n }\n }\n
    \n
    \n \n Use Custom Completion Criteria\n \n @if (useCustomCompletionCriteria && componentContent.completionCriteria != null) {\n
    \n Custom Completion Criteria\n \n add\n \n
    \n @for (\n criteria of componentContent.completionCriteria.criteria;\n track $index;\n let criteriaIndex = $index;\n let isFirst = $first;\n let isLast = $last\n ) {\n
    \n \n Step\n \n @for (nodeId of nodeIds; track $index) {\n @if (isApplicationNode(nodeId)) {\n \n {{ getNodePositionAndTitle(nodeId) }}\n \n }\n }\n \n \n \n Component\n \n @for (\n component of getComponents(criteria.nodeId);\n let componentIndex = $index;\n track component.id\n ) {\n \n {{ componentIndex + 1 }}. {{ component.type }}\n @if (component.id === componentId) {\n (This Component)\n }\n \n }\n \n \n \n Action\n \n Submit\n Save\n \n \n
    \n
    \n \n arrow_upward\n \n \n arrow_downward\n \n \n delete\n \n
    \n
    \n }\n }\n
    \n
    \n @if (componentContent.enableCRater) {\n \n }\n
    \n}\n@if (isNotebookEnabled()) {\n \n
    \n}\n\n" + }, + { + "name": "EditOutsideUrlAdvancedComponent", + "id": "component-EditOutsideUrlAdvancedComponent-7e9b229fd60e85081dce43e0365d8e0dc2845bb3f38933719fa6f2cbc9d509017d3c606dda3cc9a3c9fda6ecde7d270e64c3b59a4baad295e7165e56a4d4ed5a", + "file": "src/assets/wise5/components/outsideURL/edit-outside-url-advanced/edit-outside-url-advanced.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "template": " \n \n ", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "line": 13, + "type": "string", + "decorators": [], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 14, + "type": "string", + "decorators": [], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "component", + "deprecated": false, + "deprecationMessage": "", + "type": "Component", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "ComponentContent", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + } + ], + "methodsClass": [ + { + "name": "componentChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 47, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "connectedComponentsChanged", + "args": [ + { + "name": "connectedComponents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 42, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "isNotebookEnabled", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 38, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "moveObjectDown", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 56, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "moveObjectUp", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 51, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "setShowSubmitButtonValue", + "args": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 28, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "EditComponentWidthComponent", + "type": "component" + }, + { + "name": "EditComponentRubricComponent", + "type": "component" + }, + { + "name": "EditComponentConstraintsComponent", + "type": "component" + }, + { + "name": "EditComponentJsonComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { EditAdvancedComponentComponent } from '../../../../../app/authoring-tool/edit-advanced-component/edit-advanced-component.component';\nimport { EditComponentWidthComponent } from '../../../../../app/authoring-tool/edit-component-width/edit-component-width.component';\nimport { EditComponentRubricComponent } from '../../../../../app/authoring-tool/edit-component-rubric/edit-component-rubric.component';\nimport { EditComponentConstraintsComponent } from '../../../../../app/authoring-tool/edit-component-constraints/edit-component-constraints.component';\nimport { EditComponentJsonComponent } from '../../../../../app/authoring-tool/edit-component-json/edit-component-json.component';\n\n@Component({\n imports: [\n EditComponentWidthComponent,\n EditComponentRubricComponent,\n EditComponentConstraintsComponent,\n EditComponentJsonComponent\n ],\n template: `\n \n \n `\n})\nexport class EditOutsideUrlAdvancedComponent extends EditAdvancedComponentComponent {}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [ + "EditAdvancedComponentComponent" + ] + }, + { + "name": "EditPasswordComponent", + "id": "component-EditPasswordComponent-5aebdda1dbe087cf3becbe487698e94e58ef178c3ce5eb461b893121ef92eb4c454c8040a5f0d02f5115f5f6fc30d5a9cf9864fb9a7d0b1501240bdd24d7c0b9", + "file": "src/app/modules/shared/edit-password/edit-password.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "app-edit-password", + "styleUrls": [ + "./edit-password.component.scss" + ], + "styles": [], + "templateUrl": [ + "./edit-password.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "changePasswordForm", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "decorators": [ + { + "name": "ViewChild", + "stringifiedArguments": "'changePasswordForm', {static: false}" + } + ], + "modifierKind": [ + 171 + ] + }, + { + "name": "changePasswordFormGroup", + "defaultValue": "this.fb.group({\n oldPassword: new FormControl('', [Validators.required]),\n newPasswordFormGroup: this.newPasswordFormGroup\n })", + "deprecated": false, + "deprecationMessage": "", + "type": "FormGroup", + "indexKey": "", + "optional": false, + "description": "", + "line": 23 + }, + { + "name": "dialog", + "deprecated": false, + "deprecationMessage": "", + "type": "MatDialog", + "indexKey": "", + "optional": false, + "description": "", + "line": 30, + "modifierKind": [ + 125 + ] + }, + { + "name": "isGoogleUser", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 20 + }, + { + "name": "isSaving", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 19 + }, + { + "name": "newPasswordFormGroup", + "defaultValue": "this.fb.group({})", + "deprecated": false, + "deprecationMessage": "", + "type": "FormGroup", + "indexKey": "", + "optional": false, + "description": "", + "line": 21 + }, + { + "name": "snackBar", + "deprecated": false, + "deprecationMessage": "", + "type": "MatSnackBar", + "indexKey": "", + "optional": false, + "description": "", + "line": 32, + "modifierKind": [ + 125 + ] + } + ], + "methodsClass": [ + { + "name": "changePasswordError", + "args": [ + { + "name": "error", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 85, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "error", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "changePasswordSuccess", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 80, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "getControlFieldValue", + "args": [ + { + "name": "fieldName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 69, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "fieldName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngAfterViewChecked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 42, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 36, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "resetForm", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 100, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "saveChanges", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 46, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "unlinkGoogleAccount", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 94, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { ChangeDetectorRef, Component, OnInit, ViewChild } from '@angular/core';\nimport { FormControl, FormGroup, Validators, FormBuilder } from '@angular/forms';\nimport { finalize } from 'rxjs/operators';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { UserService } from '../../../services/user.service';\nimport { UnlinkGoogleAccountConfirmComponent } from '../unlink-google-account-confirm/unlink-google-account-confirm.component';\nimport { NewPasswordAndConfirmComponent } from '../../../password/new-password-and-confirm/new-password-and-confirm.component';\nimport { changePasswordError } from '../../../common/password-helper';\n\n@Component({\n selector: 'app-edit-password',\n templateUrl: './edit-password.component.html',\n styleUrls: ['./edit-password.component.scss'],\n standalone: false\n})\nexport class EditPasswordComponent implements OnInit {\n @ViewChild('changePasswordForm', { static: false }) changePasswordForm;\n isSaving: boolean = false;\n isGoogleUser: boolean = false;\n newPasswordFormGroup: FormGroup = this.fb.group({});\n\n changePasswordFormGroup: FormGroup = this.fb.group({\n oldPassword: new FormControl('', [Validators.required]),\n newPasswordFormGroup: this.newPasswordFormGroup\n });\n\n constructor(\n private changeDetectorRef: ChangeDetectorRef,\n public dialog: MatDialog,\n private fb: FormBuilder,\n public snackBar: MatSnackBar,\n private userService: UserService\n ) {}\n\n ngOnInit(): void {\n this.userService.getUser().subscribe((user) => {\n this.isGoogleUser = user.isGoogleUser;\n });\n }\n\n ngAfterViewChecked(): void {\n this.changeDetectorRef.detectChanges();\n }\n\n saveChanges(): void {\n this.isSaving = true;\n const oldPassword: string = this.getControlFieldValue('oldPassword');\n const newPassword: string = this.getControlFieldValue(\n NewPasswordAndConfirmComponent.NEW_PASSWORD_FORM_CONTROL_NAME\n );\n this.userService\n .changePassword(oldPassword, newPassword)\n .pipe(\n finalize(() => {\n this.isSaving = false;\n })\n )\n .subscribe(\n () => {\n this.changePasswordSuccess();\n },\n (response) => {\n this.changePasswordError(response.error);\n }\n );\n }\n\n private getControlFieldValue(fieldName: string): string {\n if (\n fieldName === NewPasswordAndConfirmComponent.NEW_PASSWORD_FORM_CONTROL_NAME ||\n fieldName === NewPasswordAndConfirmComponent.CONFIRM_NEW_PASSWORD_FORM_CONTROL_NAME\n ) {\n return this.newPasswordFormGroup.get(fieldName).value;\n } else {\n return this.changePasswordFormGroup.get(fieldName).value;\n }\n }\n\n private changePasswordSuccess(): void {\n this.resetForm();\n this.snackBar.open($localize`Successfully changed password.`);\n }\n\n private changePasswordError(error: any): void {\n changePasswordError(\n error,\n this.changePasswordFormGroup,\n this.newPasswordFormGroup,\n 'oldPassword'\n );\n }\n\n unlinkGoogleAccount(): void {\n this.dialog.open(UnlinkGoogleAccountConfirmComponent, {\n panelClass: 'dialog-sm'\n });\n }\n\n private resetForm(): void {\n this.changePasswordForm.resetForm();\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": [ + { + "data": "@use 'style/abstracts/functions';\n\nform {\n max-width: functions.breakpoint('sm.min');\n}\n\n.google-icon {\n height: 1.8em;\n width: auto;\n}\n\n.unlink {\n margin: 8px 0;\n}\n", + "styleUrl": "./edit-password.component.scss" + } + ], + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "changeDetectorRef", + "type": "ChangeDetectorRef", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "fb", + "type": "FormBuilder", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "snackBar", + "type": "MatSnackBar", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "userService", + "type": "UserService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 26, + "jsdoctags": [ + { + "name": "changeDetectorRef", + "type": "ChangeDetectorRef", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "fb", + "type": "FormBuilder", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "snackBar", + "type": "MatSnackBar", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "userService", + "type": "UserService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "@if (!isGoogleUser) {\n \n

    \n \n Current Password\n \n @if (changePasswordFormGroup.controls['oldPassword'].hasError('required')) {\n Current Password required\n }\n @if (changePasswordFormGroup.controls['oldPassword'].hasError('incorrectPassword')) {\n Current Password is incorrect\n }\n \n

    \n
    \n \n
    \n

    \n \n Change Password\n @if (isSaving) {\n \n }\n \n

    \n \n}\n@if (isGoogleUser) {\n

    \n \n \n This account was created using Google and doesn't use a WISE password.\n \n \n Unlink Google Account\n \n

    \n}\n" + }, + { + "name": "EditPeerChatAdvancedComponentComponent", + "id": "component-EditPeerChatAdvancedComponentComponent-819c2dc4846fc565a5bf34fb3c37905b73d76bacc1b44581af420c5877ff12776955d8f30ad26159cba8fa1a269e609761b58b40f55b60258838c78bf29f2245", + "file": "src/assets/wise5/components/peerChat/edit-peer-chat-advanced-component/edit-peer-chat-advanced-component.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "template": "\n\n", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "line": 13, + "type": "string", + "decorators": [], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 14, + "type": "string", + "decorators": [], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "component", + "deprecated": false, + "deprecationMessage": "", + "type": "Component", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "ComponentContent", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + } + ], + "methodsClass": [ + { + "name": "componentChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 47, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "connectedComponentsChanged", + "args": [ + { + "name": "connectedComponents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 42, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "isNotebookEnabled", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 38, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "moveObjectDown", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 56, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "moveObjectUp", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 51, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "setShowSubmitButtonValue", + "args": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 28, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "EditComponentConstraintsComponent", + "type": "component" + }, + { + "name": "EditComponentJsonComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { EditAdvancedComponentComponent } from '../../../../../app/authoring-tool/edit-advanced-component/edit-advanced-component.component';\nimport { EditComponentConstraintsComponent } from '../../../../../app/authoring-tool/edit-component-constraints/edit-component-constraints.component';\nimport { EditComponentJsonComponent } from '../../../../../app/authoring-tool/edit-component-json/edit-component-json.component';\n\n@Component({\n imports: [EditComponentConstraintsComponent, EditComponentJsonComponent],\n template: `\n \n \n `\n})\nexport class EditPeerChatAdvancedComponentComponent extends EditAdvancedComponentComponent {}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [ + "EditAdvancedComponentComponent" + ] + }, + { + "name": "EditPeerGroupingDialogComponent", + "id": "component-EditPeerGroupingDialogComponent-dae25f6f5c48670d86b3f9e672d82e482d047e1ea707875c52b7fa1bd02e4769eaf22d184b66f410b4d5a000f7f0fa5ffad452f586dc4f145c79e1c0b0fc1e37", + "file": "src/assets/wise5/authoringTool/peer-grouping/edit-peer-grouping-dialog/edit-peer-grouping-dialog.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./edit-peer-grouping-dialog.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "peerGrouping", + "deprecated": false, + "deprecationMessage": "", + "type": "PeerGrouping", + "indexKey": "", + "optional": false, + "description": "", + "line": 39, + "decorators": [ + { + "name": "Inject", + "stringifiedArguments": "MAT_DIALOG_DATA" + } + ], + "modifierKind": [ + 171, + 125 + ], + "inheritance": { + "file": "AuthorPeerGroupingDialogComponent" + } + }, + { + "name": "stepsUsedIn", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 36 + }, + { + "name": "allowedReferenceComponentTypes", + "defaultValue": "['OpenResponse']", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "inheritance": { + "file": "AuthorPeerGroupingDialogComponent" + } + }, + { + "name": "availableLogic", + "deprecated": false, + "deprecationMessage": "", + "type": "PeerGroupingLogic[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "inheritance": { + "file": "AuthorPeerGroupingDialogComponent" + } + }, + { + "name": "availableModes", + "defaultValue": "AVAILABLE_MODES", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "inheritance": { + "file": "AuthorPeerGroupingDialogComponent" + } + }, + { + "name": "logicType", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "inheritance": { + "file": "AuthorPeerGroupingDialogComponent" + } + }, + { + "name": "logicTypesWithModes", + "defaultValue": "['differentIdeas', 'differentKIScores']", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "inheritance": { + "file": "AuthorPeerGroupingDialogComponent" + } + }, + { + "name": "mode", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "inheritance": { + "file": "AuthorPeerGroupingDialogComponent" + } + }, + { + "name": "referenceComponent", + "defaultValue": "new ReferenceComponent(null, null)", + "deprecated": false, + "deprecationMessage": "", + "type": "ReferenceComponent", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "inheritance": { + "file": "AuthorPeerGroupingDialogComponent" + } + } + ], + "methodsClass": [ + { + "name": "delete", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getLogicType", + "args": [ + { + "name": "logic", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 61, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "logic", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 48, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AuthorPeerGroupingDialogComponent" + } + }, + { + "name": "save", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 71, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "cancel", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 54, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AuthorPeerGroupingDialogComponent" + } + }, + { + "name": "generateLogicString", + "args": [ + { + "name": "logicType", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "referenceComponent", + "type": "ReferenceComponent", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "mode", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 42, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "logicType", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "referenceComponent", + "type": "ReferenceComponent", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "mode", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AuthorPeerGroupingDialogComponent" + } + }, + { + "name": "handleError", + "args": [ + { + "name": "error", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 58, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "error", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AuthorPeerGroupingDialogComponent" + } + }, + { + "name": "updatePeerGroupingLogic", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 30, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AuthorPeerGroupingDialogComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatDialogModule", + "type": "module" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatInputModule", + "type": "module" + }, + { + "name": "MatSelectModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + }, + { + "name": "SelectStepAndComponentComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Inject } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';\nimport { PeerGrouping } from '../../../../../app/domain/peerGrouping';\nimport { PeerGroupingAuthoringService } from '../../../services/peerGroupingAuthoringService';\nimport { ProjectService } from '../../../services/projectService';\nimport { AuthorPeerGroupingDialogComponent } from '../author-peer-grouping-dialog/author-peer-grouping-dialog.component';\nimport {\n DIFFERENT_IDEAS_REGEX,\n DIFFERENT_IDEAS_VALUE,\n DIFFERENT_SCORES_REGEX,\n DIFFERENT_SCORES_VALUE\n} from '../PeerGroupingLogic';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { SelectStepAndComponentComponent } from '../../../../../app/authoring-tool/select-step-and-component/select-step-and-component.component';\nimport { FormsModule } from '@angular/forms';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatInputModule } from '@angular/material/input';\n\n@Component({\n imports: [\n FormsModule,\n MatButtonModule,\n MatDialogModule,\n MatFormFieldModule,\n MatInputModule,\n MatSelectModule,\n MatTooltipModule,\n SelectStepAndComponentComponent\n ],\n templateUrl: './edit-peer-grouping-dialog.component.html'\n})\nexport class EditPeerGroupingDialogComponent extends AuthorPeerGroupingDialogComponent {\n stepsUsedIn: string[] = [];\n\n constructor(\n @Inject(MAT_DIALOG_DATA) public peerGrouping: PeerGrouping,\n protected dialogRef: MatDialogRef,\n private peerGroupingAuthoringService: PeerGroupingAuthoringService,\n protected projectService: ProjectService,\n protected snackBar: MatSnackBar\n ) {\n super(dialogRef, projectService, snackBar);\n }\n\n ngOnInit(): void {\n this.peerGrouping = new PeerGrouping(this.peerGrouping);\n this.stepsUsedIn = this.peerGroupingAuthoringService.getStepsUsedIn(this.peerGrouping.tag);\n this.logicType = this.getLogicType(this.peerGrouping.logic);\n if (this.logicType === DIFFERENT_IDEAS_VALUE) {\n this.referenceComponent = this.peerGrouping.getDifferentIdeasReferenceComponent();\n this.mode = this.peerGrouping.getDifferentIdeasMode();\n } else if (this.logicType === DIFFERENT_SCORES_VALUE) {\n this.referenceComponent = this.peerGrouping.getDifferentScoresReferenceComponent();\n this.mode = this.peerGrouping.getDifferentScoresMode();\n }\n }\n\n private getLogicType(logic: string): string {\n if (new RegExp(DIFFERENT_IDEAS_REGEX).exec(logic) != null) {\n return DIFFERENT_IDEAS_VALUE;\n } else if (new RegExp(DIFFERENT_SCORES_REGEX).exec(logic) != null) {\n return DIFFERENT_SCORES_VALUE;\n } else {\n return logic;\n }\n }\n\n save(): void {\n this.updatePeerGroupingLogic();\n this.peerGroupingAuthoringService.updatePeerGrouping(this.peerGrouping).subscribe({\n next: () => {\n this.dialogRef.close();\n },\n error: ({ error }) => {\n this.handleError(error);\n }\n });\n }\n\n delete(): void {\n if (confirm($localize`Are you sure you want to delete this Peer Grouping?`)) {\n this.dialogRef.close(true);\n }\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "peerGrouping", + "type": "PeerGrouping", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialogRef", + "type": "MatDialogRef", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "peerGroupingAuthoringService", + "type": "PeerGroupingAuthoringService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "snackBar", + "type": "MatSnackBar", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 36, + "jsdoctags": [ + { + "name": "peerGrouping", + "type": "PeerGrouping", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialogRef", + "type": "MatDialogRef", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "peerGroupingAuthoringService", + "type": "PeerGroupingAuthoringService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "snackBar", + "type": "MatSnackBar", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "AuthorPeerGroupingDialogComponent" + ], + "templateData": "

    Edit Peer Grouping

    \n\n \n Grouping Name\n \n \n
    \n \n Logic\n \n @for (logic of availableLogic; track logic) {\n \n {{ logic.name }}\n \n }\n \n \n @if (logicType === 'differentIdeas' || logicType === 'differentKIScores') {\n \n }\n @if (logicTypesWithModes.includes(logicType)) {\n \n Mode\n \n @for (mode of availableModes; track mode) {\n \n {{ mode.name }}\n \n }\n \n \n }\n
    \n
    \n \n Teams Per Group\n \n \n
    \n
    \n @if (stepsUsedIn.length > 0) {\n Used in \n @for (stepUsedIn of stepsUsedIn; track stepUsedIn; let isLast = $last) {\n \n {{ stepUsedIn }}\n @if (!isLast) {\n , \n }\n \n }\n .\n }\n @if (stepsUsedIn.length === 0) {\n Not used in any steps.\n }\n
    \n
    \n\n \n
    \n \n \n
    \n" + }, + { + "name": "EditProfileComponent", + "id": "component-EditProfileComponent-7fa5195c045a6d04647b905f270b5f490d81de21b1a74646a0dbe1c1ffa7388203843adbb86420355609e0b51f3c5957f7ad01fd0fd9b19d8144b7ac1f0c6523", + "file": "src/app/common/edit-profile/edit-profile.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "edit-profile", + "styleUrls": [ + "./edit-profile.component.scss" + ], + "styles": [], + "templateUrl": [ + "./edit-profile.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "changed", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 13 + }, + { + "name": "dialog", + "deprecated": false, + "deprecationMessage": "", + "type": "MatDialog", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 125 + ] + }, + { + "name": "snackBar", + "deprecated": false, + "deprecationMessage": "", + "type": "MatSnackBar", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 125 + ] + } + ], + "methodsClass": [ + { + "name": "handleUpdateProfileResponse", + "args": [ + { + "name": "response", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 17, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "response", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "unlinkGoogleAccount", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { UnlinkGoogleAccountConfirmComponent } from '../../modules/shared/unlink-google-account-confirm/unlink-google-account-confirm.component';\n\n@Component({\n selector: 'edit-profile',\n templateUrl: './edit-profile.component.html',\n styleUrls: ['./edit-profile.component.scss'],\n standalone: false\n})\nexport class EditProfileComponent {\n changed: boolean = false;\n\n constructor(public dialog: MatDialog, public snackBar: MatSnackBar) {}\n\n handleUpdateProfileResponse(response) {\n if (response.status === 'success') {\n this.changed = false;\n this.snackBar.open($localize`Profile updated.`);\n } else {\n this.snackBar.open($localize`An error occurred. Please try again.`);\n }\n }\n\n unlinkGoogleAccount() {\n this.dialog.open(UnlinkGoogleAccountConfirmComponent, {\n panelClass: 'dialog-sm'\n });\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": [ + { + "data": ".google-icon {\n height: 1.8em;\n width: auto;\n}\n\n.unlink {\n margin: 8px 0;\n}\n", + "styleUrl": "./edit-profile.component.scss" + } + ], + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "snackBar", + "type": "MatSnackBar", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 13, + "jsdoctags": [ + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "snackBar", + "type": "MatSnackBar", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "" + }, + { + "name": "EditProjectLanguageSettingComponent", + "id": "component-EditProjectLanguageSettingComponent-4dd4ad5364545b75b4d289649efda9003639d7923a22d5c297a5731069fb400030cff7deca0d13a1d60b515f9da77b311b502903bc1abd976e5d4f6e59226ab1", + "file": "src/assets/wise5/authoringTool/project-info/edit-project-language-setting/edit-project-language-setting.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "edit-project-language-setting", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./edit-project-language-setting.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "availableLanguages", + "deprecated": false, + "deprecationMessage": "", + "type": "Language[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 124 + ] + }, + { + "name": "defaultLanguage", + "deprecated": false, + "deprecationMessage": "", + "type": "Language", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "modifierKind": [ + 124 + ] + }, + { + "name": "projectLocale", + "deprecated": false, + "deprecationMessage": "", + "type": "ProjectLocale", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "modifierKind": [ + 123 + ] + }, + { + "name": "supportedLanguages", + "deprecated": false, + "deprecationMessage": "", + "type": "Language[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "updateDefaultLanguage", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 38, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "updateModel", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "updateSupportedLanguages", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 46, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "NgSelectModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { Language } from '../../../../../app/domain/language';\nimport { TeacherProjectService } from '../../../services/teacherProjectService';\nimport { ProjectLocale } from '../../../../../app/domain/projectLocale';\nimport { localeToLanguage } from '../../../../../app/domain/localeToLanguage';\nimport { NgSelectModule } from '@ng-select/ng-select';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n imports: [FormsModule, NgSelectModule],\n selector: 'edit-project-language-setting',\n templateUrl: './edit-project-language-setting.component.html'\n})\nexport class EditProjectLanguageSettingComponent {\n protected availableLanguages: Language[];\n protected defaultLanguage: Language;\n private projectLocale: ProjectLocale;\n protected supportedLanguages: Language[];\n\n constructor(private projectService: TeacherProjectService) {}\n\n ngOnInit(): void {\n this.updateModel();\n }\n\n private updateModel(): void {\n this.projectLocale = this.projectService.getLocale();\n this.defaultLanguage = this.projectLocale.getDefaultLanguage();\n this.supportedLanguages = this.projectLocale.getSupportedLanguages();\n this.availableLanguages = Object.entries(localeToLanguage)\n .map(([locale, language]) => ({\n locale: locale,\n language: language\n }))\n .filter((language) => language.locale != this.defaultLanguage.locale);\n }\n\n protected updateDefaultLanguage(): void {\n this.projectLocale.setDefaultLocale(this.defaultLanguage.locale);\n this.projectService.saveProject();\n this.projectService.setCurrentLanguage(this.defaultLanguage);\n this.projectService.uiChanged();\n this.updateModel();\n }\n\n protected updateSupportedLanguages(): void {\n this.projectLocale.setSupportedLanguages(this.supportedLanguages);\n this.projectService.saveProject();\n this.updateModel();\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 18, + "jsdoctags": [ + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "

    Language

    \nDefault language:\n\nAdditional languages:\n\n" + }, + { + "name": "EditQuestionBankComponent", + "id": "component-EditQuestionBankComponent-9879b510970a9c4d3093ebb40d9b8e002e20e196d5aa80dca589b7efff5e0e1cf7fe849f1922e38baae0dea45553b345769d899815cb98a0154ea95bf1334e53", + "file": "src/app/authoring-tool/edit-question-bank/edit-question-bank.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "edit-question-bank", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./edit-question-bank.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "line": 31, + "type": "any", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "allowedReferenceComponentTypes", + "defaultValue": "['MultipleChoice', 'OpenResponse']", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 30, + "modifierKind": [ + 124 + ] + }, + { + "name": "inputChanged", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 32, + "modifierKind": [ + 124 + ] + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 33, + "modifierKind": [ + 123 + ] + } + ], + "methodsClass": [ + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 45, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 37, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "saveChanges", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 61, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "toggleComponent", + "args": [ + { + "name": "event", + "type": "MatCheckboxChange", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 49, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "event", + "type": "MatCheckboxChange", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatCheckbox" + }, + { + "name": "TranslatableInputComponent", + "type": "component" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatInput" + }, + { + "name": "SelectStepAndComponentComponent", + "type": "component" + }, + { + "name": "EditComponentPeerGroupingTagComponent", + "type": "component" + }, + { + "name": "EditQuestionBankRulesComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input, OnInit } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatCheckbox, MatCheckboxChange } from '@angular/material/checkbox';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInput } from '@angular/material/input';\nimport { Subject, Subscription, debounceTime, distinctUntilChanged } from 'rxjs';\nimport { TranslatableInputComponent } from '../../../assets/wise5/authoringTool/components/translatable-input/translatable-input.component';\nimport { QuestionBank } from '../../../assets/wise5/components/peerChat/peer-chat-question-bank/QuestionBank';\nimport { TeacherProjectService } from '../../../assets/wise5/services/teacherProjectService';\nimport { EditComponentPeerGroupingTagComponent } from '../edit-component-peer-grouping-tag/edit-component-peer-grouping-tag.component';\nimport { EditQuestionBankRulesComponent } from '../edit-question-bank-rules/edit-question-bank-rules.component';\nimport { SelectStepAndComponentComponent } from '../select-step-and-component/select-step-and-component.component';\n\n@Component({\n imports: [\n MatCheckbox,\n TranslatableInputComponent,\n FormsModule,\n MatFormFieldModule,\n MatInput,\n SelectStepAndComponentComponent,\n EditComponentPeerGroupingTagComponent,\n EditQuestionBankRulesComponent\n ],\n selector: 'edit-question-bank',\n styleUrl: './edit-question-bank.component.scss',\n templateUrl: './edit-question-bank.component.html'\n})\nexport class EditQuestionBankComponent implements OnInit {\n protected allowedReferenceComponentTypes: string[] = ['MultipleChoice', 'OpenResponse'];\n @Input() componentContent: any;\n protected inputChanged: Subject = new Subject();\n private subscriptions: Subscription = new Subscription();\n\n constructor(private projectService: TeacherProjectService) {}\n\n ngOnInit(): void {\n this.subscriptions.add(\n this.inputChanged.pipe(debounceTime(1000), distinctUntilChanged()).subscribe(() => {\n this.projectService.nodeChanged();\n })\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n toggleComponent(event: MatCheckboxChange): void {\n if (this.componentContent.questionBank == null) {\n this.componentContent.questionBank = new QuestionBank({\n referenceComponent: {},\n rules: [],\n version: 2\n });\n }\n this.componentContent.questionBank.enabled = event.checked;\n this.saveChanges();\n }\n\n saveChanges(): void {\n this.projectService.nodeChanged();\n }\n}\n", + "styleUrl": "./edit-question-bank.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 33, + "jsdoctags": [ + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "
    \n
    \n \n Enable Question Bank\n \n
    \n @if (componentContent.questionBank?.enabled) {\n
    \n
    \n \n
    \n @if (componentContent.questionBank.version === 2) {\n
    \n \n Student can select questions to use in Peer Chat\n \n
    \n }\n
    \n \n Max Number of Questions\n \n \n
    \n
    \n Reference Component:\n \n \n
    \n
    \n \n
    \n
    \n }\n
    \n" + }, + { + "name": "EditQuestionBankRulesComponent", + "id": "component-EditQuestionBankRulesComponent-22feba982f512559f241fffd3522c557df93f9779f9540ca1f3415dfb058b3f66a0f375f40e5da7fe3e2c0ca123b3412f57f7059ec7d57667d9b27ca188c4539", + "file": "src/app/authoring-tool/edit-question-bank-rules/edit-question-bank-rules.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "edit-question-bank-rules", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./edit-question-bank-rules.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "feedbackRules", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "line": 38, + "type": "Partial[]", + "decorators": [], + "inheritance": { + "file": "EditFeedbackRulesComponent" + } + }, + { + "name": "version", + "defaultValue": "2", + "deprecated": false, + "deprecationMessage": "", + "line": 41, + "type": "number", + "decorators": [], + "inheritance": { + "file": "EditFeedbackRulesComponent" + } + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "inputChanged", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 39, + "inheritance": { + "file": "EditFeedbackRulesComponent" + } + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 40, + "inheritance": { + "file": "EditFeedbackRulesComponent" + } + } + ], + "methodsClass": [ + { + "name": "addNewFeedbackToRule", + "args": [ + { + "name": "rule", + "type": "Partial", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 52, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "rule", + "type": "Partial", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditFeedbackRulesComponent" + } + }, + { + "name": "createNewFeedbackRule", + "args": [], + "optional": false, + "returnType": "Partial", + "typeParameters": [], + "line": 37, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "EditFeedbackRulesComponent" + } + }, + { + "name": "customTrackBy", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 68, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditFeedbackRulesComponent" + } + }, + { + "name": "deleteFeedbackInRule", + "args": [ + { + "name": "rule", + "type": "QuestionBankRule", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "feedbackIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 61, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "rule", + "type": "QuestionBankRule", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "feedbackIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditFeedbackRulesComponent" + } + }, + { + "name": "deleteRule", + "args": [ + { + "name": "ruleIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 45, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "ruleIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditFeedbackRulesComponent" + } + }, + { + "name": "getQuestionLabel", + "args": [ + { + "name": "rule", + "type": "QuestionBankRule", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "questionIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 72, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "rule", + "type": "QuestionBankRule", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "questionIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addNewRule", + "args": [ + { + "name": "position", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 77, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "position", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditFeedbackRulesComponent" + } + }, + { + "name": "drop", + "args": [ + { + "name": "event", + "type": "CdkDragDrop", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 60, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "event", + "type": "CdkDragDrop", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditFeedbackRulesComponent" + } + }, + { + "name": "moveDown", + "args": [ + { + "name": "ruleIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 68, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "ruleIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditFeedbackRulesComponent" + } + }, + { + "name": "moveRuleItem", + "args": [ + { + "name": "previousIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 72, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "previousIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditFeedbackRulesComponent" + } + }, + { + "name": "moveUp", + "args": [ + { + "name": "ruleIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 64, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "ruleIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditFeedbackRulesComponent" + } + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 56, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditFeedbackRulesComponent" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 48, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditFeedbackRulesComponent" + } + }, + { + "name": "showHelp", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 114, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditFeedbackRulesComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatTooltip" + }, + { + "name": "MatIcon" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "DragDropModule", + "type": "module" + }, + { + "name": "CdkScrollable" + }, + { + "name": "MatCard" + }, + { + "name": "MatInput" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "CdkTextareaAutosize" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "TranslatableTextareaComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { DragDropModule } from '@angular/cdk/drag-drop';\nimport { CdkScrollable } from '@angular/cdk/scrolling';\nimport { CdkTextareaAutosize } from '@angular/cdk/text-field';\nimport { Component } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCard } from '@angular/material/card';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInput } from '@angular/material/input';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { TranslatableTextareaComponent } from '../../../assets/wise5/authoringTool/components/translatable-textarea/translatable-textarea.component';\nimport { generateRandomKey } from '../../../assets/wise5/common/string/string';\nimport { EditFeedbackRulesComponent } from '../../../assets/wise5/components/common/feedbackRule/edit-feedback-rules/edit-feedback-rules.component';\nimport { Question } from '../../../assets/wise5/components/peerChat/peer-chat-question-bank/Question';\nimport { QuestionBankRule } from '../../../assets/wise5/components/peerChat/peer-chat-question-bank/QuestionBankRule';\n\n@Component({\n imports: [\n MatTooltip,\n MatIcon,\n MatButtonModule,\n DragDropModule,\n CdkScrollable,\n MatCard,\n MatInput,\n FormsModule,\n CdkTextareaAutosize,\n MatFormFieldModule,\n TranslatableTextareaComponent\n ],\n selector: 'edit-question-bank-rules',\n styleUrl: './edit-question-bank-rules.component.scss',\n templateUrl: './edit-question-bank-rules.component.html'\n})\nexport class EditQuestionBankRulesComponent extends EditFeedbackRulesComponent {\n protected createNewFeedbackRule(): Partial {\n if (this.version === 2) {\n return { id: generateRandomKey(), expression: '', questions: [new Question()] };\n } else {\n return { id: generateRandomKey(), expression: '', questions: [''] };\n }\n }\n\n deleteRule(ruleIndex: number): void {\n if (confirm($localize`Are you sure you want to delete this question rule?`)) {\n this.feedbackRules.splice(ruleIndex, 1);\n this.projectService.nodeChanged();\n }\n }\n\n addNewFeedbackToRule(rule: Partial): void {\n if (this.version === 2) {\n (rule.questions as any[]).push(new Question());\n } else {\n (rule.questions as string[]).push('');\n }\n this.projectService.nodeChanged();\n }\n\n deleteFeedbackInRule(rule: QuestionBankRule, feedbackIndex: number): void {\n if (confirm($localize`Are you sure you want to delete this question?`)) {\n (rule.questions as string[]).splice(feedbackIndex, 1);\n this.projectService.nodeChanged();\n }\n }\n\n customTrackBy(index: number): number {\n return index;\n }\n\n protected getQuestionLabel(rule: QuestionBankRule, questionIndex: number): string {\n return rule.questions.length === 1\n ? $localize`Question`\n : $localize`Question #${questionIndex + 1}`;\n }\n}\n", + "styleUrl": "./edit-question-bank-rules.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [ + "EditFeedbackRulesComponent" + ], + "templateData": "
    \n
    \n Question Bank Rules\n \n add_circle\n \n \n \n
    \n \n @for (\n rule of feedbackRules;\n track rule;\n let ruleIndex = $index;\n let first = $first;\n let last = $last\n ) {\n
  • \n \n
    \n
    \n {{ ruleIndex + 1 }}\n drag_indicator\n
    \n
    \n \n Expression\n \n \n @for (\n question of rule.questions;\n track customTrackBy(questionIndex, question);\n let questionIndex = $index;\n let last = $last\n ) {\n
    \n @if (version === 1) {\n \n @if (rule.questions.length === 1) {\n Question\n }\n @if (rule.questions.length > 1) {\n Question #{{ questionIndex + 1 }}\n }\n \n \n @if (rule.questions.length > 1) {\n \n clear\n \n }\n \n }\n @if (version === 2) {\n \n
    \n @if (rule.questions.length > 1) {\n \n clear\n \n }\n
    \n }\n
    \n @if (last) {\n \n add_circle\n \n }\n
    \n
    \n }\n
    \n
    \n \n clear\n \n @if (feedbackRules.length > 1) {\n \n arrow_upward\n \n }\n \n arrow_downward\n \n
    \n
    \n
    \n
  • \n }\n \n @if (feedbackRules.length > 0) {\n \n add_circle\n \n }\n
    \n" + }, + { + "name": "EditRunWarningDialogComponent", + "id": "component-EditRunWarningDialogComponent-eec13ee7edf5f8a701fd9fdb82e26529b88f3471602cac17448879a75e4558adfc94dcf35ec36aef7451e6e1bf3e68da3ee432312be0cd5f3728bbce32b0a8df", + "file": "src/app/teacher/edit-run-warning-dialog/edit-run-warning-dialog.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./edit-run-warning-dialog.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "dialog", + "deprecated": false, + "deprecationMessage": "", + "type": "MatDialog", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "modifierKind": [ + 125 + ] + }, + { + "name": "dialogRef", + "deprecated": false, + "deprecationMessage": "", + "type": "MatDialogRef", + "indexKey": "", + "optional": false, + "description": "", + "line": 20, + "modifierKind": [ + 125 + ] + } + ], + "methodsClass": [ + { + "name": "editContent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 27, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatDialogModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Inject } from '@angular/core';\nimport {\n MatDialogModule,\n MAT_DIALOG_DATA,\n MatDialog,\n MatDialogRef\n} from '@angular/material/dialog';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { Run } from '../../domain/run';\nimport { Router } from '@angular/router';\n\n@Component({\n imports: [MatDialogModule, MatButtonModule, MatIconModule],\n templateUrl: './edit-run-warning-dialog.component.html'\n})\nexport class EditRunWarningDialogComponent {\n constructor(\n public dialog: MatDialog,\n public dialogRef: MatDialogRef,\n @Inject(MAT_DIALOG_DATA) protected run: Run,\n private router: Router\n ) {\n this.dialog.closeAll();\n }\n\n protected editContent(): void {\n this.router.navigateByUrl(`/teacher/edit/unit/${this.run.project.id}`);\n this.dialogRef.close();\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialogRef", + "type": "MatDialogRef", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "run", + "type": "Run", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 17, + "jsdoctags": [ + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialogRef", + "type": "MatDialogRef", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "run", + "type": "Run", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "

    \n Edit Classroom Unit\n \n warning\n

    \n\n
    \n

    \n {{ run.project.metadata.title }}\n @if (run) {\n (Run ID: {{ run.id }})\n }\n

    \n

    \n Warning! You will be editing the content of a classroom unit. If students have already started\n working, this may result in lost data or other problems.\n

    \n

    Are you sure you wish to proceed?

    \n
    \n
    \n\n \n Proceed\n\n" + }, + { + "name": "EditShowGroupWorkAdvancedComponent", + "id": "component-EditShowGroupWorkAdvancedComponent-9eebdc039715944a7d76be6f7d82739545e1024e7c82d83eb15bbb942ea2900f900c7c371c85fe6bb4cb459576e85f2214e4b33681374c57c8f9ab9ed8bf7a57", + "file": "src/assets/wise5/components/showGroupWork/edit-show-group-work-advanced/edit-show-group-work-advanced.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "template": "\n\n", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "line": 13, + "type": "string", + "decorators": [], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 14, + "type": "string", + "decorators": [], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "component", + "deprecated": false, + "deprecationMessage": "", + "type": "Component", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "ComponentContent", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + } + ], + "methodsClass": [ + { + "name": "componentChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 47, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "connectedComponentsChanged", + "args": [ + { + "name": "connectedComponents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 42, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "isNotebookEnabled", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 38, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "moveObjectDown", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 56, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "moveObjectUp", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 51, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "setShowSubmitButtonValue", + "args": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 28, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "EditComponentConstraintsComponent", + "type": "component" + }, + { + "name": "EditComponentJsonComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { EditAdvancedComponentComponent } from '../../../../../app/authoring-tool/edit-advanced-component/edit-advanced-component.component';\nimport { EditComponentConstraintsComponent } from '../../../../../app/authoring-tool/edit-component-constraints/edit-component-constraints.component';\nimport { EditComponentJsonComponent } from '../../../../../app/authoring-tool/edit-component-json/edit-component-json.component';\n\n@Component({\n imports: [EditComponentConstraintsComponent, EditComponentJsonComponent],\n template: `\n \n \n `\n})\nexport class EditShowGroupWorkAdvancedComponent extends EditAdvancedComponentComponent {}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [ + "EditAdvancedComponentComponent" + ] + }, + { + "name": "EditShowMyWorkAdvancedComponent", + "id": "component-EditShowMyWorkAdvancedComponent-d80bd7cce4f12f4aa2143eccdfe03d828f8df1dc960e2678b81418c36a27466136412acf6fc54820bac3fe51b6cb21395df54cde3ad36239261336ad3965b699", + "file": "src/assets/wise5/components/showMyWork/edit-show-my-work-advanced/edit-show-my-work-advanced.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "template": "\n\n", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "line": 13, + "type": "string", + "decorators": [], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 14, + "type": "string", + "decorators": [], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "component", + "deprecated": false, + "deprecationMessage": "", + "type": "Component", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "ComponentContent", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + } + ], + "methodsClass": [ + { + "name": "componentChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 47, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "connectedComponentsChanged", + "args": [ + { + "name": "connectedComponents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 42, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "isNotebookEnabled", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 38, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "moveObjectDown", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 56, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "moveObjectUp", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 51, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "setShowSubmitButtonValue", + "args": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 28, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "EditComponentConstraintsComponent", + "type": "component" + }, + { + "name": "EditComponentJsonComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { EditAdvancedComponentComponent } from '../../../../../app/authoring-tool/edit-advanced-component/edit-advanced-component.component';\nimport { EditComponentConstraintsComponent } from '../../../../../app/authoring-tool/edit-component-constraints/edit-component-constraints.component';\nimport { EditComponentJsonComponent } from '../../../../../app/authoring-tool/edit-component-json/edit-component-json.component';\n\n@Component({\n imports: [EditComponentConstraintsComponent, EditComponentJsonComponent],\n template: `\n \n \n `\n})\nexport class EditShowMyWorkAdvancedComponent extends EditAdvancedComponentComponent {}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [ + "EditAdvancedComponentComponent" + ] + }, + { + "name": "EditSummaryAdvancedComponent", + "id": "component-EditSummaryAdvancedComponent-ba6d652b5629dd486eeb4563f7dc2627961e6abae3b3b613235dacf2d2af8875ad41d2660cbe19ba103dff724903f69a3846d0196fc0600da4cca332ab6c2f41", + "file": "src/assets/wise5/components/summary/edit-summary-advanced/edit-summary-advanced.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "template": "
    \n \n \n \n \n \n
    \n", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "line": 13, + "type": "string", + "decorators": [], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 14, + "type": "string", + "decorators": [], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "component", + "deprecated": false, + "deprecationMessage": "", + "type": "Component", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "ComponentContent", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + } + ], + "methodsClass": [ + { + "name": "componentChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 47, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "connectedComponentsChanged", + "args": [ + { + "name": "connectedComponents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 42, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "isNotebookEnabled", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 38, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "moveObjectDown", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 56, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "moveObjectUp", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 51, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "setShowSubmitButtonValue", + "args": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 28, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "EditComponentWidthComponent", + "type": "component" + }, + { + "name": "EditComponentRubricComponent", + "type": "component" + }, + { + "name": "EditComponentTagsComponent", + "type": "component" + }, + { + "name": "EditComponentConstraintsComponent", + "type": "component" + }, + { + "name": "EditComponentJsonComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { EditAdvancedComponentComponent } from '../../../../../app/authoring-tool/edit-advanced-component/edit-advanced-component.component';\nimport { EditComponentWidthComponent } from '../../../../../app/authoring-tool/edit-component-width/edit-component-width.component';\nimport { EditComponentRubricComponent } from '../../../../../app/authoring-tool/edit-component-rubric/edit-component-rubric.component';\nimport { EditComponentTagsComponent } from '../../../../../app/authoring-tool/edit-component-tags/edit-component-tags.component';\nimport { EditComponentConstraintsComponent } from '../../../../../app/authoring-tool/edit-component-constraints/edit-component-constraints.component';\nimport { EditComponentJsonComponent } from '../../../../../app/authoring-tool/edit-component-json/edit-component-json.component';\n\n@Component({\n imports: [\n EditComponentWidthComponent,\n EditComponentRubricComponent,\n EditComponentTagsComponent,\n EditComponentConstraintsComponent,\n EditComponentJsonComponent\n ],\n template: `\n
    \n \n \n \n \n \n
    \n `\n})\nexport class EditSummaryAdvancedComponent extends EditAdvancedComponentComponent {}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [ + "EditAdvancedComponentComponent" + ] + }, + { + "name": "EditTableAdvancedComponent", + "id": "component-EditTableAdvancedComponent-aaf4d39cbc2a1662f87fa43d272f8981a788394894b574a23182407c7956b628bd7fbd43f182306c912d6f5d90db8cfb823a50a8c6632796d2b60f751fa22311", + "file": "src/assets/wise5/components/table/edit-table-advanced/edit-table-advanced.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "edit-table-advanced.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "line": 13, + "type": "string", + "decorators": [], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 14, + "type": "string", + "decorators": [], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "allowedConnectedComponentTypes", + "defaultValue": "['Embedded', 'Graph', 'Table']", + "deprecated": false, + "deprecationMessage": "", + "type": "[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 59 + }, + { + "name": "columnNames", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 61 + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "TableContent", + "indexKey": "", + "optional": false, + "description": "", + "line": 60, + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "importTableMessage", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 67 + }, + { + "name": "isDataExplorerBarGraphEnabled", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 64 + }, + { + "name": "isDataExplorerLineGraphEnabled", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 63 + }, + { + "name": "isDataExplorerScatterPlotEnabled", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 62 + }, + { + "name": "isImportingTable", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 65 + }, + { + "name": "MAX_ALLOWED_CELLS_IN_IMPORT", + "defaultValue": "2000", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 57 + }, + { + "name": "numColumns", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 66 + }, + { + "name": "component", + "deprecated": false, + "deprecationMessage": "", + "type": "Component", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + } + ], + "methodsClass": [ + { + "name": "convertToTableData", + "args": [ + { + "name": "array", + "type": "unknown[][]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "[][]", + "typeParameters": [], + "line": 260, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "array", + "type": "unknown[][]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createGraphTypeObject", + "args": [ + { + "name": "name", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "value", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 181, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "name", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "value", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "dataExplorerToggleBarGraph", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 164, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dataExplorerToggleGraphType", + "args": [ + { + "name": "name", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "value", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 168, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "name", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "value", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "dataExplorerToggleLineGraph", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 160, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dataExplorerToggleScatterPlot", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 156, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "decreaseNumDataExplorerSeries", + "args": [ + { + "name": "count", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 202, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "count", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getColumnNames", + "args": [ + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string[]", + "typeParameters": [], + "line": 121, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getNumCells", + "args": [ + { + "name": "tableContent", + "type": "unknown[][]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 244, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "tableContent", + "type": "unknown[][]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getNumColumns", + "args": [ + { + "name": "tableData", + "type": "any[][]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 276, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "tableData", + "type": "any[][]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getNumRows", + "args": [ + { + "name": "tableData", + "type": "any[][]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 272, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "tableData", + "type": "any[][]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getNumTableColumns", + "args": [ + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 117, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getTableDataFirstRow", + "args": [ + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 127, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "hideImportingTableDisplay", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 290, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "importTable", + "args": [ + { + "name": "tableContent", + "type": "unknown[][]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 252, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "tableContent", + "type": "unknown[][]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "importTableFile", + "args": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 220, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "increaseNumDataExplorerSeries", + "args": [ + { + "name": "count", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 195, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "count", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "initializeDataExplorerGraphTypes", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 89, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "initializeDataExplorerSeriesParams", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 80, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 69, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "numDataExplorerSeriesChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 185, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "numDataExplorerYAxisChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 207, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "repopulateDataExplorerGraphTypes", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 96, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "setImportTableMessage", + "args": [ + { + "name": "message", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 294, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "message", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "showImportingTableDisplay", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 286, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "toggleDataExplorer", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 131, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "tryInitializeDataExplorerDataToColumn", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 111, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "updateDataExplorerSeriesParamsYAxis", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 212, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 47, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "connectedComponentsChanged", + "args": [ + { + "name": "connectedComponents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 42, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "isNotebookEnabled", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 38, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "moveObjectDown", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 56, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "moveObjectUp", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 51, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + }, + { + "name": "setShowSubmitButtonValue", + "args": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 28, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditAdvancedComponentComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatCheckbox" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatInput" + }, + { + "name": "MatSelectModule", + "type": "module" + }, + { + "name": "MatIcon" + }, + { + "name": "MatTooltip" + }, + { + "name": "MatButton" + }, + { + "name": "MatProgressSpinner" + }, + { + "name": "EditComponentAddToNotebookButtonComponent", + "type": "component" + }, + { + "name": "EditComponentSaveButtonComponent", + "type": "component" + }, + { + "name": "EditComponentSubmitButtonComponent", + "type": "component" + }, + { + "name": "EditComponentMaxSubmitComponent", + "type": "component" + }, + { + "name": "EditComponentDefaultFeedback", + "type": "component" + }, + { + "name": "EditComponentMaxScoreComponent", + "type": "component" + }, + { + "name": "EditComponentExcludeFromTotalScoreComponent", + "type": "component" + }, + { + "name": "EditComponentWidthComponent", + "type": "component" + }, + { + "name": "EditComponentRubricComponent", + "type": "component" + }, + { + "name": "EditComponentTagsComponent", + "type": "component" + }, + { + "name": "EditTableConnectedComponentsComponent", + "type": "component" + }, + { + "name": "EditComponentConstraintsComponent", + "type": "component" + }, + { + "name": "EditComponentJsonComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatButton } from '@angular/material/button';\nimport { MatCheckbox } from '@angular/material/checkbox';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInput } from '@angular/material/input';\nimport { MatProgressSpinner } from '@angular/material/progress-spinner';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { EditAdvancedComponentComponent } from '../../../../../app/authoring-tool/edit-advanced-component/edit-advanced-component.component';\nimport { EditComponentDefaultFeedback } from '../../../../../app/authoring-tool/edit-advanced-component/edit-component-default-feedback/edit-component-default-feedback.component';\nimport { EditComponentAddToNotebookButtonComponent } from '../../../../../app/authoring-tool/edit-component-add-to-notebook-button/edit-component-add-to-notebook-button.component';\nimport { EditComponentConstraintsComponent } from '../../../../../app/authoring-tool/edit-component-constraints/edit-component-constraints.component';\nimport { EditComponentExcludeFromTotalScoreComponent } from '../../../../../app/authoring-tool/edit-component-exclude-from-total-score/edit-component-exclude-from-total-score.component';\nimport { EditComponentJsonComponent } from '../../../../../app/authoring-tool/edit-component-json/edit-component-json.component';\nimport { EditComponentMaxScoreComponent } from '../../../../../app/authoring-tool/edit-component-max-score/edit-component-max-score.component';\nimport { EditComponentMaxSubmitComponent } from '../../../../../app/authoring-tool/edit-component-max-submit/edit-component-max-submit.component';\nimport { EditComponentRubricComponent } from '../../../../../app/authoring-tool/edit-component-rubric/edit-component-rubric.component';\nimport { EditComponentSaveButtonComponent } from '../../../../../app/authoring-tool/edit-component-save-button/edit-component-save-button.component';\nimport { EditComponentSubmitButtonComponent } from '../../../../../app/authoring-tool/edit-component-submit-button/edit-component-submit-button.component';\nimport { EditComponentTagsComponent } from '../../../../../app/authoring-tool/edit-component-tags/edit-component-tags.component';\nimport { EditComponentWidthComponent } from '../../../../../app/authoring-tool/edit-component-width/edit-component-width.component';\nimport { CSVToArray } from '../../../common/array/array';\nimport { EditTableConnectedComponentsComponent } from '../edit-table-connected-components/edit-table-connected-components.component';\nimport { TableContent } from '../TableContent';\n\n@Component({\n templateUrl: 'edit-table-advanced.component.html',\n styleUrl: 'edit-table-advanced.component.scss',\n imports: [\n MatCheckbox,\n FormsModule,\n MatFormFieldModule,\n MatInput,\n MatSelectModule,\n MatIcon,\n MatTooltip,\n MatButton,\n MatProgressSpinner,\n EditComponentAddToNotebookButtonComponent,\n EditComponentSaveButtonComponent,\n EditComponentSubmitButtonComponent,\n EditComponentMaxSubmitComponent,\n EditComponentDefaultFeedback,\n EditComponentMaxScoreComponent,\n EditComponentExcludeFromTotalScoreComponent,\n EditComponentWidthComponent,\n EditComponentRubricComponent,\n EditComponentTagsComponent,\n EditTableConnectedComponentsComponent,\n EditComponentConstraintsComponent,\n EditComponentJsonComponent\n ]\n})\nexport class EditTableAdvancedComponent extends EditAdvancedComponentComponent {\n MAX_ALLOWED_CELLS_IN_IMPORT = 2000;\n\n allowedConnectedComponentTypes = ['Embedded', 'Graph', 'Table'];\n componentContent: TableContent;\n columnNames: string[] = [];\n isDataExplorerScatterPlotEnabled: boolean;\n isDataExplorerLineGraphEnabled: boolean;\n isDataExplorerBarGraphEnabled: boolean;\n isImportingTable: boolean = false;\n numColumns: number;\n importTableMessage: string;\n\n ngOnInit(): void {\n super.ngOnInit();\n if (this.componentContent.isDataExplorerEnabled) {\n this.repopulateDataExplorerGraphTypes();\n this.initializeDataExplorerSeriesParams();\n this.tryInitializeDataExplorerDataToColumn();\n }\n this.numColumns = this.getNumTableColumns(this.componentContent);\n this.columnNames = this.getColumnNames(this.componentContent);\n }\n\n initializeDataExplorerSeriesParams(): void {\n if (this.componentContent.dataExplorerSeriesParams == null) {\n this.componentContent.dataExplorerSeriesParams = [];\n for (let s = 0; s < this.componentContent.numDataExplorerSeries; s++) {\n this.componentContent.dataExplorerSeriesParams.push({});\n }\n }\n }\n\n initializeDataExplorerGraphTypes(): void {\n this.componentContent.dataExplorerGraphTypes = [];\n this.componentContent.dataExplorerGraphTypes.push(\n this.createGraphTypeObject('Scatter Plot', 'scatter')\n );\n }\n\n repopulateDataExplorerGraphTypes(): void {\n this.isDataExplorerScatterPlotEnabled = false;\n this.isDataExplorerLineGraphEnabled = false;\n this.isDataExplorerBarGraphEnabled = false;\n for (const graphType of this.componentContent.dataExplorerGraphTypes) {\n if (graphType.value === 'scatter') {\n this.isDataExplorerScatterPlotEnabled = true;\n } else if (graphType.value === 'line') {\n this.isDataExplorerLineGraphEnabled = true;\n } else if (graphType.value === 'column') {\n this.isDataExplorerBarGraphEnabled = true;\n }\n }\n }\n\n tryInitializeDataExplorerDataToColumn(): void {\n if (this.componentContent.dataExplorerDataToColumn == null) {\n this.componentContent.dataExplorerDataToColumn = {};\n }\n }\n\n getNumTableColumns(componentContent: any): number {\n return this.getTableDataFirstRow(componentContent).length;\n }\n\n getColumnNames(componentContent: any): string[] {\n return this.getTableDataFirstRow(componentContent).map((cell: any): string => {\n return cell.text;\n });\n }\n\n getTableDataFirstRow(componentContent: any): any[] {\n return componentContent.tableData[0];\n }\n\n toggleDataExplorer(): void {\n if (this.componentContent.isDataExplorerEnabled) {\n if (this.componentContent.dataExplorerGraphTypes == null) {\n this.initializeDataExplorerGraphTypes();\n this.repopulateDataExplorerGraphTypes();\n }\n if (this.componentContent.numDataExplorerSeries == null) {\n this.componentContent.numDataExplorerSeries = 1;\n }\n if (this.componentContent.numDataExplorerYAxis == null) {\n this.componentContent.numDataExplorerYAxis = 1;\n }\n if (this.componentContent.isDataExplorerAxisLabelsEditable == null) {\n this.componentContent.isDataExplorerAxisLabelsEditable = false;\n }\n if (this.componentContent.dataExplorerSeriesParams == null) {\n this.componentContent.dataExplorerSeriesParams = [{}];\n }\n if (this.componentContent.dataExplorerDataToColumn == null) {\n this.componentContent.dataExplorerDataToColumn = {};\n }\n }\n this.componentChanged();\n }\n\n dataExplorerToggleScatterPlot(): void {\n this.dataExplorerToggleGraphType('Scatter Plot', 'scatter');\n }\n\n dataExplorerToggleLineGraph(): void {\n this.dataExplorerToggleGraphType('Line Graph', 'line');\n }\n\n dataExplorerToggleBarGraph(): void {\n this.dataExplorerToggleGraphType('Bar Graph', 'column');\n }\n\n dataExplorerToggleGraphType(name: string, value: string): void {\n const graphTypes = this.componentContent.dataExplorerGraphTypes;\n for (let index = 0; index < graphTypes.length; index++) {\n if (graphTypes[index].value === value) {\n graphTypes.splice(index, 1);\n this.componentChanged();\n return;\n }\n }\n graphTypes.push(this.createGraphTypeObject(name, value));\n this.componentChanged();\n }\n\n createGraphTypeObject(name: string, value: string): any {\n return { name: name, value: value };\n }\n\n numDataExplorerSeriesChanged(): void {\n const count = this.componentContent.numDataExplorerSeries;\n if (this.componentContent.dataExplorerSeriesParams.length < count) {\n this.increaseNumDataExplorerSeries(count);\n } else if (this.componentContent.dataExplorerSeriesParams.length > count) {\n this.decreaseNumDataExplorerSeries(count);\n }\n this.componentChanged();\n }\n\n increaseNumDataExplorerSeries(count: number): void {\n const numToAdd = count - this.componentContent.dataExplorerSeriesParams.length;\n for (let s = 0; s < numToAdd; s++) {\n this.componentContent.dataExplorerSeriesParams.push({});\n }\n }\n\n decreaseNumDataExplorerSeries(count: number): void {\n this.componentContent.dataExplorerSeriesParams =\n this.componentContent.dataExplorerSeriesParams.slice(0, count);\n }\n\n numDataExplorerYAxisChanged(): void {\n this.updateDataExplorerSeriesParamsYAxis();\n this.componentChanged();\n }\n\n updateDataExplorerSeriesParamsYAxis(): void {\n for (const params of this.componentContent.dataExplorerSeriesParams) {\n if (params.yAxis >= this.componentContent.numDataExplorerYAxis) {\n params.yAxis = 0;\n }\n }\n }\n\n importTableFile(event: any): void {\n if (confirm($localize`Are you sure you want to overwrite the existing table?`)) {\n this.showImportingTableDisplay();\n this.setImportTableMessage($localize`Importing table...`);\n const reader: FileReader = new FileReader();\n reader.onload = () => {\n const fileContent = reader.result as string;\n const tableContent = CSVToArray(fileContent);\n const numCells = this.getNumCells(tableContent);\n if (numCells > this.MAX_ALLOWED_CELLS_IN_IMPORT) {\n this.setImportTableMessage(\n $localize`Error: The table contains more than ${this.MAX_ALLOWED_CELLS_IN_IMPORT} cells`\n );\n } else {\n this.importTable(tableContent);\n this.setImportTableMessage($localize`Successfully imported table`);\n }\n this.hideImportingTableDisplay();\n };\n reader.readAsText(event.target.files[0]);\n }\n event.target.value = null;\n }\n\n getNumCells(tableContent: (string | number)[][]): number {\n let numCells = 0;\n for (const row of tableContent) {\n numCells += row.length;\n }\n return numCells;\n }\n\n importTable(tableContent: (string | number)[][]): void {\n const tableData = this.convertToTableData(tableContent);\n this.componentContent.tableData = tableData;\n this.componentContent.numRows = this.getNumRows(tableData);\n this.componentContent.numColumns = this.getNumColumns(tableData);\n this.componentChanged();\n }\n\n convertToTableData(array: (string | number)[][]): any[][] {\n const table = [];\n for (const row of array) {\n const tableRow = [];\n for (const cell of row) {\n tableRow.push({ text: cell, editable: true, size: null });\n }\n table.push(tableRow);\n }\n return table;\n }\n\n getNumRows(tableData: any[][]): number {\n return tableData.length;\n }\n\n getNumColumns(tableData: any[][]): number {\n let maxColumns = 0;\n for (const row of tableData) {\n if (row.length > maxColumns) {\n maxColumns = row.length;\n }\n }\n return maxColumns;\n }\n\n showImportingTableDisplay(): void {\n this.isImportingTable = true;\n }\n\n hideImportingTableDisplay(): void {\n this.isImportingTable = false;\n }\n\n setImportTableMessage(message: string): void {\n this.importTableMessage = message;\n }\n}\n", + "styleUrl": "edit-table-advanced.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [ + "EditAdvancedComponentComponent" + ], + "templateData": "
    \n
    \n \n Enable Data Explorer\n \n
    \n @if (componentContent.isDataExplorerEnabled) {\n
    \n
    \n Allowed Graph Types:\n \n Scatter Plot\n \n \n Line Graph\n \n \n Bar Graph\n \n
    \n @if (isDataExplorerScatterPlotEnabled) {\n
    \n \n Show Scatter Plot Regression Line\n \n
    \n }\n
    \n \n Number of Series\n \n \n
    \n
    \n \n Number of Y Axes\n \n \n
    \n @if (componentContent.numDataExplorerYAxis > 1) {\n
    \n Choose the Y Axis for each Series\n @for (\n s of [].constructor(componentContent.numDataExplorerSeries);\n track s;\n let seriesIndex = $index\n ) {\n
    \n \n Series {{ seriesIndex + 1 }}\n \n @for (\n y of [].constructor(componentContent.numDataExplorerYAxis);\n track y;\n let yAxisIndex = $index\n ) {\n \n Y Axis {{ yAxisIndex + 1 }}\n \n }\n \n \n
    \n }\n
    \n }\n
    \n \n Can Student Edit Axis Labels\n \n
    \n
    \n
    \n Fix Data to Table Column\n \n help\n \n
    \n \n X Data\n \n (Allow student to select)\n @for (columnName of columnNames; track columnName; let columnIndex = $index) {\n \n @if (columnName === '') {\n (Table Column {{ columnIndex + 1 }})\n }\n @if (columnName !== '') {\n {{ columnName }}\n }\n \n }\n \n \n @for (\n y of [].constructor(componentContent.numDataExplorerSeries);\n track y;\n let dataExplorerSeriesIndex = $index\n ) {\n \n Y Data\n {{\n componentContent.numDataExplorerSeries > 1 ? dataExplorerSeriesIndex + 1 : ''\n }}\n 0 ? dataExplorerSeriesIndex + 1 : '')\n ]\n \"\n (ngModelChange)=\"componentChanged()\"\n >\n (Allow student to select)\n @for (columnName of columnNames; track columnName; let columnIndex = $index) {\n \n @if (columnName === '') {\n (Table Column {{ columnIndex + 1 }})\n }\n @if (columnName !== '') {\n {{ columnName }}\n }\n \n }\n \n \n }\n
    \n
    \n \n Tooltip Header Column\n \n (Default)\n @for (columnName of columnNames; track columnName; let columnIndex = $index) {\n \n @if (columnName === '') {\n (Table Column {{ columnIndex + 1 }})\n }\n @if (columnName !== '') {\n {{ columnName }}\n }\n \n }\n \n \n \n help\n \n
    \n
    \n }\n
    \n
    \n \n Import Table\n \n \n \n help\n \n @if (isImportingTable) {\n \n \n }\n
    {{ importTableMessage }}
    \n
    \n@if (isNotebookEnabled()) {\n
    \n \n
    \n}\n\n
    \n\n
    \n \n Enable Row Selection\n \n
    \n@if (componentContent.showSubmitButton) {\n \n}\n\n
    \n \n \n \n \n \n
    \n\n\n\n" + }, + { + "name": "EditTableConnectedComponentsComponent", + "id": "component-EditTableConnectedComponentsComponent-79ac012d2622d618ea3a31fbee178da4bf9fa354f5e5a6949ea54ffc376f54d82af6a9e814804c42e46d6f4cd5dc2f7a0eb2fb1499510468bb43e50fda65d432", + "file": "src/assets/wise5/components/table/edit-table-connected-components/edit-table-connected-components.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "edit-table-connected-components", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./edit-table-connected-components.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "allowedConnectedComponentTypes", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "line": 21, + "type": "string[]", + "decorators": [], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "line": 18, + "type": "any", + "decorators": [], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "line": 19, + "type": "string", + "decorators": [], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "connectedComponents", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "line": 22, + "type": "any[]", + "decorators": [], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 20, + "type": "string", + "decorators": [], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + } + ], + "outputsClass": [ + { + "name": "connectedComponentsChanged", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 23, + "type": "EventEmitter", + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + } + ], + "propertiesClass": [ + { + "name": "nodeIds", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 24, + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + } + ], + "methodsClass": [ + { + "name": "afterComponentIdChanged", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 27, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "addConnectedComponent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 34, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "automaticallySetConnectedComponentFieldsIfPossible", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 74, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "automaticallySetConnectedComponentTypeIfPossible", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 57, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "connectedComponentChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "connectedComponentComponentIdChanged", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 51, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "connectedComponentNodeIdChanged", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 47, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "connectedComponentTypeChanged", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 66, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "connectedComponentTypeIsSpecificType", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 106, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "createConnectedComponent", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 39, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "deleteConnectedComponent", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 76, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "getComponents", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 87, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "getConnectedComponentType", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 95, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "getNodePositionAndTitle", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 91, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "isConnectedComponentTypeAllowed", + "args": [ + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 70, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 28, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditConnectedComponentsComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "EditConnectedComponentsAddButtonComponent", + "type": "component" + }, + { + "name": "EditConnectedComponentDefaultSelectsComponent", + "type": "component" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatSelectModule", + "type": "module" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatCheckbox" + }, + { + "name": "EditConnectedComponentDeleteButtonComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatCheckbox } from '@angular/material/checkbox';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatSelectModule } from '@angular/material/select';\nimport { EditConnectedComponentDefaultSelectsComponent } from '../../../../../app/authoring-tool/edit-connected-component-default-selects/edit-connected-component-default-selects.component';\nimport { EditConnectedComponentDeleteButtonComponent } from '../../../../../app/authoring-tool/edit-connected-component-delete-button/edit-connected-component-delete-button.component';\nimport { EditConnectedComponentsAddButtonComponent } from '../../../../../app/authoring-tool/edit-connected-components-add-button/edit-connected-components-add-button.component';\nimport { EditConnectedComponentsComponent } from '../../../../../app/authoring-tool/edit-connected-components/edit-connected-components.component';\n\n@Component({\n selector: 'edit-table-connected-components',\n templateUrl: './edit-table-connected-components.component.html',\n styleUrl:\n '../../../../../app/authoring-tool/edit-connected-components/edit-connected-components.component.scss',\n imports: [\n EditConnectedComponentsAddButtonComponent,\n EditConnectedComponentDefaultSelectsComponent,\n MatFormFieldModule,\n MatSelectModule,\n FormsModule,\n MatCheckbox,\n EditConnectedComponentDeleteButtonComponent\n ]\n})\nexport class EditTableConnectedComponentsComponent extends EditConnectedComponentsComponent {\n afterComponentIdChanged(connectedComponent: any) {\n const connectedComponentType = this.getConnectedComponentType(connectedComponent);\n if (connectedComponentType !== 'Graph') {\n delete connectedComponent.showDataAtMouseX;\n }\n }\n}\n", + "styleUrl": "../../../../../app/authoring-tool/edit-connected-components/edit-connected-components.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [ + "EditConnectedComponentsComponent" + ], + "templateData": "\n@for (\n connectedComponent of connectedComponents;\n track connectedComponent;\n let connectedComponentIndex = $index\n) {\n
    \n
    \n \n @if (connectedComponent.type === 'importWork') {\n \n Action\n \n Merge\n Append\n \n \n }\n @if (getConnectedComponentType(connectedComponent) === 'Graph') {\n
    \n \n Only Show Data At Mouse X Position\n \n
    \n }\n \n \n
    \n
    \n}\n" + }, + { + "name": "EditTagComponent", + "id": "component-EditTagComponent-7ecb6d6e975828c294dfe8624b549d2549413c193474f61072ea39d8d09d31e1884381a5fc5c9135dc29efb323744f45b18d6511b8e9658f44c710f10bc1afdf", + "file": "src/app/teacher/edit-tag/edit-tag.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "edit-tag", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./edit-tag.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "tag", + "deprecated": false, + "deprecationMessage": "", + "line": 38, + "type": "Tag", + "decorators": [] + } + ], + "outputsClass": [ + { + "name": "closeEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 35, + "type": "EventEmitter" + } + ], + "propertiesClass": [ + { + "name": "colorControl", + "defaultValue": "new FormControl('', [Validators.required])", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 41, + "modifierKind": [ + 124 + ] + }, + { + "name": "nameControl", + "defaultValue": "new FormControl('', [\n Validators.required,\n this.createArchivedTagValidator(),\n this.createUniqueTagValidator()\n ])", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 42, + "modifierKind": [ + 124 + ] + }, + { + "name": "nameInput", + "deprecated": false, + "deprecationMessage": "", + "type": "ElementRef", + "indexKey": "", + "optional": false, + "description": "", + "line": 36, + "decorators": [ + { + "name": "ViewChild", + "stringifiedArguments": "'nameInput'" + } + ], + "modifierKind": [ + 171 + ] + }, + { + "name": "submitLabel", + "defaultValue": "$localize`Create`", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 37, + "modifierKind": [ + 124 + ] + }, + { + "name": "tags", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "Tag[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 39, + "modifierKind": [ + 123 + ] + } + ], + "methodsClass": [ + { + "name": "chooseColor", + "args": [ + { + "name": "color", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 104, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "color", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "close", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 156, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "createArchivedTagValidator", + "args": [], + "optional": false, + "returnType": "ValidatorFn", + "typeParameters": [], + "line": 73, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "createTag", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 124, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "createUniqueTagValidator", + "args": [], + "optional": false, + "returnType": "ValidatorFn", + "typeParameters": [], + "line": 84, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "doesTagAlreadyExist", + "args": [ + { + "name": "tagText", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 94, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "tagText", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "enterKeyPressed", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 98, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "getColorValue", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 120, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "getNameValue", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 116, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "handleError", + "args": [ + { + "name": "error", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 150, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "error", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngAfterViewInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 67, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 53, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "submit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 108, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "updateTag", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 136, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "ColorChooserComponent", + "type": "component" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatInputModule", + "type": "module" + }, + { + "name": "ReactiveFormsModule", + "type": "module" + }, + { + "name": "TagComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport {\n AbstractControl,\n FormControl,\n FormsModule,\n ReactiveFormsModule,\n ValidationErrors,\n ValidatorFn,\n Validators\n} from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { ProjectTagService } from '../../../assets/wise5/services/projectTagService';\nimport { Tag } from '../../domain/tag';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { ColorChooserComponent } from '../color-chooser/color-chooser.component';\nimport { TagComponent } from '../tag/tag.component';\n\n@Component({\n imports: [\n ColorChooserComponent,\n FormsModule,\n MatButtonModule,\n MatFormFieldModule,\n MatInputModule,\n ReactiveFormsModule,\n TagComponent\n ],\n selector: 'edit-tag',\n styleUrl: './edit-tag.component.scss',\n templateUrl: './edit-tag.component.html'\n})\nexport class EditTagComponent {\n @Output() closeEvent: EventEmitter = new EventEmitter();\n @ViewChild('nameInput') nameInput: ElementRef;\n protected submitLabel: string = $localize`Create`;\n @Input() tag: Tag;\n private tags: Tag[] = [];\n\n protected colorControl = new FormControl('', [Validators.required]);\n protected nameControl = new FormControl('', [\n Validators.required,\n this.createArchivedTagValidator(),\n this.createUniqueTagValidator()\n ]);\n\n constructor(\n private projectTagService: ProjectTagService,\n private snackBar: MatSnackBar\n ) {}\n\n ngOnInit(): void {\n if (this.tag != null) {\n this.nameControl.setValue(this.tag.text);\n this.colorControl.setValue(this.tag.color);\n this.submitLabel = $localize`Save`;\n }\n this.projectTagService.retrieveUserTags().subscribe((tags: Tag[]) => {\n this.tags = tags;\n if (this.tag != null) {\n this.tags = this.tags.filter((tag: Tag) => tag.id !== this.tag.id);\n }\n });\n }\n\n ngAfterViewInit(): void {\n setTimeout(() => {\n this.nameInput.nativeElement.focus();\n });\n }\n\n private createArchivedTagValidator(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n if (control.value?.toLowerCase() === 'archived') {\n control.markAsTouched();\n return { archivedNotAllowed: true };\n } else {\n return null;\n }\n };\n }\n\n private createUniqueTagValidator(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n if (this.doesTagAlreadyExist(control.value)) {\n control.markAsTouched();\n return { tagAlreadyExists: true };\n } else {\n return null;\n }\n };\n }\n private doesTagAlreadyExist(tagText: string): boolean {\n return this.tags.some((tag: Tag) => tag.text.toLowerCase() === tagText.toLowerCase().trim());\n }\n\n protected enterKeyPressed(): void {\n if (this.nameControl.valid) {\n this.submit();\n }\n }\n\n protected chooseColor(color: string): void {\n this.colorControl.setValue(color);\n }\n\n protected submit(): void {\n if (this.tag == null) {\n this.createTag();\n } else {\n this.updateTag();\n }\n }\n\n private getNameValue(): string {\n return this.nameControl.value.trim();\n }\n\n private getColorValue(): string {\n return this.colorControl.value.trim();\n }\n\n private createTag(): void {\n this.projectTagService.createTag(this.getNameValue(), this.getColorValue()).subscribe({\n next: () => {\n this.snackBar.open($localize`Tag created`);\n this.close();\n },\n error: ({ error }) => {\n this.handleError(error);\n }\n });\n }\n\n private updateTag(): void {\n this.tag.text = this.getNameValue();\n this.tag.color = this.getColorValue();\n this.projectTagService.updateTag(this.tag).subscribe({\n next: () => {\n this.snackBar.open($localize`Tag updated`);\n this.close();\n },\n error: ({ error }) => {\n this.handleError(error);\n }\n });\n }\n\n private handleError(error: any): void {\n if (error.messageCode === 'tagAlreadyExists') {\n this.nameControl.setErrors({ tagAlreadyExists: true });\n }\n }\n\n protected close(): void {\n this.closeEvent.emit();\n }\n}\n", + "styleUrl": "./edit-tag.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "projectTagService", + "type": "ProjectTagService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "snackBar", + "type": "MatSnackBar", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 46, + "jsdoctags": [ + { + "name": "projectTagService", + "type": "ProjectTagService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "snackBar", + "type": "MatSnackBar", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "
    \n
    \n \n
    \n
    \n \n Tag Name\n \n @if (nameControl.errors?.required) {\n Required\n } @else if (nameControl.errors?.archivedNotAllowed) {\n Archived tag not allowed\n } @else if (nameControl.errors?.tagAlreadyExists) {\n Tag already exists\n }\n \n \n Color\n \n @if (colorControl.errors?.required) {\n Required\n }\n \n
    \n
    \n
    \n \n \n
    \n \n \n {{ submitLabel }}\n \n
    \n
    \n" + }, + { + "name": "EditUnitResourcesComponent", + "id": "component-EditUnitResourcesComponent-32a9fbfbd8306b34d90a0884238179e4c92eba3c5e8a1d3d5be56dfdf1fc22892ebe41f6d1258f1f4546aa0e39dc82dc80f1b2641dfd20e0758b0c3408b7d4e4", + "file": "src/assets/wise5/authoringTool/edit-unit-resources/edit-unit-resources.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "edit-unit-resources", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./edit-unit-resources.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "resources", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "line": 43, + "type": "UnitResource[]", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "inputChanged", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 42, + "modifierKind": [ + 124 + ] + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 44, + "modifierKind": [ + 123 + ] + } + ], + "methodsClass": [ + { + "name": "addNewResource", + "args": [ + { + "name": "addToTop", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 77, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "addToTop", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "deleteResource", + "args": [ + { + "name": "resourceIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 95, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "resourceIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "drop", + "args": [ + { + "name": "event", + "type": "CdkDragDrop", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 60, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "event", + "type": "CdkDragDrop", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "moveDown", + "args": [ + { + "name": "ruleIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 68, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "ruleIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "moveRuleItem", + "args": [ + { + "name": "previousIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 72, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "previousIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "moveUp", + "args": [ + { + "name": "ruleIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 64, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "ruleIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 56, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 48, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "scrollToBottomOfList", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 86, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "CdkTextareaAutosize" + }, + { + "name": "DragDropModule", + "type": "module" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatCardModule", + "type": "module" + }, + { + "name": "MatInputModule", + "type": "module" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { CdkDragDrop, DragDropModule, moveItemInArray } from '@angular/cdk/drag-drop';\nimport { CdkTextareaAutosize } from '@angular/cdk/text-field';\nimport { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { debounceTime, distinctUntilChanged, Subject, Subscription } from 'rxjs';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { TeacherProjectService } from '../../services/teacherProjectService';\n\nclass UnitResource {\n name: string;\n url: string;\n constructor(name: string, url: string) {\n this.name = name;\n this.url = url;\n }\n}\n\n@Component({\n imports: [\n CommonModule,\n CdkTextareaAutosize,\n DragDropModule,\n FormsModule,\n MatCardModule,\n MatInputModule,\n MatFormFieldModule,\n MatButtonModule,\n MatIconModule,\n MatTooltipModule\n ],\n selector: 'edit-unit-resources',\n styleUrl: './edit-unit-resources.component.scss',\n templateUrl: './edit-unit-resources.component.html'\n})\nexport class EditUnitResourcesComponent {\n protected inputChanged: Subject = new Subject();\n @Input() resources: UnitResource[] = [];\n private subscriptions: Subscription = new Subscription();\n\n constructor(private projectService: TeacherProjectService) {}\n\n ngOnInit(): void {\n this.subscriptions.add(\n this.inputChanged\n .pipe(debounceTime(1000), distinctUntilChanged())\n .subscribe(() => this.projectService.saveProject())\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n protected drop(event: CdkDragDrop): void {\n this.moveRuleItem(event.previousIndex, event.currentIndex);\n }\n\n protected moveUp(ruleIndex: number): void {\n this.moveRuleItem(ruleIndex, ruleIndex - 1);\n }\n\n protected moveDown(ruleIndex: number): void {\n this.moveRuleItem(ruleIndex, ruleIndex + 1);\n }\n\n protected moveRuleItem(previousIndex: number, currentIndex: number): void {\n moveItemInArray(this.resources, previousIndex, currentIndex);\n this.projectService.saveProject();\n }\n\n protected addNewResource(addToTop: boolean): void {\n const location = addToTop ? 0 : this.resources.length;\n this.resources.splice(location, 0, new UnitResource('', ''));\n this.projectService.saveProject();\n if (!addToTop) {\n this.scrollToBottomOfList();\n }\n }\n\n private scrollToBottomOfList(): void {\n setTimeout(() => {\n const button = document.getElementById('add-new-resource-bottom-button');\n if (button) {\n button.scrollIntoView();\n }\n }, 0);\n }\n\n protected deleteResource(resourceIndex: number): void {\n if (confirm($localize`Are you sure you want to delete this resource?`)) {\n this.resources.splice(resourceIndex, 1);\n this.projectService.saveProject();\n }\n }\n}\n", + "styleUrl": "./edit-unit-resources.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 44, + "jsdoctags": [ + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "\n \n add_circle\n \n\n
    \n
    \n Resources\n \n \n
    \n
      \n @for (\n resource of resources;\n track $index;\n let resourceIndex = $index, first = $first, last = $last\n ) {\n
    • \n \n
      \n
      \n {{ resourceIndex + 1 }}\n drag_indicator\n
      \n
      \n \n Resource Name\n \n \n \n Resource URL\n \n \n \n
      \n
      \n \n clear\n \n @if (resources.length > 1) {\n \n arrow_upward\n \n \n arrow_downward\n \n }\n
      \n
      \n
      \n
    • \n }\n
    \n
    \n \n
    \n
    \n" + }, + { + "name": "EditUnitTypeComponent", + "id": "component-EditUnitTypeComponent-f59efa22ea2af3fec09f0380849523807f5dc08f4b083deb56fc9feaa12d3391f872a69e1c7ed2d14f5c331f49d34cace5dae2706036c339289ffe37ffa1b154", + "file": "src/assets/wise5/authoringTool/edit-unit-type/edit-unit-type.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "edit-unit-type", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./edit-unit-type.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "metadata", + "deprecated": false, + "deprecationMessage": "", + "line": 12, + "type": "any", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [], + "methodsClass": [ + { + "name": "saveProject", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 16, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatRadioModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { TeacherProjectService } from '../../services/teacherProjectService';\n\n@Component({\n imports: [FormsModule, MatRadioModule],\n selector: 'edit-unit-type',\n templateUrl: './edit-unit-type.component.html'\n})\nexport class EditUnitTypeComponent {\n @Input() metadata: any;\n\n constructor(private projectService: TeacherProjectService) {}\n\n protected saveProject(): void {\n this.projectService.saveProject();\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 12, + "jsdoctags": [ + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "
    Unit Type
    \n\n WISE Platform (Uses features on this platform to collect student data)\n Other Platform (Contains activities and resources for teachers and does not collect student\n data)\n\n" + }, + { + "name": "EmbeddedAuthoring", + "id": "component-EmbeddedAuthoring-83ed6f0d91b82067f89984776f364a359576ecca69c478c3c6738d9e467c6c39fc4fa28707c626e188f7405ef9c3b4ac3c33e413440c2ee036a5614e1c55ecd4", + "file": "src/assets/wise5/components/embedded/embedded-authoring/embedded-authoring.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "embedded-authoring", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "embedded-authoring.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "embeddedApplicationIFrameId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 35 + }, + { + "name": "allowedConnectedComponentTypes", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "idToOrder", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "inputChange", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "promptChange", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + } + ], + "methodsClass": [ + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 47, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "updateUrl", + "args": [ + { + "name": "url", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 54, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "url", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "assetSelected", + "args": [ + { + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 100, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "componentChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 73, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "confirmAndRemove", + "args": [ + { + "name": "message", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "array", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 110, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "message", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "array", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "deleteStarterState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 81, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "getComponent", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 106, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "getComponents", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 102, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "isForThisComponent", + "args": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 77, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "moveObjectDown", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 122, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "moveObjectUp", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 117, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 65, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "promptChanged", + "args": [ + { + "name": "prompt", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 69, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "prompt", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "saveStarterState", + "args": [ + { + "name": "starterState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "starterState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "setShowSubmitButtonValue", + "args": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 85, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "TranslatableTextareaComponent", + "type": "component" + }, + { + "name": "TranslatableAssetChooserComponent", + "type": "component" + }, + { + "name": "AuthorUrlParametersComponent", + "type": "component" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatInput" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatCheckbox" + }, + { + "name": "MatIcon" + }, + { + "name": "MatTooltip" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatCheckbox } from '@angular/material/checkbox';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInput } from '@angular/material/input';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { AuthorUrlParametersComponent } from '../../../../../app/authoring-tool/author-url-parameters/author-url-parameters.component';\nimport { ProjectAssetService } from '../../../../../app/services/projectAssetService';\nimport { AbstractComponentAuthoring } from '../../../authoringTool/components/AbstractComponentAuthoring';\nimport { TranslatableAssetChooserComponent } from '../../../authoringTool/components/translatable-asset-chooser/translatable-asset-chooser.component';\nimport { TranslatableTextareaComponent } from '../../../authoringTool/components/translatable-textarea/translatable-textarea.component';\nimport { ConfigService } from '../../../services/configService';\nimport { TeacherNodeService } from '../../../services/teacherNodeService';\nimport { TeacherProjectService } from '../../../services/teacherProjectService';\nimport { EmbeddedService } from '../embeddedService';\n\n@Component({\n selector: 'embedded-authoring',\n templateUrl: 'embedded-authoring.component.html',\n styleUrl: 'embedded-authoring.component.scss',\n imports: [\n TranslatableTextareaComponent,\n TranslatableAssetChooserComponent,\n AuthorUrlParametersComponent,\n MatFormFieldModule,\n MatInput,\n FormsModule,\n MatCheckbox,\n MatIcon,\n MatTooltip\n ]\n})\nexport class EmbeddedAuthoring extends AbstractComponentAuthoring {\n embeddedApplicationIFrameId: string;\n\n constructor(\n protected configService: ConfigService,\n private embeddedService: EmbeddedService,\n protected nodeService: TeacherNodeService,\n protected projectAssetService: ProjectAssetService,\n protected projectService: TeacherProjectService\n ) {\n super(configService, nodeService, projectAssetService, projectService);\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n this.embeddedApplicationIFrameId = this.embeddedService.getEmbeddedApplicationIframeId(\n this.componentId\n );\n }\n\n updateUrl(url: string): void {\n this.componentContent.url = url;\n this.componentChanged();\n }\n}\n", + "styleUrl": "embedded-authoring.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "embeddedService", + "type": "EmbeddedService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeService", + "type": "TeacherNodeService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectAssetService", + "type": "ProjectAssetService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 35, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "embeddedService", + "type": "EmbeddedService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeService", + "type": "TeacherNodeService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectAssetService", + "type": "ProjectAssetService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "AbstractComponentAuthoring" + ], + "templateData": "
    \n \n \n
    \n\n
    \n \n Width (px) (optional)\n \n \n \n Height (px)\n \n \n \n \n Saves Student Work  \n help\n \n \n
    \n" + }, + { + "name": "EmbeddedShowWorkComponent", + "id": "component-EmbeddedShowWorkComponent-53f6fac48c6e6deeb49d7596720e9cc257afade79c3f03ef6eef11d292c37cbd7440eec662f6e7a213e6bd882538226be8f346f955c288b42bd44b7997b16c9d", + "file": "src/assets/wise5/components/embedded/embedded-show-work/embedded-show-work.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "embedded-show-work", + "styleUrls": [], + "styles": [], + "template": "", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "line": 8, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "componentState", + "deprecated": false, + "deprecationMessage": "", + "line": 9, + "type": "any", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "isRevision", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "line": 10, + "type": "boolean", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 7, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "embeddedApplicationIFrameId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 21, + "modifierKind": [ + 124 + ] + }, + { + "name": "height", + "defaultValue": "this.embeddedService.defaultHeight", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 22, + "modifierKind": [ + 124 + ] + }, + { + "name": "messageEventListener", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 23, + "modifierKind": [ + 123 + ] + }, + { + "name": "url", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 24, + "modifierKind": [ + 124 + ] + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "inheritance": { + "file": "ComponentShowWorkDirective" + } + } + ], + "methodsClass": [ + { + "name": "getIframeId", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 45, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "getIframeIdPrefix", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 49, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "handleApplicationInitializedMessage", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 88, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "handleGetLatestAnnotationsMessage", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 119, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "handleGetLatestStudentWorkMessage", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 109, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "handleGetParametersMessage", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 100, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "handleGetProjectPathMessage", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 115, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "iframeLoaded", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 61, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "initializeMessageEventListener", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 71, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 37, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "sendLatestWorkToApplication", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 92, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "sendMessageToApplication", + "args": [ + { + "name": "message", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 67, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "message", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setHeight", + "args": [ + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 57, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngAfterViewInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 33, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentShowWorkDirective" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { AnnotationService } from '../../../services/annotationService';\nimport { ConfigService } from '../../../services/configService';\nimport { NodeService } from '../../../services/nodeService';\nimport { ProjectService } from '../../../services/projectService';\nimport { ComponentShowWorkDirective } from '../../component-show-work.directive';\nimport { EmbeddedService } from '../embeddedService';\n\n@Component({\n selector: 'embedded-show-work',\n template: ``\n})\nexport class EmbeddedShowWorkComponent extends ComponentShowWorkDirective {\n protected embeddedApplicationIFrameId: string;\n protected height: string = this.embeddedService.defaultHeight;\n private messageEventListener: any;\n protected url: any;\n\n constructor(\n private annotationService: AnnotationService,\n private configService: ConfigService,\n private embeddedService: EmbeddedService,\n protected nodeService: NodeService,\n protected projectService: ProjectService,\n private sanitizer: DomSanitizer\n ) {\n super(nodeService, projectService);\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n this.embeddedApplicationIFrameId = this.getIframeId();\n this.setHeight(this.componentContent);\n this.url = this.sanitizer.bypassSecurityTrustResourceUrl(this.componentContent.url);\n this.initializeMessageEventListener();\n }\n\n private getIframeId(): string {\n return this.getIframeIdPrefix() + this.componentState.id;\n }\n\n private getIframeIdPrefix(): string {\n if (this.isRevision) {\n return `${this.embeddedService.iframePrefix}-revision-${this.componentId}`;\n } else {\n return this.embeddedService.getEmbeddedApplicationIframeId(this.componentId);\n }\n }\n\n private setHeight(componentContent: any): void {\n this.height = componentContent.height + 'px';\n }\n\n protected iframeLoaded(): void {\n (\n window.document.getElementById(this.embeddedApplicationIFrameId) as HTMLIFrameElement\n ).contentWindow.addEventListener('message', this.messageEventListener);\n }\n\n sendMessageToApplication(message: any): void {\n this.embeddedService.sendMessageToApplication(this.embeddedApplicationIFrameId, message);\n }\n\n private initializeMessageEventListener(): void {\n this.messageEventListener = (messageEvent: any) => {\n const messageEventData = messageEvent.data;\n if (messageEventData.messageType === 'applicationInitialized') {\n this.handleApplicationInitializedMessage();\n } else if (messageEventData.messageType === 'getParameters') {\n this.handleGetParametersMessage();\n } else if (messageEventData.messageType === 'getLatestStudentWork') {\n this.handleGetLatestStudentWorkMessage();\n } else if (messageEventData.messageType === 'getProjectPath') {\n this.handleGetProjectPathMessage();\n } else if (messageEventData.messageType === 'getLatestAnnotations') {\n this.handleGetLatestAnnotationsMessage();\n }\n };\n }\n\n handleApplicationInitializedMessage(): void {\n this.sendLatestWorkToApplication();\n }\n\n sendLatestWorkToApplication(): void {\n const message = {\n messageType: 'componentState',\n componentState: this.componentState\n };\n this.sendMessageToApplication(message);\n }\n\n handleGetParametersMessage(): void {\n this.embeddedService.handleGetParametersMessage(\n this.embeddedApplicationIFrameId,\n this.nodeId,\n this.componentId,\n this.componentContent\n );\n }\n\n handleGetLatestStudentWorkMessage(): void {\n this.sendMessageToApplication(\n this.embeddedService.createLatestStudentWorkMessage(this.componentState)\n );\n }\n\n handleGetProjectPathMessage(): void {\n this.sendMessageToApplication(this.embeddedService.createProjectPathMessage());\n }\n\n handleGetLatestAnnotationsMessage(): void {\n const workgroupId = this.configService.getWorkgroupId();\n const type = 'any';\n const latestScoreAnnotation = this.annotationService.getLatestScoreAnnotation(\n this.nodeId,\n this.componentId,\n workgroupId,\n type\n );\n const latestCommentAnnotation = this.annotationService.getLatestCommentAnnotation(\n this.nodeId,\n this.componentId,\n workgroupId,\n type\n );\n const message = {\n messageType: 'latestAnnotations',\n latestScoreAnnotation: latestScoreAnnotation,\n latestCommentAnnotation: latestCommentAnnotation\n };\n this.sendMessageToApplication(message);\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "embeddedService", + "type": "EmbeddedService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "sanitizer", + "type": "DomSanitizer", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 24, + "jsdoctags": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "embeddedService", + "type": "EmbeddedService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "sanitizer", + "type": "DomSanitizer", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "ComponentShowWorkDirective" + ] + }, + { + "name": "EmbeddedStudent", + "id": "component-EmbeddedStudent-8199eeebeb50c75f8c037d652687e48467c36d12785a5188debcda04d70bd2a359c83388c2192b8dd8ac47598aa834be6399fbee2714781324261241160f2523", + "file": "src/assets/wise5/components/embedded/embedded-student/embedded-student.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "embedded-student", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "embedded-student.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "component", + "deprecated": false, + "deprecationMessage": "", + "line": 24, + "type": "Component", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentState", + "deprecated": false, + "deprecationMessage": "", + "line": 25, + "type": "any", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isDisabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "line": 26, + "type": "boolean", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "mode", + "deprecated": false, + "deprecationMessage": "", + "line": 27, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 28, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "workgroupId", + "deprecated": false, + "deprecationMessage": "", + "line": 29, + "type": "number", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "outputsClass": [ + { + "name": "saveComponentStateEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 30, + "type": "EventEmitter", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "starterStateChangedEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 31, + "type": "EventEmitter", + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "propertiesClass": [ + { + "name": "annotationsToSave", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 31 + }, + { + "name": "componentStateId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 32 + }, + { + "name": "componentType", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 33, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "embeddedApplicationIFrameId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 34 + }, + { + "name": "height", + "defaultValue": "'600px'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 35 + }, + { + "name": "maxHeight", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 37 + }, + { + "name": "maxWidth", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 36 + }, + { + "name": "messageEventListener", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 38 + }, + { + "name": "messageTypeToFunctionHandler", + "defaultValue": "{\n applicationInitialized: (messageEventData: any) => {\n this.handleApplicationInitializedMessage();\n },\n componentDirty: (messageEventData: any) => {\n this.handleComponentDirtyMessage(messageEventData);\n },\n componentSubmitDirty: (messageEventData: any) => {\n this.handleComponentSubmitDirtyMessage(messageEventData);\n },\n event: (messageEventData: any) => {\n this.handleEventMessage(messageEventData);\n },\n getLatestAnnotations: (messageEventData: any) => {\n this.handleGetLatestAnnotationsMessage();\n },\n getLatestStudentWork: (messageEventData: any) => {\n this.handleGetLatestStudentWorkMessage();\n },\n getParameters: (messageEventData: any) => {\n this.handleGetParametersMessage();\n },\n getProjectPath: (messageEventData: any) => {\n this.handleGetProjectPathMessage();\n },\n getStudentWork: (messageEventData: any) => {\n this.handleGetStudentWorkMessage(messageEventData);\n },\n studentDataChanged: (messageEventData: any) => {\n this.handleStudentDataChangedMessage(messageEventData);\n },\n studentWork: (messageEventData: any) => {\n this.handleStudentWorkMessage(messageEventData);\n }\n }", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 39 + }, + { + "name": "notebookConfig", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 74 + }, + { + "name": "studentData", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 75 + }, + { + "name": "url", + "deprecated": false, + "deprecationMessage": "", + "type": "SafeUrl", + "indexKey": "", + "optional": false, + "description": "", + "line": 76 + }, + { + "name": "width", + "defaultValue": "'100%'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 77 + }, + { + "name": "annotationSavedToServerSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 53, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "attachments", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 33, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 34, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 35, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isDirty", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 45, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSaveButtonVisible", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 38, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSaveOrSubmitButtonVisible", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 41, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isShowAddToNotebookButton", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 39, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isStudentAttachmentEnabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 46, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmit", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 44, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmitButtonDisabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 42, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmitButtonVisible", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 40, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmitDirty", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 43, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "latestAnnotations", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 48, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "latestComponentState", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 50, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "nodeSubmitClickedSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 54, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "parentStudentWorkIds", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 49, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "prompt", + "deprecated": false, + "deprecationMessage": "", + "type": "SafeHtml", + "indexKey": "", + "optional": false, + "description": "", + "line": 37, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "requestComponentStateSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 52, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "showAddToNotebookButton", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 51, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "studentWorkSavedToServerSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 55, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "submitCounter", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 47, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 56, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "methodsClass": [ + { + "name": "addToAnnotationsToSave", + "args": [ + { + "name": "annotation", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 612, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "annotation", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "clearAnnotationsToSave", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 320, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "connectedComponentStudentDataSaved", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 624, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createComponentState", + "args": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 284, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createComponentStateObject", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 298, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getAllStudentWorkFromOtherComponents", + "args": [ + { + "name": "otherComponents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 455, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "otherComponents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getConnectedComponentMergedComponentState", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 484, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getLatestStudentWork", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 358, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getLatestStudentWorkFromOtherComponents", + "args": [ + { + "name": "otherComponents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 440, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "otherComponents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getStudentWork", + "args": [ + { + "name": "params", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 379, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the student work from the specified components/nodes\ngetLatestStudentWorkFromThisComponent\ngetAllStudentWorkFromThisComponent\ngetLatestStudentWorkFromThisNode\ngetAllStudentWorkFromThisNode\ngetLatestStudentWorkFromOtherComponents\ngetAllStudentWorkFromOtherComponents\nIf getLatestStudentWorkFromOtherComponents or getAllStudentWorkFromOtherComponents are\nrequested, the otherComponents param must be provided. otherComponents should be an array of\nobjects. The objects should contain a nodeId and componentId.\n", + "description": "

    Get the student work from the specified components/nodes\ngetLatestStudentWorkFromThisComponent\ngetAllStudentWorkFromThisComponent\ngetLatestStudentWorkFromThisNode\ngetAllStudentWorkFromThisNode\ngetLatestStudentWorkFromOtherComponents\ngetAllStudentWorkFromOtherComponents\nIf getLatestStudentWorkFromOtherComponents or getAllStudentWorkFromOtherComponents are\nrequested, the otherComponents param must be provided. otherComponents should be an array of\nobjects. The objects should contain a nodeId and componentId.

    \n", + "jsdoctags": [ + { + "name": { + "pos": 12153, + "end": 12159, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "params" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 12147, + "end": 12152, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    The params for getting the student work. The possible values to request are\ngetLatestStudentWorkFromThisComponent\ngetAllStudentWorkFromThisComponent\ngetLatestStudentWorkFromThisNode\ngetAllStudentWorkFromThisNode\ngetLatestStudentWorkFromOtherComponents\ngetAllStudentWorkFromOtherComponents\nIf getLatestStudentWorkFromOtherComponents or getAllStudentWorkFromOtherComponents are\nrequested, the otherComponents param must be provided. otherComponents should be an array of\nobjects. The objects should contain a nodeId and componentId.

    \n" + }, + { + "tagName": { + "pos": 12742, + "end": 12748, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

    object containing other objects that contain work from the specified components/nodes

    \n" + } + ] + }, + { + "name": "handleApplicationInitializedMessage", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 190, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "handleComponentDirtyMessage", + "args": [ + { + "name": "messageEventData", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 195, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "messageEventData", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "handleComponentSubmitDirtyMessage", + "args": [ + { + "name": "messageEventData", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 200, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "messageEventData", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "handleConnectedComponents", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 472, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nImport any work we need from connected components\n", + "description": "

    Import any work we need from connected components

    \n", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "handleEventMessage", + "args": [ + { + "name": "messageEventData", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 147, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "messageEventData", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "handleGetLatestAnnotationsMessage", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 241, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "handleGetLatestStudentWorkMessage", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 222, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "handleGetParametersMessage", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 228, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "handleGetProjectPathMessage", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 237, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "handleGetStudentWorkMessage", + "args": [ + { + "name": "messageEventData", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 213, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "messageEventData", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "handleImportWorkConnectedComponent", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "mergedComponentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "firstTime", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 514, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "mergedComponentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "firstTime", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "handleShowWorkConnectedComponent", + "args": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 501, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "handleStudentDataChangedMessage", + "args": [ + { + "name": "messageEventData", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 205, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "messageEventData", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "handleStudentWorkMessage", + "args": [ + { + "name": "messageEventData", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 164, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "messageEventData", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "handleStudentWorkSavedToServerAdditionalProcessing", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 264, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "iframeLoaded", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 272, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "initializeMessageEventListener", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 137, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isAnnotationValid", + "args": [ + { + "name": "annotation", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 608, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "annotation", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isPerformOverwrite", + "args": [ + { + "name": "mergeField", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "firstTime", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 576, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "mergeField", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "firstTime", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "mergeComponentState", + "args": [ + { + "name": "toComponentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "fromComponentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "mergeFields", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "firstTime", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 545, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nMerge a new component state into a base component state.\n", + "description": "

    Merge a new component state into a base component state.

    \n", + "jsdoctags": [ + { + "name": { + "pos": 18634, + "end": 18650, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "toComponentState" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 18628, + "end": 18633, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    The component state we will be merging into.

    \n" + }, + { + "name": { + "pos": 18708, + "end": 18726, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "fromComponentState" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 18702, + "end": 18707, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    The component state we will be merging from.

    \n" + }, + { + "name": { + "pos": 18784, + "end": 18795, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "mergeFields" + }, + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 18778, + "end": 18783, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    The fields to merge.

    \n" + }, + { + "name": { + "pos": 18829, + "end": 18838, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "firstTime" + }, + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 18823, + "end": 18828, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    Whether this is the first time the baseComponentState is being merged into.

    \n" + } + ] + }, + { + "name": "mergeField", + "args": [ + { + "name": "toComponentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "fromComponentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "mergeField", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "firstTime", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 564, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "toComponentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "fromComponentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "mergeField", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "firstTime", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 123, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 104, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "processConnectedComponentState", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 616, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "sendLatestWorkToApplication", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 324, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "sendMessageToApplication", + "args": [ + { + "name": "message", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 336, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "message", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setAnnotations", + "args": [ + { + "name": "annotations", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 592, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "annotations", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setStudentData", + "args": [ + { + "name": "studentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 588, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setStudentWork", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 584, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setURL", + "args": [ + { + "name": "url", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 280, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "url", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setWidthAndHeight", + "args": [ + { + "name": "width", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "height", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 128, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "width", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "height", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "snipModel", + "args": [ + { + "name": "$event", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 344, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nSnip the model by converting it to an image\n", + "description": "

    Snip the model by converting it to an image

    \n", + "jsdoctags": [ + { + "name": { + "pos": 11347, + "end": 11353, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "$event" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 11341, + "end": 11346, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    the click event

    \n" + } + ] + }, + { + "name": "tryGetAllStudentWorkFromOtherComponents", + "args": [ + { + "name": "params", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentWork", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 432, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "params", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentWork", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "tryGetAllStudentWorkFromThisComponent", + "args": [ + { + "name": "params", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentWork", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 400, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "params", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentWork", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "tryGetAllStudentWorkFromThisNode", + "args": [ + { + "name": "params", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentWork", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 417, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "params", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentWork", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "tryGetLatestStudentWorkFromOtherComponents", + "args": [ + { + "name": "params", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentWork", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 425, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "params", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentWork", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "tryGetLatestStudentWorkFromThisComponent", + "args": [ + { + "name": "params", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentWork", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 390, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "params", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentWork", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "tryGetLatestStudentWorkFromThisNode", + "args": [ + { + "name": "params", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentWork", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 410, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "params", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentWork", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "updateLatestCommentAnnotation", + "args": [ + { + "name": "annotation", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 642, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "annotation", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "updateLatestScoreAnnotation", + "args": [ + { + "name": "annotation", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 634, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "annotation", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addDefaultFeedback", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 688, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "attachStudentAsset", + "args": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 232, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "broadcastDoneRenderingComponent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 325, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "canSubmit", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 488, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "clearLatestComponentState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 555, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "confirmSubmit", + "args": [ + { + "name": "numberOfSubmitsLeft", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 468, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "numberOfSubmitsLeft", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "copyAndAttachStudentAsset", + "args": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 218, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "copyPublicNotebookItem", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 632, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "copyPublicNotebookItemButtonClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 747, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createAutoCommentAnnotation", + "args": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 725, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createAutoScoreAnnotation", + "args": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 714, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createComponentStateAdditionalProcessing", + "args": [ + { + "name": "promise", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 598, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "promise", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createComponentStateAndBroadcast", + "args": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 559, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createDefaultFeedbackAnnotation", + "args": [ + { + "name": "feedbackText", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 706, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "feedbackText", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createMergedComponentState", + "args": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 377, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createNewComponentState", + "args": [], + "optional": false, + "returnType": "Partial", + "typeParameters": [], + "line": 818, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "disableAllInput", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 492, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "disableComponentIfNecessary", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 332, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "disableSubmitButton", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 496, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "doAttachStudentAsset", + "args": [ + { + "name": "studentAssetRequest", + "type": "StudentAssetRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 212, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "studentAssetRequest", + "type": "StudentAssetRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 541, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentStudentDataChanged", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 572, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentSubmitDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 548, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentSubmitTriggered", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 512, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "generateImageFromComponentState", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 615, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nRender the component state and then generate an image from it.\n", + "description": "

    Render the component state and then generate an image from it.

    \n", + "jsdoctags": [ + { + "name": { + "pos": 18804, + "end": 18818, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 18798, + "end": 18803, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    The component state to render.

    \n" + }, + { + "tagName": { + "pos": 18856, + "end": 18862, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

    A promise that will return an image.

    \n" + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "generateStarterState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 216, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getAction", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 321, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getClientSaveTime", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 684, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getComponentStatePromise", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 309, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getComponentStateWrapper", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "ComponentStateWrapper", + "typeParameters": [], + "line": 301, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getDefaultFeedback", + "args": [ + { + "name": "submitCount", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 702, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "submitCount", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getElementById", + "args": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getFirstResult", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 758, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "getFirstResult", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getIsDirty", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 277, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getMaxScore", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 680, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getMaxSubmitCount", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 460, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getNumberOfSubmitsLeft", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 456, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "handleConnectedComponentsPostProcess", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 385, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "handleStudentWorkSavedToServer", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 263, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasAnySubmissions", + "args": [ + { + "name": "componentStates", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 344, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentStates", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasDefaultFeedback", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 695, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasMaxScore", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 676, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasMaxSubmitCount", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 437, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasMaxSubmitCountAndUsedAllSubmits", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 452, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasSubmitMessage", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 504, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasSubmitsLeft", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 500, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasUsedAllSubmits", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 441, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "importWorkAsBackground", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 658, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "importWorkByStudentWorkId", + "args": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 170, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "incrementSubmitCounter", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 389, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isAddToNotebookEnabled", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 624, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isForThisComponent", + "args": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 192, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isFromConnectedComponent", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 766, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isHandleConnectedComponentAfterConnectedComponentStudentDataSaved", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 802, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isLockAfterSubmit", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 348, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isNotebookEnabled", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 643, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isPreviewMode", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 109, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSameComponent", + "args": [ + { + "name": "component", + "type": "Component", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 188, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "component", + "type": "Component", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isStudentNoteClippingEnabled", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 647, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isWorkFromClassmate", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 196, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "lockIfNecessary", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 281, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "performSubmit", + "args": [ + { + "name": "submitTriggeredBy", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 472, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "submitTriggeredBy", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "processLatestStudentWork", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 580, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "registerNotebookItemChosenListener", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 736, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "removeAttachment", + "args": [ + { + "name": "attachment", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 245, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "attachment", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "saveButtonClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 393, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "saveForAuthoringPreviewMode", + "args": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 404, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setBackgroundImage", + "args": [ + { + "name": "image", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 674, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "image", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setComponentStateAsBackgroundImage", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 668, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 537, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsDirtyAndBroadcast", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 527, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsSubmit", + "args": [ + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 464, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsSubmitDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 508, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsSubmitDirtyAndBroadcast", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 532, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setParentStudentWorkIdToCurrentStudentWork", + "args": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 180, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setSubmitCounter", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 811, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "shouldCreateComponentState", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 317, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "showStudentAssets", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 651, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "studentDataChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 519, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "submit", + "args": [ + { + "name": "submitTriggeredBy", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 416, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "submitTriggeredBy", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "submitButtonClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 412, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToAnnotationSavedToServer", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 123, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToAttachStudentAsset", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 200, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToNodeSubmitClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 137, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToNotebookItemChosen", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 159, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToNotifyConnectedComponents", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 147, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToRequestComponentState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 289, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToStudentWorkSavedToServer", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 252, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToSubscriptions", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 113, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "tryDisableComponent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 445, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "AddToNotebookButtonComponent", + "type": "component" + }, + { + "name": "ComponentSaveSubmitButtonsComponent", + "type": "component" + }, + { + "name": "ComponentAnnotationsComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import html2canvas from 'html2canvas';\nimport { ChangeDetectorRef, Component } from '@angular/core';\nimport { AnnotationService } from '../../../services/annotationService';\nimport { ConfigService } from '../../../services/configService';\nimport { NodeService } from '../../../services/nodeService';\nimport { NotebookService } from '../../../services/notebookService';\nimport { StudentAssetService } from '../../../services/studentAssetService';\nimport { StudentDataService } from '../../../services/studentDataService';\nimport { ComponentStudent } from '../../component-student.component';\nimport { ComponentService } from '../../componentService';\nimport { EmbeddedService } from '../embeddedService';\nimport { DomSanitizer, SafeUrl } from '@angular/platform-browser';\nimport { MatDialog } from '@angular/material/dialog';\nimport { copy } from '../../../common/object/object';\nimport { convertToPNGFile } from '../../../common/canvas/canvas';\nimport { AddToNotebookButtonComponent } from '../../../directives/add-to-notebook-button/add-to-notebook-button.component';\nimport { ComponentSaveSubmitButtonsComponent } from '../../../directives/component-save-submit-buttons/component-save-submit-buttons.component';\nimport { ComponentAnnotationsComponent } from '../../../directives/componentAnnotations/component-annotations.component';\n\n@Component({\n imports: [\n AddToNotebookButtonComponent,\n ComponentSaveSubmitButtonsComponent,\n ComponentAnnotationsComponent\n ],\n selector: 'embedded-student',\n styleUrl: 'embedded-student.component.scss',\n templateUrl: 'embedded-student.component.html'\n})\nexport class EmbeddedStudent extends ComponentStudent {\n annotationsToSave: any[] = [];\n componentStateId: number;\n componentType: string;\n embeddedApplicationIFrameId: string;\n height: string = '600px';\n maxWidth: number;\n maxHeight: number;\n messageEventListener: any;\n messageTypeToFunctionHandler: any = {\n applicationInitialized: (messageEventData: any) => {\n this.handleApplicationInitializedMessage();\n },\n componentDirty: (messageEventData: any) => {\n this.handleComponentDirtyMessage(messageEventData);\n },\n componentSubmitDirty: (messageEventData: any) => {\n this.handleComponentSubmitDirtyMessage(messageEventData);\n },\n event: (messageEventData: any) => {\n this.handleEventMessage(messageEventData);\n },\n getLatestAnnotations: (messageEventData: any) => {\n this.handleGetLatestAnnotationsMessage();\n },\n getLatestStudentWork: (messageEventData: any) => {\n this.handleGetLatestStudentWorkMessage();\n },\n getParameters: (messageEventData: any) => {\n this.handleGetParametersMessage();\n },\n getProjectPath: (messageEventData: any) => {\n this.handleGetProjectPathMessage();\n },\n getStudentWork: (messageEventData: any) => {\n this.handleGetStudentWorkMessage(messageEventData);\n },\n studentDataChanged: (messageEventData: any) => {\n this.handleStudentDataChangedMessage(messageEventData);\n },\n studentWork: (messageEventData: any) => {\n this.handleStudentWorkMessage(messageEventData);\n }\n };\n notebookConfig: any;\n studentData: any;\n url: SafeUrl;\n width: string = '100%';\n\n constructor(\n protected annotationService: AnnotationService,\n private changeDetectorRef: ChangeDetectorRef,\n protected componentService: ComponentService,\n protected configService: ConfigService,\n protected dialog: MatDialog,\n private embeddedService: EmbeddedService,\n protected nodeService: NodeService,\n protected notebookService: NotebookService,\n private sanitizer: DomSanitizer,\n protected studentAssetService: StudentAssetService,\n protected studentDataService: StudentDataService\n ) {\n super(\n annotationService,\n componentService,\n configService,\n dialog,\n nodeService,\n notebookService,\n studentAssetService,\n studentDataService\n );\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n this.setWidthAndHeight(this.componentContent.width, this.componentContent.height);\n this.notebookConfig = this.notebookService.getNotebookConfig();\n this.embeddedApplicationIFrameId = this.embeddedService.getEmbeddedApplicationIframeId(\n this.componentId\n );\n this.componentType = this.componentContent.type;\n this.setURL(this.componentContent.url);\n this.initializeMessageEventListener();\n this.broadcastDoneRenderingComponent();\n if (this.componentState != null) {\n this.setSubmitCounter(this.componentState);\n }\n if (this.hasMaxSubmitCountAndUsedAllSubmits()) {\n this.disableSubmitButton();\n }\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n window.removeEventListener('message', this.messageEventListener);\n }\n\n setWidthAndHeight(width: number, height: number): void {\n if (width != null) {\n this.width = `${width}px`;\n }\n if (height != null) {\n this.height = `${height}px`;\n }\n }\n\n initializeMessageEventListener(): void {\n this.messageEventListener = (messageEvent: any) => {\n const messageEventData = messageEvent.data;\n const messageType = messageEventData.messageType;\n if (this.messageTypeToFunctionHandler[messageType] != null) {\n this.messageTypeToFunctionHandler[messageType](messageEventData);\n }\n };\n }\n\n handleEventMessage(messageEventData: any): void {\n const nodeId = this.nodeId;\n const componentId = this.componentId;\n const componentType = this.componentType;\n const category = messageEventData.eventCategory;\n const event = messageEventData.event;\n const eventData = messageEventData.eventData;\n this.studentDataService.saveVLEEvent(\n nodeId,\n componentId,\n componentType,\n category,\n event,\n eventData\n );\n }\n\n handleStudentWorkMessage(messageEventData: any): void {\n if (messageEventData.id != null) {\n //the model wants to update/overwrite an existing component state\n this.componentStateId = messageEventData.id;\n } else {\n // the model wants to create a new component state\n this.componentStateId = null;\n }\n\n if (messageEventData.isSubmit) {\n this.isSubmit = messageEventData.isSubmit;\n }\n\n this.isDirty = true;\n this.setStudentData(messageEventData.studentData);\n if (messageEventData.annotations != null) {\n this.setAnnotations(messageEventData.annotations);\n }\n\n // tell the parent node that this component wants to save\n this.studentDataService.broadcastComponentSaveTriggered({\n nodeId: this.nodeId,\n componentId: this.componentId\n });\n }\n\n handleApplicationInitializedMessage(): void {\n this.sendLatestWorkToApplication();\n this.processLatestStudentWork();\n }\n\n handleComponentDirtyMessage(messageEventData: any): void {\n this.isDirty = messageEventData.isDirty;\n this.emitComponentDirty(this.isDirty);\n }\n\n handleComponentSubmitDirtyMessage(messageEventData: any): void {\n this.isSubmitDirty = messageEventData.isDirty;\n this.emitComponentSubmitDirty(this.isSubmitDirty);\n }\n\n handleStudentDataChangedMessage(messageEventData: any): void {\n this.setStudentData(messageEventData.studentData);\n if (messageEventData.annotations != null) {\n this.setAnnotations(messageEventData.annotations);\n }\n this.studentDataChanged();\n }\n\n handleGetStudentWorkMessage(messageEventData: any): void {\n const getStudentWorkParams = messageEventData.getStudentWorkParams;\n const studentWork = this.getStudentWork(messageEventData.getStudentWorkParams);\n const message: any = studentWork;\n message.messageType = 'studentWork';\n message.getStudentWorkParams = getStudentWorkParams;\n this.sendMessageToApplication(message);\n }\n\n handleGetLatestStudentWorkMessage(): void {\n this.sendMessageToApplication(\n this.embeddedService.createLatestStudentWorkMessage(this.getLatestStudentWork())\n );\n }\n\n handleGetParametersMessage(): void {\n this.embeddedService.handleGetParametersMessage(\n this.embeddedApplicationIFrameId,\n this.nodeId,\n this.componentId,\n this.componentContent\n );\n }\n\n handleGetProjectPathMessage(): void {\n this.sendMessageToApplication(this.embeddedService.createProjectPathMessage());\n }\n\n handleGetLatestAnnotationsMessage(): void {\n const workgroupId = this.configService.getWorkgroupId();\n const type = 'any';\n const latestScoreAnnotation = this.annotationService.getLatestScoreAnnotation(\n this.nodeId,\n this.componentId,\n workgroupId,\n type\n );\n const latestCommentAnnotation = this.annotationService.getLatestCommentAnnotation(\n this.nodeId,\n this.componentId,\n workgroupId,\n type\n );\n const message = {\n messageType: 'latestAnnotations',\n latestScoreAnnotation: latestScoreAnnotation,\n latestCommentAnnotation: latestCommentAnnotation\n };\n this.sendMessageToApplication(message);\n }\n\n handleStudentWorkSavedToServerAdditionalProcessing(componentState: any): void {\n const message = {\n messageType: 'componentStateSaved',\n componentState: componentState\n };\n this.sendMessageToApplication(message);\n }\n\n iframeLoaded(): void {\n if (this.embeddedApplicationIFrameId != null) {\n (\n window.document.getElementById(this.embeddedApplicationIFrameId) as HTMLIFrameElement\n ).contentWindow.addEventListener('message', this.messageEventListener);\n }\n }\n\n setURL(url: string): void {\n this.url = this.sanitizer.bypassSecurityTrustResourceUrl(url);\n }\n\n createComponentState(action: string): Promise {\n const componentState = this.createComponentStateObject();\n if (action === 'save') {\n this.clearAnnotationsToSave();\n }\n return new Promise((resolve, reject) => {\n this.createComponentStateAdditionalProcessing(\n { resolve: resolve, reject: reject },\n componentState,\n action\n );\n });\n }\n\n createComponentStateObject(): any {\n const componentState: any = this.createNewComponentState();\n componentState.studentData = this.studentData;\n componentState.componentType = 'Embedded';\n componentState.nodeId = this.nodeId;\n componentState.componentId = this.componentId;\n if (this.componentStateId != null) {\n componentState.id = this.componentStateId;\n }\n if (this.isSubmit) {\n componentState.isSubmit = this.isSubmit;\n this.isSubmit = false;\n if (this.hasDefaultFeedback()) {\n this.addDefaultFeedback(componentState);\n }\n }\n if (this.annotationsToSave.length !== 0) {\n componentState.annotations = this.annotationsToSave;\n }\n return componentState;\n }\n\n clearAnnotationsToSave(): void {\n this.annotationsToSave = [];\n }\n\n sendLatestWorkToApplication(): void {\n let componentState = this.componentState;\n if (this.component.hasConnectedComponent()) {\n componentState = this.handleConnectedComponents();\n }\n const message = {\n messageType: 'componentState',\n componentState: componentState\n };\n this.sendMessageToApplication(message);\n }\n\n sendMessageToApplication(message: any): void {\n this.embeddedService.sendMessageToApplication(this.embeddedApplicationIFrameId, message);\n }\n\n /**\n * Snip the model by converting it to an image\n * @param $event the click event\n */\n snipModel($event): void {\n const iframe = $('#' + this.embeddedApplicationIFrameId);\n if (iframe != null && iframe.length > 0) {\n let modelElement: any = iframe.contents().find('html');\n if (modelElement != null && modelElement.length > 0) {\n modelElement = modelElement[0];\n html2canvas(modelElement).then((canvas) => {\n const pngFile = convertToPNGFile(canvas);\n this.notebookService.addNote(this.studentDataService.getCurrentNodeId(), pngFile);\n });\n }\n }\n }\n\n getLatestStudentWork(): any {\n return this.studentDataService.getLatestComponentStateByNodeIdAndComponentId(\n this.nodeId,\n this.componentId\n );\n }\n\n /**\n * Get the student work from the specified components/nodes\n * @param params The params for getting the student work. The possible values to request are\n * getLatestStudentWorkFromThisComponent\n * getAllStudentWorkFromThisComponent\n * getLatestStudentWorkFromThisNode\n * getAllStudentWorkFromThisNode\n * getLatestStudentWorkFromOtherComponents\n * getAllStudentWorkFromOtherComponents\n * If getLatestStudentWorkFromOtherComponents or getAllStudentWorkFromOtherComponents are\n * requested, the otherComponents param must be provided. otherComponents should be an array of\n * objects. The objects should contain a nodeId and componentId.\n * @return object containing other objects that contain work from the specified components/nodes\n */\n getStudentWork(params: any): any {\n const studentWork: any = {};\n this.tryGetLatestStudentWorkFromThisComponent(params, studentWork);\n this.tryGetAllStudentWorkFromThisComponent(params, studentWork);\n this.tryGetLatestStudentWorkFromThisNode(params, studentWork);\n this.tryGetAllStudentWorkFromThisNode(params, studentWork);\n this.tryGetLatestStudentWorkFromOtherComponents(params, studentWork);\n this.tryGetAllStudentWorkFromOtherComponents(params, studentWork);\n return studentWork;\n }\n\n tryGetLatestStudentWorkFromThisComponent(params: any, studentWork: any): void {\n if (params.getLatestStudentWorkFromThisComponent) {\n studentWork.latestStudentWorkFromThisComponent =\n this.studentDataService.getLatestComponentStateByNodeIdAndComponentId(\n this.nodeId,\n this.componentId\n );\n }\n }\n\n tryGetAllStudentWorkFromThisComponent(params: any, studentWork: any): void {\n if (params.getAllStudentWorkFromThisComponent) {\n studentWork.allStudentWorkFromThisComponent =\n this.studentDataService.getComponentStatesByNodeIdAndComponentId(\n this.nodeId,\n this.componentId\n );\n }\n }\n\n tryGetLatestStudentWorkFromThisNode(params: any, studentWork: any): void {\n if (params.getLatestStudentWorkFromThisNode) {\n studentWork.latestStudentWorkFromThisNode =\n this.studentDataService.getLatestComponentStatesByNodeId(this.nodeId);\n }\n }\n\n tryGetAllStudentWorkFromThisNode(params: any, studentWork: any): void {\n if (params.getAllStudentWorkFromThisNode) {\n studentWork.allStudentWorkFromThisNode = this.studentDataService.getComponentStatesByNodeId(\n this.nodeId\n );\n }\n }\n\n tryGetLatestStudentWorkFromOtherComponents(params: any, studentWork: any): void {\n if (params.getLatestStudentWorkFromOtherComponents) {\n studentWork.latestStudentWorkFromOtherComponents =\n this.getLatestStudentWorkFromOtherComponents(params.otherComponents);\n }\n }\n\n tryGetAllStudentWorkFromOtherComponents(params: any, studentWork: any): void {\n if (params.getAllStudentWorkFromOtherComponents) {\n studentWork.allStudentWorkFromOtherComponents = this.getAllStudentWorkFromOtherComponents(\n params.otherComponents\n );\n }\n }\n\n getLatestStudentWorkFromOtherComponents(otherComponents: any[]): any {\n const latestStudentWorkFromOtherComponents = [];\n for (const otherComponent of otherComponents) {\n const tempComponentState =\n this.studentDataService.getLatestComponentStateByNodeIdAndComponentId(\n otherComponent.nodeId,\n otherComponent.componentId\n );\n if (tempComponentState != null) {\n latestStudentWorkFromOtherComponents.push(tempComponentState);\n }\n }\n return latestStudentWorkFromOtherComponents;\n }\n\n getAllStudentWorkFromOtherComponents(otherComponents: any[]): any {\n const allStudentWorkFromOtherComponents = [];\n for (const otherComponent of otherComponents) {\n const tempComponentStates = this.studentDataService.getComponentStatesByNodeIdAndComponentId(\n otherComponent.nodeId,\n otherComponent.componentId\n );\n if (tempComponentStates != null && tempComponentStates.length > 0) {\n allStudentWorkFromOtherComponents.push(...tempComponentStates);\n }\n }\n return allStudentWorkFromOtherComponents;\n }\n\n /**\n * Import any work we need from connected components\n */\n handleConnectedComponents(): any {\n let mergedComponentState = this.componentState;\n if (this.componentContent.connectedComponents != null) {\n mergedComponentState = this.getConnectedComponentMergedComponentState();\n if (mergedComponentState != null) {\n this.setStudentWork(mergedComponentState);\n this.studentDataChanged();\n }\n }\n return mergedComponentState;\n }\n\n getConnectedComponentMergedComponentState(): any {\n let mergedComponentState = this.componentState;\n const firstTime = mergedComponentState == null;\n if (mergedComponentState == null) {\n mergedComponentState = this.createNewComponentState();\n mergedComponentState.studentData = {};\n }\n for (const connectedComponent of this.componentContent.connectedComponents) {\n mergedComponentState = this.handleImportWorkConnectedComponent(\n connectedComponent,\n mergedComponentState,\n firstTime\n );\n }\n return mergedComponentState;\n }\n\n handleShowWorkConnectedComponent(connectedComponent: any, componentStates: any[]): void {\n const nodeId = connectedComponent.nodeId;\n const componentId = connectedComponent.componentId;\n const componentState = this.studentDataService.getLatestComponentStateByNodeIdAndComponentId(\n nodeId,\n componentId\n );\n if (componentState != null) {\n componentStates.push(copy(componentState));\n }\n this.isDisabled = true;\n }\n\n handleImportWorkConnectedComponent(\n connectedComponent: any,\n mergedComponentState: any,\n firstTime: boolean\n ): any {\n const nodeId = connectedComponent.nodeId;\n const componentId = connectedComponent.componentId;\n const connectedComponentState =\n this.studentDataService.getLatestComponentStateByNodeIdAndComponentId(nodeId, componentId);\n if (connectedComponentState != null) {\n const fields = connectedComponent.fields;\n const when = connectedComponent.when;\n if (when == null || (when === 'firstTime' && firstTime)) {\n mergedComponentState = this.mergeComponentState(\n mergedComponentState,\n connectedComponentState,\n fields,\n firstTime\n );\n }\n }\n return mergedComponentState;\n }\n\n /**\n * Merge a new component state into a base component state.\n * @param toComponentState The component state we will be merging into.\n * @param fromComponentState The component state we will be merging from.\n * @param mergeFields The fields to merge.\n * @param firstTime Whether this is the first time the baseComponentState is being merged into.\n */\n mergeComponentState(\n toComponentState: any,\n fromComponentState: any,\n mergeFields: any[],\n firstTime: boolean\n ): any {\n if (mergeFields == null) {\n // there are no merge fields specified so we will get all of the fields\n if (fromComponentState.componentType === 'Embedded') {\n toComponentState.studentData = copy(fromComponentState.studentData);\n }\n } else {\n for (const mergeField of mergeFields) {\n this.mergeField(toComponentState, fromComponentState, mergeField, firstTime);\n }\n }\n return toComponentState;\n }\n\n mergeField(\n toComponentState: any,\n fromComponentState: any,\n mergeField: any,\n firstTime: boolean\n ): void {\n const name = mergeField.name;\n if (this.isPerformOverwrite(mergeField, firstTime)) {\n toComponentState.studentData[name] = fromComponentState.studentData[name];\n }\n }\n\n isPerformOverwrite(mergeField: any, firstTime: boolean): boolean {\n const when = mergeField.when;\n const action = mergeField.action;\n return (\n action === 'write' && (when === 'always' || (mergeField.when === 'firstTime' && firstTime))\n );\n }\n\n setStudentWork(componentState: any): void {\n this.studentData = componentState.studentData;\n }\n\n setStudentData(studentData: any): void {\n this.studentData = studentData;\n }\n\n setAnnotations(annotations: any[]): void {\n for (const annotation of annotations) {\n if (this.isAnnotationValid(annotation)) {\n if (annotation.type === 'autoScore') {\n const scoreAnnotation = this.createAutoScoreAnnotation(annotation.data);\n this.updateLatestScoreAnnotation(scoreAnnotation);\n this.addToAnnotationsToSave(scoreAnnotation);\n } else if (annotation.type === 'autoComment') {\n const commentAnnotation = this.createAutoCommentAnnotation(annotation.data);\n this.updateLatestCommentAnnotation(commentAnnotation);\n this.addToAnnotationsToSave(commentAnnotation);\n }\n }\n }\n }\n\n isAnnotationValid(annotation: any): boolean {\n return annotation.type != null && annotation.data != null && annotation.data.value != null;\n }\n\n addToAnnotationsToSave(annotation: any): void {\n this.annotationsToSave.push(annotation);\n }\n\n processConnectedComponentState(componentState: any): void {\n const message = {\n messageType: 'handleConnectedComponentStudentDataChanged',\n componentState: componentState\n };\n this.sendMessageToApplication(message);\n }\n\n connectedComponentStudentDataSaved() {\n if (this.isHandleConnectedComponentAfterConnectedComponentStudentDataSaved()) {\n const message = {\n messageType: 'componentState',\n componentState: this.componentState\n };\n this.sendMessageToApplication(message);\n }\n }\n\n updateLatestScoreAnnotation(annotation: any): void {\n this.latestAnnotations = {\n comment: this.latestAnnotations.comment,\n score: annotation\n };\n this.changeDetectorRef.detectChanges();\n }\n\n updateLatestCommentAnnotation(annotation: any): void {\n this.latestAnnotations = {\n comment: annotation,\n score: this.latestAnnotations.score\n };\n this.changeDetectorRef.detectChanges();\n }\n}\n", + "styleUrl": "embedded-student.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "changeDetectorRef", + "type": "ChangeDetectorRef", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentService", + "type": "ComponentService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "embeddedService", + "type": "EmbeddedService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "notebookService", + "type": "NotebookService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "sanitizer", + "type": "DomSanitizer", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentAssetService", + "type": "StudentAssetService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentDataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 77, + "jsdoctags": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "changeDetectorRef", + "type": "ChangeDetectorRef", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentService", + "type": "ComponentService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "embeddedService", + "type": "EmbeddedService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "notebookService", + "type": "NotebookService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "sanitizer", + "type": "DomSanitizer", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentAssetService", + "type": "StudentAssetService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentDataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "ComponentStudent" + ], + "templateData": "
    \n @if (isShowAddToNotebookButton) {\n \n }\n
    \n
    \n \n \n
    \n
    \n@if (isSaveOrSubmitButtonVisible) {\n \n}\n@if (mode === 'student') {\n \n}\n" + }, + { + "name": "ExportEventsComponent", + "id": "component-ExportEventsComponent-66a0a56838c63db8295192dff98055493c512cf583e9157c547310efc280aa3170ba543804200cb0d419f7f9aa737e709fea207d657f4c61d4f168c24be91dcf", + "file": "src/assets/wise5/classroomMonitor/dataExport/export-events/export-events.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./export-events.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "includeNames", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "modifierKind": [ + 125 + ] + }, + { + "name": "includeStudentEvents", + "defaultValue": "true", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "modifierKind": [ + 125 + ] + }, + { + "name": "includeTeacherEvents", + "defaultValue": "true", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "modifierKind": [ + 125 + ] + }, + { + "name": "annotationService", + "deprecated": false, + "deprecationMessage": "", + "type": "AnnotationService", + "indexKey": "", + "optional": false, + "description": "", + "line": 24, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "AbstractExportComponent" + } + }, + { + "name": "canViewStudentNames", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractExportComponent" + } + }, + { + "name": "configService", + "deprecated": false, + "deprecationMessage": "", + "type": "ConfigService", + "indexKey": "", + "optional": false, + "description": "", + "line": 25, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "AbstractExportComponent" + } + }, + { + "name": "dataExportService", + "deprecated": false, + "deprecationMessage": "", + "type": "DataExportService", + "indexKey": "", + "optional": false, + "description": "", + "line": 26, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "AbstractExportComponent" + } + }, + { + "name": "dataService", + "deprecated": false, + "deprecationMessage": "", + "type": "TeacherDataService", + "indexKey": "", + "optional": false, + "description": "", + "line": 27, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "AbstractExportComponent" + } + }, + { + "name": "exportStepSelectionType", + "defaultValue": "'exportAllSteps'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractExportComponent" + } + }, + { + "name": "flattenedProjectAsNodeIds", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractExportComponent" + } + }, + { + "name": "includeStudentNames", + "defaultValue": "true", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractExportComponent" + } + }, + { + "name": "includeStudentWork", + "defaultValue": "true", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractExportComponent" + } + }, + { + "name": "nodes", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractExportComponent" + } + }, + { + "name": "project", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractExportComponent" + } + }, + { + "name": "projectIdToOrder", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 20, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractExportComponent" + } + }, + { + "name": "projectItems", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 21, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractExportComponent" + } + }, + { + "name": "projectService", + "deprecated": false, + "deprecationMessage": "", + "type": "TeacherProjectService", + "indexKey": "", + "optional": false, + "description": "", + "line": 29, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "AbstractExportComponent" + } + } + ], + "methodsClass": [ + { + "name": "export", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 20, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "extractUserIDsAndStudentNames", + "args": [ + { + "name": "users", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Record", + "typeParameters": [], + "line": 96, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nor studentNameX where X is an integer. The values are the corresponding actual\nvalues of user id and student name.\n", + "description": "

    or studentNameX where X is an integer. The values are the corresponding actual\nvalues of user id and student name.

    \n", + "jsdoctags": [ + { + "name": { + "pos": 3200, + "end": 3205, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "users" + }, + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3194, + "end": 3199, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    An array of user objects. Each user object contains an id and name.

    \n" + }, + { + "tagName": { + "pos": 3280, + "end": 3287, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

    An object that contains key/value pairs. The key is userIdX\nor studentNameX where X is an integer. The values are the corresponding actual\nvalues of user id and student name.

    \n", + "returnType": "object" + } + ], + "inheritance": { + "file": "AbstractExportComponent" + } + }, + { + "name": "getSelectedNodesToExport", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 62, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractExportComponent" + } + }, + { + "name": "goBack", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 108, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractExportComponent" + } + }, + { + "name": "hideDownloadingExportMessage", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 58, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractExportComponent" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 34, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractExportComponent" + } + }, + { + "name": "showDownloadingExportMessage", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 49, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractExportComponent" + } + }, + { + "name": "sortNodesByOrder", + "args": [ + { + "name": "nodeA", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeB", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 45, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeA", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeB", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractExportComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatButton" + }, + { + "name": "MatTooltip" + }, + { + "name": "MatIcon" + }, + { + "name": "MatCheckbox" + }, + { + "name": "FormsModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { AbstractExportComponent } from '../abstract-export.component';\nimport { EventDataExportStrategy } from '../strategies/EventDataExportStrategy';\nimport { MatButton } from '@angular/material/button';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatCheckbox } from '@angular/material/checkbox';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n imports: [MatButton, MatTooltip, MatIcon, MatCheckbox, FormsModule],\n styleUrl: './export-events.component.scss',\n templateUrl: './export-events.component.html'\n})\nexport class ExportEventsComponent extends AbstractExportComponent {\n public includeNames: boolean = false;\n public includeStudentEvents: boolean = true;\n public includeTeacherEvents: boolean = true;\n\n protected export(): void {\n this.showDownloadingExportMessage();\n const strategy = new EventDataExportStrategy();\n strategy.setDataExportContext({ controller: this } as any);\n strategy.export();\n this.hideDownloadingExportMessage();\n }\n}\n", + "styleUrl": "./export-events.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [ + "AbstractExportComponent" + ], + "templateData": "
    \n \n arrow_back\n \n
    \n \n Include Student Events\n \n \n Include Teacher Events\n \n Include Names\n
    \n
    \n \n Export\n \n
    \n
    \n" + }, + { + "name": "ExportItemComponent", + "id": "component-ExportItemComponent-0225393ebae355612b052ce3364c2b3823ccf56af88b34c5db4d176f80f9aef343d1a74229d32373f5a85d8003e60bdb60fadc52ecf30ebe6bfb0f8d6b325ec4", + "file": "src/assets/wise5/classroomMonitor/dataExport/export-item/export-item.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "export-item", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./export-item.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "allowedComponentTypesAllRevisions", + "defaultValue": "[\n 'DialogGuidance',\n 'Discussion',\n 'Label',\n 'Match',\n 'OpenResponse',\n 'PeerChat'\n ]", + "deprecated": false, + "deprecationMessage": "", + "type": "[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 41, + "modifierKind": [ + 123 + ] + }, + { + "name": "allowedComponentTypesLatestRevisions", + "defaultValue": "[\n 'DialogGuidance',\n 'Label',\n 'Match',\n 'OpenResponse'\n ]", + "deprecated": false, + "deprecationMessage": "", + "type": "[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 49, + "modifierKind": [ + 123 + ] + }, + { + "name": "annotationService", + "deprecated": false, + "deprecationMessage": "", + "type": "AnnotationService", + "indexKey": "", + "optional": false, + "description": "", + "line": 68, + "modifierKind": [ + 125 + ] + }, + { + "name": "canViewStudentNames", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 55, + "modifierKind": [ + 124 + ] + }, + { + "name": "componentExportTooltips", + "defaultValue": "{\n Match: $localize`Correctness column key: 0 = Incorrect, 1 = Correct, 2 = Correct bucket but wrong position`\n }", + "deprecated": false, + "deprecationMessage": "", + "type": "object", + "indexKey": "", + "optional": false, + "description": "", + "line": 56, + "modifierKind": [ + 124 + ] + }, + { + "name": "configService", + "deprecated": false, + "deprecationMessage": "", + "type": "ConfigService", + "indexKey": "", + "optional": false, + "description": "", + "line": 69, + "modifierKind": [ + 125 + ] + }, + { + "name": "dataExportService", + "deprecated": false, + "deprecationMessage": "", + "type": "DataExportService", + "indexKey": "", + "optional": false, + "description": "", + "line": 70, + "modifierKind": [ + 125 + ] + }, + { + "name": "dataService", + "deprecated": false, + "deprecationMessage": "", + "type": "TeacherDataService", + "indexKey": "", + "optional": false, + "description": "", + "line": 71, + "modifierKind": [ + 125 + ] + }, + { + "name": "includeCorrectnessColumns", + "defaultValue": "true", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 59, + "modifierKind": [ + 124 + ] + }, + { + "name": "includeOnlySubmits", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 60, + "modifierKind": [ + 124 + ] + }, + { + "name": "includeStudentNames", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 61, + "modifierKind": [ + 124 + ] + }, + { + "name": "nodes", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 62, + "modifierKind": [ + 124 + ] + }, + { + "name": "project", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 63, + "modifierKind": [ + 124 + ] + }, + { + "name": "projectIdToOrder", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 64, + "modifierKind": [ + 123 + ] + }, + { + "name": "projectService", + "deprecated": false, + "deprecationMessage": "", + "type": "TeacherProjectService", + "indexKey": "", + "optional": false, + "description": "", + "line": 73, + "modifierKind": [ + 125 + ] + }, + { + "name": "workSelectionType", + "deprecated": false, + "deprecationMessage": "", + "type": "\"exportAllWork\" | \"exportLatestWork\"", + "indexKey": "", + "optional": false, + "description": "", + "line": 65, + "modifierKind": [ + 123 + ] + } + ], + "methodsClass": [ + { + "name": "canExport", + "args": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "exportType", + "type": "\"all\" | \"latest\"", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 96, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "exportType", + "type": "\"all\" | \"latest\"", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "export", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "workSelectionType", + "type": "\"exportAllWork\" | \"exportLatestWork\"", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 102, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "workSelectionType", + "type": "\"exportAllWork\" | \"exportLatestWork\"", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getComponentDataExportParams", + "args": [], + "optional": false, + "returnType": "ComponentDataExportParams", + "typeParameters": [], + "line": 133, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "getExportStrategy", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "AbstractComponentDataExportStrategy", + "typeParameters": [], + "line": 115, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getNodePositionById", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 88, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getNodeTitleByNodeId", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 92, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "goBack", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 142, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "hideDownloadingExportMessage", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 163, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 78, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "previewNode", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 150, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "previewProject", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 146, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "showDownloadingExportMessage", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 154, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatCheckboxModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatInputModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { TeacherProjectService } from '../../../services/teacherProjectService';\nimport { ConfigService } from '../../../services/configService';\nimport { ComponentDataExportParams } from '../ComponentDataExportParams';\nimport { MatchComponentDataExportStrategy } from '../strategies/MatchComponentDataExportStrategy';\nimport { DiscussionComponentDataExportStrategy } from '../strategies/DiscussionComponentDataExportStrategy';\nimport { DialogGuidanceComponentDataExportStrategy } from '../strategies/DialogGuidanceComponentDataExportStrategy';\nimport { OpenResponseComponentDataExportStrategy } from '../strategies/OpenResponseComponentExportStrategy';\nimport { LabelComponentDataExportStrategy } from '../strategies/LabelComponentDataExportStrategy';\nimport { PeerChatComponentDataExportStrategy } from '../strategies/PeerChatComponentDataExportStrategy';\nimport { DialogWithSpinnerComponent } from '../../../directives/dialog-with-spinner/dialog-with-spinner.component';\nimport { MatDialog } from '@angular/material/dialog';\nimport { DataExportService } from '../../../services/dataExportService';\nimport { TeacherDataService } from '../../../services/teacherDataService';\nimport { AnnotationService } from '../../../services/annotationService';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatInputModule } from '@angular/material/input';\nimport { FormsModule } from '@angular/forms';\nimport { AbstractComponentDataExportStrategy } from '../strategies/AbstractComponentDataExportStrategy';\n\n@Component({\n imports: [\n CommonModule,\n FormsModule,\n MatButtonModule,\n MatCheckboxModule,\n MatIconModule,\n MatInputModule,\n MatTooltipModule\n ],\n selector: 'export-item',\n styleUrl: './export-item.component.scss',\n templateUrl: './export-item.component.html'\n})\nexport class ExportItemComponent implements OnInit {\n private allowedComponentTypesAllRevisions = [\n 'DialogGuidance',\n 'Discussion',\n 'Label',\n 'Match',\n 'OpenResponse',\n 'PeerChat'\n ];\n private allowedComponentTypesLatestRevisions = [\n 'DialogGuidance',\n 'Label',\n 'Match',\n 'OpenResponse'\n ];\n protected canViewStudentNames: boolean = false;\n protected componentExportTooltips = {\n Match: $localize`Correctness column key: 0 = Incorrect, 1 = Correct, 2 = Correct bucket but wrong position`\n };\n protected includeCorrectnessColumns: boolean = true;\n protected includeOnlySubmits: boolean = false;\n protected includeStudentNames: boolean;\n protected nodes: any[] = [];\n protected project: any;\n private projectIdToOrder: any;\n private workSelectionType: 'exportAllWork' | 'exportLatestWork';\n\n constructor(\n public annotationService: AnnotationService,\n public configService: ConfigService,\n public dataExportService: DataExportService,\n public dataService: TeacherDataService,\n private dialog: MatDialog,\n public projectService: TeacherProjectService,\n private route: ActivatedRoute,\n private router: Router\n ) {}\n\n ngOnInit(): void {\n this.canViewStudentNames = this.configService.getPermissions().canViewStudentNames;\n this.includeStudentNames = this.canViewStudentNames;\n this.project = this.projectService.project;\n const nodeOrderOfProject = this.projectService.getNodeOrderOfProject(this.project);\n this.projectIdToOrder = nodeOrderOfProject.idToOrder;\n this.nodes = Object.values(this.projectIdToOrder);\n this.nodes.sort((nodeA, nodeB) => nodeA.order - nodeB.order);\n }\n\n protected getNodePositionById(nodeId: string): string {\n return this.projectService.getNodePositionById(nodeId);\n }\n\n protected getNodeTitleByNodeId(nodeId: string): string {\n return this.projectService.getNodeTitle(nodeId);\n }\n\n protected canExport(component: any, exportType: 'all' | 'latest'): boolean {\n return exportType === 'all'\n ? this.allowedComponentTypesAllRevisions.includes(component.type)\n : this.allowedComponentTypesLatestRevisions.includes(component.type);\n }\n\n protected export(\n nodeId: string,\n component: any,\n workSelectionType: 'exportAllWork' | 'exportLatestWork'\n ): void {\n this.workSelectionType = workSelectionType;\n const strategy = this.getExportStrategy(nodeId, component);\n this.showDownloadingExportMessage();\n strategy.setDataExportContext({ controller: this } as any);\n strategy.export();\n this.hideDownloadingExportMessage();\n }\n\n private getExportStrategy(nodeId: string, component: any): AbstractComponentDataExportStrategy {\n const strategies = {\n Match: MatchComponentDataExportStrategy,\n Discussion: DiscussionComponentDataExportStrategy,\n DialogGuidance: DialogGuidanceComponentDataExportStrategy,\n OpenResponse: OpenResponseComponentDataExportStrategy,\n Label: LabelComponentDataExportStrategy,\n PeerChat: PeerChatComponentDataExportStrategy\n };\n const strategy = new strategies[component.type](\n nodeId,\n component,\n this.getComponentDataExportParams()\n );\n strategy.setAllOrLatest(this.workSelectionType == 'exportAllWork' ? 'all' : 'latest');\n return strategy;\n }\n\n private getComponentDataExportParams(): ComponentDataExportParams {\n return {\n canViewStudentNames: this.canViewStudentNames,\n includeOnlySubmits: this.includeOnlySubmits,\n includeStudentNames: this.includeStudentNames,\n workSelectionType: this.workSelectionType\n };\n }\n\n protected goBack(): void {\n this.router.navigate(['..'], { relativeTo: this.route });\n }\n\n protected previewProject(): void {\n window.open(`${this.configService.getConfigParam('previewProjectURL')}`);\n }\n\n protected previewNode(node: any): void {\n window.open(`${this.configService.getConfigParam('previewProjectURL')}/${node.id}`);\n }\n\n private showDownloadingExportMessage(): void {\n this.dialog.open(DialogWithSpinnerComponent, {\n data: {\n title: $localize`Downloading export`\n },\n disableClose: false\n });\n }\n\n private hideDownloadingExportMessage(): void {\n this.dialog.closeAll();\n }\n}\n", + "styleUrl": "./export-item.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dataExportService", + "type": "DataExportService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 65, + "jsdoctags": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dataExportService", + "type": "DataExportService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "
    \n \n arrow_back\n \n

    Export Item Data

    \n
    \n @if (canViewStudentNames) {\n
    \n \n Include student names\n \n
    \n
    \n \n Include correctness columns\n \n
    \n }\n
    \n \n Include only submits\n \n
    \n
    \n
    \n

    {{ project.metadata.title }}

    \n \n preview\n \n
    \n @for (node of nodes; track node.node.id) {\n
    \n @if (node.order !== 0) {\n
    \n {{ getNodePositionById(node.node.id) }}. {{ getNodeTitleByNodeId(node.node.id) }}\n
    \n }\n @if (node.node.type !== 'group') {\n \n preview\n \n }\n
    \n @for (\n componentItem of node.node.components;\n track componentItem.id;\n let componentIndex = $index\n ) {\n @if (node.order !== 0 && node.node.type !== 'group' && node.node.components.length > 0) {\n
    \n
    \n {{ componentIndex + 1 }}. {{ componentItem.type }} \n @if (canExport(componentItem, 'all')) {\n \n file_download\n All\n \n }\n @if (canExport(componentItem, 'latest')) {\n \n file_download\n Latest\n \n }\n @if (componentExportTooltips[componentItem.type] != null) {\n \n help\n \n }\n
    \n
    \n }\n }\n }\n \n
    \n" + }, + { + "name": "ExportOneWorkgroupPerRowComponent", + "id": "component-ExportOneWorkgroupPerRowComponent-62193a74cb2ee8ebed69b6f1d35a1ff668f8682b62ed3f40514698447736f074375724b46886676467ab74fa8700b2591079b32fe4722de97bb9fd19f68d216e", + "file": "src/assets/wise5/classroomMonitor/dataExport/export-one-workgroup-per-row/export-one-workgroup-per-row.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./export-one-workgroup-per-row.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "annotationService", + "deprecated": false, + "deprecationMessage": "", + "type": "AnnotationService", + "indexKey": "", + "optional": false, + "description": "", + "line": 45, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "AbstractExportComponent" + } + }, + { + "name": "componentServiceLookupService", + "deprecated": false, + "deprecationMessage": "", + "type": "ComponentServiceLookupService", + "indexKey": "", + "optional": false, + "description": "", + "line": 46, + "modifierKind": [ + 125 + ] + }, + { + "name": "configService", + "deprecated": false, + "deprecationMessage": "", + "type": "ConfigService", + "indexKey": "", + "optional": false, + "description": "", + "line": 47, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "AbstractExportComponent" + } + }, + { + "name": "dataExportService", + "deprecated": false, + "deprecationMessage": "", + "type": "DataExportService", + "indexKey": "", + "optional": false, + "description": "", + "line": 48, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "AbstractExportComponent" + } + }, + { + "name": "dataService", + "deprecated": false, + "deprecationMessage": "", + "type": "TeacherDataService", + "indexKey": "", + "optional": false, + "description": "", + "line": 49, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "AbstractExportComponent" + } + }, + { + "name": "includeBranchPathTaken", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 32, + "modifierKind": [ + 124 + ] + }, + { + "name": "includeBranchPathTakenNodeId", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 33, + "modifierKind": [ + 124 + ] + }, + { + "name": "includeBranchPathTakenStepTitle", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 34, + "modifierKind": [ + 124 + ] + }, + { + "name": "includeComments", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 35, + "modifierKind": [ + 124 + ] + }, + { + "name": "includeCommentTimestamps", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 36, + "modifierKind": [ + 124 + ] + }, + { + "name": "includeScores", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 37, + "modifierKind": [ + 124 + ] + }, + { + "name": "includeScoreTimestamps", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 38, + "modifierKind": [ + 124 + ] + }, + { + "name": "includeStudentNames", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 39, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractExportComponent" + } + }, + { + "name": "includeStudentWork", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 40, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractExportComponent" + } + }, + { + "name": "includeStudentWorkIds", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 41, + "modifierKind": [ + 124 + ] + }, + { + "name": "includeStudentWorkTimestamps", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 42, + "modifierKind": [ + 124 + ] + }, + { + "name": "projectService", + "deprecated": false, + "deprecationMessage": "", + "type": "TeacherProjectService", + "indexKey": "", + "optional": false, + "description": "", + "line": 51, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "AbstractExportComponent" + } + }, + { + "name": "canViewStudentNames", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractExportComponent" + } + }, + { + "name": "exportStepSelectionType", + "defaultValue": "'exportAllSteps'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractExportComponent" + } + }, + { + "name": "flattenedProjectAsNodeIds", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractExportComponent" + } + }, + { + "name": "nodes", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractExportComponent" + } + }, + { + "name": "project", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractExportComponent" + } + }, + { + "name": "projectIdToOrder", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 20, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractExportComponent" + } + }, + { + "name": "projectItems", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 21, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractExportComponent" + } + } + ], + "methodsClass": [ + { + "name": "export", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 67, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "extractUserIDsAndStudentNames", + "args": [ + { + "name": "users", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Record", + "typeParameters": [], + "line": 96, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nor studentNameX where X is an integer. The values are the corresponding actual\nvalues of user id and student name.\n", + "description": "

    or studentNameX where X is an integer. The values are the corresponding actual\nvalues of user id and student name.

    \n", + "jsdoctags": [ + { + "name": { + "pos": 3200, + "end": 3205, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "users" + }, + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3194, + "end": 3199, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    An array of user objects. Each user object contains an id and name.

    \n" + }, + { + "tagName": { + "pos": 3280, + "end": 3287, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

    An object that contains key/value pairs. The key is userIdX\nor studentNameX where X is an integer. The values are the corresponding actual\nvalues of user id and student name.

    \n", + "returnType": "object" + } + ], + "inheritance": { + "file": "AbstractExportComponent" + } + }, + { + "name": "getSelectedNodesToExport", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 62, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractExportComponent" + } + }, + { + "name": "goBack", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 108, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractExportComponent" + } + }, + { + "name": "hideDownloadingExportMessage", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 58, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractExportComponent" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 34, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractExportComponent" + } + }, + { + "name": "showDownloadingExportMessage", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 49, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractExportComponent" + } + }, + { + "name": "sortNodesByOrder", + "args": [ + { + "name": "nodeA", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeB", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 45, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeA", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeB", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractExportComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatButton" + }, + { + "name": "MatTooltip" + }, + { + "name": "MatIcon" + }, + { + "name": "MatCheckbox" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "SelectStepAndComponentCheckboxesComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { AbstractExportComponent } from '../abstract-export.component';\nimport { OneWorkgroupPerRowDataExportStrategy } from '../strategies/OneWorkgroupPerRowDataExportStrategy';\nimport { MatDialog } from '@angular/material/dialog';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { AnnotationService } from '../../../services/annotationService';\nimport { ComponentServiceLookupService } from '../../../services/componentServiceLookupService';\nimport { ConfigService } from '../../../services/configService';\nimport { DataExportService } from '../../../services/dataExportService';\nimport { TeacherDataService } from '../../../services/teacherDataService';\nimport { TeacherProjectService } from '../../../services/teacherProjectService';\nimport { MatButton } from '@angular/material/button';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatCheckbox } from '@angular/material/checkbox';\nimport { FormsModule } from '@angular/forms';\nimport { SelectStepAndComponentCheckboxesComponent } from '../select-step-and-component-checkboxes/select-step-and-component-checkboxes.component';\n\n@Component({\n imports: [\n MatButton,\n MatTooltip,\n MatIcon,\n MatCheckbox,\n FormsModule,\n SelectStepAndComponentCheckboxesComponent\n ],\n styleUrl: './export-one-workgroup-per-row.component.scss',\n templateUrl: './export-one-workgroup-per-row.component.html'\n})\nexport class ExportOneWorkgroupPerRowComponent extends AbstractExportComponent {\n protected includeBranchPathTaken: boolean;\n protected includeBranchPathTakenNodeId: boolean;\n protected includeBranchPathTakenStepTitle: boolean;\n protected includeComments: boolean;\n protected includeCommentTimestamps: boolean;\n protected includeScores: boolean;\n protected includeScoreTimestamps: boolean;\n protected includeStudentNames: boolean;\n protected includeStudentWork: boolean;\n protected includeStudentWorkIds: boolean;\n protected includeStudentWorkTimestamps: boolean;\n\n constructor(\n public annotationService: AnnotationService,\n public componentServiceLookupService: ComponentServiceLookupService,\n public configService: ConfigService,\n public dataExportService: DataExportService,\n public dataService: TeacherDataService,\n protected dialog: MatDialog,\n public projectService: TeacherProjectService,\n protected route: ActivatedRoute,\n protected router: Router\n ) {\n super(\n annotationService,\n configService,\n dataExportService,\n dataService,\n dialog,\n projectService,\n route,\n router\n );\n }\n\n protected export(): void {\n this.showDownloadingExportMessage();\n const strategy = new OneWorkgroupPerRowDataExportStrategy();\n strategy.setDataExportContext({ controller: this } as any);\n strategy.export();\n this.hideDownloadingExportMessage();\n }\n}\n", + "styleUrl": "./export-one-workgroup-per-row.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentServiceLookupService", + "type": "ComponentServiceLookupService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dataExportService", + "type": "DataExportService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 42, + "jsdoctags": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentServiceLookupService", + "type": "ComponentServiceLookupService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dataExportService", + "type": "DataExportService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "AbstractExportComponent" + ], + "templateData": "
    \n \n arrow_back\n \n
    Export Gradebook
    \n
    \n \n Include Student Work\n \n
    \n
    \n \n Include Student Work IDs\n \n
    \n @if (canViewStudentNames) {\n
    \n \n Include Student Names\n \n
    \n }\n
    \n \n Include Student Work Timestamps\n \n
    \n
    \n \n Include Branch Path Taken\n \n
    \n
    \n \n Include Branch Path Taken Node ID\n \n
    \n
    \n \n Include Branch Path Taken Step Title\n \n
    \n
    \n Include Scores\n
    \n
    \n \n Include Score Timestamps\n \n
    \n
    \n \n Include Comments\n \n
    \n
    \n \n Include Comment Timestamps\n \n
    \n \n
    \n \n
    \n
    \n" + }, + { + "name": "ExportRawDataComponent", + "id": "component-ExportRawDataComponent-0b1b7d9376d831a5ef5724f4dcf0fbf6ba763ddaaeb9300dd1a267c04089b9ee4f17eadc082c53a1186e85b61c142132fad89d7ce5eb012131cd961b7e8cf356", + "file": "src/assets/wise5/classroomMonitor/dataExport/export-raw-data/export-raw-data.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [ + ".parameters-div { margin-bottom: 20px; } .mat-icon { margin: 0px; }" + ], + "templateUrl": [ + "./export-raw-data.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "includeAnnotations", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 24, + "modifierKind": [ + 124 + ] + }, + { + "name": "includeEvents", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 25, + "modifierKind": [ + 124 + ] + }, + { + "name": "annotationService", + "deprecated": false, + "deprecationMessage": "", + "type": "AnnotationService", + "indexKey": "", + "optional": false, + "description": "", + "line": 24, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "AbstractExportComponent" + } + }, + { + "name": "canViewStudentNames", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractExportComponent" + } + }, + { + "name": "configService", + "deprecated": false, + "deprecationMessage": "", + "type": "ConfigService", + "indexKey": "", + "optional": false, + "description": "", + "line": 25, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "AbstractExportComponent" + } + }, + { + "name": "dataExportService", + "deprecated": false, + "deprecationMessage": "", + "type": "DataExportService", + "indexKey": "", + "optional": false, + "description": "", + "line": 26, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "AbstractExportComponent" + } + }, + { + "name": "dataService", + "deprecated": false, + "deprecationMessage": "", + "type": "TeacherDataService", + "indexKey": "", + "optional": false, + "description": "", + "line": 27, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "AbstractExportComponent" + } + }, + { + "name": "exportStepSelectionType", + "defaultValue": "'exportAllSteps'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractExportComponent" + } + }, + { + "name": "flattenedProjectAsNodeIds", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractExportComponent" + } + }, + { + "name": "includeStudentNames", + "defaultValue": "true", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractExportComponent" + } + }, + { + "name": "includeStudentWork", + "defaultValue": "true", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractExportComponent" + } + }, + { + "name": "nodes", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractExportComponent" + } + }, + { + "name": "project", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractExportComponent" + } + }, + { + "name": "projectIdToOrder", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 20, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractExportComponent" + } + }, + { + "name": "projectItems", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 21, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractExportComponent" + } + }, + { + "name": "projectService", + "deprecated": false, + "deprecationMessage": "", + "type": "TeacherProjectService", + "indexKey": "", + "optional": false, + "description": "", + "line": 29, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "AbstractExportComponent" + } + } + ], + "methodsClass": [ + { + "name": "export", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 41, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "selectAll", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 34, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "selectDefault", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 27, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "extractUserIDsAndStudentNames", + "args": [ + { + "name": "users", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Record", + "typeParameters": [], + "line": 96, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nor studentNameX where X is an integer. The values are the corresponding actual\nvalues of user id and student name.\n", + "description": "

    or studentNameX where X is an integer. The values are the corresponding actual\nvalues of user id and student name.

    \n", + "jsdoctags": [ + { + "name": { + "pos": 3200, + "end": 3205, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "users" + }, + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3194, + "end": 3199, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    An array of user objects. Each user object contains an id and name.

    \n" + }, + { + "tagName": { + "pos": 3280, + "end": 3287, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

    An object that contains key/value pairs. The key is userIdX\nor studentNameX where X is an integer. The values are the corresponding actual\nvalues of user id and student name.

    \n", + "returnType": "object" + } + ], + "inheritance": { + "file": "AbstractExportComponent" + } + }, + { + "name": "getSelectedNodesToExport", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 62, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractExportComponent" + } + }, + { + "name": "goBack", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 108, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractExportComponent" + } + }, + { + "name": "hideDownloadingExportMessage", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 58, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractExportComponent" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 34, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractExportComponent" + } + }, + { + "name": "showDownloadingExportMessage", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 49, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractExportComponent" + } + }, + { + "name": "sortNodesByOrder", + "args": [ + { + "name": "nodeA", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeB", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 45, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeA", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeB", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractExportComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatButton" + }, + { + "name": "MatTooltip" + }, + { + "name": "MatIcon" + }, + { + "name": "MatCheckbox" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "SelectStepAndComponentCheckboxesComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { RawDataExportStrategy } from '../strategies/RawDataExportStrategy';\nimport { AbstractExportComponent } from '../abstract-export.component';\nimport { MatButton } from '@angular/material/button';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatCheckbox } from '@angular/material/checkbox';\nimport { FormsModule } from '@angular/forms';\nimport { SelectStepAndComponentCheckboxesComponent } from '../select-step-and-component-checkboxes/select-step-and-component-checkboxes.component';\n\n@Component({\n imports: [\n MatButton,\n MatTooltip,\n MatIcon,\n MatCheckbox,\n FormsModule,\n SelectStepAndComponentCheckboxesComponent\n ],\n styles: ['.parameters-div { margin-bottom: 20px; } .mat-icon { margin: 0px; }'],\n templateUrl: './export-raw-data.component.html'\n})\nexport class ExportRawDataComponent extends AbstractExportComponent {\n protected includeAnnotations = false;\n protected includeEvents = false;\n\n protected selectDefault(): void {\n this.includeStudentWork = true;\n this.includeStudentNames = true;\n this.includeAnnotations = false;\n this.includeEvents = false;\n }\n\n protected selectAll(): void {\n this.includeStudentWork = true;\n this.includeStudentNames = true;\n this.includeAnnotations = true;\n this.includeEvents = true;\n }\n\n protected export(): void {\n this.showDownloadingExportMessage();\n const strategy = new RawDataExportStrategy();\n strategy.setDataExportContext({ controller: this } as any);\n strategy.export();\n this.hideDownloadingExportMessage();\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": ".parameters-div { margin-bottom: 20px; } .mat-icon { margin: 0px; }\n", + "extends": [ + "AbstractExportComponent" + ], + "templateData": "
    \n \n arrow_back\n \n

    Export Raw Data

    \n
    \n
    \n \n \n
    \n \n Include Student Work\n \n @if (canViewStudentNames) {\n \n Include Student Names\n \n }\n \n Include Annotations\n \n
    \n Include Events\n
    \n \n
    \n \n
    \n
    \n \n arrow_back\n \n
    \n" + }, + { + "name": "ExportStepVisitsComponent", + "id": "component-ExportStepVisitsComponent-f9895db8171adb5e4793499931a5bbcac02c0221595276df76b2a59582c8c2139353c871ee52b8cb061dc623eacc890534d0311e2a996b158429849a7948ec4f", + "file": "src/assets/wise5/classroomMonitor/dataExport/export-step-visits/export-step-visits.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./export-step-visits.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "canViewStudentNames", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 33 + }, + { + "name": "checkedItems", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 23 + }, + { + "name": "columnExplanations", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 36 + }, + { + "name": "columnNames", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 24 + }, + { + "name": "columnNameToColumnNumber", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 25 + }, + { + "name": "deletedSteps", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 38 + }, + { + "name": "idToChecked", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 26 + }, + { + "name": "idToNode", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 27 + }, + { + "name": "idToStepNumber", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 28 + }, + { + "name": "idToStepNumberAndTitle", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 29 + }, + { + "name": "idToUserInfo", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 30 + }, + { + "name": "includeDeletedSteps", + "defaultValue": "true", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 37 + }, + { + "name": "includeStudentNames", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 34 + }, + { + "name": "isShowColumnExplanations", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 35 + }, + { + "name": "nodes", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 22 + }, + { + "name": "project", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 21 + }, + { + "name": "rowCounter", + "defaultValue": "1", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 31 + }, + { + "name": "workgroupIdNodeIdToVisitCounter", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 32 + }, + { + "name": "maxExcelCellSize", + "defaultValue": "32767", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 6, + "inheritance": { + "file": "ExportController" + } + } + ], + "methodsClass": [ + { + "name": "addSingleUserCells", + "args": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "user", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 507, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "user", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addUserCells", + "args": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 500, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "backToTop", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 583, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "cleanEvents", + "args": [ + { + "name": "events", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 299, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "events", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createRowWithEmptyCells", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 461, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "createVisit", + "args": [ + { + "name": "nodeEnteredEvent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeExitedEvent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "previousVisits", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 404, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeEnteredEvent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeExitedEvent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "previousVisits", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "deselectAll", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 232, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "export", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 248, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "filterRows", + "args": [ + { + "name": "rows", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 364, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "rows", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getCellInRow", + "args": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 575, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getCheckedItems", + "args": [], + "optional": false, + "returnType": "string[]", + "typeParameters": [], + "line": 260, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "getColumnNumber", + "args": [ + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 526, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getDeletedSteps", + "args": [ + { + "name": "events", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 345, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "events", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getEventsThatAreNotErroneous", + "args": [ + { + "name": "events", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 327, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "events", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getEventsWithActiveWorkgroups", + "args": [ + { + "name": "events", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 317, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "events", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getHeaderRow", + "args": [], + "optional": false, + "returnType": "string[]", + "typeParameters": [], + "line": 215, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "getNextRowNumber", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 530, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "getNodeEnteredAndExitedEvents", + "args": [ + { + "name": "events", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 307, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "events", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getNodeIdsBetweenLastVisit", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "previousVisits", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 475, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "previousVisits", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getPeriodId", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 518, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getPeriodName", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 514, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getPreviousVisit", + "args": [ + { + "name": "previousVisits", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 465, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "previousVisits", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getRevisitCounter", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 566, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getStepNumber", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 538, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getStepNumberAndTitle", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 546, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getStepNumbersBetweenLastVisit", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "previousVisits", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 479, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "previousVisits", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getStepsBetweenLastVisit", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "previousVisits", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "output", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 483, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "previousVisits", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "output", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getVisitCounter", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 562, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getVisitDuration", + "args": [ + { + "name": "nodeEnteredEvent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeExitedEvent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 522, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeEnteredEvent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeExitedEvent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getWorkgroupIdNodeIdKey", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 554, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "handleExportCallback", + "args": [ + { + "name": "events", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 270, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "events", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "incrementRowCounter", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 534, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "incrementVisitCounter", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 558, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "initializeColumnExplanations", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 122, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "initializeColumnNames", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 91, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "initializeColumnNameToColumnNumber", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 219, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "initializeIdToChecked", + "args": [ + { + "name": "nodes", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 61, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodes", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "initializeIdToNode", + "args": [ + { + "name": "nodes", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 68, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodes", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "initializeIdToUserInfo", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 204, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "initializeWorkgroupIdNodeIdToVisitCounter", + "args": [ + { + "name": "nodes", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 77, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodes", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isActiveWorkgroup", + "args": [ + { + "name": "workgroupId", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 211, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "workgroupId", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isDeletedStep", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 360, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isErroneousExitedEvent", + "args": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nextEvent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 337, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nextEvent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isMatchingNodeId", + "args": [ + { + "name": "nodeEnteredEvent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeExitedEvent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 400, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeEnteredEvent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeExitedEvent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isStepEnteredEvent", + "args": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 392, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isStepExitedEvent", + "args": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 396, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 48, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeChecked", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 239, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "selectAll", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 225, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "setCellInRow", + "args": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "value", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 571, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "value", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "sortEvents", + "args": [ + { + "name": "events", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 374, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "events", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "sortEventsByWorkgroupIdAndClientSaveTime", + "args": [ + { + "name": "a", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "b", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 378, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "a", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "b", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "toggleColumnExplanations", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 579, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "createCSVCell", + "args": [ + { + "name": "cell", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 39, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "cell", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ExportController" + } + }, + { + "name": "createCSVRow", + "args": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 30, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "row", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ExportController" + } + }, + { + "name": "generateCSVFile", + "args": [ + { + "name": "rows", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "fileName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 16, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGenerate the csv file and have the client download it\ninner array contains strings or numbers which represent the cell values in the export.\n", + "description": "

    Generate the csv file and have the client download it\ninner array contains strings or numbers which represent the cell values in the export.

    \n", + "jsdoctags": [ + { + "name": { + "pos": 216, + "end": 220, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "rows" + }, + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 210, + "end": 215, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    a 2D array that represents the rows in the export. each row contains an array. the\ninner array contains strings or numbers which represent the cell values in the export.

    \n" + }, + { + "name": { + "pos": 408, + "end": 416, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "fileName" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 402, + "end": 407, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    the name of the file that will be generated

    \n" + } + ], + "inheritance": { + "file": "ExportController" + } + }, + { + "name": "generateCSVString", + "args": [ + { + "name": "rows", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "rows", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ExportController" + } + }, + { + "name": "isEmpty", + "args": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 58, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ExportController" + } + }, + { + "name": "isObject", + "args": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 62, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ExportController" + } + }, + { + "name": "isString", + "args": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 66, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ExportController" + } + }, + { + "name": "isStringTooLarge", + "args": [ + { + "name": "str", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 74, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "str", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ExportController" + } + }, + { + "name": "wrapInDoubleQuotes", + "args": [ + { + "name": "str", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 70, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "str", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ExportController" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatButton" + }, + { + "name": "RouterLink" + }, + { + "name": "MatIcon" + }, + { + "name": "MatCheckbox" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "NgClass" + }, + { + "name": "MatTooltip" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { ConfigService } from '../../../services/configService';\nimport { DataExportService } from '../../../services/dataExportService';\nimport { TeacherProjectService } from '../../../services/teacherProjectService';\nimport ExportController from '../exportController';\nimport { millisecondsToDateTime } from '../../../common/datetime/datetime';\nimport { MatButton } from '@angular/material/button';\nimport { RouterLink } from '@angular/router';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatCheckbox } from '@angular/material/checkbox';\nimport { FormsModule } from '@angular/forms';\nimport { NgClass } from '@angular/common';\nimport { MatTooltip } from '@angular/material/tooltip';\n\n@Component({\n imports: [MatButton, RouterLink, MatIcon, MatCheckbox, FormsModule, NgClass, MatTooltip],\n styleUrl: './export-step-visits.component.scss',\n templateUrl: './export-step-visits.component.html'\n})\nexport class ExportStepVisitsComponent extends ExportController {\n project: any;\n nodes: any[];\n checkedItems: string[] = [];\n columnNames: string[];\n columnNameToColumnNumber: any = {};\n idToChecked: any = {};\n idToNode: any = {};\n idToStepNumber: any = {};\n idToStepNumberAndTitle: any = {};\n idToUserInfo: any[] = [];\n rowCounter: number = 1;\n workgroupIdNodeIdToVisitCounter: any = {};\n canViewStudentNames: boolean = false;\n includeStudentNames: boolean = false;\n isShowColumnExplanations: boolean = false;\n columnExplanations: any[];\n includeDeletedSteps: boolean = true;\n deletedSteps: any = {};\n\n constructor(\n private configService: ConfigService,\n private dataExportService: DataExportService,\n private projectService: TeacherProjectService\n ) {\n super();\n }\n\n ngOnInit(): void {\n this.project = this.projectService.project;\n this.canViewStudentNames = this.configService.getPermissions().canViewStudentNames;\n const nodeOrderOfProject = this.projectService.getNodeOrderOfProject(this.project);\n this.nodes = nodeOrderOfProject.nodes;\n this.initializeIdToChecked(this.nodes);\n this.initializeIdToNode(this.nodes);\n this.initializeColumnNames();\n this.initializeColumnNameToColumnNumber();\n this.initializeColumnExplanations();\n this.initializeIdToUserInfo();\n }\n\n private initializeIdToChecked(nodes: any[]): void {\n for (const node of nodes) {\n this.idToChecked[node.node.id] = true;\n }\n this.includeDeletedSteps = true;\n }\n\n private initializeIdToNode(nodes: any[]): void {\n for (const node of nodes) {\n const nodeId = node.node.id;\n this.idToNode[nodeId] = node;\n this.idToStepNumber[nodeId] = this.projectService.getNodePositionById(nodeId);\n this.idToStepNumberAndTitle[nodeId] = this.projectService.getNodePositionAndTitle(nodeId);\n }\n }\n\n private initializeWorkgroupIdNodeIdToVisitCounter(nodes: any[]): void {\n const workgroupIds = this.configService.getClassmateWorkgroupIds();\n for (const workgroupId of workgroupIds) {\n for (const node of nodes) {\n const key = this.getWorkgroupIdNodeIdKey(workgroupId, node.node.id);\n this.workgroupIdNodeIdToVisitCounter[key] = 0;\n }\n for (const deletedStepNodeId of Object.keys(this.deletedSteps)) {\n const key = this.getWorkgroupIdNodeIdKey(workgroupId, deletedStepNodeId);\n this.workgroupIdNodeIdToVisitCounter[key] = 0;\n }\n }\n }\n\n private initializeColumnNames(): void {\n this.columnNames = [\n '#',\n 'Workgroup ID',\n 'User ID 1',\n 'Student Name 1',\n 'User ID 2',\n 'Student Name 2',\n 'User ID 3',\n 'Student Name 3',\n 'Run ID',\n 'Project ID',\n 'Project Name',\n 'Period ID',\n 'Period Name',\n 'Start Date',\n 'End Date',\n 'Node ID',\n 'Step Title',\n 'Enter Time',\n 'Exit Time',\n 'Visit Duration (Seconds)',\n 'Visit Counter',\n 'Revisit Counter',\n 'Previous Node ID',\n 'Previous Step Title',\n 'Node IDs Since Last Visit',\n 'Steps Since Last Visit'\n ];\n }\n\n private initializeColumnExplanations(): void {\n this.columnExplanations = [\n { name: '#', explanation: $localize`The row number.` },\n { name: 'Workgroup ID', explanation: $localize`The ID of the group.` },\n {\n name: 'User ID 1',\n explanation: $localize`The User ID of the first student in the group. This ID follows the student for all runs.`\n },\n {\n name: 'Student Name 1',\n explanation: $localize`The name of the first student. This only shows up if you have permission to view the student names and you enabled the 'Include Student Names' checkbox.`\n },\n {\n name: 'User ID 2',\n explanation: $localize`The UserID of the second student in the group. This ID follows the student for all runs.`\n },\n {\n name: 'Student Name 2',\n explanation: $localize`The name of the second student. This only shows up if you have permission to view the student names and you enabled the 'Include Student Names' checkbox.`\n },\n {\n name: 'User ID 3',\n explanation: $localize`The User ID of the third student in the group. This ID follows the student for all runs.`\n },\n {\n name: 'Student Name 3',\n explanation: $localize`The name of the third student. This only shows up if you have permission to view the student names and you enabled the 'Include Student Names' checkbox.`\n },\n { name: 'Run ID', explanation: $localize`The ID of the run.` },\n { name: 'Project ID', explanation: $localize`The ID of the project.` },\n { name: 'Project Name', explanation: $localize`The name of the project.` },\n { name: 'Period ID', explanation: $localize`The ID of the period that this student is in.` },\n {\n name: 'Period Name',\n explanation: $localize`The period name that this student is in. This name is chosen by the teacher that created the run.`\n },\n { name: 'Start Date', explanation: $localize`The start date of the run.` },\n { name: 'End Date', explanation: $localize`The end date of the run.` },\n {\n name: 'Node ID',\n explanation: $localize`The ID of the step. Each step in a unit has a unique Node ID.`\n },\n { name: 'Step Title', explanation: $localize`The title of the step.` },\n {\n name: 'Enter Time',\n explanation: $localize`The timestamp when the student entered the step.`\n },\n {\n name: 'Exit Time',\n explanation: $localize`The timestamp when the student exited the step. This value can be empty if WISE did not get the chance to save a step exit event. This can happen if the student closes their laptop without signing out of WISE or if they refresh the WISE page.`\n },\n {\n name: 'Visit Duration (Seconds)',\n explanation: $localize`The amount of time the student spent on the step during this visit measured in seconds.`\n },\n {\n name: 'Visit Counter',\n explanation: $localize`The number of times the student has visited this step so far.`\n },\n {\n name: 'Revisit Counter',\n explanation: $localize`The number of times the student has revisited this step so far. This will always be 1 less than the 'Visit Counter' for a given visit.`\n },\n {\n name: 'Previous Node ID',\n explanation: $localize`The Node ID of the step the student was on before visiting this step.`\n },\n {\n name: 'Previous Step Title',\n explanation: $localize`The step title of the step the student was on before visiting this step.`\n },\n {\n name: 'Node IDs Since Last Visit',\n explanation: $localize`A list of Node IDs that contain the steps the student visited before revisiting this step. This cell will only contain values if they revisit a step. For example if the student navigated to node1, then node2, then node3, then node1. For the second visit to node1, the 'Node IDs Since Last Visit' will show node2, node3.`\n },\n {\n name: 'Steps Since Last Visit',\n explanation: $localize`A list of step numbers that contain the steps the student visited before revisiting this step. This cell will only contain values if they revisit a step. For example if the student navigated to 1.1, then 1.2, then 1.3, then 1.1. For the second visit to 1.1, the 'Steps Since Last Visit' will show 1.2, 1.3.`\n }\n ];\n }\n\n private initializeIdToUserInfo(): void {\n const workgroupIds = this.configService.getClassmateWorkgroupIds();\n for (const workgroupId of workgroupIds) {\n this.idToUserInfo[workgroupId] = this.configService.getUserInfoByWorkgroupId(workgroupId);\n }\n }\n\n private isActiveWorkgroup(workgroupId: any): boolean {\n return this.idToUserInfo[workgroupId] != null;\n }\n\n private getHeaderRow(): string[] {\n return this.columnNames;\n }\n\n private initializeColumnNameToColumnNumber(): void {\n for (let c = 0; c < this.columnNames.length; c++) {\n this.columnNameToColumnNumber[this.columnNames[c]] = c;\n }\n }\n\n selectAll(): void {\n for (const node of this.nodes) {\n this.idToChecked[node.node.id] = true;\n }\n this.includeDeletedSteps = true;\n }\n\n deselectAll(): void {\n for (const node of this.nodes) {\n this.idToChecked[node.node.id] = false;\n }\n this.includeDeletedSteps = false;\n }\n\n nodeChecked(node: any): void {\n if (node.type === 'group') {\n const isGroupChecked = this.idToChecked[node.id];\n for (const childId of node.ids) {\n this.idToChecked[childId] = isGroupChecked;\n }\n }\n }\n\n export(): void {\n this.rowCounter = 1;\n this.checkedItems = this.getCheckedItems();\n const includeStudentEvents = true;\n const includeTeacherEvents = false;\n this.dataExportService\n .retrieveEventsExport(includeStudentEvents, includeTeacherEvents, this.includeStudentNames)\n .subscribe(({ events }: any) => {\n this.handleExportCallback(events);\n });\n }\n\n private getCheckedItems(): string[] {\n const checkedItems = [];\n for (const node of this.nodes) {\n if (this.idToChecked[node.node.id]) {\n checkedItems.push(node.node.id);\n }\n }\n return checkedItems;\n }\n\n private handleExportCallback(events: any[]): void {\n let sortedEvents = this.sortEvents(events);\n this.deletedSteps = this.getDeletedSteps(sortedEvents);\n sortedEvents = this.cleanEvents(sortedEvents);\n this.initializeWorkgroupIdNodeIdToVisitCounter(this.nodes);\n let previousEnteredEvent = null;\n let rows = [];\n for (const event of sortedEvents) {\n if (this.isStepEnteredEvent(event)) {\n if (previousEnteredEvent != null) {\n rows.push(this.createVisit(previousEnteredEvent, null, rows));\n }\n previousEnteredEvent = event;\n } else if (this.isStepExitedEvent(event)) {\n if (previousEnteredEvent != null && this.isMatchingNodeId(previousEnteredEvent, event)) {\n rows.push(this.createVisit(previousEnteredEvent, event, rows));\n }\n previousEnteredEvent = null;\n }\n }\n if (previousEnteredEvent != null) {\n rows.push(this.createVisit(previousEnteredEvent, null, rows));\n }\n rows = this.filterRows(rows);\n rows.unshift(this.getHeaderRow());\n const fileName = `${this.configService.getRunId()}_visits.csv`;\n this.generateCSVFile(rows, fileName);\n }\n\n private cleanEvents(events: any[]): any[] {\n let cleanedEvents = [];\n cleanedEvents = this.getNodeEnteredAndExitedEvents(events);\n cleanedEvents = this.getEventsWithActiveWorkgroups(cleanedEvents);\n cleanedEvents = this.getEventsThatAreNotErroneous(cleanedEvents);\n return cleanedEvents;\n }\n\n private getNodeEnteredAndExitedEvents(events: any[]): any[] {\n const cleanedEvents = [];\n for (const event of events) {\n if (this.isStepEnteredEvent(event) || this.isStepExitedEvent(event)) {\n cleanedEvents.push(event);\n }\n }\n return cleanedEvents;\n }\n\n private getEventsWithActiveWorkgroups(events: any[]): any[] {\n const cleanedEvents = [];\n for (const event of events) {\n if (this.isActiveWorkgroup(event.workgroupId)) {\n cleanedEvents.push(event);\n }\n }\n return cleanedEvents;\n }\n\n private getEventsThatAreNotErroneous(events: any[]): any[] {\n const cleanedEvents = [];\n events.forEach((event, index) => {\n if (events[index + 1] == null || !this.isErroneousExitedEvent(event, events[index + 1])) {\n cleanedEvents.push(event);\n }\n });\n return cleanedEvents;\n }\n\n private isErroneousExitedEvent(event: any, nextEvent: any): any {\n return (\n this.isStepExitedEvent(event) &&\n this.isStepExitedEvent(nextEvent) &&\n this.isMatchingNodeId(event, nextEvent)\n );\n }\n\n private getDeletedSteps(events: any[]): any {\n const deletedSteps = {};\n for (const event of events) {\n const nodeId = event.nodeId;\n if (\n nodeId != null &&\n this.projectService.getNodeById(nodeId) == null &&\n nodeId.startsWith('node')\n ) {\n deletedSteps[event.nodeId] = true;\n }\n }\n return deletedSteps;\n }\n\n private isDeletedStep(nodeId: string): boolean {\n return this.deletedSteps[nodeId] != null;\n }\n\n private filterRows(rows: any[]): any[] {\n return rows.filter((row) => {\n const nodeId = this.getCellInRow(row, 'Node ID');\n return (\n this.checkedItems.includes(nodeId) ||\n (this.includeDeletedSteps && this.isDeletedStep(nodeId))\n );\n });\n }\n\n private sortEvents(events: any[]): any[] {\n return events.sort(this.sortEventsByWorkgroupIdAndClientSaveTime);\n }\n\n private sortEventsByWorkgroupIdAndClientSaveTime(a: any, b: any): number {\n if (a.workgroupId < b.workgroupId) {\n return -1;\n } else if (a.workgroupId > b.workgroupId) {\n return 1;\n } else {\n if (a.clientSaveTime < b.clientSaveTime) {\n return -1;\n } else if (a.clientSaveTime > b.clientSaveTime) {\n return 1;\n }\n }\n }\n\n private isStepEnteredEvent(event: any): boolean {\n return event.event === 'nodeEntered' && event.nodeId.startsWith('node');\n }\n\n private isStepExitedEvent(event: any): boolean {\n return event.event === 'nodeExited' && event.nodeId.startsWith('node');\n }\n\n private isMatchingNodeId(nodeEnteredEvent: any, nodeExitedEvent: any): boolean {\n return nodeEnteredEvent.nodeId === nodeExitedEvent.nodeId;\n }\n\n private createVisit(nodeEnteredEvent: any, nodeExitedEvent: any, previousVisits: any[]): any {\n const visit = this.createRowWithEmptyCells();\n const workgroupId = nodeEnteredEvent.workgroupId;\n const nodeId = nodeEnteredEvent.nodeId;\n this.incrementVisitCounter(workgroupId, nodeId);\n this.setCellInRow(visit, '#', this.getNextRowNumber());\n this.setCellInRow(visit, 'Workgroup ID', workgroupId);\n this.addUserCells(visit, workgroupId);\n this.setCellInRow(visit, 'Project ID', this.configService.getProjectId());\n this.setCellInRow(visit, 'Run ID', this.configService.getRunId());\n this.setCellInRow(visit, 'Project Name', this.configService.getRunName());\n this.setCellInRow(visit, 'Period ID', this.getPeriodId(workgroupId));\n this.setCellInRow(visit, 'Period Name', this.getPeriodName(workgroupId));\n this.setCellInRow(visit, 'Start Date', this.configService.getFormattedStartDate());\n this.setCellInRow(visit, 'End Date', this.configService.getFormattedEndDate());\n this.setCellInRow(visit, 'Node ID', nodeId);\n this.setCellInRow(visit, 'Step Title', this.getStepNumberAndTitle(nodeId));\n this.setCellInRow(visit, 'Enter Time', millisecondsToDateTime(nodeEnteredEvent.clientSaveTime));\n if (nodeExitedEvent == null) {\n this.setCellInRow(visit, 'Exit Time', '(Unknown Exit Time)');\n this.setCellInRow(visit, 'Visit Duration (Seconds)', '(Unknown Visit Duration)');\n } else if (nodeExitedEvent != null) {\n this.setCellInRow(visit, 'Exit Time', millisecondsToDateTime(nodeExitedEvent.clientSaveTime));\n this.setCellInRow(\n visit,\n 'Visit Duration (Seconds)',\n this.getVisitDuration(nodeEnteredEvent, nodeExitedEvent)\n );\n }\n this.setCellInRow(visit, 'Visit Counter', this.getVisitCounter(workgroupId, nodeId));\n const revisitCounter = this.getRevisitCounter(workgroupId, nodeId);\n this.setCellInRow(visit, 'Revisit Counter', revisitCounter);\n const previousVisit = this.getPreviousVisit(previousVisits, workgroupId);\n if (previousVisit != null) {\n this.setCellInRow(visit, 'Previous Node ID', this.getCellInRow(previousVisit, 'Node ID'));\n this.setCellInRow(\n visit,\n 'Previous Step Title',\n this.getCellInRow(previousVisit, 'Step Title')\n );\n }\n if (revisitCounter > 0) {\n this.setCellInRow(\n visit,\n 'Node IDs Since Last Visit',\n this.getNodeIdsBetweenLastVisit(nodeId, previousVisits)\n );\n this.setCellInRow(\n visit,\n 'Steps Since Last Visit',\n this.getStepNumbersBetweenLastVisit(nodeId, previousVisits)\n );\n }\n this.incrementRowCounter();\n return visit;\n }\n\n private createRowWithEmptyCells(): any {\n return new Array(this.columnNames.length);\n }\n\n private getPreviousVisit(previousVisits: any[], workgroupId: number): any {\n if (previousVisits.length > 0) {\n const previousVisit = previousVisits[previousVisits.length - 1];\n if (this.getCellInRow(previousVisit, 'Workgroup ID') == workgroupId) {\n return previousVisit;\n }\n }\n return null;\n }\n\n private getNodeIdsBetweenLastVisit(nodeId: string, previousVisits: any[]): string {\n return this.getStepsBetweenLastVisit(nodeId, previousVisits, 'nodeId');\n }\n\n private getStepNumbersBetweenLastVisit(nodeId: string, previousVisits: any[]): string {\n return this.getStepsBetweenLastVisit(nodeId, previousVisits, 'stepNumber');\n }\n\n private getStepsBetweenLastVisit(nodeId: string, previousVisits: any[], output: string): string {\n const steps = [];\n for (let v = previousVisits.length - 1; v > 0; v--) {\n const previousNodeId = this.getCellInRow(previousVisits[v], 'Node ID');\n if (previousNodeId === nodeId) {\n break;\n } else {\n if (output === 'nodeId') {\n steps.unshift(previousNodeId);\n } else if (output === 'stepNumber') {\n steps.unshift(this.getStepNumber(previousNodeId));\n }\n }\n }\n return steps.join(', ');\n }\n\n private addUserCells(row: any[], workgroupId: number): void {\n const userInfo = this.configService.getUserInfoByWorkgroupId(workgroupId);\n for (let u = 0; u < userInfo.users.length; u++) {\n this.addSingleUserCells(row, u + 1, userInfo.users[u]);\n }\n }\n\n private addSingleUserCells(row: any[], studentNumber: number, user: any): void {\n this.setCellInRow(row, `User ID ${studentNumber}`, user.id);\n if (this.includeStudentNames) {\n this.setCellInRow(row, `Student Name ${studentNumber}`, user.name);\n }\n }\n\n private getPeriodName(workgroupId: number): string {\n return this.configService.getUserInfoByWorkgroupId(workgroupId).periodName;\n }\n\n private getPeriodId(workgroupId: number): number {\n return this.configService.getUserInfoByWorkgroupId(workgroupId).periodId;\n }\n\n private getVisitDuration(nodeEnteredEvent: any, nodeExitedEvent: any): number {\n return (nodeExitedEvent.clientSaveTime - nodeEnteredEvent.clientSaveTime) / 1000;\n }\n\n private getColumnNumber(columnName: string): number {\n return this.columnNameToColumnNumber[columnName];\n }\n\n private getNextRowNumber(): number {\n return this.rowCounter;\n }\n\n private incrementRowCounter(): void {\n this.rowCounter++;\n }\n\n private getStepNumber(nodeId: string): any {\n if (this.isDeletedStep(nodeId)) {\n return '(Deleted Step)';\n } else {\n return this.idToStepNumber[nodeId];\n }\n }\n\n private getStepNumberAndTitle(nodeId: string): string {\n if (this.isDeletedStep(nodeId)) {\n return '(Deleted Step)';\n } else {\n return this.idToStepNumberAndTitle[nodeId];\n }\n }\n\n private getWorkgroupIdNodeIdKey(workgroupId: number, nodeId: string): string {\n return `${workgroupId}-${nodeId}`;\n }\n\n private incrementVisitCounter(workgroupId: number, nodeId: string): void {\n this.workgroupIdNodeIdToVisitCounter[this.getWorkgroupIdNodeIdKey(workgroupId, nodeId)]++;\n }\n\n private getVisitCounter(workgroupId: number, nodeId: string): number {\n return this.workgroupIdNodeIdToVisitCounter[this.getWorkgroupIdNodeIdKey(workgroupId, nodeId)];\n }\n\n private getRevisitCounter(workgroupId: number, nodeId: string): number {\n const key = this.getWorkgroupIdNodeIdKey(workgroupId, nodeId);\n return this.workgroupIdNodeIdToVisitCounter[key] - 1;\n }\n\n private setCellInRow(row: any[], columnName: string, value: any): void {\n row[this.getColumnNumber(columnName)] = value;\n }\n\n private getCellInRow(row: any[], columnName: string): any {\n return row[this.getColumnNumber(columnName)];\n }\n\n toggleColumnExplanations(): void {\n this.isShowColumnExplanations = !this.isShowColumnExplanations;\n }\n\n backToTop(): void {\n window.document.querySelector('.top-content').scrollIntoView();\n }\n}\n", + "styleUrl": "./export-step-visits.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dataExportService", + "type": "DataExportService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 38, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dataExportService", + "type": "DataExportService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "ExportController" + ], + "templateData": "
    \n
    \n
    \n \n arrow_back\n \n
    Export Step Visit Events
    \n
    \n \n
    \n @if (isShowColumnExplanations) {\n
    \n \n \n \n \n \n @for (columnExplanation of columnExplanations; track columnExplanation) {\n \n \n \n \n }\n
    Column NameExplanation
    {{ columnExplanation.name }}{{ columnExplanation.explanation }}
    \n
    \n \n
    \n
    \n }\n @if (canViewStudentNames) {\n \n
    Include Student Names
    \n \n }\n
    Choose Steps
    \n
    \n \n \n \n
    \n @for (value of nodes; track value; let index = $index) {\n @if (index !== 0) {\n
    \n \n
    {{ idToStepNumberAndTitle[value.node.id] }}
    \n \n
    \n }\n }\n
    \n \n
    Include Deleted Steps (If Any)
    \n \n
    \n
    \n \n
    \n \n arrow_upward\n \n
    \n
    \n
    \n
    \n" + }, + { + "name": "ExportStudentWorkComponent", + "id": "component-ExportStudentWorkComponent-c51109a8b89c2db114a9e787aa9798b4655a845d3aea60b98e6afa03dd050955c7de3309ea24e1492455e14b5f4bf258735e5734dec620683ecb62d4fdb44dc8", + "file": "src/assets/wise5/classroomMonitor/dataExport/export-student-work/export-student-work.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./export-student-work.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "annotationService", + "deprecated": false, + "deprecationMessage": "", + "type": "AnnotationService", + "indexKey": "", + "optional": false, + "description": "", + "line": 39, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "AbstractExportComponent" + } + }, + { + "name": "canViewStudentNames", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 35, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractExportComponent" + } + }, + { + "name": "componentServiceLookupService", + "deprecated": false, + "deprecationMessage": "", + "type": "ComponentServiceLookupService", + "indexKey": "", + "optional": false, + "description": "", + "line": 40, + "modifierKind": [ + 125 + ] + }, + { + "name": "configService", + "deprecated": false, + "deprecationMessage": "", + "type": "ConfigService", + "indexKey": "", + "optional": false, + "description": "", + "line": 41, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "AbstractExportComponent" + } + }, + { + "name": "dataExportService", + "deprecated": false, + "deprecationMessage": "", + "type": "DataExportService", + "indexKey": "", + "optional": false, + "description": "", + "line": 42, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "AbstractExportComponent" + } + }, + { + "name": "dataService", + "deprecated": false, + "deprecationMessage": "", + "type": "TeacherDataService", + "indexKey": "", + "optional": false, + "description": "", + "line": 43, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "AbstractExportComponent" + } + }, + { + "name": "exportType", + "defaultValue": "'latestStudentWork'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 36, + "modifierKind": [ + 124 + ] + }, + { + "name": "projectService", + "deprecated": false, + "deprecationMessage": "", + "type": "TeacherProjectService", + "indexKey": "", + "optional": false, + "description": "", + "line": 45, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "AbstractExportComponent" + } + }, + { + "name": "exportStepSelectionType", + "defaultValue": "'exportAllSteps'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractExportComponent" + } + }, + { + "name": "flattenedProjectAsNodeIds", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractExportComponent" + } + }, + { + "name": "includeStudentNames", + "defaultValue": "true", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractExportComponent" + } + }, + { + "name": "includeStudentWork", + "defaultValue": "true", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractExportComponent" + } + }, + { + "name": "nodes", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractExportComponent" + } + }, + { + "name": "project", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractExportComponent" + } + }, + { + "name": "projectIdToOrder", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 20, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractExportComponent" + } + }, + { + "name": "projectItems", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 21, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractExportComponent" + } + } + ], + "methodsClass": [ + { + "name": "export", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 66, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 61, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractExportComponent" + } + }, + { + "name": "extractUserIDsAndStudentNames", + "args": [ + { + "name": "users", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Record", + "typeParameters": [], + "line": 96, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nor studentNameX where X is an integer. The values are the corresponding actual\nvalues of user id and student name.\n", + "description": "

    or studentNameX where X is an integer. The values are the corresponding actual\nvalues of user id and student name.

    \n", + "jsdoctags": [ + { + "name": { + "pos": 3200, + "end": 3205, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "users" + }, + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3194, + "end": 3199, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    An array of user objects. Each user object contains an id and name.

    \n" + }, + { + "tagName": { + "pos": 3280, + "end": 3287, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

    An object that contains key/value pairs. The key is userIdX\nor studentNameX where X is an integer. The values are the corresponding actual\nvalues of user id and student name.

    \n", + "returnType": "object" + } + ], + "inheritance": { + "file": "AbstractExportComponent" + } + }, + { + "name": "getSelectedNodesToExport", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 62, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractExportComponent" + } + }, + { + "name": "goBack", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 108, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractExportComponent" + } + }, + { + "name": "hideDownloadingExportMessage", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 58, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractExportComponent" + } + }, + { + "name": "showDownloadingExportMessage", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 49, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractExportComponent" + } + }, + { + "name": "sortNodesByOrder", + "args": [ + { + "name": "nodeA", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeB", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 45, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeA", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeB", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractExportComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatButton" + }, + { + "name": "MatTooltip" + }, + { + "name": "MatIcon" + }, + { + "name": "MatButtonToggleGroup" + }, + { + "name": "MatButtonToggle" + }, + { + "name": "MatCheckbox" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "SelectStepAndComponentCheckboxesComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { AbstractExportComponent } from '../abstract-export.component';\nimport { StudentWorkDataExportStrategy } from '../strategies/StudentWorkDataExportStrategy';\nimport { MatDialog } from '@angular/material/dialog';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { AnnotationService } from '../../../services/annotationService';\nimport { ComponentServiceLookupService } from '../../../services/componentServiceLookupService';\nimport { ConfigService } from '../../../services/configService';\nimport { DataExportService } from '../../../services/dataExportService';\nimport { TeacherDataService } from '../../../services/teacherDataService';\nimport { TeacherProjectService } from '../../../services/teacherProjectService';\nimport { MatButton } from '@angular/material/button';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatButtonToggleGroup, MatButtonToggle } from '@angular/material/button-toggle';\nimport { MatCheckbox } from '@angular/material/checkbox';\nimport { FormsModule } from '@angular/forms';\nimport { SelectStepAndComponentCheckboxesComponent } from '../select-step-and-component-checkboxes/select-step-and-component-checkboxes.component';\n\n@Component({\n imports: [\n MatButton,\n MatTooltip,\n MatIcon,\n MatButtonToggleGroup,\n MatButtonToggle,\n MatCheckbox,\n FormsModule,\n SelectStepAndComponentCheckboxesComponent\n ],\n styleUrl: './export-student-work.component.scss',\n templateUrl: './export-student-work.component.html'\n})\nexport class ExportStudentWorkComponent extends AbstractExportComponent {\n protected canViewStudentNames: boolean = false;\n protected exportType: string = 'latestStudentWork';\n\n constructor(\n public annotationService: AnnotationService,\n public componentServiceLookupService: ComponentServiceLookupService,\n public configService: ConfigService,\n public dataExportService: DataExportService,\n public dataService: TeacherDataService,\n protected dialog: MatDialog,\n public projectService: TeacherProjectService,\n protected route: ActivatedRoute,\n protected router: Router\n ) {\n super(\n annotationService,\n configService,\n dataExportService,\n dataService,\n dialog,\n projectService,\n route,\n router\n );\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n this.canViewStudentNames = this.configService.getPermissions().canViewStudentNames;\n }\n\n protected export(): void {\n this.showDownloadingExportMessage();\n const strategy = new StudentWorkDataExportStrategy(this.exportType);\n strategy.setDataExportContext({ controller: this } as any);\n strategy.export();\n this.hideDownloadingExportMessage();\n }\n}\n", + "styleUrl": "./export-student-work.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentServiceLookupService", + "type": "ComponentServiceLookupService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dataExportService", + "type": "DataExportService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 36, + "jsdoctags": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentServiceLookupService", + "type": "ComponentServiceLookupService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dataExportService", + "type": "DataExportService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "AbstractExportComponent" + ], + "templateData": "
    \n \n arrow_back\n \n

    Export Student Work

    \n \n Latest\n All\n \n @if (canViewStudentNames) {\n
    \n \n Include Student Names\n \n
    \n }\n \n
    \n \n Export\n \n
    \n
    \n" + }, + { + "name": "FeaturesComponent", + "id": "component-FeaturesComponent-ccbce59f2c2c00d9b342b3ecf157eb48f987a1762f6d796b02546b8ab8c7c8973874da1edda42893da8160b6f2e5d121e26acdfb0d19751ab80828a83db22349", + "file": "src/app/features/features.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "app-features", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./features.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [], + "methodsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatDividerModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "RouterModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatIconModule } from '@angular/material/icon';\nimport { RouterModule } from '@angular/router';\n\n@Component({\n imports: [CommonModule, MatButtonModule, MatDividerModule, MatIconModule, RouterModule],\n selector: 'app-features',\n styleUrl: './features.component.scss',\n templateUrl: './features.component.html'\n})\nexport class FeaturesComponent {}\n", + "styleUrl": "./features.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [], + "templateData": "
    \n
    \n
    \n

    \n widgets\n WISE Features\n

    \n
    \n
    \n
    \n

    \n A powerful online platform for designing, developing, and implementing science inquiry\n units\n

    \n

    \n Since 1997, WISE has served a growing community of more than 20,000 teachers, researchers,\n and curriculum designers, as well as over 200,000 K-12 students around the world.\n

    \n
    \n
    \n
    \n \n \n \n \n \n
    \n
    \n
    \n
    \n
    \n
    \n

    WISE students collaborate to:

    \n
      \n
    • \n public\n Explore issues of social importance\n
    • \n
    • \n live_help\n Pose relevant questions and make predictions\n
    • \n
    • \n gamepad\n Experiment with computational models\n
    • \n
    • \n compare\n Evaluate and distinguish discrepant information\n
    • \n
    • \n message\n Construct explanations through reflection and discussion\n
    • \n
    • \n build\n Design and build evidence-based solutions\n
    • \n
    \n
    \n
    \n
    \n

    Inquiry-Based Learning

    \n

    \n WISE engages students in the methods of real scientists and engineers. We take a\n multidisciplinary approach so that students learn inquiry through activities that\n emphasize essential skills in reading, writing, and multimedia literacy. Many of our units\n are also project-based and feature hands-on design challenges.\n

    \n

    \n With WISE inquiry units, students not only learn skills that prepare them to be successful\n in STEM. They also learn skills necessary to be responsible, critical thinking citizens.\n

    \n
    \n
    \n
    \n
    \n

    Standards-Aligned Curricula

    \n

    \n WISE offers a growing collection of curriculum units that address key conceptual\n difficulties students encounter in science. Units are carefully crafted to supplement\n teachers' core curricular scope and sequence and are iteratively refined through\n classroom-based research.\n

    \n

    \n WISE units support the\n Next Generation Science Standards (NGSS), encourage\n 3-dimensional learning, and can be adapted to address local standards.\n

    \n
    Design Process & Goals\n

    \n
    \n
    \n
    \n \n \n \n \n \n \n \n \n \n \n
    \n
    \n
    \n
    \n
    \n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n
    \n
    \n

    Powerful Learning Technologies

    \n

    \n WISE provides a simple user interface, cognitive hints, embedded assessments, and online\n discussions, as well as tools for drawing, annotation, concept mapping, diagramming, and\n graphing.\n

    \n

    \n Students conduct investigations using interactive simulations and models. A notebook tool\n helps students collect ideas and organize evidence into research and design reports. WISE\n units promote self-monitoring through collaborative reflection activities as well as\n automated, personalized guidance and adaptive instruction.\n

    \n
    \n
    \n \n
    \n

    Comprehensive Instructional Supports

    \n

    \n WISE offers an extensive suite of integrated tools that help teachers plan, monitor\n progress, gain insights, provide feedback, and grade more efficiently. These tools are\n continually refined through collaborations with practicing teachers who understand the\n real challenges of managing modern classrooms.\n

    \n

    \n By facilitating these necessary but time-consuming tasks, teachers are free to focus on\n what makes them indispensable: providing quality instruction to individual students.\n

    \n

    \n \n \n \n \n \n \n \n \n \n \n

    \n
    \n
    \n
    \n
    \n

    Featured Teacher Tools:

    \n
      \n
    • \n poll\n Real-time progress monitor\n
    • \n
    • \n assignment_turned_in\n Grade and give feedback + sample scoring rubrics\n
    • \n
    • \n flash_auto\n Automatically scored assessment items\n
    • \n
    • \n pause_circle_filled\n Pause student screens\n
    • \n
    • \n people\n Share and collaborate with colleagues\n
    • \n
    • \n edit\n Authoring environment that supports customization and creation of new units\n
    • \n
    \n \n
    \n In development: Automated insights into student NGSS understanding + suggested\n classroom interventions!\n
    \n
    \n

    \n

    \n Explore what WISE has to offer!\n Join for free\n

    \n
    \n
    \n \n
    \n
    \n" + }, + { + "name": "FeedbackRuleHelpComponent", + "id": "component-FeedbackRuleHelpComponent-ef2b1f4df45510d3b083cdffc4d9f5596ec912d5e0a6dd1342340f6e12c7b43680ac42a4613088e2114cfd8418fc82204279676909f5ae1b6e256e647787653e", + "file": "src/assets/wise5/components/common/feedbackRule/feedback-rule-help/feedback-rule-help.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./feedback-rule-help.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [], + "methodsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatDialogModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule } from '@angular/material/dialog';\n\n@Component({\n imports: [CommonModule, MatButtonModule, MatDialogModule],\n styleUrl: './feedback-rule-help.component.scss',\n templateUrl: './feedback-rule-help.component.html'\n})\nexport class FeedbackRuleHelpComponent {}\n", + "styleUrl": "./feedback-rule-help.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [], + "templateData": "Note: this term currently only works in the Dialog Guidance component.\n

    Feedback Rule Authoring

    \n\n

    Introduction

    \n

    \n Rules are evaluated top to bottom. The first rule Expression that matches the student's\n response is used to provide feedback.\n

    \n

    \n You can add multiple Feedback items per rule. The first time a rule matches, Feedback #1\n will be shown to the student.
    \n If the rule matches a second time (in a subsequent round), Feedback #2 will be shown, and so on.\n

    \n

    Expressions are made up of terms, operators, and parentheses:

    \n

    Terms

    \n

    Terms lets you specify what to look for in a student response.

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    TermDescription
    1,2,...18,...Evaluates to true if idea 1, 2, 18, etc was found in the student's response.
    hasKIScore(X)\n Evaluates to true if the student received a KI score of X.
    \n Ex: hasKIScore(3) evaluates to true if the student received KI score 3.\n
    accumulatedIdeaCountMoreThan(X)\n Evaluates to true if more than X ideas were found in all (both past and current) of\n student's responses.
    \n Ex: accumulatedIdeaCountMoreThan(2) evaluates to true if the student had more than 2\n ideas in all of their responses.
    \n \n
    accumulatedIdeaCountLessThan(X)\n Evaluates to true if less than X ideas were found in all (both past and current) of\n student's responses.
    \n Ex: accumulatedIdeaCountLessThan(2) evaluates to true if the student had less than 2\n ideas in all of their responses.
    \n \n
    accumulatedIdeaCountEquals(X)\n Evaluates to true if exactly X ideas were found in all (both past and current) of student's\n responses.
    \n Ex: accumulatedIdeaCountEquals(2) evaluates to true if the student had exactly 2\n ideas in all of their responses.
    \n \n
    ideaCountMoreThan(X)\n Evaluates to true if more than X ideas were found in the student's response.
    \n Ex: ideaCountMoreThan(2) evaluates to true if the student had more than 2 ideas.\n
    ideaCountMoreThan(X, Y)\n Evaluates to true if more than X ideas were found in the student's Y-th response.
    \n Ex: ideaCountMoreThan(2, 3) evaluates to true if the student had more than 2 ideas in\n their 3rd response.
    \n \n
    ideaCountLessThan(X)\n Evaluates to true if less than X ideas were found in the student's response.
    \n Ex: ideaCountLessThan(2) evaluates to true if the student had less than 2 ideas.\n
    ideaCountLessThan(X, Y)\n Evaluates to true if less than X ideas were found in the student's Y-th response.
    \n Ex: ideaCountLessThan(2, 3) evaluates to true if the student had less than 2 ideas in\n their 3rd response.
    \n \n
    ideaCountEquals(X)\n Evaluates to true if exactly X ideas were found in the student's response.
    \n Ex: ideaCountEquals(2) evaluates to true if the student had exactly 2 ideas.\n
    ideaCountEquals(X, Y)\n Evaluates to true if exactly X ideas were found in the student's Y-th response.
    \n Ex: ideaCountEquals(2, 3) evaluates to true if the student had exactly 2 ideas in\n their 3rd response.
    \n \n
    isSubmitNumber(X)\n Evaluates to true if this is the student's X-th response.
    \n Ex: isSubmitNumber(3) evaluates to true if this is the student's third response.\n
    isSecondToLastSubmit\n Evaluates to true if this is the student's second to last response when the max number of\n submits is specified.\n
    isFinalSubmit\n Evaluates to true if this is the student's final response when the max number of submits is\n specified.\n
    isNonScorableEvaluates to true if the student's response was not scorable.
    isDefault\n Evaluates to true if no other terms were matched. Add this term as the final rule to specify\n a default feedback.\n
    \n

    Operators

    \n

    Operators let you combine one or more terms together to make a rule.

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    OperatorDescription
    &&\n Evaluates to true if terms on both sides of this operator evaluate to true.
    \n Ex: 1 && 2 evaluates to true if both idea 1 and 2 were found.
    \n Ex: 1 && hasKIScore(2) evaluates to true if idea 1 was found and the student received\n a KI score of 2.\n
    ||\n Evaluates to true if a term on either side of this operator evaluates to true.
    \n Ex: 1 || 2 evaluates to true if either idea 1 or 2 was found.
    \n Ex: 1 && 2 || 3 evaluates to true if both idea 1 and 2 were found or idea 3 was\n found.\n
    !\n Evaluates to true if a term following this operator evaluates to false.
    \n Ex: !1 evaluates to true if idea 1 was not found.\n
    \n

    Parentheses

    \n

    Parentheses let you group expressions and prioritize evaluation.

    \n

    You can add multiple parentheses in an expression. You can even nest parentheses.

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    ExampleDescription
    !(4a || 12)Evaluates to true if neither idea 4a nor idea 12 were found.
    5a && (4a || 12)Evaluates to true if idea 5a and either idea 4a or idea 12 was found.
    (5a && (4a || 12)) && hasKIScore(3)\n Evaluates to true if idea 5a and either idea 4a or idea 12 was found, and the student\n received a KI score of 3.\n
    \n
    \n\n \n\n" + }, + { + "name": "FilterComponentsComponent", + "id": "component-FilterComponentsComponent-ff29913698d370aea45a86f15f40089362e34aacb66fc0dd6c7cff8bbd1453504b8607219435e2e06148f89cc217a2c390874048c6dd2b4da6cae26931da6fcc", + "file": "src/assets/wise5/classroomMonitor/classroomMonitorComponents/nodeGrading/filter-components/filter-components.component.ts", + "encapsulation": [ + "ViewEncapsulation.None" + ], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "filter-components", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./filter-components.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "components", + "deprecated": false, + "deprecationMessage": "", + "line": 18, + "type": "ComponentContent[]", + "decorators": [] + } + ], + "outputsClass": [ + { + "name": "componentsChange", + "defaultValue": "new EventEmitter<\n ComponentContent[]\n >()", + "deprecated": false, + "deprecationMessage": "", + "line": 19, + "type": "EventEmitter" + } + ], + "propertiesClass": [ + { + "name": "selectedComponents", + "deprecated": false, + "deprecationMessage": "", + "type": "ComponentContent[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 22, + "modifierKind": [ + 124 + ] + }, + { + "name": "selectedText", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 23, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "compareById", + "args": [ + { + "name": "component1", + "type": "ComponentContent", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "component2", + "type": "ComponentContent", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 40, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "component1", + "type": "ComponentContent", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "component2", + "type": "ComponentContent", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getComponentTypeLabel", + "args": [ + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 36, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnChanges", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 27, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "updateSelectedComponents", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 44, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "updateSelectedText", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 32, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatSelectModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatButtonModule } from '@angular/material/button';\nimport { FormsModule } from '@angular/forms';\nimport { ComponentTypeService } from '../../../../services/componentTypeService';\nimport { ComponentContent } from '../../../../common/ComponentContent';\n\n@Component({\n imports: [CommonModule, FormsModule, MatButtonModule, MatFormFieldModule, MatSelectModule],\n selector: 'filter-components',\n styleUrl: './filter-components.component.scss',\n templateUrl: './filter-components.component.html',\n encapsulation: ViewEncapsulation.None\n})\nexport class FilterComponentsComponent {\n @Input() components: ComponentContent[];\n @Output() componentsChange: EventEmitter = new EventEmitter<\n ComponentContent[]\n >();\n protected selectedComponents: ComponentContent[];\n protected selectedText: string;\n\n constructor(private componentTypeService: ComponentTypeService) {}\n\n ngOnChanges(): void {\n this.selectedComponents = this.components;\n this.updateSelectedText();\n }\n\n private updateSelectedText(): void {\n this.selectedText = $localize`Showing ${this.selectedComponents.length}/${this.components.length} questions`;\n }\n\n protected getComponentTypeLabel(componentType: string): string {\n return this.componentTypeService.getComponentTypeLabel(componentType);\n }\n\n protected compareById(component1: ComponentContent, component2: ComponentContent): boolean {\n return component1?.id === component2?.id;\n }\n\n protected updateSelectedComponents(): void {\n this.updateSelectedText();\n this.componentsChange.emit(this.selectedComponents);\n }\n}\n", + "styleUrl": "./filter-components.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "componentTypeService", + "type": "ComponentTypeService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 23, + "jsdoctags": [ + { + "name": "componentTypeService", + "type": "ComponentTypeService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "\n @if (components.length == 1) {\n \n } @else if (components.length > 1) {\n \n {{ selectedText }}\n @for (component of components; track component.id; let i = $index) {\n \n {{ component.displayIndex }}: {{ getComponentTypeLabel(component.type) }}\n \n }\n \n } @else {\n \n }\n\n" + }, + { + "name": "FooterComponent", + "id": "component-FooterComponent-56dc1f92ffcbcae7fcd8b8225cce7238a7e11ef1a7d98b3a9d3f6706375a056408d42ad4ced17f157e47804ff0f98b570f242dcbf404dc00076336ca117c1d69", + "file": "src/app/modules/footer/footer.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "app-footer", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./footer.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "time", + "deprecated": false, + "deprecationMessage": "", + "type": "Date", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 16, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "RouterModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { CommonModule } from '@angular/common';\nimport { Component, OnInit } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { RouterModule } from '@angular/router';\n\n@Component({\n imports: [CommonModule, MatButtonModule, MatIconModule, RouterModule],\n selector: 'app-footer',\n styleUrl: './footer.component.scss',\n templateUrl: './footer.component.html'\n})\nexport class FooterComponent implements OnInit {\n protected time: Date;\n\n ngOnInit(): void {\n this.time = new Date();\n }\n}\n", + "styleUrl": "./footer.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "\n" + }, + { + "name": "ForgotComponent", + "id": "component-ForgotComponent-6e361da03fb8fa970aa183189a7221963e534a576fb3970769148f12d0a7769680a0ccb5ede7da69c78bb2cdd2a5f61367123d49ccc5ee3e9bb118e57410f70d", + "file": "src/app/forgot/forgot.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./forgot.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [], + "methodsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "RouterModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { RouterModule } from '@angular/router';\n\n@Component({\n imports: [RouterModule],\n templateUrl: './forgot.component.html'\n})\nexport class ForgotComponent {}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [], + "templateData": "
    \n
    \n \n \"WISE\n \n
    \n \n
    \n" + }, + { + "name": "ForgotHomeComponent", + "id": "component-ForgotHomeComponent-3d18d5ddfe17c8609e77427b4ba9a32c27c5e6056330c623e103b89fcbcab0a839cb4eee82fa70d72784cb5de69e1ac4f8d5fdb1edca2e61dc1fcd97a8e44929", + "file": "src/app/forgot/forgot-home/forgot-home.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./forgot-home.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [], + "methodsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CallToActionComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { CallToActionComponent } from '../../modules/shared/call-to-action/call-to-action.component';\n\n@Component({\n imports: [CallToActionComponent],\n styleUrl: './forgot-home.component.scss',\n templateUrl: './forgot-home.component.html'\n})\nexport class ForgotHomeComponent {}\n", + "styleUrl": "./forgot-home.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [], + "templateData": "

    Forgot Username or Password

    \n
    \n \n \n
    \n" + }, + { + "name": "ForgotStudentComponent", + "id": "component-ForgotStudentComponent-aa47b404b653b03d9bb5b43b4674b26a36f64f3bfcc6a74bf0d50018a4e94f2b2aefc2679b4ca4a992172f1f59866b43f76e02c600861d49a47ad5c1acb73333", + "file": "src/app/forgot/student/forgot-student/forgot-student.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./forgot-student.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [], + "methodsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CallToActionComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { CallToActionComponent } from '../../../modules/shared/call-to-action/call-to-action.component';\n\n@Component({\n imports: [CallToActionComponent],\n styleUrl: './forgot-student.component.scss',\n templateUrl: './forgot-student.component.html'\n})\nexport class ForgotStudentComponent {}\n", + "styleUrl": "./forgot-student.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [], + "templateData": "

    Student Forgot Username or Password

    \n
    \n \n \n
    \n" + }, + { + "name": "ForgotStudentPasswordChangeComponent", + "id": "component-ForgotStudentPasswordChangeComponent-6e67e313943115da4fdfc87992f60fd0ded9817b911a01a728b365882d9894a7bc18c0a5d2e4cc4bca1eeadf5c7ca1b5fdc583b472ab7a06e276f636635c04af", + "file": "src/app/forgot/student/forgot-student-password-change/forgot-student-password-change.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./forgot-student-password-change.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "answer", + "deprecated": false, + "deprecationMessage": "", + "line": 31, + "type": "string", + "decorators": [] + }, + { + "name": "questionKey", + "deprecated": false, + "deprecationMessage": "", + "line": 35, + "type": "string", + "decorators": [] + }, + { + "name": "username", + "deprecated": false, + "deprecationMessage": "", + "line": 36, + "type": "string", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "changePasswordFormGroup", + "defaultValue": "this.fb.group({})", + "deprecated": false, + "deprecationMessage": "", + "type": "FormGroup", + "indexKey": "", + "optional": false, + "description": "", + "line": 32 + }, + { + "name": "message", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 33, + "modifierKind": [ + 124 + ] + }, + { + "name": "processing", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 34, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "changePasswordError", + "args": [ + { + "name": "error", + "type": "PasswordErrors", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 75, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "error", + "type": "PasswordErrors", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "changePasswordSuccess", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 71, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "clearMessage", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 103, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "getConfirmNewPassword", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 89, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "getControlFieldValue", + "args": [ + { + "name": "fieldName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 95, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "fieldName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getNewPassword", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 85, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "goToSuccessPage", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 107, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "ngAfterViewChecked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 45, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "setErrorOccurredMessage", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 99, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "submit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 49, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatCard" + }, + { + "name": "MatCardContent" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "ReactiveFormsModule", + "type": "module" + }, + { + "name": "PasswordModule", + "type": "module" + }, + { + "name": "MatButton" + }, + { + "name": "MatProgressBar" + }, + { + "name": "MatDivider" + }, + { + "name": "RouterLink" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { ChangeDetectorRef, Component, Input } from '@angular/core';\nimport { FormBuilder, FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { Router, RouterLink } from '@angular/router';\nimport { StudentService } from '../../../student/student.service';\nimport { finalize } from 'rxjs/operators';\nimport { NewPasswordAndConfirmComponent } from '../../../password/new-password-and-confirm/new-password-and-confirm.component';\nimport { injectPasswordErrors } from '../../../common/password-helper';\nimport { PasswordErrors } from '../../../domain/password/password-errors';\nimport { MatDivider } from '@angular/material/divider';\nimport { MatProgressBar } from '@angular/material/progress-bar';\nimport { MatButton } from '@angular/material/button';\nimport { PasswordModule } from '../../../password/password.module';\nimport { MatCard, MatCardContent } from '@angular/material/card';\n\n@Component({\n templateUrl: './forgot-student-password-change.component.html',\n styleUrl: './forgot-student-password-change.component.scss',\n imports: [\n MatCard,\n MatCardContent,\n FormsModule,\n ReactiveFormsModule,\n PasswordModule,\n MatButton,\n MatProgressBar,\n MatDivider,\n RouterLink\n ]\n})\nexport class ForgotStudentPasswordChangeComponent {\n @Input() answer: string;\n changePasswordFormGroup: FormGroup = this.fb.group({});\n protected message: string = '';\n protected processing: boolean = false;\n @Input() questionKey: string;\n @Input() username: string;\n\n constructor(\n private changeDetectorRef: ChangeDetectorRef,\n private fb: FormBuilder,\n private router: Router,\n private studentService: StudentService\n ) {}\n\n ngAfterViewChecked(): void {\n this.changeDetectorRef.detectChanges();\n }\n\n submit(): void {\n this.clearMessage();\n const password = this.getNewPassword();\n const confirmPassword = this.getConfirmNewPassword();\n this.processing = true;\n this.studentService\n .changePassword(this.username, this.answer, password, confirmPassword)\n .pipe(\n finalize(() => {\n this.processing = false;\n })\n )\n .subscribe(\n () => {\n this.changePasswordSuccess();\n },\n (response) => {\n this.changePasswordError(response.error);\n }\n );\n }\n\n private changePasswordSuccess(): void {\n this.goToSuccessPage();\n }\n\n private changePasswordError(error: PasswordErrors): void {\n switch (error.messageCode) {\n case 'invalidPassword':\n injectPasswordErrors(this.changePasswordFormGroup, error);\n break;\n default:\n this.setErrorOccurredMessage();\n }\n }\n\n private getNewPassword(): string {\n return this.getControlFieldValue(NewPasswordAndConfirmComponent.NEW_PASSWORD_FORM_CONTROL_NAME);\n }\n\n private getConfirmNewPassword(): string {\n return this.getControlFieldValue(\n NewPasswordAndConfirmComponent.CONFIRM_NEW_PASSWORD_FORM_CONTROL_NAME\n );\n }\n\n private getControlFieldValue(fieldName: string): string {\n return this.changePasswordFormGroup.get(fieldName).value;\n }\n\n private setErrorOccurredMessage(): void {\n this.message = $localize`An error occurred. Please try again.`;\n }\n\n private clearMessage(): void {\n this.message = '';\n }\n\n private goToSuccessPage(): void {\n const params = {\n username: this.username\n };\n this.router.navigate(['/forgot/student/password/complete'], {\n queryParams: params,\n skipLocationChange: true\n });\n }\n}\n", + "styleUrl": "./forgot-student-password-change.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "changeDetectorRef", + "type": "ChangeDetectorRef", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "fb", + "type": "FormBuilder", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentService", + "type": "StudentService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 36, + "jsdoctags": [ + { + "name": "changeDetectorRef", + "type": "ChangeDetectorRef", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "fb", + "type": "FormBuilder", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentService", + "type": "StudentService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "\n \n
    \n

    Change Password

    \n @if (message) {\n

    {{ message }}

    \n }\n \n

    \n \n @if (processing) {\n \n }\n Submit\n \n

    \n
    \n
    \n \n \n

    \n Contact WISE\n

    \n

    \n Create New Account\n

    \n
    \n
    \n" + }, + { + "name": "ForgotStudentPasswordComponent", + "id": "component-ForgotStudentPasswordComponent-5342995c34dabe90f23764f37ed7aa9ddeda0a45c7d1b8036d2cf625c38b58d00862c6d10c1e1ff1f4fb07fbe3b70df291890b449e950e009011e46359de101d", + "file": "src/app/forgot/student/forgot-student-password/forgot-student-password.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./forgot-student-password.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "forgotStudentPasswordFormGroup", + "defaultValue": "this.fb.group({\n username: new FormControl('', [Validators.required])\n })", + "deprecated": false, + "deprecationMessage": "", + "type": "FormGroup", + "indexKey": "", + "optional": false, + "description": "", + "line": 39, + "modifierKind": [ + 124 + ] + }, + { + "name": "message", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 42, + "modifierKind": [ + 124 + ] + }, + { + "name": "processing", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 44, + "modifierKind": [ + 124 + ] + }, + { + "name": "showForgotUsernameLink", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 43, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "clearMessage", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 104, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "getControlFieldValue", + "args": [ + { + "name": "fieldName", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 80, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "fieldName", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getUsername", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 76, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "goToQuestionPage", + "args": [ + { + "name": "username", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "questionKey", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "question", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 88, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "username", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "questionKey", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "question", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setControlFieldValue", + "args": [ + { + "name": "name", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "value", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 84, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "name", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "value", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setUsernameNotFoundMessage", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 100, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "submit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 52, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatCard" + }, + { + "name": "MatCardContent" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "ReactiveFormsModule", + "type": "module" + }, + { + "name": "RouterLink" + }, + { + "name": "MatFormField" + }, + { + "name": "MatLabel" + }, + { + "name": "MatInput" + }, + { + "name": "MatError" + }, + { + "name": "MatButton" + }, + { + "name": "MatProgressBar" + }, + { + "name": "MatDivider" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport {\n FormBuilder,\n FormControl,\n FormGroup,\n Validators,\n FormsModule,\n ReactiveFormsModule\n} from '@angular/forms';\nimport { StudentService } from '../../../student/student.service';\nimport { Router, RouterLink } from '@angular/router';\nimport { finalize } from 'rxjs/operators';\nimport { MatDivider } from '@angular/material/divider';\nimport { MatProgressBar } from '@angular/material/progress-bar';\nimport { MatButton } from '@angular/material/button';\nimport { MatInput } from '@angular/material/input';\nimport { MatFormField, MatLabel, MatError } from '@angular/material/form-field';\nimport { MatCard, MatCardContent } from '@angular/material/card';\n\n@Component({\n templateUrl: './forgot-student-password.component.html',\n styleUrl: './forgot-student-password.component.scss',\n imports: [\n MatCard,\n MatCardContent,\n FormsModule,\n ReactiveFormsModule,\n RouterLink,\n MatFormField,\n MatLabel,\n MatInput,\n MatError,\n MatButton,\n MatProgressBar,\n MatDivider\n ]\n})\nexport class ForgotStudentPasswordComponent {\n protected forgotStudentPasswordFormGroup: FormGroup = this.fb.group({\n username: new FormControl('', [Validators.required])\n });\n protected message: string;\n protected showForgotUsernameLink: boolean = false;\n protected processing: boolean = false;\n\n constructor(\n private fb: FormBuilder,\n private router: Router,\n private studentService: StudentService\n ) {}\n\n submit(): void {\n this.processing = true;\n this.clearMessage();\n this.showForgotUsernameLink = false;\n const username = this.getUsername();\n this.studentService\n .getSecurityQuestion(username)\n .pipe(\n finalize(() => {\n this.processing = false;\n })\n )\n .subscribe((response) => {\n if (response.status === 'success') {\n this.goToQuestionPage(username, response.questionKey, response.question);\n } else {\n if (response.messageCode === 'usernameNotFound') {\n this.setUsernameNotFoundMessage();\n this.showForgotUsernameLink = true;\n }\n }\n });\n }\n\n getUsername() {\n return this.getControlFieldValue('username');\n }\n\n getControlFieldValue(fieldName) {\n return this.forgotStudentPasswordFormGroup.get(fieldName).value;\n }\n\n setControlFieldValue(name: string, value: string) {\n this.forgotStudentPasswordFormGroup.controls[name].setValue(value);\n }\n\n goToQuestionPage(username, questionKey, question) {\n const params = {\n username: username,\n questionKey: questionKey,\n question: question\n };\n this.router.navigate(['/forgot/student/password/security'], {\n queryParams: params,\n skipLocationChange: true\n });\n }\n\n private setUsernameNotFoundMessage(): void {\n this.message = $localize`We could not find that username. Please make sure you are typing it correctly and try again. If you have forgotten your username, please use the forgot username option below.`;\n }\n\n private clearMessage(): void {\n this.message = '';\n }\n}\n", + "styleUrl": "./forgot-student-password.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "fb", + "type": "FormBuilder", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentService", + "type": "StudentService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 44, + "jsdoctags": [ + { + "name": "fb", + "type": "FormBuilder", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentService", + "type": "StudentService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "\n \n
    \n

    Forgot Student Password

    \n @if (showForgotUsernameLink) {\n

    {{ message }}

    \n

    \n Forgot Student Username\n

    \n }\n

    \n \n Username\n \n @if (forgotStudentPasswordFormGroup.controls['username'].hasError('required')) {\n Username required\n }\n \n

    \n \n @if (processing) {\n \n }\n Submit\n \n \n
    \n \n \n

    \n Contact WISE\n

    \n

    \n Create New Account\n

    \n
    \n
    \n" + }, + { + "name": "ForgotStudentPasswordSecurityComponent", + "id": "component-ForgotStudentPasswordSecurityComponent-8d6c907e6d79b9c6d6bbf7d664002f11bf9283dd98d4c56931cb6eea97ce4b2c1cf9bd069d276cd04f9d0ee5d48db002de75b6564a0e40a9b9d5366638c9c821", + "file": "src/app/forgot/student/forgot-student-password-security/forgot-student-password-security.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./forgot-student-password-security.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "question", + "deprecated": false, + "deprecationMessage": "", + "line": 48, + "type": "string", + "decorators": [] + }, + { + "name": "questionKey", + "deprecated": false, + "deprecationMessage": "", + "line": 49, + "type": "string", + "decorators": [] + }, + { + "name": "username", + "deprecated": false, + "deprecationMessage": "", + "line": 50, + "type": "string", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "answer", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 41, + "modifierKind": [ + 124 + ] + }, + { + "name": "answerSecurityQuestionFormGroup", + "defaultValue": "this.fb.group({\n answer: new FormControl('', [Validators.required])\n })", + "deprecated": false, + "deprecationMessage": "", + "type": "FormGroup", + "indexKey": "", + "optional": false, + "description": "", + "line": 42, + "modifierKind": [ + 124 + ] + }, + { + "name": "isRecaptchaEnabled", + "defaultValue": "this.configService.isRecaptchaEnabled()", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 45 + }, + { + "name": "message", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 46, + "modifierKind": [ + 124 + ] + }, + { + "name": "processing", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 47, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "clearMessage", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 120, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "getAnswer", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 108, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getControlFieldValue", + "args": [ + { + "name": "fieldName", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 112, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "fieldName", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "securityAnswerError", + "args": [ + { + "name": "response", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 95, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "response", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "securityAnswerSuccess", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "setControlFieldValue", + "args": [ + { + "name": "name", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "value", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 116, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "name", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "value", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "submit", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 60, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatCard" + }, + { + "name": "MatCardContent" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "ReactiveFormsModule", + "type": "module" + }, + { + "name": "MatFormField" + }, + { + "name": "MatLabel" + }, + { + "name": "MatInput" + }, + { + "name": "MatError" + }, + { + "name": "MatButton" + }, + { + "name": "MatProgressBar" + }, + { + "name": "MatDivider" + }, + { + "name": "RouterLink" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input } from '@angular/core';\nimport { Router, RouterLink } from '@angular/router';\nimport {\n FormBuilder,\n FormControl,\n FormGroup,\n Validators,\n FormsModule,\n ReactiveFormsModule\n} from '@angular/forms';\nimport { StudentService } from '../../../student/student.service';\nimport { finalize } from 'rxjs/operators';\nimport { ReCaptchaV3Service } from 'ng-recaptcha-2';\nimport { ConfigService } from '../../../services/config.service';\nimport { MatDivider } from '@angular/material/divider';\nimport { MatProgressBar } from '@angular/material/progress-bar';\nimport { MatButton } from '@angular/material/button';\nimport { MatInput } from '@angular/material/input';\nimport { MatFormField, MatLabel, MatError } from '@angular/material/form-field';\nimport { MatCard, MatCardContent } from '@angular/material/card';\n\n@Component({\n templateUrl: './forgot-student-password-security.component.html',\n styleUrl: './forgot-student-password-security.component.scss',\n imports: [\n MatCard,\n MatCardContent,\n FormsModule,\n ReactiveFormsModule,\n MatFormField,\n MatLabel,\n MatInput,\n MatError,\n MatButton,\n MatProgressBar,\n MatDivider,\n RouterLink\n ]\n})\nexport class ForgotStudentPasswordSecurityComponent {\n protected answer: string;\n protected answerSecurityQuestionFormGroup: FormGroup = this.fb.group({\n answer: new FormControl('', [Validators.required])\n });\n isRecaptchaEnabled: boolean = this.configService.isRecaptchaEnabled();\n protected message: string;\n protected processing: boolean = false;\n @Input() question: string;\n @Input() questionKey: string;\n @Input() username: string;\n\n constructor(\n private configService: ConfigService,\n private fb: FormBuilder,\n private recaptchaV3Service: ReCaptchaV3Service,\n private router: Router,\n private studentService: StudentService\n ) {}\n\n async submit() {\n this.processing = true;\n this.clearMessage();\n let token = '';\n if (this.isRecaptchaEnabled) {\n token = await this.recaptchaV3Service.execute('importantAction').toPromise();\n }\n this.studentService\n .checkSecurityAnswer(this.username, this.getAnswer(), token)\n .pipe(\n finalize(() => {\n this.processing = false;\n })\n )\n .subscribe((response) => {\n if (response.status === 'success') {\n this.securityAnswerSuccess();\n } else {\n this.securityAnswerError(response);\n }\n });\n }\n\n securityAnswerSuccess() {\n const params = {\n username: this.username,\n questionKey: this.questionKey,\n answer: this.getAnswer()\n };\n this.router.navigate(['/forgot/student/password/change'], {\n queryParams: params,\n skipLocationChange: true\n });\n }\n\n securityAnswerError(response: any): void {\n let message;\n switch (response.messageCode) {\n case 'incorrectAnswer':\n message = $localize`Incorrect answer, please try again. If you can't remember the answer to your security question, please ask your teacher to change your password or contact us for assistance.`;\n break;\n case 'recaptchaResponseInvalid':\n message = $localize`Recaptcha failed. Please reload the page and try again.`;\n break;\n }\n this.message = message;\n }\n\n getAnswer() {\n return this.getControlFieldValue('answer');\n }\n\n getControlFieldValue(fieldName) {\n return this.answerSecurityQuestionFormGroup.get(fieldName).value;\n }\n\n setControlFieldValue(name: string, value: string): void {\n this.answerSecurityQuestionFormGroup.controls[name].setValue(value);\n }\n\n private clearMessage(): void {\n this.message = '';\n }\n}\n", + "styleUrl": "./forgot-student-password-security.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "fb", + "type": "FormBuilder", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "recaptchaV3Service", + "type": "ReCaptchaV3Service", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentService", + "type": "StudentService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 50, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "fb", + "type": "FormBuilder", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "recaptchaV3Service", + "type": "ReCaptchaV3Service", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentService", + "type": "StudentService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "\n \n
    \n

    Answer Security Question

    \n @if (message) {\n

    {{ message }}

    \n }\n

    \n \n {{ question }}\n \n @if (answerSecurityQuestionFormGroup.controls['answer'].hasError('required')) {\n Answer required\n }\n \n

    \n @if (isRecaptchaEnabled) {\n

    \n This site is protected by reCAPTCHA and the Google\n Privacy Policy and\n Terms of Service apply.\n

    \n }\n

    \n \n @if (processing) {\n \n }\n Submit\n \n

    \n
    \n
    \n \n \n

    \n Contact WISE\n

    \n

    \n Create New Account\n

    \n
    \n
    \n" + }, + { + "name": "ForgotStudentUsernameComponent", + "id": "component-ForgotStudentUsernameComponent-e98dd8c5cee4bce2dcd81af16d7857598918d032025b47706676e71370161079c72fd1dbfb23adaca30cc7d55e489f13178b7ac399c3f9b1a1ed59188bbda062", + "file": "src/app/forgot/student/forgot-student-username/forgot-student-username.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./forgot-student-username.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "days", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 60 + }, + { + "name": "forgotStudentUsernameFormGroup", + "defaultValue": "this.fb.group({\n firstName: new FormControl('', [Validators.required]),\n lastName: new FormControl('', [Validators.required]),\n birthMonth: new FormControl('', [Validators.required]),\n birthDay: new FormControl({ value: '', disabled: true }, [Validators.required])\n })", + "deprecated": false, + "deprecationMessage": "", + "type": "FormGroup", + "indexKey": "", + "optional": false, + "description": "", + "line": 61 + }, + { + "name": "foundUsernames", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 67 + }, + { + "name": "isErrorMessage", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 69 + }, + { + "name": "message", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 68 + }, + { + "name": "months", + "defaultValue": "[\n { value: 1, text: $localize`01 (Jan)` },\n { value: 2, text: $localize`02 (Feb)` },\n { value: 3, text: $localize`03 (Mar)` },\n { value: 4, text: $localize`04 (Apr)` },\n { value: 5, text: $localize`05 (May)` },\n { value: 6, text: $localize`06 (Jun)` },\n { value: 7, text: $localize`07 (Jul)` },\n { value: 8, text: $localize`08 (Aug)` },\n { value: 9, text: $localize`09 (Sep)` },\n { value: 10, text: $localize`10 (Oct)` },\n { value: 11, text: $localize`11 (Nov)` },\n { value: 12, text: $localize`12 (Dec)` }\n ]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 46 + }, + { + "name": "processing", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 71 + }, + { + "name": "showSearchResults", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 70 + } + ], + "methodsClass": [ + { + "name": "clearMessage", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 132, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "getControlFieldValue", + "args": [ + { + "name": "fieldName", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 136, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "fieldName", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "loginWithUsername", + "args": [ + { + "name": "username", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 144, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "username", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 80, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "setBirthDayOptions", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 86, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "setControlFieldValue", + "args": [ + { + "name": "name", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "value", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 140, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "name", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "value", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setMessageForFoundUsernames", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 118, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "submit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 95, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatCard" + }, + { + "name": "MatCardContent" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "ReactiveFormsModule", + "type": "module" + }, + { + "name": "NgClass" + }, + { + "name": "MatButton" + }, + { + "name": "MatFormField" + }, + { + "name": "MatLabel" + }, + { + "name": "MatInput" + }, + { + "name": "MatError" + }, + { + "name": "MatSelect" + }, + { + "name": "MatOption" + }, + { + "name": "MatProgressBar" + }, + { + "name": "MatDivider" + }, + { + "name": "RouterLink" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, OnInit } from '@angular/core';\nimport {\n FormBuilder,\n FormControl,\n FormGroup,\n Validators,\n FormsModule,\n ReactiveFormsModule\n} from '@angular/forms';\nimport { Router, RouterLink } from '@angular/router';\nimport { UtilService } from '../../../services/util.service';\nimport { StudentService } from '../../../student/student.service';\nimport { finalize } from 'rxjs/operators';\nimport { MatDivider } from '@angular/material/divider';\nimport { MatProgressBar } from '@angular/material/progress-bar';\nimport { MatOption } from '@angular/material/core';\nimport { MatSelect } from '@angular/material/select';\nimport { MatInput } from '@angular/material/input';\nimport { MatFormField, MatLabel, MatError } from '@angular/material/form-field';\nimport { MatButton } from '@angular/material/button';\nimport { NgClass } from '@angular/common';\nimport { MatCard, MatCardContent } from '@angular/material/card';\n\n@Component({\n templateUrl: './forgot-student-username.component.html',\n styleUrl: './forgot-student-username.component.scss',\n imports: [\n MatCard,\n MatCardContent,\n FormsModule,\n ReactiveFormsModule,\n NgClass,\n MatButton,\n MatFormField,\n MatLabel,\n MatInput,\n MatError,\n MatSelect,\n MatOption,\n MatProgressBar,\n MatDivider,\n RouterLink\n ]\n})\nexport class ForgotStudentUsernameComponent implements OnInit {\n months: any[] = [\n { value: 1, text: $localize`01 (Jan)` },\n { value: 2, text: $localize`02 (Feb)` },\n { value: 3, text: $localize`03 (Mar)` },\n { value: 4, text: $localize`04 (Apr)` },\n { value: 5, text: $localize`05 (May)` },\n { value: 6, text: $localize`06 (Jun)` },\n { value: 7, text: $localize`07 (Jul)` },\n { value: 8, text: $localize`08 (Aug)` },\n { value: 9, text: $localize`09 (Sep)` },\n { value: 10, text: $localize`10 (Oct)` },\n { value: 11, text: $localize`11 (Nov)` },\n { value: 12, text: $localize`12 (Dec)` }\n ];\n days: string[] = [];\n forgotStudentUsernameFormGroup: FormGroup = this.fb.group({\n firstName: new FormControl('', [Validators.required]),\n lastName: new FormControl('', [Validators.required]),\n birthMonth: new FormControl('', [Validators.required]),\n birthDay: new FormControl({ value: '', disabled: true }, [Validators.required])\n });\n foundUsernames: string[] = [];\n message: string;\n isErrorMessage: boolean = false;\n showSearchResults: boolean = false;\n processing: boolean = false;\n\n constructor(\n private fb: FormBuilder,\n private router: Router,\n private utilService: UtilService,\n private studentService: StudentService\n ) {}\n\n ngOnInit() {\n this.forgotStudentUsernameFormGroup.controls['birthMonth'].valueChanges.subscribe((value) => {\n this.setBirthDayOptions();\n });\n }\n\n setBirthDayOptions() {\n const month = this.forgotStudentUsernameFormGroup.get('birthMonth').value;\n this.days = this.utilService.getDaysInMonth(month);\n if (this.days.length < this.forgotStudentUsernameFormGroup.get('birthDay').value) {\n this.forgotStudentUsernameFormGroup.controls['birthDay'].reset();\n }\n this.forgotStudentUsernameFormGroup.controls['birthDay'].enable();\n }\n\n submit() {\n this.clearMessage();\n if (this.forgotStudentUsernameFormGroup.valid) {\n this.processing = true;\n const firstName = this.getControlFieldValue('firstName');\n const lastName = this.getControlFieldValue('lastName');\n const birthMonth = parseInt(this.getControlFieldValue('birthMonth'));\n const birthDay = parseInt(this.getControlFieldValue('birthDay'));\n this.studentService\n .getStudentUsernames(firstName, lastName, birthMonth, birthDay)\n .pipe(\n finalize(() => {\n this.processing = false;\n })\n )\n .subscribe((response) => {\n this.foundUsernames = response;\n this.setMessageForFoundUsernames();\n this.showSearchResults = true;\n });\n }\n }\n\n setMessageForFoundUsernames() {\n const foundUsernamesCount = this.foundUsernames.length;\n if (foundUsernamesCount === 0) {\n this.message = $localize`We did not find any usernames that match the information you provided. Please make sure you entered your information correctly. If you can't find your account, ask a teacher for help or contact us for assistance.`;\n this.isErrorMessage = true;\n } else if (foundUsernamesCount === 1) {\n this.message = $localize`We found a username that matches. Select it to log in. If this username is not yours, ask a teacher for help or contact us for assistance.`;\n this.isErrorMessage = false;\n } else if (foundUsernamesCount > 1) {\n this.message = $localize`We found multiple usernames that match. If one of these is yours, select it to log in. If you can't find your account, ask a teacher for help or contact us for assistance.`;\n this.isErrorMessage = false;\n }\n }\n\n private clearMessage(): void {\n this.message = '';\n }\n\n getControlFieldValue(fieldName) {\n return this.forgotStudentUsernameFormGroup.get(fieldName).value;\n }\n\n setControlFieldValue(name: string, value: string): void {\n this.forgotStudentUsernameFormGroup.controls[name].setValue(value);\n }\n\n loginWithUsername(username: string): void {\n this.router.navigate(['/login', { username: username }]);\n }\n}\n", + "styleUrl": "./forgot-student-username.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "fb", + "type": "FormBuilder", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "utilService", + "type": "UtilService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentService", + "type": "StudentService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 71, + "jsdoctags": [ + { + "name": "fb", + "type": "FormBuilder", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "utilService", + "type": "UtilService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentService", + "type": "StudentService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "\n \n
    \n

    Forgot Student Username

    \n @if (showSearchResults) {\n

    {{ message }}

    \n @for (username of foundUsernames; track username) {\n

    \n \n {{ username }}\n \n

    \n }\n }\n

    \n \n First Name\n \n @if (forgotStudentUsernameFormGroup.controls['firstName'].hasError('required')) {\n First Name required\n }\n \n

    \n

    \n \n Last Name\n \n @if (forgotStudentUsernameFormGroup.controls['lastName'].hasError('required')) {\n Last Name required\n }\n \n

    \n

    \n \n Birthday (Month)\n \n @for (month of months; track month) {\n \n {{ month.text }}\n \n }\n \n @if (forgotStudentUsernameFormGroup.controls['birthMonth'].hasError('required')) {\n Month required\n }\n \n

    \n

    \n \n Birthday (Day)\n \n @for (day of days; track day) {\n \n {{ day }}\n \n }\n \n @if (forgotStudentUsernameFormGroup.controls['birthDay'].hasError('required')) {\n Day required\n }\n \n

    \n \n @if (processing) {\n \n }\n Search\n \n \n
    \n \n \n

    \n Contact WISE\n

    \n

    \n Create New Account\n

    \n
    \n
    \n" + }, + { + "name": "ForgotTeacherComponent", + "id": "component-ForgotTeacherComponent-9f8bfb3c75f0af715b06417f16516d97ea6a18c47e01df29ac52fabe28a67fcebe3f3d723338fad615802d539f5166d4accfb50fadf63e49e00f0a062b3a071e", + "file": "src/app/forgot/teacher/forgot-teacher/forgot-teacher.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./forgot-teacher.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [], + "methodsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CallToActionComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { CallToActionComponent } from '../../../modules/shared/call-to-action/call-to-action.component';\n\n@Component({\n imports: [CallToActionComponent],\n styleUrl: './forgot-teacher.component.scss',\n templateUrl: './forgot-teacher.component.html'\n})\nexport class ForgotTeacherComponent {}\n", + "styleUrl": "./forgot-teacher.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [], + "templateData": "

    Teacher Forgot Username or Password

    \n
    \n \n \n
    \n" + }, + { + "name": "ForgotTeacherPasswordChangeComponent", + "id": "component-ForgotTeacherPasswordChangeComponent-a99c2147478071aedb9cda5c2ba768f096a3971c17c4e749417737db3c72825e196cb3468663ef1c05cedaa1d82439551e2fab224c3bc332caf456cb59475cab", + "file": "src/app/forgot/teacher/forgot-teacher-password-change/forgot-teacher-password-change.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./forgot-teacher-password-change.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "username", + "defaultValue": "null", + "deprecated": false, + "deprecationMessage": "", + "line": 41, + "type": "string", + "decorators": [] + }, + { + "name": "verificationCode", + "deprecated": false, + "deprecationMessage": "", + "line": 42, + "type": "string", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "changePasswordFormGroup", + "defaultValue": "this.fb.group({})", + "deprecated": false, + "deprecationMessage": "", + "type": "FormGroup", + "indexKey": "", + "optional": false, + "description": "", + "line": 36 + }, + { + "name": "isSubmitButtonEnabled", + "defaultValue": "true", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 37, + "modifierKind": [ + 124 + ] + }, + { + "name": "message", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 38, + "modifierKind": [ + 124 + ] + }, + { + "name": "processing", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 39, + "modifierKind": [ + 124 + ] + }, + { + "name": "showForgotPasswordLink", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 40, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "changePasswordError", + "args": [ + { + "name": "error", + "type": "PasswordErrors", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 86, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "error", + "type": "PasswordErrors", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "changePasswordSuccess", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 82, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "clearMessage", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 162, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "disablePasswordInputs", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 166, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "disableSubmitButton", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 171, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "getConfirmNewPassword", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 120, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "getControlField", + "args": [ + { + "name": "fieldName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "AbstractControl", + "typeParameters": [], + "line": 126, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "fieldName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getControlFieldValue", + "args": [ + { + "name": "fieldName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 130, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "fieldName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getNewPassword", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 116, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "goToSuccessPage", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 175, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "isPasswordsMatch", + "args": [ + { + "name": "password", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "confirmPassword", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 138, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "password", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "confirmPassword", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngAfterViewChecked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 51, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "setControlFieldValue", + "args": [ + { + "name": "name", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "value", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 134, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "name", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "value", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setErrorOccurredMessage", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 158, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "setPasswordsDoNotMatchMessage", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 154, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "setTooManyVerificationCodeAttemptsMessage", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 150, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "setVerificationCodeExpiredMessage", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 142, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "setVerificationCodeIncorrectMessage", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 146, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "submit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 55, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatCard" + }, + { + "name": "MatCardContent" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "ReactiveFormsModule", + "type": "module" + }, + { + "name": "PasswordModule", + "type": "module" + }, + { + "name": "MatButton" + }, + { + "name": "MatProgressBar" + }, + { + "name": "RouterLink" + }, + { + "name": "MatDivider" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { ChangeDetectorRef, Component, Input } from '@angular/core';\nimport { Router, RouterLink } from '@angular/router';\nimport {\n AbstractControl,\n FormBuilder,\n FormGroup,\n FormsModule,\n ReactiveFormsModule\n} from '@angular/forms';\nimport { TeacherService } from '../../../teacher/teacher.service';\nimport { finalize } from 'rxjs/operators';\nimport { NewPasswordAndConfirmComponent } from '../../../password/new-password-and-confirm/new-password-and-confirm.component';\nimport { injectPasswordErrors } from '../../../common/password-helper';\nimport { PasswordErrors } from '../../../domain/password/password-errors';\nimport { MatDivider } from '@angular/material/divider';\nimport { MatProgressBar } from '@angular/material/progress-bar';\nimport { MatButton } from '@angular/material/button';\nimport { PasswordModule } from '../../../password/password.module';\nimport { MatCard, MatCardContent } from '@angular/material/card';\n\n@Component({\n imports: [\n MatCard,\n MatCardContent,\n FormsModule,\n ReactiveFormsModule,\n PasswordModule,\n MatButton,\n MatProgressBar,\n RouterLink,\n MatDivider\n ],\n templateUrl: './forgot-teacher-password-change.component.html'\n})\nexport class ForgotTeacherPasswordChangeComponent {\n changePasswordFormGroup: FormGroup = this.fb.group({});\n protected isSubmitButtonEnabled: boolean = true;\n protected message: string = '';\n protected processing: boolean = false;\n protected showForgotPasswordLink = false;\n @Input() username: string = null;\n @Input() verificationCode: string;\n\n constructor(\n private changeDetectorRef: ChangeDetectorRef,\n private fb: FormBuilder,\n private router: Router,\n private teacherService: TeacherService\n ) {}\n\n ngAfterViewChecked(): void {\n this.changeDetectorRef.detectChanges();\n }\n\n submit(): void {\n this.clearMessage();\n const newPassword = this.getNewPassword();\n const confirmNewPassword = this.getConfirmNewPassword();\n this.showForgotPasswordLink = false;\n if (this.isPasswordsMatch(newPassword, confirmNewPassword)) {\n this.processing = true;\n this.teacherService\n .changePassword(this.username, this.verificationCode, newPassword, confirmNewPassword)\n .pipe(\n finalize(() => {\n this.processing = false;\n })\n )\n .subscribe(\n () => {\n this.changePasswordSuccess();\n },\n (response) => {\n this.changePasswordError(response.error);\n }\n );\n } else {\n this.setPasswordsDoNotMatchMessage();\n }\n }\n\n private changePasswordSuccess(): void {\n this.goToSuccessPage();\n }\n\n private changePasswordError(error: PasswordErrors): void {\n switch (error.messageCode) {\n case 'tooManyVerificationCodeAttempts':\n this.setTooManyVerificationCodeAttemptsMessage();\n this.disablePasswordInputs();\n this.disableSubmitButton();\n this.showForgotPasswordLink = true;\n break;\n case 'verificationCodeExpired':\n this.setVerificationCodeExpiredMessage();\n this.disablePasswordInputs();\n this.disableSubmitButton();\n this.showForgotPasswordLink = true;\n break;\n case 'verificationCodeIncorrect':\n this.setVerificationCodeIncorrectMessage();\n break;\n case 'invalidPassword':\n injectPasswordErrors(this.changePasswordFormGroup, error);\n break;\n case 'passwordDoesNotMatch':\n this.changePasswordFormGroup\n .get(NewPasswordAndConfirmComponent.CONFIRM_NEW_PASSWORD_FORM_CONTROL_NAME)\n .setErrors({ passwordDoesNotMatch: true });\n break;\n default:\n this.setErrorOccurredMessage();\n }\n }\n\n private getNewPassword(): string {\n return this.getControlFieldValue(NewPasswordAndConfirmComponent.NEW_PASSWORD_FORM_CONTROL_NAME);\n }\n\n private getConfirmNewPassword(): string {\n return this.getControlFieldValue(\n NewPasswordAndConfirmComponent.CONFIRM_NEW_PASSWORD_FORM_CONTROL_NAME\n );\n }\n\n private getControlField(fieldName: string): AbstractControl {\n return this.changePasswordFormGroup.get(fieldName);\n }\n\n private getControlFieldValue(fieldName: string): string {\n return this.getControlField(fieldName).value;\n }\n\n setControlFieldValue(name: string, value: string) {\n this.changePasswordFormGroup.controls[name].setValue(value);\n }\n\n private isPasswordsMatch(password: string, confirmPassword: string): boolean {\n return password === confirmPassword;\n }\n\n private setVerificationCodeExpiredMessage(): void {\n this.message = $localize`The verification code has expired. Verification codes are valid for 10 minutes. Please go back to the Teacher Forgot Password page to generate a new one.`;\n }\n\n private setVerificationCodeIncorrectMessage(): void {\n this.message = $localize`The verification code is invalid. Please try again.`;\n }\n\n private setTooManyVerificationCodeAttemptsMessage(): void {\n this.message = $localize`You have submitted an invalid verification code too many times. For security reasons, we will lock the ability to change your password for 10 minutes. After 10 minutes, please go back to the Teacher Forgot Password page to generate a new verification code.`;\n }\n\n private setPasswordsDoNotMatchMessage(): void {\n this.message = $localize`Passwords do not match, please try again.`;\n }\n\n private setErrorOccurredMessage(): void {\n this.message = $localize`An error occurred. Please try again.`;\n }\n\n private clearMessage(): void {\n this.message = '';\n }\n\n private disablePasswordInputs(): void {\n this.getControlField('newPassword').disable();\n this.getControlField('confirmNewPassword').disable();\n }\n\n private disableSubmitButton(): void {\n this.isSubmitButtonEnabled = false;\n }\n\n private goToSuccessPage(): void {\n const params = {\n username: this.username\n };\n this.router.navigate(['/forgot/teacher/password/complete'], {\n queryParams: params,\n skipLocationChange: true\n });\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "changeDetectorRef", + "type": "ChangeDetectorRef", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "fb", + "type": "FormBuilder", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "teacherService", + "type": "TeacherService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 42, + "jsdoctags": [ + { + "name": "changeDetectorRef", + "type": "ChangeDetectorRef", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "fb", + "type": "FormBuilder", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "teacherService", + "type": "TeacherService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "\n \n
    \n

    Change Password

    \n \n \n @if (processing) {\n \n }\n Submit\n \n \n
    \n
    {{ message }}
    \n @if (showForgotPasswordLink) {\n

    \n Teacher Forgot Password\n

    \n }\n
    \n \n \n

    \n Contact WISE\n

    \n

    \n Create New Account\n

    \n
    \n
    \n" + }, + { + "name": "ForgotTeacherPasswordComponent", + "id": "component-ForgotTeacherPasswordComponent-b54624476fa46db061be513ac1589490265badf01c0436c97cac6a23b2f11075cd7b83299226ceaaca69a0c7fc55b3a570ba0c898799d2542419b3a7ff99cb2b", + "file": "src/app/forgot/teacher/forgot-teacher-password/forgot-teacher-password.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./forgot-teacher-password.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "forgotTeacherPasswordFormGroup", + "defaultValue": "this.fb.group({\n username: new FormControl('', [Validators.required])\n })", + "deprecated": false, + "deprecationMessage": "", + "type": "FormGroup", + "indexKey": "", + "optional": false, + "description": "", + "line": 40, + "modifierKind": [ + 124 + ] + }, + { + "name": "isRecaptchaEnabled", + "defaultValue": "this.configService.isRecaptchaEnabled()", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 43 + }, + { + "name": "message", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 44, + "modifierKind": [ + 124 + ] + }, + { + "name": "processing", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 46, + "modifierKind": [ + 124 + ] + }, + { + "name": "showForgotUsernameLink", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 45, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "clearMessage", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 119, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "getControlFieldValue", + "args": [ + { + "name": "fieldName", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 56, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "fieldName", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setControlFieldValue", + "args": [ + { + "name": "name", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "value", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 60, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "name", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "value", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "submit", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 64, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ] + }, + { + "name": "verificationCodeEmailError", + "args": [ + { + "name": "response", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 99, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "response", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "verificationCodeEmailSuccess", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 89, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatCard" + }, + { + "name": "MatCardContent" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "ReactiveFormsModule", + "type": "module" + }, + { + "name": "RouterLink" + }, + { + "name": "MatFormField" + }, + { + "name": "MatLabel" + }, + { + "name": "MatInput" + }, + { + "name": "MatError" + }, + { + "name": "MatButton" + }, + { + "name": "MatProgressBar" + }, + { + "name": "MatDivider" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { Router, RouterLink } from '@angular/router';\nimport {\n FormBuilder,\n FormControl,\n FormGroup,\n Validators,\n FormsModule,\n ReactiveFormsModule\n} from '@angular/forms';\nimport { TeacherService } from '../../../teacher/teacher.service';\nimport { finalize } from 'rxjs/operators';\nimport { ReCaptchaV3Service } from 'ng-recaptcha-2';\nimport { ConfigService } from '../../../services/config.service';\nimport { MatDivider } from '@angular/material/divider';\nimport { MatProgressBar } from '@angular/material/progress-bar';\nimport { MatButton } from '@angular/material/button';\nimport { MatInput } from '@angular/material/input';\nimport { MatFormField, MatLabel, MatError } from '@angular/material/form-field';\nimport { MatCard, MatCardContent } from '@angular/material/card';\n\n@Component({\n imports: [\n MatCard,\n MatCardContent,\n FormsModule,\n ReactiveFormsModule,\n RouterLink,\n MatFormField,\n MatLabel,\n MatInput,\n MatError,\n MatButton,\n MatProgressBar,\n MatDivider\n ],\n templateUrl: './forgot-teacher-password.component.html'\n})\nexport class ForgotTeacherPasswordComponent {\n protected forgotTeacherPasswordFormGroup: FormGroup = this.fb.group({\n username: new FormControl('', [Validators.required])\n });\n isRecaptchaEnabled: boolean = this.configService.isRecaptchaEnabled();\n protected message: string = '';\n protected showForgotUsernameLink: boolean = false;\n protected processing: boolean = false;\n\n constructor(\n private configService: ConfigService,\n private fb: FormBuilder,\n private recaptchaV3Service: ReCaptchaV3Service,\n private router: Router,\n private teacherService: TeacherService\n ) {}\n\n getControlFieldValue(fieldName) {\n return this.forgotTeacherPasswordFormGroup.get(fieldName).value;\n }\n\n setControlFieldValue(name: string, value: string) {\n this.forgotTeacherPasswordFormGroup.controls[name].setValue(value);\n }\n\n async submit() {\n this.processing = true;\n this.clearMessage();\n this.showForgotUsernameLink = false;\n const username = this.getControlFieldValue('username');\n let token = '';\n if (this.isRecaptchaEnabled) {\n token = await this.recaptchaV3Service.execute('importantAction').toPromise();\n }\n this.teacherService\n .getVerificationCodeEmail(username, token)\n .pipe(\n finalize(() => {\n this.processing = false;\n })\n )\n .subscribe((response) => {\n if (response.status === 'success') {\n this.verificationCodeEmailSuccess();\n } else {\n this.verificationCodeEmailError(response);\n }\n });\n }\n\n verificationCodeEmailSuccess() {\n const params = {\n username: this.getControlFieldValue('username')\n };\n this.router.navigate(['/forgot/teacher/password/verify'], {\n queryParams: params,\n skipLocationChange: true\n });\n }\n\n verificationCodeEmailError(response: any): void {\n let message;\n switch (response.messageCode) {\n case 'usernameNotFound':\n message = $localize`We could not find that username. Please make sure you are typing it correctly and try again. If you have forgotten your username, please use the forgot username option below.`;\n this.showForgotUsernameLink = true;\n break;\n case 'tooManyVerificationCodeAttempts':\n message = $localize`You have submitted an invalid verification code too many times. For security reasons, we will lock the ability to change your password for 10 minutes. After 10 minutes, you can try again.`;\n break;\n case 'failedToSendEmail':\n message = $localize`The server has encountered an error and was unable to send you an email. Please try again. If the error continues to occur, please contact us.`;\n break;\n case 'recaptchaResponseInvalid':\n message = $localize`Recaptcha failed. Please reload the page and try again.`;\n break;\n }\n this.message = message;\n }\n\n private clearMessage(): void {\n this.message = '';\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "fb", + "type": "FormBuilder", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "recaptchaV3Service", + "type": "ReCaptchaV3Service", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "teacherService", + "type": "TeacherService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 46, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "fb", + "type": "FormBuilder", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "recaptchaV3Service", + "type": "ReCaptchaV3Service", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "teacherService", + "type": "TeacherService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "\n \n
    \n

    Teacher Forgot Password

    \n @if (message) {\n

    {{ message }}

    \n

    \n @if (showForgotUsernameLink) {\n Forgot Teacher Username\n }\n

    \n }\n

    \n \n Username\n \n @if (forgotTeacherPasswordFormGroup.controls['username'].hasError('required')) {\n Username required\n }\n \n

    \n @if (isRecaptchaEnabled) {\n

    \n This site is protected by reCAPTCHA and the Google\n Privacy Policy and\n Terms of Service apply.\n

    \n }\n \n @if (processing) {\n \n }\n Submit\n \n \n
    \n \n \n

    \n Contact WISE\n

    \n

    \n Create New Account\n

    \n
    \n
    \n" + }, + { + "name": "ForgotTeacherPasswordVerifyComponent", + "id": "component-ForgotTeacherPasswordVerifyComponent-edbe120a509945a7b02094dcf493ec06e06829e9a0ab56879667af88d02764f56fb5528e6fd203ca4159230e4fff244c9816ea8ddd129bc5876dfb2ec7a2ec46", + "file": "src/app/forgot/teacher/forgot-teacher-password-verify/forgot-teacher-password-verify.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./forgot-teacher-password-verify.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "username", + "defaultValue": "null", + "deprecated": false, + "deprecationMessage": "", + "line": 38, + "type": "string", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "isSubmitButtonEnabled", + "defaultValue": "true", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 45, + "modifierKind": [ + 124 + ] + }, + { + "name": "isVerificationCodeInputEnabled", + "defaultValue": "true", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 44, + "modifierKind": [ + 124 + ] + }, + { + "name": "message", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 42, + "modifierKind": [ + 124 + ] + }, + { + "name": "processing", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 43, + "modifierKind": [ + 124 + ] + }, + { + "name": "showForgotPasswordLink", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 46, + "modifierKind": [ + 124 + ] + }, + { + "name": "verificationCodeFormGroup", + "defaultValue": "this.fb.group({\n verificationCode: new FormControl('', [Validators.required])\n })", + "deprecated": false, + "deprecationMessage": "", + "type": "FormGroup", + "indexKey": "", + "optional": false, + "description": "", + "line": 39, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "clearMessage", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 99, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "disableSubmitButton", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 107, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "disableVerificationCodeInput", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 103, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "getControlField", + "args": [ + { + "name": "fieldName", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 54, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "fieldName", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getControlFieldValue", + "args": [ + { + "name": "fieldName", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 58, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "fieldName", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "goToChangePasswordPage", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 111, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "setControlFieldValue", + "args": [ + { + "name": "name", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "value", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 62, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "name", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "value", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "submit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 66, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatCard" + }, + { + "name": "MatCardContent" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "ReactiveFormsModule", + "type": "module" + }, + { + "name": "MatFormField" + }, + { + "name": "MatLabel" + }, + { + "name": "MatInput" + }, + { + "name": "MatError" + }, + { + "name": "MatButton" + }, + { + "name": "MatProgressBar" + }, + { + "name": "RouterLink" + }, + { + "name": "MatDividerModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input } from '@angular/core';\nimport {\n FormBuilder,\n FormControl,\n FormGroup,\n Validators,\n FormsModule,\n ReactiveFormsModule\n} from '@angular/forms';\nimport { Router, RouterLink } from '@angular/router';\nimport { TeacherService } from '../../../teacher/teacher.service';\nimport { finalize } from 'rxjs/operators';\nimport { MatProgressBar } from '@angular/material/progress-bar';\nimport { MatButton } from '@angular/material/button';\nimport { MatInput } from '@angular/material/input';\nimport { MatFormField, MatLabel, MatError } from '@angular/material/form-field';\nimport { MatCard, MatCardContent } from '@angular/material/card';\nimport { MatDividerModule } from '@angular/material/divider';\n\n@Component({\n imports: [\n MatCard,\n MatCardContent,\n FormsModule,\n ReactiveFormsModule,\n MatFormField,\n MatLabel,\n MatInput,\n MatError,\n MatButton,\n MatProgressBar,\n RouterLink,\n MatDividerModule\n ],\n templateUrl: './forgot-teacher-password-verify.component.html'\n})\nexport class ForgotTeacherPasswordVerifyComponent {\n @Input() username: string = null;\n protected verificationCodeFormGroup: FormGroup = this.fb.group({\n verificationCode: new FormControl('', [Validators.required])\n });\n protected message: string;\n protected processing: boolean = false;\n protected isVerificationCodeInputEnabled: boolean = true;\n protected isSubmitButtonEnabled: boolean = true;\n protected showForgotPasswordLink: boolean = false;\n\n constructor(\n private fb: FormBuilder,\n private router: Router,\n private teacherService: TeacherService\n ) {}\n\n getControlField(fieldName) {\n return this.verificationCodeFormGroup.get(fieldName);\n }\n\n getControlFieldValue(fieldName) {\n return this.getControlField(fieldName).value;\n }\n\n setControlFieldValue(name: string, value: string) {\n this.verificationCodeFormGroup.controls[name].setValue(value);\n }\n\n submit(): void {\n this.processing = true;\n this.clearMessage();\n this.showForgotPasswordLink = false;\n const verificationCode = this.getControlFieldValue('verificationCode');\n this.teacherService\n .checkVerificationCode(this.username, verificationCode)\n .pipe(\n finalize(() => {\n this.processing = false;\n })\n )\n .subscribe((response) => {\n if (response.status === 'success') {\n this.goToChangePasswordPage();\n } else {\n if (response.messageCode === 'verificationCodeExpired') {\n this.message = $localize`The verification code has expired. Verification codes are valid for 10 minutes. Please go back to the Teacher Forgot Password page to generate a new one.`;\n this.disableVerificationCodeInput();\n this.disableSubmitButton();\n this.showForgotPasswordLink = true;\n } else if (response.messageCode === 'verificationCodeIncorrect') {\n this.message = $localize`The verification code is invalid. Please try again.`;\n } else if (response.messageCode === 'tooManyVerificationCodeAttempts') {\n this.message = $localize`You have submitted an invalid verification code too many times. For security reasons, we will lock the ability to change your password for 10 minutes. After 10 minutes, please go back to the Teacher Forgot Password page to generate a new verification code.`;\n this.disableVerificationCodeInput();\n this.disableSubmitButton();\n this.showForgotPasswordLink = true;\n }\n }\n });\n }\n\n private clearMessage(): void {\n this.message = '';\n }\n\n private disableVerificationCodeInput(): void {\n this.getControlField('verificationCode').disable();\n }\n\n private disableSubmitButton(): void {\n this.isSubmitButtonEnabled = false;\n }\n\n goToChangePasswordPage(): void {\n const params = {\n username: this.username,\n verificationCode: this.getControlFieldValue('verificationCode')\n };\n this.router.navigate(['/forgot/teacher/password/change'], {\n queryParams: params,\n skipLocationChange: true\n });\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "fb", + "type": "FormBuilder", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "teacherService", + "type": "TeacherService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 46, + "jsdoctags": [ + { + "name": "fb", + "type": "FormBuilder", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "teacherService", + "type": "TeacherService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "\n \n
    \n

    Enter Verification Code

    \n

    \n We have sent a verification code to your email. Please check your email and enter the\n verification code below.\n

    \n

    \n \n Verification Code\n \n @if (verificationCodeFormGroup.controls['verificationCode'].hasError('required')) {\n Verification Code required\n }\n \n

    \n \n @if (processing) {\n \n }\n Submit\n \n \n

    {{ message }}

    \n @if (showForgotPasswordLink) {\n

    \n Teacher Forgot Password\n

    \n }\n
    \n \n \n

    \n Contact WISE\n

    \n

    \n Create New Account\n

    \n
    \n
    \n" + }, + { + "name": "ForgotTeacherUsernameCompleteComponent", + "id": "component-ForgotTeacherUsernameCompleteComponent-d3ff8c848bcf6a479419e0136069eb76f8fcec64ce6a04a524fa3145c1ac31bc6d1c97f01139672b78131f30ccb6ce8e3ed808a11ddd2e9f5c3deb5d595021c1", + "file": "src/app/forgot/teacher/forgot-teacher-username-complete/forgot-teacher-username-complete.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./forgot-teacher-username-complete.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [], + "methodsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatCard" + }, + { + "name": "MatCardContent" + }, + { + "name": "MatAnchor" + }, + { + "name": "RouterLink" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { MatAnchor } from '@angular/material/button';\nimport { MatCard, MatCardContent } from '@angular/material/card';\n\n@Component({\n imports: [MatCard, MatCardContent, MatAnchor, RouterLink],\n templateUrl: './forgot-teacher-username-complete.component.html'\n})\nexport class ForgotTeacherUsernameCompleteComponent {}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [], + "templateData": "\n \n

    Email Sent

    \n

    \n Your username has been sent to your email. Once you have received your username, you can use\n the button below to sign in.\n

    \n Sign In\n
    \n
    \n" + }, + { + "name": "ForgotTeacherUsernameComponent", + "id": "component-ForgotTeacherUsernameComponent-821eb8b79a06edc2c6429296858a09d111290ff7a0c0d578b2fbdac5392196a98e4231c54dc0337c6c17d8ff9e0804856f6fa06fda461513bc660632e4debc8d", + "file": "src/app/forgot/teacher/forgot-teacher-username/forgot-teacher-username.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./forgot-teacher-username.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "forgotTeacherUsernameFormGroup", + "defaultValue": "this.fb.group({\n email: new FormControl('', [Validators.required, Validators.email])\n })", + "deprecated": false, + "deprecationMessage": "", + "type": "FormGroup", + "indexKey": "", + "optional": false, + "description": "", + "line": 38, + "modifierKind": [ + 124 + ] + }, + { + "name": "message", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 41, + "modifierKind": [ + 124 + ] + }, + { + "name": "processing", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 42, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "clearMessage", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 94, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "getControlFieldValue", + "args": [ + { + "name": "fieldName", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 50, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "fieldName", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getEmail", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 58, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "setControlFieldValue", + "args": [ + { + "name": "name", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "value", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 54, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "name", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "value", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setEmailNotFoundMessage", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 86, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "setFailedToSendEmailMessage", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 90, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "submit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 62, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatCard" + }, + { + "name": "MatCardContent" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "ReactiveFormsModule", + "type": "module" + }, + { + "name": "MatFormField" + }, + { + "name": "MatLabel" + }, + { + "name": "MatInput" + }, + { + "name": "MatError" + }, + { + "name": "MatButton" + }, + { + "name": "MatProgressBar" + }, + { + "name": "MatDivider" + }, + { + "name": "RouterLink" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport {\n FormBuilder,\n FormControl,\n FormGroup,\n Validators,\n FormsModule,\n ReactiveFormsModule\n} from '@angular/forms';\nimport { Router, RouterLink } from '@angular/router';\nimport { TeacherService } from '../../../teacher/teacher.service';\nimport { finalize } from 'rxjs/operators';\nimport { MatDivider } from '@angular/material/divider';\nimport { MatProgressBar } from '@angular/material/progress-bar';\nimport { MatButton } from '@angular/material/button';\nimport { MatInput } from '@angular/material/input';\nimport { MatFormField, MatLabel, MatError } from '@angular/material/form-field';\nimport { MatCard, MatCardContent } from '@angular/material/card';\n\n@Component({\n templateUrl: './forgot-teacher-username.component.html',\n imports: [\n MatCard,\n MatCardContent,\n FormsModule,\n ReactiveFormsModule,\n MatFormField,\n MatLabel,\n MatInput,\n MatError,\n MatButton,\n MatProgressBar,\n MatDivider,\n RouterLink\n ]\n})\nexport class ForgotTeacherUsernameComponent {\n protected forgotTeacherUsernameFormGroup: FormGroup = this.fb.group({\n email: new FormControl('', [Validators.required, Validators.email])\n });\n protected message: string = '';\n protected processing: boolean = false;\n\n constructor(\n private fb: FormBuilder,\n private router: Router,\n private teacherService: TeacherService\n ) {}\n\n getControlFieldValue(fieldName) {\n return this.forgotTeacherUsernameFormGroup.get(fieldName).value;\n }\n\n setControlFieldValue(name: string, value: string) {\n this.forgotTeacherUsernameFormGroup.controls[name].setValue(value);\n }\n\n getEmail() {\n return this.getControlFieldValue('email');\n }\n\n submit(): void {\n this.processing = true;\n this.clearMessage();\n const email = this.getEmail();\n this.teacherService\n .sendForgotUsernameEmail(email)\n .pipe(\n finalize(() => {\n this.processing = false;\n })\n )\n .subscribe((response) => {\n if (response.status === 'success') {\n this.router.navigate(['/forgot/teacher/username/complete']);\n } else {\n if (response.messageCode === 'emailNotFound') {\n this.setEmailNotFoundMessage();\n } else if (response.messageCode === 'failedToSendEmail') {\n this.setFailedToSendEmailMessage();\n }\n }\n });\n }\n\n private setEmailNotFoundMessage(): void {\n this.message = $localize`We did not find a WISE account associated with that email. Please make sure you have typed your email address correctly.`;\n }\n\n private setFailedToSendEmailMessage(): void {\n this.message = $localize`The server has encountered an error and was unable to send an email to you. Please try again. If the error continues to occur, please contact us.`;\n }\n\n private clearMessage(): void {\n this.message == '';\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "fb", + "type": "FormBuilder", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "teacherService", + "type": "TeacherService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 42, + "jsdoctags": [ + { + "name": "fb", + "type": "FormBuilder", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "teacherService", + "type": "TeacherService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "\n \n
    \n

    Forgot Teacher Username

    \n @if (message) {\n

    {{ message }}

    \n }\n

    \n \n Email\n \n @if (forgotTeacherUsernameFormGroup.controls['email'].hasError('required')) {\n Email required\n }\n \n

    \n \n @if (processing) {\n \n }\n Submit\n \n \n
    \n \n \n

    \n Contact WISE\n

    \n

    \n Create New Account\n

    \n
    \n
    \n" + }, + { + "name": "ForgotUserPasswordCompleteComponent", + "id": "component-ForgotUserPasswordCompleteComponent-5be80ee2c7c9135c93c68f3c534a805bfbb0cccb22d984ed2f204737052a7313a30500680e17417f5c30ffc5e48ecbc14c04ccf4b0509431e2bd5ebce10c5189", + "file": "src/app/forgot/forgot-user-password-complete/forgot-user-password-complete.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./forgot-user-password-complete.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "username", + "deprecated": false, + "deprecationMessage": "", + "line": 11, + "type": "string", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [], + "methodsClass": [ + { + "name": "goToLoginPage", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 15, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatCard" + }, + { + "name": "MatCardContent" + }, + { + "name": "MatButton" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { MatButton } from '@angular/material/button';\nimport { MatCard, MatCardContent } from '@angular/material/card';\n\n@Component({\n templateUrl: './forgot-user-password-complete.component.html',\n imports: [MatCard, MatCardContent, MatButton]\n})\nexport class ForgotUserPasswordCompleteComponent {\n @Input() username: string;\n\n constructor(private router: Router) {}\n\n protected goToLoginPage(): void {\n this.router.navigate(['/login', { username: this.username }]);\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 11, + "jsdoctags": [ + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "\n \n

    Password Changed

    \n

    Your password has been successfully changed.

    \n \n
    \n
    \n" + }, + { + "name": "GenerateImageDialogComponent", + "id": "component-GenerateImageDialogComponent-0ded27b074d11a15fdecbc678bcea960e9304b507eb302eeb954f16bc2cda789c7bffe12ba1e70626237ca5773a7242d797c7f699464f15e85628ab83a3c4aef", + "file": "src/assets/wise5/directives/generate-image-dialog/generate-image-dialog.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./generate-image-dialog.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "componentState", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 28, + "decorators": [ + { + "name": "Inject", + "stringifiedArguments": "MAT_DIALOG_DATA" + } + ], + "modifierKind": [ + 171, + 125 + ] + }, + { + "name": "destroyDoneRenderingComponentListenerTimeout", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 21, + "modifierKind": [ + 123 + ] + }, + { + "name": "doneRenderingComponentSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 22, + "modifierKind": [ + 123 + ] + }, + { + "name": "isFailedToImportWork", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 23, + "modifierKind": [ + 124 + ] + }, + { + "name": "isImportingWork", + "defaultValue": "true", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 24, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "closeDialog", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 84, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "generateImage", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 58, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getComponentService", + "args": [ + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 88, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 38, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "setDestroyTimeout", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 72, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "setFailedToImportWork", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 79, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "subscribeToDoneRenderingComponent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 43, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatProgressSpinner" + }, + { + "name": "MatButton" + }, + { + "name": "ComponentComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Inject, OnInit } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { Subscription } from 'rxjs';\nimport { ConceptMapService } from '../../components/conceptMap/conceptMapService';\nimport { DrawService } from '../../components/draw/drawService';\nimport { EmbeddedService } from '../../components/embedded/embeddedService';\nimport { GraphService } from '../../components/graph/graphService';\nimport { LabelService } from '../../components/label/labelService';\nimport { TableService } from '../../components/table/tableService';\nimport { NodeService } from '../../services/nodeService';\nimport { MatProgressSpinner } from '@angular/material/progress-spinner';\nimport { MatButton } from '@angular/material/button';\nimport { ComponentComponent } from '../../components/component/component.component';\n\n@Component({\n imports: [MatProgressSpinner, MatButton, ComponentComponent],\n styleUrl: './generate-image-dialog.component.scss',\n templateUrl: './generate-image-dialog.component.html'\n})\nexport class GenerateImageDialogComponent implements OnInit {\n private destroyDoneRenderingComponentListenerTimeout: any;\n private doneRenderingComponentSubscription: Subscription;\n protected isFailedToImportWork: boolean = false;\n protected isImportingWork: boolean = true;\n\n constructor(\n private conceptMapService: ConceptMapService,\n @Inject(MAT_DIALOG_DATA) public componentState: any,\n private dialogRef: MatDialogRef,\n private drawService: DrawService,\n private embeddedService: EmbeddedService,\n private graphService: GraphService,\n private labelService: LabelService,\n private nodeService: NodeService,\n private tableService: TableService\n ) {}\n\n ngOnInit(): void {\n this.subscribeToDoneRenderingComponent();\n this.setDestroyTimeout();\n }\n\n subscribeToDoneRenderingComponent(): void {\n this.doneRenderingComponentSubscription = this.nodeService.doneRenderingComponent$.subscribe(\n ({ nodeId, componentId }) => {\n if (\n nodeId == this.componentState.nodeId &&\n componentId == this.componentState.componentId\n ) {\n setTimeout(() => {\n this.generateImage();\n }, 2000);\n }\n }\n );\n }\n\n generateImage(): void {\n this.getComponentService(this.componentState.componentType)\n .generateImageFromRenderedComponentState(this.componentState)\n .then((image: any) => {\n clearTimeout(this.destroyDoneRenderingComponentListenerTimeout);\n this.doneRenderingComponentSubscription.unsubscribe();\n this.dialogRef.close(image);\n });\n }\n\n /*\n * Set a timeout to destroy the listener in case there is an error creating the image and\n * we don't get to destroying it after we generate the image.\n */\n setDestroyTimeout(): void {\n this.destroyDoneRenderingComponentListenerTimeout = setTimeout(() => {\n this.doneRenderingComponentSubscription.unsubscribe();\n this.setFailedToImportWork();\n }, 10000);\n }\n\n setFailedToImportWork(): void {\n this.isImportingWork = false;\n this.isFailedToImportWork = true;\n }\n\n closeDialog(): void {\n this.dialogRef.close();\n }\n\n getComponentService(componentType: string): any {\n switch (componentType) {\n case 'ConceptMap':\n return this.conceptMapService;\n case 'Draw':\n return this.drawService;\n case 'Embedded':\n return this.embeddedService;\n case 'Graph':\n return this.graphService;\n case 'Label':\n return this.labelService;\n case 'Table':\n return this.tableService;\n }\n }\n}\n", + "styleUrl": "./generate-image-dialog.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "conceptMapService", + "type": "ConceptMapService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialogRef", + "type": "MatDialogRef", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "drawService", + "type": "DrawService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "embeddedService", + "type": "EmbeddedService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "graphService", + "type": "GraphService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "labelService", + "type": "LabelService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "tableService", + "type": "TableService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 24, + "jsdoctags": [ + { + "name": "conceptMapService", + "type": "ConceptMapService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialogRef", + "type": "MatDialogRef", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "drawService", + "type": "DrawService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "embeddedService", + "type": "EmbeddedService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "graphService", + "type": "GraphService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "labelService", + "type": "LabelService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "tableService", + "type": "TableService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "
    \n @if (isImportingWork) {\n \n Importing Work...\n \n
    \n } @else if (isFailedToImportWork) {\n
    \n Error: Failed to import work.\n \n
    \n }\n\n\n" + }, + { + "name": "GettingStartedComponent", + "id": "component-GettingStartedComponent-a86ae1b34b21af2fb1c304303ddc4e90d74e790607bd7cfe8fffa55eef6a0fd2802dfca7df3fb84f416a8d7f294be916f997e5c7bad22f9e32752ba4ca0792f1", + "file": "src/app/help/faq/getting-started/getting-started.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./getting-started.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "contextPath", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 7, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "FaqComponent" + } + } + ], + "methodsClass": [ + { + "name": "ngAfterViewInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 20, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "FaqComponent" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 18, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "FaqComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CallToActionComponent", + "type": "component" + }, + { + "name": "MatDividerModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { FaqComponent } from '../faq.component';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { CallToActionComponent } from '../../../modules/shared/call-to-action/call-to-action.component';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n imports: [CallToActionComponent, MatDividerModule, MatIconModule],\n templateUrl: './getting-started.component.html'\n})\nexport class GettingStartedComponent extends FaqComponent {}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [ + "FaqComponent" + ], + "templateData": "
    \n

    \n infoGetting Started\n

    \n \n

    Creating an Account

    \n

    \n All users must create their own account. Teachers must create a teacher account and students\n must create a student account. Users can create an account by going to the\n WISE Home Page and clicking on the\n Register link at the upper right of the\n screen.\n

    \n

    Here are instructions on how to create a teacher account.

    \n
      \n
    1. Go to the WISE Home Page.
    2. \n
    3. \n Click the Register link at the upper\n right of the screen.\n
    4. \n
    5. Click on Teacher.
    6. \n
    7. Choose to sign up with your email or with your Google Account.
    8. \n
    9. Fill out the form and submit it.
    10. \n
    11. \n If you created an account using your email, you will be given a username that you will need to\n remember. Your username will be your first name and your last name with no space inbetween.\n There may be a number added at the end of your username if someone has the same name as you.\n
    12. \n
    \n \n

    Using a WISE Unit

    \n

    \n To use a WISE unit with your class, you must first choose a unit to use and then set up a \"Run\"\n of that unit.\n

    \n

    Here are instructions on how to set up a Run.

    \n
      \n
    1. Sign in to WISE with your teacher account.
    2. \n
    3. Click the \"Unit Library\" tab.
    4. \n
    5. Find a project that you would like to use with your class.
    6. \n
    7. Click on the project to open the information for the project.
    8. \n
    9. Click the \"Use With Class\" button.
    10. \n
    11. Choose the periods you will use the project in.
    12. \n
    13. \n Choose the number of students per team. Choosing 1-3 will allow students to work together in a\n team.\n
    14. \n
    15. \n Choose the start date. Students will not be able to use the project until this date.\n
    16. \n
    17. Click \"Create Run\".
    18. \n
    19. The run will be created and added to your Teacher Home.
    20. \n
    21. \n Copy the \"Access Code\" for the new run and write it down somewhere like on the white board.\n Students will need to use this access code to work on the run you created.\n
    22. \n
    \n
    \n
    \n
    \n
    \n \n \n
    \n
    \n" + }, + { + "name": "GoogleSignInButtonComponent", + "id": "component-GoogleSignInButtonComponent-6e84311e018f73de238ce12300dfd09e0fb2c0a829ec5d144e2ca3bd74171cffe14a72a93a49180d7369cebc1d03f47c2f85aeac28267194e0cea5ef1334aacb", + "file": "src/app/modules/google-sign-in/google-sign-in-button/google-sign-in-button.component.ts", + "encapsulation": [ + "ViewEncapsulation.None" + ], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "google-sign-in-button", + "styleUrls": [], + "styles": [], + "template": "
    ", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "text", + "defaultValue": "'signin_with'", + "deprecated": false, + "deprecationMessage": "", + "line": 26, + "type": "string", + "decorators": [] + } + ], + "outputsClass": [ + { + "name": "signedIn", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 25, + "type": "EventEmitter" + } + ], + "propertiesClass": [ + { + "name": "googleButton", + "deprecated": false, + "deprecationMessage": "", + "type": "ElementRef", + "indexKey": "", + "optional": false, + "description": "", + "line": 24, + "decorators": [ + { + "name": "ViewChild", + "stringifiedArguments": "'googleButton'" + } + ], + "modifierKind": [ + 171, + 123 + ] + } + ], + "methodsClass": [ + { + "name": "ngAfterViewInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 33, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "declare var google: any;\nimport {\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n NgZone,\n Output,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport jwt_decode from 'jwt-decode';\nimport { ConfigService } from '../../../services/config.service';\nimport { GoogleUser } from '../GoogleUser';\n\n@Component({\n encapsulation: ViewEncapsulation.None,\n selector: 'google-sign-in-button',\n styleUrl: 'google-sign-in-button.component.scss',\n template: '
    '\n})\nexport class GoogleSignInButtonComponent implements AfterViewInit {\n @ViewChild('googleButton') private googleButton: ElementRef;\n @Output() signedIn = new EventEmitter();\n @Input() text: string = 'signin_with';\n\n constructor(\n private configService: ConfigService,\n private ngZone: NgZone\n ) {}\n\n ngAfterViewInit(): void {\n google.accounts.id.initialize({\n client_id: this.configService.getGoogleClientId(),\n callback: ({ credential }) => {\n this.ngZone.run(() => {\n this.signedIn.emit(jwt_decode(credential));\n });\n }\n });\n google.accounts.id.renderButton(this.googleButton.nativeElement, {\n text: this.text,\n theme: 'filled_blue',\n size: 'medium'\n });\n }\n}\n", + "styleUrl": "google-sign-in-button.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngZone", + "type": "NgZone", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 26, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "ngZone", + "type": "NgZone", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "AfterViewInit" + ] + }, + { + "name": "GradingEditComponentMaxScoreComponent", + "id": "component-GradingEditComponentMaxScoreComponent-918a8c8fc623b1fd73c82a0f05eaa5e3a4bc1b8079c542a8a208933e330bb74e9ab26cacd438952cfd246002535ce60709a65e5158688078391c42cb90c6563d", + "file": "src/assets/wise5/classroomMonitor/classroomMonitorComponents/grading-edit-component-max-score/grading-edit-component-max-score.component.ts", + "encapsulation": [ + "ViewEncapsulation.None" + ], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "grading-edit-component-max-score", + "styleUrls": [], + "styles": [ + "\n /* TODO(mdc-migration): The following rule targets internal classes of form-field that may no longer apply for the MDC version. */\n .mat-form-field-infix {\n width: inherit;\n }\n " + ], + "templateUrl": [ + "grading-edit-component-max-score.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "line": 24, + "type": "string", + "decorators": [] + }, + { + "name": "disabled", + "deprecated": false, + "deprecationMessage": "", + "line": 25, + "type": "boolean", + "decorators": [] + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 28, + "type": "string", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "maxScore", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 26 + }, + { + "name": "maxScoreChanged", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 27 + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 29, + "modifierKind": [ + 123 + ] + } + ], + "methodsClass": [ + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 42, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 33, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "saveMaxScore", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 46, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatInputModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { Subject, Subscription } from 'rxjs';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport { TeacherProjectService } from '../../../services/teacherProjectService';\nimport { FormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\n\n@Component({\n imports: [FormsModule, MatFormFieldModule, MatInputModule],\n selector: 'grading-edit-component-max-score',\n styles: [\n `\n /* TODO(mdc-migration): The following rule targets internal classes of form-field that may no longer apply for the MDC version. */\n .mat-form-field-infix {\n width: inherit;\n }\n `\n ],\n templateUrl: 'grading-edit-component-max-score.component.html',\n encapsulation: ViewEncapsulation.None\n})\nexport class GradingEditComponentMaxScoreComponent {\n @Input() componentId: string;\n @Input() disabled: boolean;\n maxScore: number;\n maxScoreChanged: Subject = new Subject();\n @Input() nodeId: string;\n private subscriptions: Subscription = new Subscription();\n\n constructor(private projectService: TeacherProjectService) {}\n\n ngOnInit(): void {\n this.maxScore = this.projectService.getMaxScoreForComponent(this.nodeId, this.componentId) || 0;\n this.subscriptions.add(\n this.maxScoreChanged.pipe(debounceTime(1000), distinctUntilChanged()).subscribe(() => {\n this.saveMaxScore();\n })\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n saveMaxScore(): void {\n const maxScore = Number(this.maxScore);\n if (maxScore >= 0) {\n this.projectService.getNode(this.nodeId).getComponent(this.componentId).maxScore = maxScore;\n this.projectService.saveProject();\n this.maxScore = this.maxScore || 0;\n }\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "\n /* TODO(mdc-migration): The following rule targets internal classes of form-field that may no longer apply for the MDC version. */\n .mat-form-field-infix {\n width: inherit;\n }\n \n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 29, + "jsdoctags": [ + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "\n \n\n" + }, + { + "name": "GradingStepToolsComponent", + "id": "component-GradingStepToolsComponent-61561e29574587a94efcf1d947fc9213be615b95427580e24b3c204796d8f84b120ffaccff01985e95e7a81ea7d0344d8675fcdd2d3192df9c83db670bc243b8", + "file": "src/assets/wise5/classroomMonitor/classroomMonitorComponents/grading-step-tools/grading-step-tools.component.ts", + "encapsulation": [ + "ViewEncapsulation.None" + ], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "grading-step-tools", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "../../../common/stepTools/step-tools.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "icons", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 35, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "StepToolsComponent" + } + }, + { + "name": "nextId", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 36, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "StepToolsComponent" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 37, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "StepToolsComponent" + } + }, + { + "name": "nodeIds", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 38, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "StepToolsComponent" + } + }, + { + "name": "prevId", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 39, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "StepToolsComponent" + } + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 40, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "StepToolsComponent" + } + } + ], + "methodsClass": [ + { + "name": "calculateNodeIds", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 82, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "StepToolsComponent" + } + }, + { + "name": "getNextNodeId", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 90, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "StepToolsComponent" + } + }, + { + "name": "getNodeId", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 52, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "StepToolsComponent" + } + }, + { + "name": "goToNextNode", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 65, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "StepToolsComponent" + } + }, + { + "name": "goToPrevNode", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 60, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "StepToolsComponent" + } + }, + { + "name": "navigateToNode", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 71, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 47, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "StepToolsComponent" + } + }, + { + "name": "nodeChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 56, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "StepToolsComponent" + } + }, + { + "name": "getNodePositionAndTitle", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 109, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "StepToolsComponent" + } + }, + { + "name": "getPrevNodeId", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 101, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "StepToolsComponent" + } + }, + { + "name": "isGroupNode", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 113, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "StepToolsComponent" + } + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 69, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "StepToolsComponent" + } + }, + { + "name": "updateModel", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 82, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "StepToolsComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatInputModule", + "type": "module" + }, + { + "name": "MatSelectModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + }, + { + "name": "NodeIconComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, ViewEncapsulation } from '@angular/core';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { StepToolsComponent } from '../../../common/stepTools/step-tools.component';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { MatInputModule } from '@angular/material/input';\nimport { NodeIconComponent } from '../../../vle/node-icon/node-icon.component';\nimport { TeacherDataService } from '../../../services/teacherDataService';\nimport { GradingNodeService } from '../../../services/gradingNodeService';\nimport { TeacherProjectService } from '../../../services/teacherProjectService';\nimport { ActivatedRoute, Router } from '@angular/router';\n\n@Component({\n encapsulation: ViewEncapsulation.None,\n imports: [\n CommonModule,\n FormsModule,\n MatButtonModule,\n MatFormFieldModule,\n MatIconModule,\n MatInputModule,\n MatSelectModule,\n MatTooltipModule,\n NodeIconComponent\n ],\n selector: 'grading-step-tools',\n styleUrl: '../../../common/stepTools/step-tools.component.scss',\n templateUrl: '../../../common/stepTools/step-tools.component.html'\n})\nexport class GradingStepToolsComponent extends StepToolsComponent {\n constructor(\n protected dataService: TeacherDataService,\n protected dir: Directionality,\n protected nodeService: GradingNodeService,\n protected projectService: TeacherProjectService,\n private route: ActivatedRoute,\n private router: Router\n ) {\n super(dataService, dir, nodeService, projectService);\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n this.dataService.setCurrentNodeByNodeId(this.getNodeId());\n }\n\n protected getNodeId(): string {\n return this.route.firstChild.snapshot.params['nodeId'];\n }\n\n protected nodeChanged(): void {\n this.navigateToNode(this.nodeId);\n }\n\n protected goToPrevNode(): void {\n super.goToPrevNode();\n this.navigateToNode(this.nodeId);\n }\n\n protected goToNextNode(): Promise {\n return super.goToNextNode().then(() => {\n this.navigateToNode(this.nodeId);\n });\n }\n\n private navigateToNode(nodeId: string): void {\n this.router\n .navigate(['node', nodeId], {\n relativeTo: this.route\n })\n .then(() => {\n this.dataService.setCurrentNodeByNodeId(nodeId);\n this.updateModel();\n });\n }\n\n protected calculateNodeIds(): void {\n this.nodeIds = Object.keys(this.projectService.idToOrder);\n this.nodeIds = this.nodeIds.filter((nodeId) => {\n return this.isGroupNode(nodeId) || this.projectService.nodeHasWork(nodeId);\n });\n this.nodeIds.shift(); // remove the 'group0' master root node from consideration\n }\n\n protected getNextNodeId(): Promise {\n return Promise.resolve(this.nodeService.getNextNodeId(this.nodeId));\n }\n}\n", + "styleUrl": "../../../common/stepTools/step-tools.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dir", + "type": "Directionality", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeService", + "type": "GradingNodeService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 35, + "jsdoctags": [ + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dir", + "type": "Directionality", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeService", + "type": "GradingNodeService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "StepToolsComponent" + ], + "templateData": "
    \n \n {{ icons.prev }}\n \n @if (nodeId) {\n \n }\n  \n \n \n \n @if (nodeId) {\n {{ getNodePositionAndTitle(nodeId) }}\n } @else {\n Select a Step \n }\n \n @for (nodeId of nodeIds; track nodeId) {\n \n
    \n \n {{\n getNodePositionAndTitle(nodeId)\n }}\n
    \n
    \n }\n \n
    \n \n {{ icons.next }}\n \n
    \n" + }, + { + "name": "GraphAuthoring", + "id": "component-GraphAuthoring-bfd384739d3693d2e1f7d3ab11161eb0c19587895c43d48128d92ae13db5d0b3a26e092e1b70bb7b7238b45074bfcf607c088a9249e283811a353025fa8c978d", + "file": "src/assets/wise5/components/graph/graph-authoring/graph-authoring.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "graph-authoring", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "graph-authoring.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "availableGraphTypes", + "defaultValue": "[\n {\n value: 'line',\n text: $localize`Line Plot`\n },\n {\n value: 'column',\n text: $localize`Column Plot`\n },\n {\n value: 'scatter',\n text: $localize`Scatter Plot`\n }\n ]", + "deprecated": false, + "deprecationMessage": "", + "type": "[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 44 + }, + { + "name": "availableLineTypes", + "defaultValue": "[\n {\n value: 'Solid',\n text: $localize`Solid`\n },\n {\n value: 'Dash',\n text: $localize`Dash`\n },\n {\n value: 'Dot',\n text: $localize`Dot`\n },\n {\n value: 'ShortDash',\n text: $localize`Short Dash`\n },\n {\n value: 'ShortDot',\n text: $localize`Short Dot`\n }\n ]", + "deprecated": false, + "deprecationMessage": "", + "type": "[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 112 + }, + { + "name": "availableRoundingOptions", + "defaultValue": "[\n {\n value: null,\n text: $localize`No Rounding`\n },\n {\n value: 'integer',\n text: $localize`Integer (example 1)`\n },\n {\n value: 'tenth',\n text: $localize`Tenth (exapmle 0.1)`\n },\n {\n value: 'hundredth',\n text: $localize`Hundredth (example 0.01)`\n }\n ]", + "deprecated": false, + "deprecationMessage": "", + "type": "[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 59 + }, + { + "name": "availableSeriesTypes", + "defaultValue": "[\n {\n value: 'line',\n text: $localize`Line`\n },\n {\n value: 'scatter',\n text: $localize`Point`\n }\n ]", + "deprecated": false, + "deprecationMessage": "", + "type": "[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 101 + }, + { + "name": "availableSymbols", + "defaultValue": "[\n {\n value: 'circle',\n text: $localize`Circle`\n },\n {\n value: 'square',\n text: $localize`Square`\n },\n {\n value: 'triangle',\n text: $localize`Triangle`\n },\n {\n value: 'triangle-down',\n text: $localize`Triangle Down`\n },\n {\n value: 'diamond',\n text: $localize`Diamond`\n }\n ]", + "deprecated": false, + "deprecationMessage": "", + "type": "[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 78 + }, + { + "name": "availableXAxisTypes", + "defaultValue": "[\n {\n value: 'limits',\n text: $localize`Limits`\n },\n {\n value: 'categories',\n text: $localize`Categories`\n }\n ]", + "deprecated": false, + "deprecationMessage": "", + "type": "[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 135 + }, + { + "name": "defaultDashStyle", + "defaultValue": "'Solid'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 152 + }, + { + "name": "enableMultipleYAxes", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 153 + }, + { + "name": "numYAxes", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 154 + }, + { + "name": "plotTypeToLimitType", + "defaultValue": "{\n line: 'limits',\n scatter: 'limits',\n column: 'categories'\n }", + "deprecated": false, + "deprecationMessage": "", + "type": "object", + "indexKey": "", + "optional": false, + "description": "", + "line": 146 + }, + { + "name": "allowedConnectedComponentTypes", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "idToOrder", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "inputChange", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "promptChange", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + } + ], + "methodsClass": [ + { + "name": "addAnyMissingYAxisFields", + "args": [ + { + "name": "yAxis", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 507, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "yAxis", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addAnyMissingYAxisFieldsToAllYAxes", + "args": [ + { + "name": "yAxis", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 499, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "yAxis", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addColorToField", + "args": [ + { + "name": "field", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "color", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 422, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "field", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "color", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addColorToSeries", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 428, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "addColorToYAxes", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 413, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "addSeriesClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 175, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "addSeriesDataPoint", + "args": [ + { + "name": "series", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 256, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "series", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addXAxisCategory", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 234, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "addYAxisToAllSeries", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 401, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "changeXAxisTypeIfNecessary", + "args": [ + { + "name": "graphType", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 555, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "graphType", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "convertAllSeriesDataPoints", + "args": [ + { + "name": "xAxisType", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 317, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "xAxisType", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "convertMultipleYAxesToSingleYAxis", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 397, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "convertSeriesDataPoints", + "args": [ + { + "name": "series", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "xAxisType", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 324, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "series", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "xAxisType", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "convertSingleYAxisToMultipleYAxes", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 366, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "createNewSeries", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 191, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "createYAxisObject", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 374, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "customTrackBy", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 577, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "decreaseYAxes", + "args": [ + { + "name": "newNumYAxes", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 466, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "newNumYAxes", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "deleteSeriesClicked", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 202, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "deleteSeriesDataPoint", + "args": [ + { + "name": "series", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 270, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "series", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "deleteXAxisCategory", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 239, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "enableMultipleYAxesChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 346, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "enableTrialsClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 222, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getYAxisColor", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 438, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "graphTypeChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 540, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "increaseYAxes", + "args": [ + { + "name": "newNumYAxes", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 458, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "newNumYAxes", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isYAxisIndexExists", + "args": [ + { + "name": "yAxisIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 479, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "yAxisIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "moveSeriesDataPointDown", + "args": [ + { + "name": "series", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 288, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "series", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "moveSeriesDataPointUp", + "args": [ + { + "name": "series", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 279, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "series", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 166, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "numYAxesChanged", + "args": [ + { + "name": "newValue", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "oldValue", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 442, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "newValue", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "oldValue", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "removeYAxisFromAllSeries", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 407, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "seriesTypeChanged", + "args": [ + { + "name": "series", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 564, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "series", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "seriesYAxisChanged", + "args": [ + { + "name": "series", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 534, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "series", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setSeriesColorToMatchYAxisColor", + "args": [ + { + "name": "series", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 434, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "series", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "updateAllSeriesPlotTypes", + "args": [ + { + "name": "plotType", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 547, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "plotType", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "updateDashStyleField", + "args": [ + { + "name": "series", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 569, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "series", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "updateSeriesColors", + "args": [ + { + "name": "yAxisIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "color", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 491, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "yAxisIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "color", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "updateSeriesYAxesIfNecessary", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 470, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "xAxisTypeChanged", + "args": [ + { + "name": "newValue", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "oldValue", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 297, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "newValue", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "oldValue", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "yAxisColorChanged", + "args": [ + { + "name": "yAxisIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 483, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "yAxisIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "assetSelected", + "args": [ + { + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 100, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "componentChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 73, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "confirmAndRemove", + "args": [ + { + "name": "message", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "array", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 110, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "message", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "array", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "deleteStarterState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 81, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "getComponent", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 106, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "getComponents", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 102, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "isForThisComponent", + "args": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 77, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "moveObjectDown", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 122, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "moveObjectUp", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 117, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 65, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "promptChanged", + "args": [ + { + "name": "prompt", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 69, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "prompt", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "saveStarterState", + "args": [ + { + "name": "starterState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "starterState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "setShowSubmitButtonValue", + "args": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 85, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "EditComponentPrompt", + "type": "component" + }, + { + "name": "TranslatableInputComponent", + "type": "component" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatSelectModule", + "type": "module" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatInput" + }, + { + "name": "MatCheckbox" + }, + { + "name": "MatButton" + }, + { + "name": "MatTooltip" + }, + { + "name": "MatIcon" + }, + { + "name": "MatSlideToggle" + }, + { + "name": "MatRadioModule", + "type": "module" + }, + { + "name": "TranslatableAssetChooserComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatButton } from '@angular/material/button';\nimport { MatCheckbox } from '@angular/material/checkbox';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInput } from '@angular/material/input';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatSlideToggle } from '@angular/material/slide-toggle';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { EditComponentPrompt } from '../../../../../app/authoring-tool/edit-component-prompt/edit-component-prompt.component';\nimport { ProjectAssetService } from '../../../../../app/services/projectAssetService';\nimport { AbstractComponentAuthoring } from '../../../authoringTool/components/AbstractComponentAuthoring';\nimport { TranslatableAssetChooserComponent } from '../../../authoringTool/components/translatable-asset-chooser/translatable-asset-chooser.component';\nimport { TranslatableInputComponent } from '../../../authoringTool/components/translatable-input/translatable-input.component';\nimport { ConfigService } from '../../../services/configService';\nimport { TeacherNodeService } from '../../../services/teacherNodeService';\nimport { TeacherProjectService } from '../../../services/teacherProjectService';\nimport { GraphService } from '../graphService';\nimport { isMultipleYAxes } from '../util';\n\n@Component({\n selector: 'graph-authoring',\n templateUrl: 'graph-authoring.component.html',\n styleUrl: 'graph-authoring.component.scss',\n imports: [\n EditComponentPrompt,\n TranslatableInputComponent,\n MatFormFieldModule,\n MatSelectModule,\n FormsModule,\n MatInput,\n MatCheckbox,\n MatButton,\n MatTooltip,\n MatIcon,\n MatSlideToggle,\n MatRadioModule,\n TranslatableAssetChooserComponent\n ]\n})\nexport class GraphAuthoring extends AbstractComponentAuthoring {\n availableGraphTypes = [\n {\n value: 'line',\n text: $localize`Line Plot`\n },\n {\n value: 'column',\n text: $localize`Column Plot`\n },\n {\n value: 'scatter',\n text: $localize`Scatter Plot`\n }\n ];\n\n availableRoundingOptions = [\n {\n value: null,\n text: $localize`No Rounding`\n },\n {\n value: 'integer',\n text: $localize`Integer (example 1)`\n },\n {\n value: 'tenth',\n text: $localize`Tenth (exapmle 0.1)`\n },\n {\n value: 'hundredth',\n text: $localize`Hundredth (example 0.01)`\n }\n ];\n\n availableSymbols = [\n {\n value: 'circle',\n text: $localize`Circle`\n },\n {\n value: 'square',\n text: $localize`Square`\n },\n {\n value: 'triangle',\n text: $localize`Triangle`\n },\n {\n value: 'triangle-down',\n text: $localize`Triangle Down`\n },\n {\n value: 'diamond',\n text: $localize`Diamond`\n }\n ];\n\n availableSeriesTypes = [\n {\n value: 'line',\n text: $localize`Line`\n },\n {\n value: 'scatter',\n text: $localize`Point`\n }\n ];\n\n availableLineTypes = [\n {\n value: 'Solid',\n text: $localize`Solid`\n },\n {\n value: 'Dash',\n text: $localize`Dash`\n },\n {\n value: 'Dot',\n text: $localize`Dot`\n },\n {\n value: 'ShortDash',\n text: $localize`Short Dash`\n },\n {\n value: 'ShortDot',\n text: $localize`Short Dot`\n }\n ];\n\n availableXAxisTypes = [\n {\n value: 'limits',\n text: $localize`Limits`\n },\n {\n value: 'categories',\n text: $localize`Categories`\n }\n ];\n\n plotTypeToLimitType = {\n line: 'limits',\n scatter: 'limits',\n column: 'categories'\n };\n\n defaultDashStyle: string = 'Solid';\n enableMultipleYAxes: boolean = false;\n numYAxes: number = 0;\n\n constructor(\n protected configService: ConfigService,\n private graphService: GraphService,\n protected nodeService: TeacherNodeService,\n protected projectAssetService: ProjectAssetService,\n protected projectService: TeacherProjectService\n ) {\n super(configService, nodeService, projectAssetService, projectService);\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n this.enableMultipleYAxes = isMultipleYAxes(this.componentContent.yAxis);\n if (this.enableMultipleYAxes) {\n this.numYAxes = this.componentContent.yAxis.length;\n }\n this.addAnyMissingYAxisFieldsToAllYAxes(this.componentContent.yAxis);\n }\n\n addSeriesClicked(): void {\n const newSeries: any = this.createNewSeries();\n if (this.componentContent.graphType === 'line') {\n newSeries.type = 'line';\n newSeries.dashStyle = 'Solid';\n } else if (this.componentContent.graphType === 'scatter') {\n newSeries.type = 'scatter';\n }\n if (this.enableMultipleYAxes) {\n newSeries.yAxis = 0;\n this.setSeriesColorToMatchYAxisColor(newSeries);\n }\n this.componentContent.series.push(newSeries);\n this.componentChanged();\n }\n\n createNewSeries(): any {\n return {\n name: '',\n data: [],\n marker: {\n symbol: 'circle'\n },\n canEdit: true\n };\n }\n\n deleteSeriesClicked(index: number): void {\n let message = '';\n let seriesName = '';\n if (this.componentContent.series != null) {\n const series = this.componentContent.series[index];\n if (series != null && series.name != null) {\n seriesName = series.name;\n }\n }\n if (seriesName == null || seriesName === '') {\n message = $localize`Are you sure you want to delete the series?`;\n } else {\n message = $localize`Are you sure you want to delete the \"${seriesName}\" series?`;\n }\n if (confirm(message)) {\n this.componentContent.series.splice(index, 1);\n this.componentChanged();\n }\n }\n\n enableTrialsClicked(): void {\n if (this.componentContent.enableTrials) {\n this.componentContent.canCreateNewTrials = true;\n this.componentContent.canDeleteTrials = true;\n } else {\n this.componentContent.canCreateNewTrials = false;\n this.componentContent.canDeleteTrials = false;\n this.componentContent.hideAllTrialsOnNewTrial = true;\n }\n this.componentChanged();\n }\n\n addXAxisCategory(): void {\n this.componentContent.xAxis.categories.push('');\n this.componentChanged();\n }\n\n deleteXAxisCategory(index: number): void {\n let confirmMessage = '';\n let categoryName = '';\n if (this.componentContent.xAxis != null && this.componentContent.xAxis.categories != null) {\n categoryName = this.componentContent.xAxis.categories[index];\n }\n if (categoryName == null || categoryName === '') {\n confirmMessage = $localize`Are you sure you want to delete the category?`;\n } else {\n confirmMessage = $localize`Are you sure you want to delete the \"${categoryName}\" category?`;\n }\n if (confirm(confirmMessage)) {\n this.componentContent.xAxis.categories.splice(index, 1);\n this.componentChanged();\n }\n }\n\n addSeriesDataPoint(series: any): void {\n if (series != null && series.data != null) {\n if (\n this.componentContent.xAxis.type == null ||\n this.componentContent.xAxis.type === 'limits'\n ) {\n series.data.push([]);\n } else if (this.componentContent.xAxis.type === 'categories') {\n series.data.push(0);\n }\n }\n this.componentChanged();\n }\n\n deleteSeriesDataPoint(series: any, index: number): void {\n if (series != null && series.data != null) {\n if (confirm($localize`Are you sure you want to delete the data point?`)) {\n series.data.splice(index, 1);\n this.componentChanged();\n }\n }\n }\n\n moveSeriesDataPointUp(series: any, index: number): void {\n if (index > 0) {\n const dataPoint = series.data[index];\n series.data.splice(index, 1);\n series.data.splice(index - 1, 0, dataPoint);\n }\n this.componentChanged();\n }\n\n moveSeriesDataPointDown(series: any, index: number): void {\n if (index < series.data.length - 1) {\n const dataPoint = series.data[index];\n series.data.splice(index, 1);\n series.data.splice(index + 1, 0, dataPoint);\n }\n this.componentChanged();\n }\n\n xAxisTypeChanged(newValue: any, oldValue: string): void {\n if (oldValue === 'categories' && newValue === 'limits') {\n delete this.componentContent.xAxis.categories;\n this.componentContent.xAxis.min = 0;\n this.componentContent.xAxis.max = 10;\n this.convertAllSeriesDataPoints(newValue);\n } else if (\n (oldValue === 'limits' || oldValue === '' || oldValue == null) &&\n newValue === 'categories'\n ) {\n delete this.componentContent.xAxis.min;\n delete this.componentContent.xAxis.max;\n delete this.componentContent.xAxis.units;\n delete this.componentContent.yAxis.units;\n this.componentContent.xAxis.categories = [$localize`Category One`, $localize`Category Two`];\n this.convertAllSeriesDataPoints(newValue);\n }\n this.componentChanged();\n }\n\n convertAllSeriesDataPoints(xAxisType: string): void {\n const series = this.componentContent.series;\n for (const singleSeries of series) {\n this.convertSeriesDataPoints(singleSeries, xAxisType);\n }\n }\n\n convertSeriesDataPoints(series: any, xAxisType: string): void {\n const data = series.data;\n const convertedData = [];\n for (let d = 0; d < data.length; d++) {\n const oldDataPoint = data[d];\n if (xAxisType == null || xAxisType === '' || xAxisType === 'limits') {\n if (!Array.isArray(oldDataPoint)) {\n convertedData.push([d + 1, oldDataPoint]);\n } else {\n convertedData.push(oldDataPoint);\n }\n } else if (xAxisType === 'categories') {\n if (Array.isArray(oldDataPoint)) {\n convertedData.push(oldDataPoint[1]);\n } else {\n convertedData.push(oldDataPoint);\n }\n }\n }\n series.data = convertedData;\n }\n\n enableMultipleYAxesChanged(): void {\n if (this.enableMultipleYAxes) {\n this.convertSingleYAxisToMultipleYAxes();\n this.numYAxes = this.componentContent.yAxis.length;\n this.addYAxisToAllSeries();\n this.addColorToYAxes();\n this.addColorToSeries();\n this.componentChanged();\n } else {\n if (confirm($localize`Are you sure you want to remove multiple Y axes?`)) {\n this.convertMultipleYAxesToSingleYAxis();\n this.numYAxes = this.componentContent.yAxis.length;\n this.removeYAxisFromAllSeries();\n this.componentChanged();\n } else {\n this.enableMultipleYAxes = true;\n }\n }\n }\n\n convertSingleYAxisToMultipleYAxes(): void {\n const firstYAxis = this.componentContent.yAxis;\n this.addAnyMissingYAxisFields(firstYAxis);\n const secondYAxis = this.createYAxisObject();\n secondYAxis.opposite = true;\n this.componentContent.yAxis = [firstYAxis, secondYAxis];\n }\n\n createYAxisObject(): any {\n return {\n title: {\n text: '',\n useHTML: true,\n style: {\n color: null\n }\n },\n labels: {\n style: {\n color: null\n }\n },\n min: 0,\n max: 100,\n units: '',\n locked: true,\n useDecimals: false,\n opposite: false\n };\n }\n\n convertMultipleYAxesToSingleYAxis(): void {\n this.componentContent.yAxis = this.componentContent.yAxis[0];\n }\n\n addYAxisToAllSeries(): void {\n for (const singleSeries of this.componentContent.series) {\n singleSeries.yAxis = 0;\n }\n }\n\n removeYAxisFromAllSeries(): void {\n for (const singleSeries of this.componentContent.series) {\n delete singleSeries.yAxis;\n }\n }\n\n addColorToYAxes(): void {\n for (let index = 0; index < this.componentContent.yAxis.length; index++) {\n const yAxis = this.componentContent.yAxis[index];\n const color = this.graphService.getSeriesColor(index);\n this.addColorToField(yAxis.title.style, color);\n this.addColorToField(yAxis.labels.style, color);\n }\n }\n\n addColorToField(field: any, color: string): void {\n if (field.color == null || field.color === '') {\n field.color = color;\n }\n }\n\n addColorToSeries(): void {\n for (const singleSeries of this.componentContent.series) {\n this.setSeriesColorToMatchYAxisColor(singleSeries);\n }\n }\n\n setSeriesColorToMatchYAxisColor(series: any): void {\n series.color = this.getYAxisColor(series.yAxis);\n }\n\n getYAxisColor(index: number): string {\n return this.componentContent.yAxis[index].labels.style.color;\n }\n\n numYAxesChanged(newValue: number, oldValue: number): void {\n if (newValue > oldValue) {\n this.increaseYAxes(newValue);\n this.addColorToYAxes();\n this.componentChanged();\n } else if (newValue < oldValue) {\n if (confirm($localize`Are you sure you want to decrease the number of Y Axes?`)) {\n this.decreaseYAxes(newValue);\n this.updateSeriesYAxesIfNecessary();\n this.componentChanged();\n } else {\n this.numYAxes = oldValue;\n }\n }\n }\n\n increaseYAxes(newNumYAxes: number): void {\n const oldNumYAxes = this.componentContent.yAxis.length;\n const numYAxesToAdd = newNumYAxes - oldNumYAxes;\n for (let n = 0; n < numYAxesToAdd; n++) {\n this.componentContent.yAxis.push(this.createYAxisObject());\n }\n }\n\n decreaseYAxes(newNumYAxes: number): void {\n this.componentContent.yAxis = this.componentContent.yAxis.slice(0, newNumYAxes);\n }\n\n updateSeriesYAxesIfNecessary(): void {\n for (const singleSeries of this.componentContent.series) {\n if (!this.isYAxisIndexExists(singleSeries.yAxis)) {\n singleSeries.yAxis = 0;\n this.setSeriesColorToMatchYAxisColor(singleSeries);\n }\n }\n }\n\n isYAxisIndexExists(yAxisIndex: number): boolean {\n return this.componentContent.yAxis[yAxisIndex] != null;\n }\n\n yAxisColorChanged(yAxisIndex: number): void {\n const yAxis = this.componentContent.yAxis[yAxisIndex];\n const color = yAxis.labels.style.color;\n yAxis.title.style.color = color;\n this.updateSeriesColors(yAxisIndex, color);\n this.componentChanged();\n }\n\n updateSeriesColors(yAxisIndex: number, color: string): void {\n for (const singleSeries of this.componentContent.series) {\n if (singleSeries.yAxis === yAxisIndex) {\n singleSeries.color = color;\n }\n }\n }\n\n addAnyMissingYAxisFieldsToAllYAxes(yAxis: any): void {\n if (isMultipleYAxes(yAxis)) {\n yAxis.forEach((yAxis) => this.addAnyMissingYAxisFields(yAxis));\n } else {\n this.addAnyMissingYAxisFields(yAxis);\n }\n }\n\n addAnyMissingYAxisFields(yAxis: any): void {\n if (yAxis.title == null) {\n yAxis.title = {};\n }\n if (yAxis.title.style == null) {\n yAxis.title.style = {};\n }\n if (yAxis.title.style.color == null) {\n yAxis.title.style.color = '';\n }\n if (yAxis.labels == null) {\n yAxis.labels = {};\n }\n if (yAxis.labels.style == null) {\n yAxis.labels.style = {};\n }\n if (yAxis.labels.style.color == null) {\n yAxis.labels.style.color = '';\n }\n if (yAxis.allowDecimals == null) {\n yAxis.allowDecimals = false;\n }\n if (yAxis.opposite == null) {\n yAxis.opposite = false;\n }\n }\n\n seriesYAxisChanged(series: any): void {\n series.yAxis = parseInt(series.yAxis);\n this.setSeriesColorToMatchYAxisColor(series);\n this.componentChanged();\n }\n\n graphTypeChanged(): void {\n const graphType = this.componentContent.graphType;\n this.updateAllSeriesPlotTypes(graphType);\n this.changeXAxisTypeIfNecessary(graphType);\n this.componentChanged();\n }\n\n updateAllSeriesPlotTypes(plotType: string): void {\n const multipleSeries = this.componentContent.series;\n for (const singleSeries of multipleSeries) {\n singleSeries.type = plotType;\n this.updateDashStyleField(singleSeries);\n }\n }\n\n changeXAxisTypeIfNecessary(graphType: string): void {\n const oldXAxisType = this.componentContent.xAxis.type;\n const newXAxisType = this.plotTypeToLimitType[graphType];\n if (oldXAxisType != newXAxisType) {\n this.componentContent.xAxis.type = newXAxisType;\n this.xAxisTypeChanged(newXAxisType, oldXAxisType);\n }\n }\n\n seriesTypeChanged(series: any): void {\n this.updateDashStyleField(series);\n this.componentChanged();\n }\n\n updateDashStyleField(series: any): void {\n if (series.type === 'line') {\n series.dashStyle = this.defaultDashStyle;\n } else {\n delete series.dashStyle;\n }\n }\n\n customTrackBy(index: number): number {\n return index;\n }\n}\n", + "styleUrl": "graph-authoring.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "graphService", + "type": "GraphService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeService", + "type": "TeacherNodeService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectAssetService", + "type": "ProjectAssetService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 154, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "graphService", + "type": "GraphService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeService", + "type": "TeacherNodeService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectAssetService", + "type": "ProjectAssetService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "AbstractComponentAuthoring" + ], + "templateData": "\n
    \n \n \n Plot Type\n \n @for (availableGraphType of availableGraphTypes; track availableGraphType) {\n \n {{ availableGraphType.text }}\n \n }\n \n \n \n Graph Width\n \n \n \n Graph Height\n \n \n
    \n
    \n X Axis\n \n \n Axis Type\n \n @for (availableAxisType of availableXAxisTypes; track availableAxisType) {\n \n {{ availableAxisType.text }}\n \n }\n \n \n @if (\n componentContent.xAxis.type === 'limits' ||\n componentContent.xAxis.type === '' ||\n componentContent.xAxis.type == null\n ) {\n \n \n Min\n \n \n \n Max\n \n \n \n Locked\n \n }\n
    \n@if (componentContent.xAxis.type == 'categories') {\n
    \n
    \n Categories\n \n add\n \n
    \n @for (\n category of [].constructor(componentContent.xAxis.categories.length);\n track category;\n let categoryIndex = $index\n ) {\n
    \n \n Category Name\n \n \n \n delete\n \n
    \n }\n
    \n}\n
    \n
    \n \n Enable Multiple Y Axes\n \n @if (enableMultipleYAxes) {\n \n
    \n @for (axisCount of [2, 3, 4]; track axisCount) {\n {{\n axisCount\n }}\n }\n
    \n \n }\n
    \n
    \n@if (enableMultipleYAxes) {\n @for (y of [].constructor(componentContent.yAxis.length); track y; let yAxisIndex = $index) {\n
    \n Y Axis\n \n \n Color\n \n \n \n \n Min\n \n \n \n Max\n \n \n \n Locked\n \n \n @if (componentContent.yAxis[yAxisIndex].opposite) {\n Right Side\n } @else {\n Left Side\n }\n \n
    \n }\n} @else {\n
    \n Y Axis\n \n \n Color\n \n \n \n \n Min\n \n \n \n Max\n \n \n \n Locked\n \n
    \n}\n
    \n \n \n
    \n\n Round Values To\n \n @for (availableRoundingOption of availableRoundingOptions; track availableRoundingOption) {\n \n {{ availableRoundingOption.text }}\n \n }\n \n\n
    \n \n Enable Trials\n \n
    \n @if (componentContent.enableTrials) {\n
    \n \n Can Student Create Trials\n \n
    \n \n Can Student Delete Trials\n \n
    \n \n Hide Existing Trials On New Trial\n \n
    \n }\n \n Can Student Hide Series By Clicking On Legend\n \n
    \n \n Enable File Upload\n \n
    \n \n Hide Legend\n \n
    \n
    \n
    \n Series\n \n add\n \n
    \n@if (componentContent.series == null || componentContent.series.length == 0) {\n
    \n There are no series. Click the \"Add Series\" button to add a series.\n
    \n}\n@for (series of componentContent.series; track series; let seriesIndex = $index) {\n
    \n
    \n \n \n Color\n \n \n @if (componentContent.graphType === 'line' || componentContent.graphType === 'scatter') {\n \n Symbol\n \n @for (availableSymbol of availableSymbols; track availableSymbol) {\n \n {{ availableSymbol.text }}\n \n }\n \n \n }\n @if (componentContent.graphType === 'line' || componentContent.graphType === 'scatter') {\n \n Type\n \n @for (availableSeriesType of availableSeriesTypes; track availableSeriesType) {\n \n {{ availableSeriesType.text }}\n \n }\n \n \n }\n @if (\n series.type === 'line' || (series.type == null && componentContent.graphType === 'line')\n ) {\n \n Line Type\n \n @for (availableLineType of availableLineTypes; track availableLineType) {\n \n {{ availableLineType.text }}\n \n }\n \n \n }\n \n Can Student Edit\n \n @if (enableMultipleYAxes) {\n \n Y Axis\n \n @for (yAxis of componentContent.yAxis; track yAxis; let yAxisIndex = $index) {\n \n Y Axis {{ yAxisIndex + 1 }}: {{ yAxis.title.text }}\n \n }\n \n \n }\n
    \n
    \n Data Points\n \n add\n \n
    \n @if (series.data == null || series.data.length == 0) {\n
    \n This series has no starter data points. Click the \"Add Data Point\" button to add a starter\n data point if you'd like.\n
    \n }\n @for (\n dataPoint of series.data;\n track customTrackBy;\n let dataPointIndex = $index;\n let isFirst = $first;\n let isLast = $last\n ) {\n
    \n @if (\n componentContent.xAxis.type === 'limits' ||\n componentContent.xAxis.type === '' ||\n componentContent.xAxis.type == null\n ) {\n \n X\n \n \n \n Y\n \n \n }\n @if (componentContent.xAxis.type === 'categories') {\n \n {{ componentContent.xAxis.categories[dataPointIndex] }}\n \n \n }\n \n arrow_upward\n \n \n arrow_downward\n \n \n delete\n \n
    \n }\n
    \n
    \n \n delete\n \n
    \n
    \n}\n" + }, + { + "name": "GraphShowWorkComponent", + "id": "component-GraphShowWorkComponent-48dd646adade84cec028af9d69b94a7abae4090cf6af266b1be9ffca71fd82b279926d6422271e7bb21d8188b97ee73207b79c849fdb5be6130b104a80c8feed", + "file": "src/assets/wise5/components/graph/graph-show-work/graph-show-work.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "graph-show-work", + "styleUrls": [], + "styles": [], + "template": "
    \n \n
    \n", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "line": 8, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "componentState", + "deprecated": false, + "deprecationMessage": "", + "line": 9, + "type": "any", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "isRevision", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "line": 10, + "type": "boolean", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 7, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "backgroundImage", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 28 + }, + { + "name": "graphType", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 22 + }, + { + "name": "height", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 24 + }, + { + "name": "Highcharts", + "defaultValue": "Highcharts", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 20 + }, + { + "name": "isLegendEnabled", + "defaultValue": "true", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 27 + }, + { + "name": "options", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 21 + }, + { + "name": "roundValuesTo", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 29 + }, + { + "name": "subtitle", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 26 + }, + { + "name": "title", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 25 + }, + { + "name": "width", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 23 + }, + { + "name": "xAxis", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 30 + }, + { + "name": "yAxis", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 31 + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "inheritance": { + "file": "ComponentShowWorkDirective" + } + } + ], + "methodsClass": [ + { + "name": "createOptions", + "args": [ + { + "name": "graphType", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "width", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "height", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "title", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "subtitle", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "backgroundImage", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isLegendEnabled", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "roundValuesTo", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "xAxis", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "yAxis", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "series", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 96, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "graphType", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "width", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "height", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "title", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "subtitle", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "backgroundImage", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "isLegendEnabled", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "roundValuesTo", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "xAxis", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "yAxis", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "series", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "drawGraph", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 72, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "enableMouseTrackingOnAllSeries", + "args": [ + { + "name": "series", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 90, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "series", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getAxis", + "args": [ + { + "name": "axisName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 64, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "axisName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 41, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "ngAfterViewInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 33, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentShowWorkDirective" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "HighchartsChartModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import * as Highcharts from 'highcharts';\nimport { Component } from '@angular/core';\nimport { ProjectService } from '../../../services/projectService';\nimport { GraphService } from '../graphService';\nimport { ComponentShowWorkDirective } from '../../component-show-work.directive';\nimport { NodeService } from '../../../services/nodeService';\nimport { HighchartsChartModule } from 'highcharts-angular';\n\n@Component({\n imports: [HighchartsChartModule],\n selector: 'graph-show-work',\n styleUrl: '../graph-student/graph-student.component.scss',\n template: `\n
    \n \n
    \n `\n})\nexport class GraphShowWorkComponent extends ComponentShowWorkDirective {\n Highcharts: typeof Highcharts = Highcharts;\n options: any;\n graphType: string;\n width: number;\n height: number;\n title: string;\n subtitle: string;\n isLegendEnabled: boolean = true;\n backgroundImage: string;\n roundValuesTo: string;\n xAxis: any;\n yAxis: any;\n\n constructor(\n private graphService: GraphService,\n protected nodeService: NodeService,\n protected projectService: ProjectService\n ) {\n super(nodeService, projectService);\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n this.graphType = this.componentContent.graphType;\n if (this.graphType == null) {\n this.graphType = 'line';\n }\n this.width = this.componentContent.width;\n this.height = this.componentContent.height;\n this.title = this.componentContent.title;\n this.subtitle = this.componentContent.subtitle;\n if (this.componentContent.hideLegend) {\n this.isLegendEnabled = false;\n }\n this.backgroundImage = this.componentContent.backgroundImage;\n this.roundValuesTo = this.componentContent.roundValuesTo;\n this.xAxis = this.getAxis('xAxis', this.componentContent, this.componentState);\n this.yAxis = this.getAxis('yAxis', this.componentContent, this.componentState);\n this.xAxis.plotBands = this.graphService.getPlotBandsFromTrials(\n this.componentState.studentData.trials\n );\n this.drawGraph(this.componentState);\n }\n\n private getAxis(axisName: string, componentContent: any, componentState: any): any {\n if (componentState.studentData[axisName] != null) {\n return componentState.studentData[axisName];\n } else {\n return componentContent[axisName];\n }\n }\n\n private drawGraph(componentState: any): void {\n const series = this.graphService.getSeriesFromTrials(componentState.studentData.trials);\n this.enableMouseTrackingOnAllSeries(series);\n this.options = this.createOptions(\n this.graphType,\n this.width,\n this.height,\n this.title,\n this.subtitle,\n this.backgroundImage,\n this.isLegendEnabled,\n this.roundValuesTo,\n this.xAxis,\n this.yAxis,\n series\n );\n }\n\n private enableMouseTrackingOnAllSeries(series: any[]): void {\n for (const singleSeries of series) {\n singleSeries.enableMouseTracking = true;\n }\n }\n\n private createOptions(\n graphType: string,\n width: number,\n height: number,\n title: string,\n subtitle: string,\n backgroundImage: string,\n isLegendEnabled: boolean,\n roundValuesTo: string,\n xAxis: any,\n yAxis: any,\n series: any[]\n ): any {\n return {\n chart: {\n width: width,\n height: height,\n type: graphType,\n plotBackgroundImage: backgroundImage\n },\n legend: {\n enabled: isLegendEnabled\n },\n series: series,\n subtitle: {\n text: subtitle,\n useHTML: true\n },\n title: {\n text: title,\n useHTML: true\n },\n tooltip: {\n formatter: this.graphService.createTooltipFormatter(xAxis, yAxis, roundValuesTo)\n },\n xAxis: xAxis,\n yAxis: yAxis,\n credits: {\n enabled: false\n }\n };\n }\n}\n", + "styleUrl": "../graph-student/graph-student.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "graphService", + "type": "GraphService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 31, + "jsdoctags": [ + { + "name": "graphService", + "type": "GraphService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "ComponentShowWorkDirective" + ] + }, + { + "name": "GraphStudent", + "id": "component-GraphStudent-b494cbc178e365eb0000597a71c5c9c43938e105af0cd937a381524ecd7675d2622aeb4be98bf21e873566375ea46eef727e480f5d0ca8aa9309476586266efc", + "file": "src/assets/wise5/components/graph/graph-student/graph-student.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "graph-student", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "graph-student.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "component", + "deprecated": false, + "deprecationMessage": "", + "line": 24, + "type": "Component", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentState", + "deprecated": false, + "deprecationMessage": "", + "line": 25, + "type": "any", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isDisabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "line": 26, + "type": "boolean", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "mode", + "deprecated": false, + "deprecationMessage": "", + "line": 27, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 28, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "workgroupId", + "deprecated": false, + "deprecationMessage": "", + "line": 29, + "type": "number", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "outputsClass": [ + { + "name": "saveComponentStateEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 30, + "type": "EventEmitter", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "starterStateChangedEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 31, + "type": "EventEmitter", + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "propertiesClass": [ + { + "name": "activeSeries", + "defaultValue": "null", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 63 + }, + { + "name": "activeTrial", + "defaultValue": "null", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 64 + }, + { + "name": "addNextComponentStateToUndoStack", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 65 + }, + { + "name": "backgroundImage", + "defaultValue": "null", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 66 + }, + { + "name": "canCreateNewTrials", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 67 + }, + { + "name": "canDeleteTrials", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 68 + }, + { + "name": "chartCallback", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 69 + }, + { + "name": "chartConfig", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 70 + }, + { + "name": "chartId", + "defaultValue": "'chart1'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 71 + }, + { + "name": "fileName", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 72 + }, + { + "name": "graphConnectedComponentManager", + "deprecated": false, + "deprecationMessage": "", + "type": "GraphConnectedComponentManager", + "indexKey": "", + "optional": false, + "description": "", + "line": 73 + }, + { + "name": "graphType", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 74 + }, + { + "name": "hasCustomLegendBeenSet", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 75 + }, + { + "name": "height", + "defaultValue": "null", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 76 + }, + { + "name": "hiddenButtonElement", + "deprecated": false, + "deprecationMessage": "", + "type": "ElementRef", + "indexKey": "", + "optional": false, + "description": "", + "line": 78, + "decorators": [ + { + "name": "ViewChild", + "stringifiedArguments": "'hiddenButton'" + } + ], + "modifierKind": [ + 171 + ] + }, + { + "name": "hiddenCanvasId", + "defaultValue": "'hiddenCanvas_' + this.componentId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 77 + }, + { + "name": "hideAllTrialsOnNewTrial", + "defaultValue": "true", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 79 + }, + { + "name": "Highcharts", + "defaultValue": "Highcharts", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 80 + }, + { + "name": "initialComponentState", + "defaultValue": "null", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 81 + }, + { + "name": "isLegendEnabled", + "defaultValue": "true", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 82 + }, + { + "name": "isLoaded", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 83 + }, + { + "name": "isResetSeriesButtonVisible", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 84 + }, + { + "name": "isSelectSeriesVisible", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 85 + }, + { + "name": "lastDropTime", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 86 + }, + { + "name": "lastSavedMouseMoveTimestamp", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 87 + }, + { + "name": "mouseDown", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 88 + }, + { + "name": "mouseOverPoints", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 89 + }, + { + "name": "notebookConfig", + "defaultValue": "this.notebookService.getNotebookConfig()", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 90 + }, + { + "name": "plotLineManager", + "deprecated": false, + "deprecationMessage": "", + "type": "PlotLineManager", + "indexKey": "", + "optional": false, + "description": "", + "line": 91 + }, + { + "name": "previousComponentState", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 92 + }, + { + "name": "previousTrialIdsToShow", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 93 + }, + { + "name": "rectangle", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 94 + }, + { + "name": "series", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 95 + }, + { + "name": "seriesMarkers", + "defaultValue": "['circle', 'square', 'diamond', 'triangle', 'triangle-down', 'circle']", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 96 + }, + { + "name": "setupMouseMoveListenerDone", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 97 + }, + { + "name": "showTrialSelect", + "defaultValue": "true", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 98 + }, + { + "name": "showUndoButton", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 99 + }, + { + "name": "studentDataVersion", + "defaultValue": "2", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 100 + }, + { + "name": "subtitle", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 101 + }, + { + "name": "title", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 102 + }, + { + "name": "trialIdsToShow", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 103 + }, + { + "name": "trials", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 104 + }, + { + "name": "undoStack", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 105 + }, + { + "name": "updateFlag", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 106 + }, + { + "name": "uploadedFileName", + "defaultValue": "null", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 107 + }, + { + "name": "width", + "defaultValue": "null", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 108 + }, + { + "name": "xAxis", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 109 + }, + { + "name": "xAxisLimitSpacerWidth", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 110 + }, + { + "name": "yAxis", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 111 + }, + { + "name": "yAxisLocked", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 112 + }, + { + "name": "annotationSavedToServerSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 53, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "attachments", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 33, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 34, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 35, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentType", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 36, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isDirty", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 45, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSaveButtonVisible", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 38, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSaveOrSubmitButtonVisible", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 41, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isShowAddToNotebookButton", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 39, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isStudentAttachmentEnabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 46, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmit", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 44, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmitButtonDisabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 42, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmitButtonVisible", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 40, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmitDirty", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 43, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "latestAnnotations", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 48, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "latestComponentState", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 50, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "nodeSubmitClickedSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 54, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "parentStudentWorkIds", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 49, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "prompt", + "deprecated": false, + "deprecationMessage": "", + "type": "SafeHtml", + "indexKey": "", + "optional": false, + "description": "", + "line": 37, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "requestComponentStateSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 52, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "showAddToNotebookButton", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 51, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "studentWorkSavedToServerSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 55, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "submitCounter", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 47, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 56, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "methodsClass": [ + { + "name": "activeSeriesChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1211, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "activeTrialChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1636, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "addMouseOverPoint", + "args": [ + { + "name": "x", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "y", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 596, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nAdd a mouse over point to the array of student mouse over points.\n", + "description": "

    Add a mouse over point to the array of student mouse over points.

    \n", + "jsdoctags": [ + { + "name": { + "pos": 20799, + "end": 20800, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "x" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 20793, + "end": 20798, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    the x value in graph units

    \n" + }, + { + "name": { + "pos": 20840, + "end": 20841, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "y" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 20834, + "end": 20839, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    the y value in graph units

    \n" + } + ] + }, + { + "name": "addPointToSeries", + "args": [ + { + "name": "series", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "x", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "y", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1002, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "series", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "x", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "y", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addTrialFromThisComponentIfNecessary", + "args": [ + { + "name": "mergedTrials", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "trialCount", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "activeTrialIndex", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 2381, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "mergedTrials", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "trialCount", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "activeTrialIndex", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "canEdit", + "args": [ + { + "name": "series", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 1031, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "series", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "canEditTrial", + "args": [ + { + "name": "trial", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 1074, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "trial", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "clearChartConfig", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 764, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "clearGraph", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1821, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "clearSeriesIds", + "args": [ + { + "name": "series", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 2115, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "series", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "convertRowDataToSeriesData", + "args": [ + { + "name": "rows", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "params", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "{}", + "typeParameters": [], + "line": 1378, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nConvert the table data into series data\nand rows to use from the table data\n", + "description": "

    Convert the table data into series data\nand rows to use from the table data

    \n", + "jsdoctags": [ + { + "name": "rows", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": { + "pos": 45151, + "end": 45157, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "params" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 45145, + "end": 45150, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    (optional) the params to specify what columns\nand rows to use from the table data

    \n" + } + ] + }, + { + "name": "convertSelectedCellsToTrialIds", + "args": [ + { + "name": "selectedCells", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "{}", + "typeParameters": [], + "line": 2708, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "selectedCells", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "convertToXPixels", + "args": [ + { + "name": "graphUnitValue", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 524, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "graphUnitValue", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "convertToYPixels", + "args": [ + { + "name": "graphUnitValue", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 529, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "graphUnitValue", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "copyPlotBandsIntoTrial", + "args": [ + { + "name": "oldTrial", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "newTrial", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1994, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "oldTrial", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "newTrial", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "copySeries", + "args": [ + { + "name": "series", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 1896, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "series", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "copySeriesIntoTrial", + "args": [ + { + "name": "oldTrial", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "newTrial", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentData", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "params", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1964, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "oldTrial", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "newTrial", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentData", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "params", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "copyTrialNameIntoTrial", + "args": [ + { + "name": "oldTrial", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "newTrial", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1988, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "oldTrial", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "newTrial", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "copyXAxisPlotBandsFromComponentContent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 699, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "createChartCallback", + "args": [], + "optional": false, + "returnType": "(chart: any) => void", + "typeParameters": [], + "line": 979, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "createChartConfig", + "args": [ + { + "name": "resolve", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "title", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "subtitle", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "xAxis", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "yAxis", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "series", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "{ legend: { enabled: boolean; }; tooltip: { formatter: any; }; chart: { width: number; height: number; type: string; plotBackgroundImage: string; events: { load: () => void; click: (event: any) => void; }; }; ... 7 more ...; loading: boolean; }", + "typeParameters": [], + "line": 774, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "resolve", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "title", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "subtitle", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "xAxis", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "yAxis", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "series", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createComponentState", + "args": [ + { + "name": "action", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 1267, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCreate a new component state populated with the student data\ne.g. 'submit', 'save', 'change'\n", + "description": "

    Create a new component state populated with the student data\ne.g. 'submit', 'save', 'change'

    \n", + "jsdoctags": [ + { + "name": { + "pos": 41185, + "end": 41191, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "action" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 41179, + "end": 41184, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    the action that is triggering creating of this component state\ne.g. 'submit', 'save', 'change'

    \n" + }, + { + "tagName": { + "pos": 41298, + "end": 41304, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

    a promise that will return a component state

    \n" + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createComponentStateAdditionalProcessing", + "args": [ + { + "name": "deferred", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "action", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1327, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nPerform any additional processing that is required before returning the component state\nNote: this function must call deferred.resolve() otherwise student work will not be saved\ne.g. 'submit', 'save', 'change'\n", + "description": "

    Perform any additional processing that is required before returning the component state\nNote: this function must call deferred.resolve() otherwise student work will not be saved\ne.g. 'submit', 'save', 'change'

    \n", + "jsdoctags": [ + { + "name": { + "pos": 43526, + "end": 43534, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "deferred" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 43520, + "end": 43525, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    a deferred object

    \n" + }, + { + "name": { + "pos": 43565, + "end": 43579, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 43559, + "end": 43564, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    the component state

    \n" + }, + { + "name": { + "pos": 43612, + "end": 43618, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "action" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 43606, + "end": 43611, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    the action that we are creating the component state for\ne.g. 'submit', 'save', 'change'

    \n" + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createGraphClickHandler", + "args": [], + "optional": false, + "returnType": "(event: any) => void", + "typeParameters": [], + "line": 848, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "createLegendItemClickHandler", + "args": [], + "optional": false, + "returnType": "(event: any) => boolean", + "typeParameters": [], + "line": 919, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "createNewTrial", + "args": [ + { + "name": "id", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "{ id: any; name: string; series: {}; show: boolean; }", + "typeParameters": [], + "line": 1887, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "id", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createNewTrialIfNecessary", + "args": [ + { + "name": "trialId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 1949, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "trialId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createPointDragEventHandler", + "args": [], + "optional": false, + "returnType": "(event: any) => void", + "typeParameters": [], + "line": 943, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "createPointDropEventHandler", + "args": [], + "optional": false, + "returnType": "(event: any) => void", + "typeParameters": [], + "line": 955, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "createRectangleIfNecessary", + "args": [ + { + "name": "strokeColor", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "strokeWidth", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "fillColor", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "fillOpacity", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 534, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "strokeColor", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "strokeWidth", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "fillColor", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "fillOpacity", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "deleteFirstTrial", + "args": [ + { + "name": "trials", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1945, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "trials", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "deleteTrial", + "args": [ + { + "name": "trialIndex", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1583, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "trialIndex", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "deleteTrialId", + "args": [ + { + "name": "trialId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1832, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nDelete a trial\n", + "description": "

    Delete a trial

    \n", + "jsdoctags": [ + { + "name": { + "pos": 59204, + "end": 59211, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "trialId" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 59198, + "end": 59203, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    The trial id string to delete

    \n" + } + ] + }, + { + "name": "deleteTrialsByTrialId", + "args": [ + { + "name": "trialIdsToDelete", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1813, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nDelete the trials\n", + "description": "

    Delete the trials

    \n", + "jsdoctags": [ + { + "name": { + "pos": 58796, + "end": 58812, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "trialIdsToDelete" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 58790, + "end": 58795, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    An array of trial ids to delete

    \n" + } + ] + }, + { + "name": "drawGraph", + "args": [ + { + "name": "useTimeout", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 603, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\n", + "description": "", + "jsdoctags": [ + { + "name": { + "pos": 20965, + "end": 20975, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "useTimeout" + }, + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "pos": 20959, + "end": 20964, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    whether to call the drawGraphHelper() function in a timeout callback

    \n" + } + ] + }, + { + "name": "drawGraphHelper", + "args": [ + { + "name": "resolve", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 628, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\n", + "description": "", + "jsdoctags": [ + { + "name": { + "pos": 21823, + "end": 21830, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "resolve" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 21817, + "end": 21822, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    A promise that should be resolved after the graph is done rendering.

    \n" + } + ] + }, + { + "name": "drawRangeRectangle", + "args": [ + { + "name": "xMin", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "xMax", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "yMin", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "yMax", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "strokeColor", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "'black'" + }, + { + "name": "strokeWidth", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "'.5'" + }, + { + "name": "fillColor", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "'black'" + }, + { + "name": "fillOpacity", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "'.1'" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 506, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nDraw a rectangle on the graph. This is used for highlighting a range.\n", + "description": "

    Draw a rectangle on the graph. This is used for highlighting a range.

    \n", + "jsdoctags": [ + { + "name": { + "pos": 17986, + "end": 17990, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "xMin" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 17980, + "end": 17985, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    The left x value in the graph x axis units.

    \n" + }, + { + "name": { + "pos": 18047, + "end": 18051, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "xMax" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 18041, + "end": 18046, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    The right x value in the graph x axis units.

    \n" + }, + { + "name": { + "pos": 18109, + "end": 18113, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "yMin" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 18103, + "end": 18108, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    The bottom y value in the graph y axis units.

    \n" + }, + { + "name": { + "pos": 18172, + "end": 18176, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "yMax" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 18166, + "end": 18171, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    The top y value in the graph y axis units.

    \n" + }, + { + "name": { + "pos": 18232, + "end": 18243, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "strokeColor" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "'black'", + "tagName": { + "pos": 18226, + "end": 18231, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    The color of the border.

    \n" + }, + { + "name": { + "pos": 18281, + "end": 18292, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "strokeWidth" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "'.5'", + "tagName": { + "pos": 18275, + "end": 18280, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    The width of the border.

    \n" + }, + { + "name": { + "pos": 18330, + "end": 18339, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "fillColor" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "'black'", + "tagName": { + "pos": 18324, + "end": 18329, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    The color inside the rectangle.

    \n" + }, + { + "name": { + "pos": 18384, + "end": 18395, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "fillOpacity" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "'.1'", + "tagName": { + "pos": 18378, + "end": 18383, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    The opacity of the color inside the rectangle.

    \n" + } + ] + }, + { + "name": "drawRectangleIfNecessary", + "args": [ + { + "name": "x", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 2739, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "x", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "fileUploadChanged", + "args": [ + { + "name": "event", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 259, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "event", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "focusOnComponent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 861, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getAllUsedSeriesIds", + "args": [ + { + "name": "allSeries", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "{}", + "typeParameters": [], + "line": 1432, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "allSeries", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getChartById", + "args": [ + { + "name": "chartId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 1461, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "chartId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getEventYValue", + "args": [ + { + "name": "event", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 907, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "event", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getFilteredTableData", + "args": [ + { + "name": "tableData", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "selectedRowIndices", + "type": "number[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 338, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "tableData", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "selectedRowIndices", + "type": "number[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getHighestTrial", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 1622, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getLatestEditableSeriesIndex", + "args": [ + { + "name": "multipleSeries", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 1722, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "multipleSeries", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getLatestMouseOverPointX", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 2642, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getLatestMouseOverPointY", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 2649, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getLatestStudentDataTrial", + "args": [ + { + "name": "studentData", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 1864, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentData", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getMinMaxValues", + "args": [ + { + "name": "series", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "{ xMin: number; xMax: number; yMin: number; yMax: number; }", + "typeParameters": [], + "line": 2071, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "series", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getNextSeriesId", + "args": [ + { + "name": "usedSeriesIds", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 1445, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the next available series id\n", + "description": "

    Get the next available series id

    \n", + "jsdoctags": [ + { + "name": { + "pos": 46833, + "end": 46846, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "usedSeriesIds" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 46827, + "end": 46832, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    an array of used series ids

    \n" + }, + { + "tagName": { + "pos": 46881, + "end": 46888, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

    the next available series id

    \n" + } + ] + }, + { + "name": "getNumberOfEditableSeries", + "args": [ + { + "name": "series", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 722, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "series", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getSelectedPoints", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 1509, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getSeries", + "args": [], + "optional": false, + "returnType": "{}", + "typeParameters": [], + "line": 1039, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getSeriesById", + "args": [ + { + "name": "id", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 1363, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "id", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getSeriesByIndex", + "args": [ + { + "name": "index", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 1047, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "index", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getSeriesIndex", + "args": [ + { + "name": "series", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 1352, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "series", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getSeriesYAxisIndex", + "args": [ + { + "name": "series", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 911, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "series", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getSkipFirstRowValue", + "args": [ + { + "name": "params", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 1397, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "params", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getSortedAndFilteredTableData", + "args": [ + { + "name": "tableData", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "sortOrder", + "type": "number[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "selectedRowIndices", + "type": "number[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 320, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "tableData", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "sortOrder", + "type": "number[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "selectedRowIndices", + "type": "number[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getTrialById", + "args": [ + { + "name": "id", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 2010, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "id", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getTrialIndex", + "args": [ + { + "name": "trial", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 1060, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the index of the trial\n", + "description": "

    Get the index of the trial

    \n", + "jsdoctags": [ + { + "name": { + "pos": 34640, + "end": 34645, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "trial" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 34634, + "end": 34639, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    the trial object

    \n" + }, + { + "tagName": { + "pos": 34669, + "end": 34675, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

    the index of the trial within the trials array

    \n" + } + ] + }, + { + "name": "getTrialNumbers", + "args": [], + "optional": false, + "returnType": "{}", + "typeParameters": [], + "line": 1568, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getUploadedFileName", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 2151, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getXAxis", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 1105, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getXColumnValue", + "args": [ + { + "name": "params", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 1405, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "params", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getXValueFromDataPoint", + "args": [ + { + "name": "dataPoint", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 2624, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "dataPoint", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getYAxis", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 1113, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getYColumnValue", + "args": [ + { + "name": "params", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 1413, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "params", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getYValueFromDataPoint", + "args": [ + { + "name": "dataPoint", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 2633, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "dataPoint", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "handleAnimationConnectedComponentStudentDataChanged", + "args": [ + { + "name": "connectedComponent", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 401, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "handleConnectedComponentData", + "args": [ + { + "name": "studentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 367, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "studentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "handleConnectedComponentPromiseResults", + "args": [ + { + "name": "connectedComponentBackgroundImage", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isReset", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "(promiseResults: any) => void", + "typeParameters": [], + "line": 2323, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponentBackgroundImage", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "isReset", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "handleConnectedComponents", + "args": [ + { + "name": "isReset", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 2186, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nImport any work we need from connected components\ntriggered by the student clicking the reset button.\n", + "description": "

    Import any work we need from connected components\ntriggered by the student clicking the reset button.

    \n", + "jsdoctags": [ + { + "name": { + "pos": 69209, + "end": 69216, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "isReset" + }, + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "pos": 69193, + "end": 69198, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    (optional) Whether this function call was\ntriggered by the student clicking the reset button.

    \n", + "typeExpression": { + "pos": 69199, + "end": 69208, + "kind": 310, + "id": 0, + "flags": 16842752, + "modifierFlagsCache": 0, + "transformFlags": 0, + "type": { + "pos": 69200, + "end": 69207, + "kind": 136, + "id": 0, + "flags": 16777216, + "transformFlags": 1 + } + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "handleConnectedComponentsHelper", + "args": [ + { + "name": "newComponentState", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isReset", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 2410, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nPerform additional connected component processing.\nthe connected component student data.\n", + "description": "

    Perform additional connected component processing.\nthe connected component student data.

    \n", + "jsdoctags": [ + { + "name": { + "pos": 77725, + "end": 77742, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "newComponentState" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 77719, + "end": 77724, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    The new component state generated by accumulating the trials from all\nthe connected component student data.

    \n" + }, + { + "name": "isReset", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "handleDataExplorer", + "args": [ + { + "name": "studentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 351, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "studentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "handleDeleteKeyPressed", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1471, + "deprecated": false, + "deprecationMessage": "", + "decorators": [ + { + "name": "HostListener", + "stringifiedArguments": "'keydown.backspace'" + } + ], + "modifierKind": [ + 171 + ] + }, + { + "name": "handleEmbeddedConnectedComponentStudentDataChanged", + "args": [ + { + "name": "connectedComponent", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 394, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "handleGraphClickEvent", + "args": [ + { + "name": "event", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "series", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 877, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "event", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "series", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "handleMouseDownXPosition", + "args": [ + { + "name": "e", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 473, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "e", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "handleMouseDownYPosition", + "args": [ + { + "name": "e", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 484, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "e", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "handleShowClassmateWorkConnectedComponent", + "args": [ + { + "name": "connectedComponent", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "promises", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 2221, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "promises", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "handleShowOrImportWorkConnectedComponent", + "args": [ + { + "name": "connectedComponent", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "promises", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 2263, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "promises", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "handleTableConnectedComponentStudentDataChanged", + "args": [ + { + "name": "connectedComponent", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 290, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "hasConnectedComponentShowClassmateWork", + "args": [ + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 232, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "hasEditableSeries", + "args": [ + { + "name": "series", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "this.getSeries()" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 2019, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "series", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "this.getSeries()", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "hasTrial", + "args": [ + { + "name": "studentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 1875, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "hideAllTrials", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1881, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "highlightPointOnX", + "args": [ + { + "name": "seriesId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "x", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 2676, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "seriesId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "x", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "importGraphSettings", + "args": [ + { + "name": "component", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 2314, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "component", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "initializeComponentContentParams", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 170, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "initializeStudentMode", + "args": [ + { + "name": "componentState", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 211, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isActiveSeries", + "args": [ + { + "name": "series", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 1514, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "series", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isActiveSeriesIndex", + "args": [ + { + "name": "seriesIndex", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 1519, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "seriesIndex", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isAddSeries", + "args": [ + { + "name": "params", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "seriesIndex", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 1979, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "params", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "seriesIndex", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isAllowDecimalsForYAxis", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 685, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "isCategoriesXAxisType", + "args": [ + { + "name": "xAxis", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 844, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "xAxis", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isIgnoreClickEvent", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 872, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isLimitXAxisType", + "args": [ + { + "name": "xAxis", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 840, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "xAxis", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isRowSelected", + "args": [ + { + "name": "rowNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "selectedRowIndices", + "type": "number[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 334, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "rowNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "selectedRowIndices", + "type": "number[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isSaveMouseOverPoints", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 2620, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isSeriesEditable", + "args": [ + { + "name": "multipleSeries", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 1715, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "multipleSeries", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isSeriesEmpty", + "args": [ + { + "name": "series", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 1941, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "series", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isShowSelectSeriesInput", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 1523, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isStudentDataVersion1", + "args": [ + { + "name": "version", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 2726, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "version", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isTrialHasEmptySeries", + "args": [ + { + "name": "trial", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 1937, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "trial", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isTrialsEnabled", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 2722, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isYAxisLocked", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 199, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "makeHighestTrialActive", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1607, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "makePointsUnique", + "args": [ + { + "name": "points", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 1017, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "points", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "makeSureXIsWithinXMinMaxLimits", + "args": [ + { + "name": "x", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 565, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nIf the x value is not within the x min and max limits, we will modify the x value to be at the\nlimit.\n", + "description": "

    If the x value is not within the x min and max limits, we will modify the x value to be at the\nlimit.

    \n", + "jsdoctags": [ + { + "name": { + "pos": 20065, + "end": 20066, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "x" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 20059, + "end": 20064, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    the x value

    \n" + }, + { + "tagName": { + "pos": 20085, + "end": 20091, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

    an x value between the x min and max limits

    \n" + } + ] + }, + { + "name": "makeSureYIsWithinYMinMaxLimits", + "args": [ + { + "name": "y", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 581, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nIf the y value is not within the y min and max limits, we will modify the y value to be at the\nlimit.\n", + "description": "

    If the y value is not within the y min and max limits, we will modify the y value to be at the\nlimit.

    \n", + "jsdoctags": [ + { + "name": { + "pos": 20453, + "end": 20454, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "y" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 20447, + "end": 20452, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    the y value

    \n" + }, + { + "tagName": { + "pos": 20473, + "end": 20479, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

    a y value between the y min and max limits

    \n" + } + ] + }, + { + "name": "mergeComponentState", + "args": [ + { + "name": "baseComponentState", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "connectedComponentState", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "mergeFields", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "firstTime", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 2489, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nMerge the component state from the connected component into the component\nstate from this component.\nto look at in the connectedComponentState. Each object can contain 3 fields which\nare \"name\", \"when\", \"action\".\n- \"name\" is the name of the field in the connectedComponentState.studentData object\n For example, if connectedComponentState is from a Graph component, we may author the value to be \"trials\"\n- \"when\" possible values\n \"firstTime\" means we merge the \"name\" field only the first time we visit the component\n \"always\" means we merge the \"name\" field every time we visit the component\n- \"action\" possible values\n \"read\" means we look at the value of the \"name\" field and perform processing on it to generate\n some value that we will set into the baseComponentState\n \"write\" means we copy the value of the \"name\" field from connectedComponentState.studentData to\n baseComponentState.studentData\nvisited.\n", + "description": "

    Merge the component state from the connected component into the component\nstate from this component.\nto look at in the connectedComponentState. Each object can contain 3 fields which\nare "name", "when", "action".

    \n
      \n
    • "name" is the name of the field in the connectedComponentState.studentData object\nFor example, if connectedComponentState is from a Graph component, we may author the value to be "trials"
    • \n
    • "when" possible values\n "firstTime" means we merge the "name" field only the first time we visit the component\n "always" means we merge the "name" field every time we visit the component
    • \n
    • "action" possible values\n "read" means we look at the value of the "name" field and perform processing on it to generate\nsome value that we will set into the baseComponentState\n "write" means we copy the value of the "name" field from connectedComponentState.studentData to\nbaseComponentState.studentData
    • \n
    \n

    visited.

    \n", + "jsdoctags": [ + { + "name": { + "pos": 80000, + "end": 80018, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "baseComponentState" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 79994, + "end": 79999, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    The component state from this component.

    \n" + }, + { + "name": { + "pos": 80072, + "end": 80095, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "connectedComponentState" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 80066, + "end": 80071, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    The component state from the connected component.

    \n" + }, + { + "name": { + "pos": 80158, + "end": 80169, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "mergeFields" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 80152, + "end": 80157, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    (optional) An array of objects that specify which fields\nto look at in the connectedComponentState. Each object can contain 3 fields which\nare "name", "when", "action".

    \n
      \n
    • "name" is the name of the field in the connectedComponentState.studentData object\nFor example, if connectedComponentState is from a Graph component, we may author the value to be "trials"
    • \n
    • "when" possible values\n"firstTime" means we merge the "name" field only the first time we visit the component\n"always" means we merge the "name" field every time we visit the component
    • \n
    • "action" possible values\n"read" means we look at the value of the "name" field and perform processing on it to generate\nsome value that we will set into the baseComponentState\n"write" means we copy the value of the "name" field from connectedComponentState.studentData to\nbaseComponentState.studentData
    • \n
    \n" + }, + { + "name": { + "pos": 81123, + "end": 81132, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "firstTime" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 81117, + "end": 81122, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    Whether this is the first time this component is being\nvisited.

    \n" + }, + { + "tagName": { + "pos": 81208, + "end": 81214, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

    The merged component state.

    \n" + } + ] + }, + { + "name": "mergeNullComponentState", + "args": [ + { + "name": "baseComponentState", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "mergeFields", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "firstTime", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 2530, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nWe want to merge the component state from the connected component into this\ncomponent but the connected component does not have any work. We will\ninstead use default values.\nto look at. (see comment for mergeComponentState() for more information).\nvisited.\n", + "description": "

    We want to merge the component state from the connected component into this\ncomponent but the connected component does not have any work. We will\ninstead use default values.\nto look at. (see comment for mergeComponentState() for more information).\nvisited.

    \n", + "jsdoctags": [ + { + "name": { + "pos": 82678, + "end": 82696, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "baseComponentState" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 82672, + "end": 82677, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    The component state from this component.

    \n" + }, + { + "name": { + "pos": 82750, + "end": 82761, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "mergeFields" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 82744, + "end": 82749, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    (optional) An array of objects that specify which fields\nto look at. (see comment for mergeComponentState() for more information).

    \n" + }, + { + "name": { + "pos": 82910, + "end": 82919, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "firstTime" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 82904, + "end": 82909, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    Whether this is the first time this component is being\nvisited.

    \n" + }, + { + "tagName": { + "pos": 82995, + "end": 83001, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

    The merged component state.

    \n" + } + ] + }, + { + "name": "mouseDownEventOccurred", + "args": [ + { + "name": "e", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 437, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nThe student has moved the mouse while holding the mouse button down.\n", + "description": "

    The student has moved the mouse while holding the mouse button down.

    \n", + "jsdoctags": [ + { + "name": { + "pos": 15783, + "end": 15784, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "e" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 15777, + "end": 15782, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    The mouse event.

    \n" + } + ] + }, + { + "name": "newTrial", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1538, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "newTrialButtonClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1532, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 166, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 139, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "parseLatestTrial", + "args": [ + { + "name": "studentData", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "params", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1848, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nParse the latest trial and set it into the component\nstudent data\n", + "description": "

    Parse the latest trial and set it into the component\nstudent data

    \n", + "jsdoctags": [ + { + "name": { + "pos": 59538, + "end": 59549, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "studentData" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 59532, + "end": 59537, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    the student data object that has a trials field

    \n" + }, + { + "name": { + "pos": 59610, + "end": 59616, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "params" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 59604, + "end": 59609, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    (optional) parameters that specify what to use from the\nstudent data

    \n" + } + ] + }, + { + "name": "performRounding", + "args": [ + { + "name": "number", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 2155, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "number", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "processConnectedComponentState", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 241, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "processConnectedComponentStudentData", + "args": [ + { + "name": "studentData", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "params", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1747, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nProcess the student data that we have received from a connected component.\n", + "description": "

    Process the student data that we have received from a connected component.

    \n", + "jsdoctags": [ + { + "name": { + "pos": 56430, + "end": 56441, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "studentData" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 56424, + "end": 56429, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    The student data from a connected component.

    \n" + }, + { + "name": { + "pos": 56499, + "end": 56505, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "params" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 56493, + "end": 56498, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    The connected component params.

    \n" + } + ] + }, + { + "name": "processTableData", + "args": [ + { + "name": "tableData", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "sortOrder", + "type": "number[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]" + }, + { + "name": "selectedRowIndices", + "type": "number[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 308, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "tableData", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "sortOrder", + "type": "number[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]", + "tagName": { + "text": "param" + } + }, + { + "name": "selectedRowIndices", + "type": "number[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "readConnectedComponentField", + "args": [ + { + "name": "baseComponentState", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "connectedComponentState", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "field", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 2564, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nRead the field from the connected component's component state.\nstate.\n", + "description": "

    Read the field from the connected component's component state.\nstate.

    \n", + "jsdoctags": [ + { + "name": { + "pos": 83960, + "end": 83978, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "baseComponentState" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 83954, + "end": 83959, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    The component state from this component.

    \n" + }, + { + "name": { + "pos": 84032, + "end": 84055, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "connectedComponentState" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 84026, + "end": 84031, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    The component state from the connected component.

    \n" + }, + { + "name": { + "pos": 84118, + "end": 84123, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "field" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 84112, + "end": 84117, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    The field to look at in the connected component's component\nstate.

    \n" + } + ] + }, + { + "name": "readConnectedComponentFieldFromStudentData", + "args": [ + { + "name": "studentData", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "params", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "name", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1786, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nRead the field from the new student data and perform any processing on our\nexisting student data based upon the new student data.\n", + "description": "

    Read the field from the new student data and perform any processing on our\nexisting student data based upon the new student data.

    \n", + "jsdoctags": [ + { + "name": { + "pos": 57700, + "end": 57711, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "studentData" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 57694, + "end": 57699, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    The new student data from the connected component.

    \n" + }, + { + "name": { + "pos": 57775, + "end": 57781, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "params" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 57769, + "end": 57774, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    The connected component params.

    \n" + }, + { + "name": { + "pos": 57826, + "end": 57830, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "name" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 57820, + "end": 57825, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    The field name to read and process.

    \n" + } + ] + }, + { + "name": "readCSVIntoActiveSeries", + "args": [ + { + "name": "csvString", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 2133, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "csvString", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "refreshSeriesIds", + "args": [ + { + "name": "series", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 711, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "series", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "removeDefaultTrialIfNecessary", + "args": [ + { + "name": "latestStudentDataTrialId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1916, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "latestStudentDataTrialId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "removeHoverStateFromPoints", + "args": [ + { + "name": "points", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 2694, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "points", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "resetSeries", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1129, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "resetSeriesHelper", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1142, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "setActiveSeries", + "args": [ + { + "name": "series", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1117, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "series", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setActiveSeriesByIndex", + "args": [ + { + "name": "index", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1121, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "index", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setActiveTrialAndSeriesByTrialIdsToShow", + "args": [ + { + "name": "trialIdsToShow", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1697, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "trialIdsToShow", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setActiveTrialByIndex", + "args": [ + { + "name": "index", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1070, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "index", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setAllSeriesFields", + "args": [ + { + "name": "series", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 716, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "series", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setCanEditForAllSeries", + "args": [ + { + "name": "series", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "canEdit", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 2595, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "series", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "canEdit", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setCanEditForAllSeriesInComponentState", + "args": [ + { + "name": "componentState", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "canEdit", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 2589, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "canEdit", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setComponentStateAsBackgroundImage", + "args": [ + { + "name": "componentState", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 2399, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCreate an image from a component state and set the image as the background.\n", + "description": "

    Create an image from a component state and set the image as the background.

    \n", + "jsdoctags": [ + { + "name": { + "pos": 77336, + "end": 77350, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 77330, + "end": 77335, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    A component state.

    \n" + }, + { + "tagName": { + "pos": 77376, + "end": 77382, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

    A promise that returns the url of the image that is generated from the component state.

    \n" + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setCustomLegend", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 998, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "setDefaultActiveSeries", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 2164, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nSet the active series to the first series that the student can edit\nor if there are no series the student can edit, set the active series\nto the first series.\n", + "description": "

    Set the active series to the first series that the student can edit\nor if there are no series the student can edit, set the active series\nto the first series.

    \n" + }, + { + "name": "setHoverStateOnPoint", + "args": [ + { + "name": "points", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "x", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 2700, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "points", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "x", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setLastTrialToActive", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 2003, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "setSeries", + "args": [ + { + "name": "series", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1035, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "series", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setSeriesByIndex", + "args": [ + { + "name": "series", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1043, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "series", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setSeriesIds", + "args": [ + { + "name": "allSeries", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1421, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "allSeries", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setSingleSeriesFields", + "args": [ + { + "name": "singleSeries", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 732, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "singleSeries", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setStudentWork", + "args": [ + { + "name": "componentState", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1167, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setTrialIdsToShow", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1731, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "setTrials", + "args": [ + { + "name": "trials", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1051, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "trials", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setUploadedFileName", + "args": [ + { + "name": "fileName", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 2147, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "fileName", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setupMouseMoveListener", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 408, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "setupXAxisLimitSpacerWidth", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 703, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "setXAxis", + "args": [ + { + "name": "xAxis", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1101, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "xAxis", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setYAxis", + "args": [ + { + "name": "yAxis", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1109, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "yAxis", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "showOrHideTrials", + "args": [ + { + "name": "trialIdsToShow", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1682, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "trialIdsToShow", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "showSelectActiveTrials", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 1088, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nSet whether to show the active trial select menu\n", + "description": "

    Set whether to show the active trial select menu

    \n", + "jsdoctags": [ + { + "tagName": { + "pos": 35265, + "end": 35271, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

    whether to show the active trial select menu

    \n" + } + ] + }, + { + "name": "showXPlotLine", + "args": [ + { + "name": "x", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "''" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 2734, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "x", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "''", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "showXPlotLineIfOn", + "args": [ + { + "name": "text", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 2656, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "text", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "showYPlotLineIfOn", + "args": [ + { + "name": "text", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 2666, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "text", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "snipGraph", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 2121, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "sortPoints", + "args": [ + { + "name": "pointA", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "pointB", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 1013, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "pointA", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "pointB", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "studentDataChanged", + "args": [ + { + "name": "useTimeoutSetupGraph", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1216, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "useTimeoutSetupGraph", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "trialCheckboxClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 2616, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "trialIdsToShowChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 1645, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "turnOffXAxisDecimals", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 681, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "turnOffYAxisDecimals", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 691, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "undoClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 2601, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "updateMinMaxAxisValues", + "args": [ + { + "name": "series", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "xAxis", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "yAxis", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 2035, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nUpdate the x and y axis min and max values if necessary to make sure\nall points are visible in the graph view.\n", + "description": "

    Update the x and y axis min and max values if necessary to make sure\nall points are visible in the graph view.

    \n", + "jsdoctags": [ + { + "name": { + "pos": 64860, + "end": 64866, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "series" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 64854, + "end": 64859, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    the an array of series

    \n" + }, + { + "name": { + "pos": 64902, + "end": 64907, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "xAxis" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 64896, + "end": 64901, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    the x axis object

    \n" + }, + { + "name": { + "pos": 64938, + "end": 64943, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "yAxis" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 64932, + "end": 64937, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    the y axis object

    \n" + } + ] + }, + { + "name": "updateRectanglePositionAndSize", + "args": [ + { + "name": "xMin", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "xMax", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "yMin", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "yMax", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 549, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "xMin", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "xMax", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "yMin", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "yMax", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "updateXAxisMinMaxIfNecessary", + "args": [ + { + "name": "xAxis", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "minMaxValues", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 2041, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "xAxis", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "minMaxValues", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "updateYAxisMinMaxIfNecessary", + "args": [ + { + "name": "yAxis", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "minMaxValues", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 2056, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "yAxis", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "minMaxValues", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "uploadFileAndReadContent", + "args": [ + { + "name": "event", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 275, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "event", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addDefaultFeedback", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 688, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "attachStudentAsset", + "args": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 232, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "broadcastDoneRenderingComponent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 325, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "canSubmit", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 488, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "clearLatestComponentState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 555, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "confirmSubmit", + "args": [ + { + "name": "numberOfSubmitsLeft", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 468, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "numberOfSubmitsLeft", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "connectedComponentStudentDataSaved", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 796, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nThis function is called when a connected component of this component saves student data.\nThis was added to handle a race condition when a step has a connected component on a previous\nstep but the connected component student work on the previous step was not being imported\nbecause it wasn't being saved in time.\nHere is an example of what was happening\n- Student generates work on step 1 but does not click the save button\n- Student goes to step 2 which triggers a promise to save the student work on step 1\n- Step 2 is loaded and checks if there is any work it needs to import from step 1\n- The work in step 1 has not saved yet so step 2 does not import any work and loads without\n importing any work\n- The work from step 1 is then saved\nHere is the additional process that this function performs to fix this problem\n- Step 2 listens for when work is saved on step 1\n- When the work for step 1 is saved, step 2 checks to see if it needs to import that work\n", + "description": "

    This function is called when a connected component of this component saves student data.\nThis was added to handle a race condition when a step has a connected component on a previous\nstep but the connected component student work on the previous step was not being imported\nbecause it wasn't being saved in time.\nHere is an example of what was happening

    \n
      \n
    • Student generates work on step 1 but does not click the save button
    • \n
    • Student goes to step 2 which triggers a promise to save the student work on step 1
    • \n
    • Step 2 is loaded and checks if there is any work it needs to import from step 1
    • \n
    • The work in step 1 has not saved yet so step 2 does not import any work and loads without\nimporting any work
    • \n
    • The work from step 1 is then saved\nHere is the additional process that this function performs to fix this problem
    • \n
    • Step 2 listens for when work is saved on step 1
    • \n
    • When the work for step 1 is saved, step 2 checks to see if it needs to import that work
    • \n
    \n", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "copyAndAttachStudentAsset", + "args": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 218, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "copyPublicNotebookItem", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 632, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "copyPublicNotebookItemButtonClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 747, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createAutoCommentAnnotation", + "args": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 725, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createAutoScoreAnnotation", + "args": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 714, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createComponentStateAndBroadcast", + "args": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 559, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createDefaultFeedbackAnnotation", + "args": [ + { + "name": "feedbackText", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 706, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "feedbackText", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createMergedComponentState", + "args": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 377, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createNewComponentState", + "args": [], + "optional": false, + "returnType": "Partial", + "typeParameters": [], + "line": 818, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "disableAllInput", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 492, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "disableComponentIfNecessary", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 332, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "disableSubmitButton", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 496, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "doAttachStudentAsset", + "args": [ + { + "name": "studentAssetRequest", + "type": "StudentAssetRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 212, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "studentAssetRequest", + "type": "StudentAssetRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 541, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentStudentDataChanged", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 572, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentSubmitDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 548, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentSubmitTriggered", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 512, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "generateImageFromComponentState", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 615, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nRender the component state and then generate an image from it.\n", + "description": "

    Render the component state and then generate an image from it.

    \n", + "jsdoctags": [ + { + "name": { + "pos": 18804, + "end": 18818, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 18798, + "end": 18803, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    The component state to render.

    \n" + }, + { + "tagName": { + "pos": 18856, + "end": 18862, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

    A promise that will return an image.

    \n" + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "generateStarterState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 216, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getAction", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 321, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getClientSaveTime", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 684, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getComponentStatePromise", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 309, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getComponentStateWrapper", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "ComponentStateWrapper", + "typeParameters": [], + "line": 301, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getDefaultFeedback", + "args": [ + { + "name": "submitCount", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 702, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "submitCount", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getElementById", + "args": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getFirstResult", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 758, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "getFirstResult", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getIsDirty", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 277, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getMaxScore", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 680, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getMaxSubmitCount", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 460, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getNumberOfSubmitsLeft", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 456, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "handleConnectedComponentsPostProcess", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 385, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "handleStudentWorkSavedToServer", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 263, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "handleStudentWorkSavedToServerAdditionalProcessing", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 287, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasAnySubmissions", + "args": [ + { + "name": "componentStates", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 344, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentStates", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasDefaultFeedback", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 695, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasMaxScore", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 676, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasMaxSubmitCount", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 437, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasMaxSubmitCountAndUsedAllSubmits", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 452, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasSubmitMessage", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 504, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasSubmitsLeft", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 500, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasUsedAllSubmits", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 441, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "importWorkAsBackground", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 658, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "importWorkByStudentWorkId", + "args": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 170, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "incrementSubmitCounter", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 389, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isAddToNotebookEnabled", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 624, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isForThisComponent", + "args": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 192, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isFromConnectedComponent", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 766, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isHandleConnectedComponentAfterConnectedComponentStudentDataSaved", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 802, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isLockAfterSubmit", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 348, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isNotebookEnabled", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 643, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isPreviewMode", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 109, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSameComponent", + "args": [ + { + "name": "component", + "type": "Component", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 188, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "component", + "type": "Component", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isStudentNoteClippingEnabled", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 647, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isWorkFromClassmate", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 196, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "lockIfNecessary", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 281, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "performSubmit", + "args": [ + { + "name": "submitTriggeredBy", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 472, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "submitTriggeredBy", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "processLatestStudentWork", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 580, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "registerNotebookItemChosenListener", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 736, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "removeAttachment", + "args": [ + { + "name": "attachment", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 245, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "attachment", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "saveButtonClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 393, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "saveForAuthoringPreviewMode", + "args": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 404, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setBackgroundImage", + "args": [ + { + "name": "image", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 674, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "image", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 537, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsDirtyAndBroadcast", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 527, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsSubmit", + "args": [ + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 464, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsSubmitDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 508, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsSubmitDirtyAndBroadcast", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 532, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setParentStudentWorkIdToCurrentStudentWork", + "args": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 180, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setSubmitCounter", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 811, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "shouldCreateComponentState", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 317, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "showStudentAssets", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 651, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "submit", + "args": [ + { + "name": "submitTriggeredBy", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 416, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "submitTriggeredBy", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "submitButtonClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 412, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToAnnotationSavedToServer", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 123, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToAttachStudentAsset", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 200, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToNodeSubmitClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 137, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToNotebookItemChosen", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 159, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToNotifyConnectedComponents", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 147, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToRequestComponentState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 289, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToStudentWorkSavedToServer", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 252, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToSubscriptions", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 113, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "tryDisableComponent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 445, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [ + { + "name": "keydown.backspace", + "args": [], + "argsDecorator": [], + "deprecated": false, + "deprecationMessage": "", + "line": 1471 + } + ], + "standalone": false, + "imports": [ + { + "name": "ComponentHeaderComponent", + "type": "component" + }, + { + "name": "MatFormField" + }, + { + "name": "MatLabel" + }, + { + "name": "MatSelect" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatSelectTrigger" + }, + { + "name": "MatOption" + }, + { + "name": "MatIconButton" + }, + { + "name": "MatIcon" + }, + { + "name": "MatButton" + }, + { + "name": "MatInput" + }, + { + "name": "HighchartsChartModule", + "type": "module" + }, + { + "name": "ComponentSaveSubmitButtonsComponent", + "type": "component" + }, + { + "name": "ComponentAnnotationsComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { ChangeDetectorRef, Component, ElementRef, HostListener, ViewChild } from '@angular/core';\nimport { AnnotationService } from '../../../services/annotationService';\nimport { ConfigService } from '../../../services/configService';\nimport { NodeService } from '../../../services/nodeService';\nimport { NotebookService } from '../../../services/notebookService';\nimport { ProjectService } from '../../../services/projectService';\nimport { StudentAssetService } from '../../../services/studentAssetService';\nimport { StudentDataService } from '../../../services/studentDataService';\nimport { ComponentStudent } from '../../component-student.component';\nimport { ComponentService } from '../../componentService';\nimport { GraphService } from '../graphService';\nimport * as Highcharts from 'highcharts';\nimport HC_exporting from 'highcharts/modules/exporting';\nimport { Canvg } from 'canvg';\nimport { MatDialog } from '@angular/material/dialog';\nimport { GraphContent } from '../GraphContent';\nimport { copy } from '../../../common/object/object';\nimport { convertToPNGFile } from '../../../common/canvas/canvas';\nimport { arraysContainSameValues } from '../../../common/array/array';\nimport { generateRandomKey } from '../../../common/string/string';\nimport { GraphCustomLegend } from '../GraphCustomLegend';\nimport { PlotLineManager } from '../plot-line-manager';\nimport { DataExplorerManager } from '../data-explorer-manager';\nimport { addPointFromTableIntoData, isMultipleYAxes, isSingleYAxis } from '../util';\nimport { GraphConnectedComponentManager } from '../graph-connected-component-manager';\nimport Draggable from 'highcharts/modules/draggable-points.js';\nimport { ComponentHeaderComponent } from '../../../directives/component-header/component-header.component';\nimport { MatFormField, MatLabel } from '@angular/material/form-field';\nimport { MatSelect, MatSelectTrigger } from '@angular/material/select';\nimport { FormsModule } from '@angular/forms';\nimport { MatOption } from '@angular/material/autocomplete';\nimport { MatIconButton, MatButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInput } from '@angular/material/input';\nimport { HighchartsChartModule } from 'highcharts-angular';\nimport { ComponentSaveSubmitButtonsComponent } from '../../../directives/component-save-submit-buttons/component-save-submit-buttons.component';\nimport { ComponentAnnotationsComponent } from '../../../directives/componentAnnotations/component-annotations.component';\nDraggable(Highcharts);\nHC_exporting(Highcharts);\n\n@Component({\n imports: [\n ComponentHeaderComponent,\n MatFormField,\n MatLabel,\n MatSelect,\n FormsModule,\n MatSelectTrigger,\n MatOption,\n MatIconButton,\n MatIcon,\n MatButton,\n MatInput,\n HighchartsChartModule,\n ComponentSaveSubmitButtonsComponent,\n ComponentAnnotationsComponent\n ],\n selector: 'graph-student',\n templateUrl: 'graph-student.component.html',\n styleUrl: 'graph-student.component.scss'\n})\nexport class GraphStudent extends ComponentStudent {\n activeSeries: any = null;\n activeTrial: any = null;\n addNextComponentStateToUndoStack: boolean = false;\n backgroundImage: string = null;\n canCreateNewTrials: boolean = false;\n canDeleteTrials: boolean = false;\n chartCallback: any;\n chartConfig: any;\n chartId: string = 'chart1';\n fileName: string;\n graphConnectedComponentManager: GraphConnectedComponentManager;\n graphType: string;\n hasCustomLegendBeenSet: boolean = false;\n height: number = null;\n hiddenCanvasId: string = 'hiddenCanvas_' + this.componentId;\n @ViewChild('hiddenButton') hiddenButtonElement: ElementRef;\n hideAllTrialsOnNewTrial: boolean = true;\n Highcharts: typeof Highcharts = Highcharts;\n initialComponentState: any = null;\n isLegendEnabled: boolean = true;\n isLoaded: boolean = false;\n isResetSeriesButtonVisible: boolean = false;\n isSelectSeriesVisible: boolean = false;\n lastDropTime: number;\n lastSavedMouseMoveTimestamp: number;\n mouseDown: boolean = false;\n mouseOverPoints: any[] = [];\n notebookConfig: any = this.notebookService.getNotebookConfig();\n plotLineManager: PlotLineManager;\n previousComponentState: any;\n previousTrialIdsToShow: string[];\n rectangle: any;\n series: any[] = [];\n seriesMarkers: string[] = ['circle', 'square', 'diamond', 'triangle', 'triangle-down', 'circle'];\n setupMouseMoveListenerDone: boolean = false;\n showTrialSelect: boolean = true;\n showUndoButton: boolean = false;\n studentDataVersion: number = 2;\n subtitle: string;\n title: string;\n trialIdsToShow: string[] = [];\n trials: any[] = [];\n undoStack: any = [];\n updateFlag: boolean = false;\n uploadedFileName: string = null;\n width: number = null;\n xAxis: any;\n xAxisLimitSpacerWidth: number;\n yAxis: any;\n yAxisLocked: boolean;\n\n constructor(\n protected annotationService: AnnotationService,\n private changeDetectorRef: ChangeDetectorRef,\n protected componentService: ComponentService,\n protected configService: ConfigService,\n protected dialog: MatDialog,\n private graphService: GraphService,\n protected nodeService: NodeService,\n protected notebookService: NotebookService,\n private projectService: ProjectService,\n protected studentAssetService: StudentAssetService,\n protected studentDataService: StudentDataService\n ) {\n super(\n annotationService,\n componentService,\n configService,\n dialog,\n nodeService,\n notebookService,\n studentAssetService,\n studentDataService\n );\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n this.chartId = 'chart_' + this.componentId;\n this.hiddenCanvasId = 'hiddenCanvas_' + this.componentId;\n this.plotLineManager = new PlotLineManager(\n this.componentContent.xAxis.plotLines,\n this.componentContent.showMouseXPlotLine,\n this.componentContent.showMouseYPlotLine\n );\n this.graphConnectedComponentManager = new GraphConnectedComponentManager(\n this.graphService,\n this.projectService\n );\n this.initializeComponentContentParams();\n this.initializeStudentMode(this.componentState);\n this.initialComponentState = this.componentState;\n this.previousComponentState = this.componentState;\n if (!this.canSubmit()) {\n this.isSubmitButtonDisabled = true;\n }\n this.disableComponentIfNecessary();\n this.chartCallback = this.createChartCallback();\n this.drawGraph().then(() => {\n this.broadcastDoneRenderingComponent();\n });\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n\n initializeComponentContentParams() {\n this.title = this.componentContent.title;\n this.subtitle = this.componentContent.subtitle;\n this.width = this.componentContent.width;\n this.height = this.componentContent.height;\n this.xAxis = copy(this.componentContent.xAxis);\n this.yAxis = copy(this.componentContent.yAxis);\n this.graphType = this.componentContent.graphType;\n if (this.graphType == null) {\n this.graphType = 'line';\n }\n if (this.componentContent.canCreateNewTrials != null) {\n this.canCreateNewTrials = this.componentContent.canCreateNewTrials;\n }\n if (this.componentContent.canDeleteTrials != null) {\n this.canDeleteTrials = this.componentContent.canDeleteTrials;\n }\n if (this.componentContent.hideAllTrialsOnNewTrial === false) {\n this.hideAllTrialsOnNewTrial = false;\n }\n if (this.componentContent.hideLegend) {\n this.isLegendEnabled = false;\n }\n if (this.componentContent.hideTrialSelect) {\n this.showTrialSelect = false;\n }\n this.yAxisLocked = this.isYAxisLocked();\n }\n\n isYAxisLocked() {\n if (Array.isArray(this.componentContent.yAxis)) {\n return this.componentContent.yAxis\n .map((yAxis) => yAxis.locked)\n .reduce((accumulator, currentValue) => {\n return accumulator && currentValue;\n });\n } else {\n return this.componentContent.yAxis.locked;\n }\n }\n\n initializeStudentMode(componentState) {\n this.isResetSeriesButtonVisible = true;\n this.isSelectSeriesVisible = true;\n this.backgroundImage = this.componentContent.backgroundImage;\n if (!this.graphService.componentStateHasStudentWork(componentState, this.componentContent)) {\n this.newTrial();\n }\n if (\n this.component.hasConnectedComponentAlwaysField() ||\n this.hasConnectedComponentShowClassmateWork(this.componentContent)\n ) {\n this.handleConnectedComponents();\n } else if (\n this.graphService.componentStateHasStudentWork(componentState, this.componentContent)\n ) {\n this.setStudentWork(componentState);\n } else if (this.component.hasConnectedComponent()) {\n this.handleConnectedComponents();\n }\n }\n\n hasConnectedComponentShowClassmateWork(componentContent: any): boolean {\n return (\n componentContent.connectedComponents != null &&\n componentContent.connectedComponents.some(\n (connectedComponent: any) => connectedComponent.type === 'showClassmateWork'\n )\n );\n }\n\n processConnectedComponentState(componentState: any): void {\n const connectedComponent = this.component.getConnectedComponent(\n componentState.nodeId,\n componentState.componentId\n );\n const componentType = this.projectService.getComponentType(\n connectedComponent.nodeId,\n connectedComponent.componentId\n );\n if (componentType === 'Table') {\n this.handleTableConnectedComponentStudentDataChanged(connectedComponent, componentState);\n } else if (componentType === 'Embedded') {\n this.handleEmbeddedConnectedComponentStudentDataChanged(connectedComponent, componentState);\n } else if (componentType === 'Animation') {\n this.handleAnimationConnectedComponentStudentDataChanged(connectedComponent, componentState);\n }\n }\n\n fileUploadChanged(event) {\n const activeSeriesData = this.activeSeries.data;\n let overwrite = true;\n if (activeSeriesData.length > 0) {\n if (!confirm($localize`Are you sure you want to overwrite the current line data?`)) {\n overwrite = false;\n }\n }\n if (overwrite) {\n this.uploadFileAndReadContent(event);\n }\n // clear the file input value so that onchange() will be called again if the student wants to\n // upload the same file again\n event.srcElement.value = null;\n }\n\n uploadFileAndReadContent(event) {\n const files = event.target.files;\n const reader: any = new FileReader();\n reader.onload = () => {\n const fileContent = reader.result;\n this.readCSVIntoActiveSeries(fileContent);\n this.setUploadedFileName(this.fileName);\n this.studentDataChanged();\n };\n reader.scope = this;\n reader.fileName = files[0].name;\n reader.readAsText(files[0]);\n this.studentAssetService.uploadAsset(files[0]);\n }\n\n handleTableConnectedComponentStudentDataChanged(connectedComponent, componentState) {\n const studentData = copy(componentState.studentData);\n if (studentData.tableData.length > 0) {\n studentData.tableData = this.processTableData(\n studentData.tableData,\n studentData.sortOrder,\n studentData.selectedRowIndices\n );\n }\n if (studentData.isDataExplorerEnabled) {\n this.handleDataExplorer(studentData);\n } else {\n this.handleConnectedComponentData(studentData, connectedComponent);\n }\n this.drawGraph();\n this.isDirty = true;\n }\n\n private processTableData(\n tableData: any[],\n sortOrder: number[] = [],\n selectedRowIndices: number[] = []\n ): any[] {\n if (sortOrder && sortOrder.length > 0) {\n return this.getSortedAndFilteredTableData(tableData, sortOrder, selectedRowIndices);\n } else {\n return this.getFilteredTableData(tableData, selectedRowIndices);\n }\n }\n\n private getSortedAndFilteredTableData(\n tableData: any[],\n sortOrder: number[],\n selectedRowIndices: number[]\n ): any[] {\n const sortedTableData = [tableData[0]];\n sortOrder.forEach((rowNumber, index) => {\n if (this.isRowSelected(rowNumber, selectedRowIndices)) {\n sortedTableData.push(tableData[rowNumber + 1]);\n }\n });\n return sortedTableData;\n }\n\n private isRowSelected(rowNumber: number, selectedRowIndices: number[]): boolean {\n return selectedRowIndices.length > 0 ? selectedRowIndices.includes(rowNumber) : true;\n }\n\n private getFilteredTableData(tableData: any[], selectedRowIndices: number[]): any[] {\n let visibleRows = tableData;\n if (selectedRowIndices && selectedRowIndices.length > 0) {\n visibleRows = [tableData[0]];\n tableData.forEach((row, index) => {\n if (this.isRowSelected(index - 1, selectedRowIndices)) {\n visibleRows.push(row);\n }\n });\n }\n return visibleRows;\n }\n\n private handleDataExplorer(studentData: any): void {\n // clear graph to prevent issues with Highcharts merging old series data with new series data\n this.activeTrial.series = [];\n this.drawGraph();\n this.changeDetectorRef.detectChanges();\n const dataExplorerManager = new DataExplorerManager(this.xAxis, this.yAxis, this.activeTrial);\n const allRegressionSeries = dataExplorerManager.handleDataExplorer(studentData);\n\n // Add all the regression series after all the data series so that all the data series are\n // located at the expected index within the active trial. We need to do this because we expect\n // the series index to match up with the axis index like in GraphService.getAxisTitle().\n for (const singleRegressionSeries of allRegressionSeries) {\n this.activeTrial.series.push(singleRegressionSeries);\n }\n }\n\n private handleConnectedComponentData(studentData: any, connectedComponent: any): void {\n const rows = studentData.tableData;\n const data = this.convertRowDataToSeriesData(rows, connectedComponent);\n let seriesIndex = connectedComponent.seriesIndex;\n if (seriesIndex == null) {\n seriesIndex = 0;\n }\n if (this.isStudentDataVersion1()) {\n let series = this.series[seriesIndex];\n if (series == null) {\n series = {};\n this.series[seriesIndex] = series;\n }\n series.data = data;\n } else {\n const trial = this.activeTrial;\n if (trial != null && trial.series != null) {\n let series = trial.series[seriesIndex];\n if (series == null) {\n series = {};\n this.series[seriesIndex] = series;\n }\n series.data = data;\n }\n }\n }\n\n handleEmbeddedConnectedComponentStudentDataChanged(connectedComponent, componentState) {\n componentState = copy(componentState);\n const studentData = componentState.studentData;\n this.processConnectedComponentStudentData(studentData, connectedComponent);\n this.studentDataChanged();\n }\n\n handleAnimationConnectedComponentStudentDataChanged(connectedComponent, componentState) {\n if (componentState.t != null) {\n this.plotLineManager.setXPlotLine(componentState.t);\n this.drawGraph();\n }\n }\n\n setupMouseMoveListener() {\n if (!this.setupMouseMoveListenerDone) {\n const chart = $(`#${this.chartId}`);\n // Remove all existing listeners on the chart div to make sure we don't bind the same listener\n // multiple times.\n chart.off();\n chart.on('mousedown', (e) => {\n this.mouseDown = true;\n this.mouseDownEventOccurred(e);\n });\n chart.on('mouseup', (e) => {\n this.mouseDown = false;\n });\n chart.on('mousemove', (e) => {\n if (this.mouseDown) {\n this.mouseDownEventOccurred(e);\n }\n });\n chart.on('mouseleave', (e) => {\n this.mouseDown = false;\n });\n this.setupMouseMoveListenerDone = true;\n }\n }\n\n /**\n * The student has moved the mouse while holding the mouse button down.\n * @param e The mouse event.\n */\n mouseDownEventOccurred(e) {\n /*\n * Firefox displays abnormal behavior when the student drags the plot line.\n * In Firefox, when the mouse is on top of the plot line, the event will\n * contain offset values relative to the plot line instead of relative to\n * the graph container. We always want the offset values relative to the\n * graph container so we will ignore events where the offset values are\n * relative to the plot line.\n */\n if (e.offsetX < 10 || e.offsetY < 10) {\n return;\n }\n const x = this.handleMouseDownXPosition(e);\n const y = this.handleMouseDownYPosition(e);\n if (this.componentContent.saveMouseOverPoints) {\n /*\n * Make sure we aren't saving the points too frequently. We want to avoid\n * saving too many unnecessary data points.\n */\n const currentTimestamp = new Date().getTime();\n /*\n * Make sure this many milliseconds has passed before saving another mouse\n * over point.\n */\n const timeBetweenSendingMouseOverPoints = 200;\n if (\n this.lastSavedMouseMoveTimestamp == null ||\n currentTimestamp - this.lastSavedMouseMoveTimestamp > timeBetweenSendingMouseOverPoints\n ) {\n this.addMouseOverPoint(x, y);\n this.studentDataChanged();\n this.lastSavedMouseMoveTimestamp = currentTimestamp;\n }\n }\n }\n\n handleMouseDownXPosition(e) {\n const chart = this.getChartById(this.chartId);\n const chartXAxis = chart.xAxis[0];\n let x = chartXAxis.toValue(e.offsetX, false);\n x = this.makeSureXIsWithinXMinMaxLimits(x);\n if (this.plotLineManager.isShowMouseXPlotLine()) {\n this.showXPlotLine(x);\n }\n return x;\n }\n\n handleMouseDownYPosition(e) {\n const chart = this.getChartById(this.chartId);\n const chartYAxis = chart.yAxis[0];\n let y = chartYAxis.toValue(e.offsetY, false);\n y = this.makeSureYIsWithinYMinMaxLimits(y);\n if (this.plotLineManager.isShowMouseYPlotLine()) {\n this.plotLineManager.showYPlotLine(this.getChartById(this.chartId), y);\n }\n return y;\n }\n\n /**\n * Draw a rectangle on the graph. This is used for highlighting a range.\n * @param xMin The left x value in the graph x axis units.\n * @param xMax The right x value in the graph x axis units.\n * @param yMin The bottom y value in the graph y axis units.\n * @param yMax The top y value in the graph y axis units.\n * @param strokeColor The color of the border.\n * @param strokeWidth The width of the border.\n * @param fillColor The color inside the rectangle.\n * @param fillOpacity The opacity of the color inside the rectangle.\n */\n drawRangeRectangle(\n xMin,\n xMax,\n yMin,\n yMax,\n strokeColor = 'black',\n strokeWidth = '.5',\n fillColor = 'black',\n fillOpacity = '.1'\n ) {\n this.createRectangleIfNecessary(strokeColor, strokeWidth, fillColor, fillOpacity);\n xMin = this.convertToXPixels(xMin);\n xMax = this.convertToXPixels(xMax);\n yMin = this.convertToYPixels(yMin);\n yMax = this.convertToYPixels(yMax);\n this.updateRectanglePositionAndSize(xMin, xMax, yMin, yMax);\n }\n\n convertToXPixels(graphUnitValue) {\n const chart: any = this.getChartById(this.chartId);\n return chart.xAxis[0].translate(graphUnitValue);\n }\n\n convertToYPixels(graphUnitValue) {\n const chart: any = this.getChartById(this.chartId);\n return chart.yAxis[0].translate(graphUnitValue);\n }\n\n createRectangleIfNecessary(strokeColor, strokeWidth, fillColor, fillOpacity) {\n if (this.rectangle == null) {\n const chart = this.getChartById(this.chartId);\n this.rectangle = chart.renderer\n .rect(0, 0, 0, 0, 0)\n .css({\n stroke: strokeColor,\n strokeWidth: strokeWidth,\n fill: fillColor,\n fillOpacity: fillOpacity\n })\n .add();\n }\n }\n\n updateRectanglePositionAndSize(xMin, xMax, yMin, yMax) {\n const chart = this.getChartById(this.chartId);\n this.rectangle.attr({\n x: xMin + chart.plotLeft,\n y: chart.plotHeight + chart.plotTop - yMax,\n width: xMax - xMin,\n height: yMax - yMin\n });\n }\n\n /**\n * If the x value is not within the x min and max limits, we will modify the x value to be at the\n * limit.\n * @param x the x value\n * @return an x value between the x min and max limits\n */\n makeSureXIsWithinXMinMaxLimits(x) {\n if (x < this.xAxis.min) {\n x = this.xAxis.min;\n }\n if (x > this.xAxis.max) {\n x = this.xAxis.max;\n }\n return x;\n }\n\n /**\n * If the y value is not within the y min and max limits, we will modify the y value to be at the\n * limit.\n * @param y the y value\n * @return a y value between the y min and max limits\n */\n makeSureYIsWithinYMinMaxLimits(y) {\n if (y < this.yAxis.min) {\n y = this.yAxis.min;\n }\n if (y > this.yAxis.max) {\n y = this.yAxis.max;\n }\n return y;\n }\n\n /**\n * Add a mouse over point to the array of student mouse over points.\n * @param x the x value in graph units\n * @param y the y value in graph units\n */\n addMouseOverPoint(x, y) {\n this.mouseOverPoints.push([x, y]);\n }\n\n /**\n * @param useTimeout whether to call the drawGraphHelper() function in a timeout callback\n */\n drawGraph(useTimeout: boolean = false) {\n return new Promise((resolve, reject) => {\n if (useTimeout) {\n /*\n * Clear the chart config so that the graph is completely refreshed. We need to do this\n * otherwise all the series will react to mouseover but we only want the active series to\n * react to mouseover.\n */\n this.clearChartConfig();\n /*\n * Call the setup graph helper after a timeout. this is required so that the graph is\n * completely refreshed so that only the active series will react to mouseover.\n */\n setTimeout(() => {\n this.drawGraphHelper(resolve);\n });\n } else {\n this.drawGraphHelper(resolve);\n }\n });\n }\n\n /**\n * @param resolve A promise that should be resolved after the graph is done rendering.\n */\n drawGraphHelper(resolve) {\n this.turnOffXAxisDecimals();\n if (!this.isAllowDecimalsForYAxis()) {\n this.turnOffYAxisDecimals();\n }\n this.copyXAxisPlotBandsFromComponentContent();\n this.setupXAxisLimitSpacerWidth();\n let series = null;\n if (this.isTrialsEnabled()) {\n series = this.graphService.getSeriesFromTrials(this.trials);\n this.xAxis.plotBands = this.graphService.getPlotBandsFromTrials(this.trials);\n } else {\n series = this.getSeries();\n }\n if (this.activeSeries == null) {\n this.setDefaultActiveSeries();\n }\n if (this.isDisabled) {\n this.setCanEditForAllSeries(series, false);\n }\n this.showUndoButton = false;\n this.setAllSeriesFields(series);\n this.refreshSeriesIds(series);\n this.updateMinMaxAxisValues(series, this.xAxis, this.yAxis);\n this.xAxis.plotLines = this.plotLineManager.getXPlotLines();\n // Make a copy of the series so when the highcharts-chart modifies the series it won't modify\n // our original series in our trials. There was a problem that occurred when there were two\n // trials and the student hides the first trial which would cause the the data points in the\n // second trial to be written to the first trial. Making a copy of the series prevents this\n // problem. I think this problem occurs because highcharts-chart was expecting two series so\n // when we hide the first trial (and the first series), it moves the second series (from the\n // second trial) to the first series.\n series = copy(series);\n this.chartConfig = this.createChartConfig(\n resolve,\n this.title,\n this.subtitle,\n this.xAxis,\n this.yAxis,\n series\n );\n if (this.componentContent.useCustomLegend) {\n // use a timeout so the graph has a chance to render before we set the custom legend\n setTimeout(() => {\n if (!this.hasCustomLegendBeenSet) {\n this.setCustomLegend();\n this.hasCustomLegendBeenSet = true;\n }\n });\n }\n this.changeDetectorRef.detectChanges();\n }\n\n turnOffXAxisDecimals() {\n this.xAxis.allowDecimals = false;\n }\n\n private isAllowDecimalsForYAxis(): boolean {\n return isSingleYAxis(this.yAxis)\n ? this.yAxis.allowDecimals\n : this.yAxis.some((yAxis) => yAxis.allowDecimals);\n }\n\n turnOffYAxisDecimals() {\n if (isSingleYAxis(this.yAxis)) {\n this.yAxis.allowDecimals = false;\n } else {\n this.yAxis.forEach((yAxis) => (yAxis.allowDecimals = false));\n }\n }\n\n copyXAxisPlotBandsFromComponentContent() {\n this.xAxis.plotBands = this.componentContent.xAxis.plotBands;\n }\n\n setupXAxisLimitSpacerWidth() {\n if (this.width > 100) {\n this.xAxisLimitSpacerWidth = this.width - 100;\n } else {\n this.xAxisLimitSpacerWidth = 0;\n }\n }\n\n refreshSeriesIds(series) {\n this.clearSeriesIds(series);\n this.setSeriesIds(series);\n }\n\n setAllSeriesFields(series) {\n for (const singleSeries of series) {\n this.setSingleSeriesFields(singleSeries);\n }\n }\n\n getNumberOfEditableSeries(series) {\n let numberOfEditableSeries = 0;\n for (const singleSeries of series) {\n if (singleSeries.canEdit) {\n numberOfEditableSeries++;\n }\n }\n return numberOfEditableSeries;\n }\n\n setSingleSeriesFields(singleSeries) {\n if (singleSeries.canEdit && this.isActiveSeries(singleSeries)) {\n singleSeries.dragDrop = {\n draggableX: true,\n draggableY: true\n };\n if (this.graphType === 'line' || this.graphType === 'scatter') {\n singleSeries.dragDrop.draggableX = true;\n } else if (this.graphType === 'column') {\n singleSeries.dragDrop.draggableX = false;\n }\n singleSeries.cursor = 'move';\n singleSeries.stickyTracking = false;\n singleSeries.shared = false;\n singleSeries.allowPointSelect = true;\n this.showUndoButton = true;\n } else {\n singleSeries.dragDrop = {\n draggableX: false,\n draggableY: false\n };\n delete singleSeries.cursor;\n singleSeries.cursor = 'auto';\n singleSeries.stickyTracking = false;\n singleSeries.shared = false;\n singleSeries.allowPointSelect = false;\n }\n if (singleSeries.allowPointMouseOver === true) {\n singleSeries.allowPointSelect = true;\n }\n }\n\n clearChartConfig() {\n this.chartConfig = {\n chart: {\n options: {\n chart: {}\n }\n }\n };\n }\n\n createChartConfig(resolve, title, subtitle, xAxis, yAxis, series) {\n const chartConfig = {\n legend: {\n enabled: this.isLegendEnabled\n },\n tooltip: {\n formatter: this.graphService.createTooltipFormatter(\n xAxis,\n yAxis,\n this.componentContent.roundValuesTo\n )\n },\n chart: {\n width: this.width,\n height: this.height,\n type: this.graphType,\n plotBackgroundImage: this.backgroundImage,\n events: {\n load: function () {\n resolve(this);\n },\n click: this.createGraphClickHandler()\n }\n },\n exporting: {\n buttons: {\n contextButton: {\n enabled: false\n }\n }\n },\n plotOptions: {\n series: {\n dragSensitivity: 10,\n stickyTracking: false,\n events: {\n legendItemClick: this.createLegendItemClickHandler()\n },\n dragDrop: {\n draggableX: true,\n draggableY: true\n },\n point: {\n events: {\n drag: this.createPointDragEventHandler(),\n drop: this.createPointDropEventHandler()\n }\n }\n }\n },\n series: series,\n title: {\n text: title,\n useHTML: true\n },\n subtitle: {\n text: subtitle,\n useHTML: true\n },\n xAxis: xAxis,\n yAxis: yAxis,\n loading: false\n };\n return chartConfig;\n }\n\n isLimitXAxisType(xAxis) {\n return xAxis.type === 'limits' || xAxis.type == null;\n }\n\n isCategoriesXAxisType(xAxis) {\n return xAxis.type === 'categories';\n }\n\n createGraphClickHandler() {\n const thisGraphController = this;\n return function (event) {\n if (thisGraphController.graphType === 'line' || thisGraphController.graphType === 'scatter') {\n if (thisGraphController.isIgnoreClickEvent()) {\n return;\n } else {\n thisGraphController.handleGraphClickEvent(event, this.series);\n }\n }\n };\n }\n\n focusOnComponent(): void {\n // allows this component to listen to events (e.g. \"keydown.backspace\")\n this.hiddenButtonElement.nativeElement.focus();\n }\n\n /*\n * Check if the last drop event was within the last 100 milliseconds so we will not register the\n * click. We need to do this because when students drag points, a click event is fired when they\n * release the mouse button. we don't want that click event to create a new point so we need to\n * ignore it.\n */\n isIgnoreClickEvent() {\n const currentTime = new Date().getTime();\n return this.lastDropTime != null && currentTime - this.lastDropTime < 100;\n }\n\n handleGraphClickEvent(event, series) {\n if (!this.isDisabled) {\n const activeSeries = this.activeSeries;\n if (activeSeries != null && this.canEdit(activeSeries)) {\n const activeSeriesId = activeSeries.id;\n for (const singleSeries of series) {\n if (activeSeriesId === singleSeries.options.id && !singleSeries.visible) {\n // the series is not visible so we will not add the point\n alert(\n $localize`The series you are trying to add a point to is currently hidden. Please show the series by clicking the series name in the legend and try adding the point again.`\n );\n return;\n }\n }\n const x = this.performRounding(event.xAxis[0].value);\n const y = this.performRounding(this.getEventYValue(event));\n this.addPointToSeries(activeSeries, x, y);\n this.addNextComponentStateToUndoStack = true;\n this.studentDataChanged();\n } else {\n if (!this.plotLineManager.isShowMousePlotLine()) {\n // the student is trying to add a point to a series that can't be edited\n alert(\n $localize`You can not edit this series. Please choose a series that can be edited.`\n );\n }\n }\n }\n }\n\n getEventYValue(event) {\n return event.yAxis[this.getSeriesYAxisIndex(this.activeSeries)].value;\n }\n\n getSeriesYAxisIndex(series) {\n if (isMultipleYAxes(this.yAxis) && series.yAxis != null) {\n return series.yAxis;\n } else {\n return 0;\n }\n }\n\n createLegendItemClickHandler() {\n const thisGraphController = this;\n return function (event) {\n const canHideSeries =\n thisGraphController.componentContent.canStudentHideSeriesOnLegendClick === true;\n if (canHideSeries) {\n /*\n * Update the show field in all the series depending on whether each line is active\n * in the legend.\n */\n for (const yAxisSeries of this.yAxis.series) {\n let series = thisGraphController.getSeriesById(yAxisSeries.userOptions.id);\n if (this.userOptions.id === series.id) {\n series.show = !yAxisSeries.visible;\n } else {\n series.show = yAxisSeries.visible;\n }\n }\n thisGraphController.studentDataChanged();\n }\n return canHideSeries;\n };\n }\n\n createPointDragEventHandler() {\n const thisGraphController: any = this;\n return function (event) {\n if (!thisGraphController.isDisabled) {\n const activeSeries = thisGraphController.activeSeries;\n if (thisGraphController.canEdit(activeSeries)) {\n thisGraphController.dragging = true;\n }\n }\n };\n }\n\n createPointDropEventHandler() {\n const thisGraphController: any = this;\n return function (event) {\n // the student has stopped dragging the point and dropped the point\n if (!thisGraphController.isDisabled && thisGraphController.dragging) {\n const activeSeries = thisGraphController.activeSeries;\n thisGraphController.dragging = false;\n thisGraphController.lastDropTime = new Date().getTime();\n const target = event.target;\n const x = thisGraphController.performRounding(target.x);\n const y = thisGraphController.performRounding(target.y);\n const index = target.index;\n const data = activeSeries.data;\n if (thisGraphController.isLimitXAxisType(thisGraphController.xAxis)) {\n data[index] = [x, y];\n } else if (thisGraphController.isCategoriesXAxisType(thisGraphController.xAxis)) {\n data[index] = y;\n }\n thisGraphController.addNextComponentStateToUndoStack = true;\n thisGraphController.studentDataChanged();\n }\n };\n }\n\n createChartCallback() {\n const thisGraphController = this;\n return (chart) => {\n setTimeout(() => {\n thisGraphController.showXPlotLineIfOn('Drag Me');\n thisGraphController.showYPlotLineIfOn('Drag Me');\n if (\n thisGraphController.plotLineManager.isShowMouseXPlotLine() ||\n thisGraphController.plotLineManager.isShowMouseYPlotLine() ||\n thisGraphController.isSaveMouseOverPoints()\n ) {\n thisGraphController.setupMouseMoveListener();\n }\n chart.reflow();\n this.isLoaded = true;\n }, 500);\n };\n }\n\n private setCustomLegend(): void {\n new GraphCustomLegend(this.chartId, this.componentContent.customLegend).render();\n }\n\n addPointToSeries(series, x, y) {\n const data = series.data;\n if (this.isCategoriesXAxisType(this.componentContent.xAxis)) {\n data[x] = y;\n } else {\n data.push([x, y]);\n data.sort(this.sortPoints);\n series.data = this.makePointsUnique(data);\n }\n }\n\n sortPoints(pointA: any, pointB: any): number {\n return pointA[0] - pointB[0];\n }\n\n makePointsUnique(points: any[]): any[] {\n const xValuesFound = {};\n const uniquePoints = points.filter((point) => {\n const xValue = point[0];\n if (xValuesFound[xValue] == null) {\n xValuesFound[xValue] = true;\n return true;\n } else {\n return false;\n }\n });\n return uniquePoints;\n }\n\n canEdit(series) {\n return series.canEdit;\n }\n\n setSeries(series) {\n this.series = series;\n }\n\n getSeries() {\n return this.series;\n }\n\n setSeriesByIndex(series, index) {\n this.series[index] = series;\n }\n\n getSeriesByIndex(index) {\n return this.series[index];\n }\n\n setTrials(trials) {\n this.trials = trials;\n }\n\n /**\n * Get the index of the trial\n * @param trial the trial object\n * @return the index of the trial within the trials array\n */\n getTrialIndex(trial) {\n for (let t = 0; t < this.trials.length; t++) {\n const tempTrial = this.trials[t];\n if (trial === tempTrial) {\n return t;\n }\n }\n return -1;\n }\n\n setActiveTrialByIndex(index) {\n this.activeTrial = this.trials[index];\n }\n\n canEditTrial(trial) {\n let series = trial.series;\n for (const singleSeries of series) {\n if (singleSeries.canEdit) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Set whether to show the active trial select menu\n * @return whether to show the active trial select menu\n */\n showSelectActiveTrials() {\n let editableTrials = 0;\n for (const trial of this.trials) {\n if (this.canEditTrial(trial) && trial.show) {\n editableTrials++;\n if (editableTrials > 1) {\n return true;\n }\n }\n }\n return false;\n }\n\n setXAxis(xAxis) {\n this.xAxis = copy(xAxis);\n }\n\n getXAxis() {\n return this.xAxis;\n }\n\n setYAxis(yAxis) {\n this.yAxis = copy(yAxis);\n }\n\n getYAxis() {\n return this.yAxis;\n }\n\n setActiveSeries(series) {\n this.activeSeries = series;\n }\n\n setActiveSeriesByIndex(index) {\n const series = this.getSeriesByIndex(index);\n if (series != null && series.yAxis == null) {\n series.yAxis = 0;\n }\n this.setActiveSeries(series);\n }\n\n resetSeries() {\n let confirmMessage = '';\n const seriesName = this.activeSeries.name;\n if (seriesName === '') {\n confirmMessage = $localize`Are you sure you want to reset the series?`;\n } else {\n confirmMessage = $localize`Are you sure you want to reset the \"${seriesName}\" series?`;\n }\n if (confirm(confirmMessage)) {\n this.resetSeriesHelper();\n }\n }\n\n resetSeriesHelper() {\n if (this.component.hasConnectedComponent()) {\n this.newTrial();\n const isReset = true;\n this.handleConnectedComponents(isReset);\n } else {\n const activeSeriesIndex = this.getSeriesIndex(this.activeSeries);\n let originalSeries = this.componentContent.series[activeSeriesIndex];\n if (originalSeries != null) {\n originalSeries = copy(originalSeries);\n this.setSeriesByIndex(originalSeries, activeSeriesIndex);\n this.setActiveSeriesByIndex(activeSeriesIndex);\n if (this.componentContent.xAxis != null) {\n this.setXAxis(this.componentContent.xAxis);\n }\n if (this.componentContent.yAxis != null) {\n this.setYAxis(this.componentContent.yAxis);\n }\n this.backgroundImage = this.componentContent.backgroundImage;\n this.addNextComponentStateToUndoStack = true;\n this.studentDataChanged();\n }\n }\n }\n\n setStudentWork(componentState) {\n const studentData = componentState.studentData;\n if (this.isStudentDataVersion1(studentData.version)) {\n this.studentDataVersion = 1;\n this.setSeries(copy(studentData.series));\n } else {\n this.studentDataVersion = studentData.version;\n if (studentData.trials != null && studentData.trials.length > 0) {\n const trialsCopy = copy(studentData.trials);\n this.setTrials(trialsCopy);\n const activeTrialIndex = studentData.activeTrialIndex;\n if (activeTrialIndex == null) {\n if (trialsCopy.length > 0) {\n this.setActiveTrialByIndex(studentData.trials.length - 1);\n }\n } else {\n this.setActiveTrialByIndex(activeTrialIndex);\n }\n if (this.activeTrial != null && this.activeTrial.series != null) {\n this.series = this.activeTrial.series;\n }\n }\n }\n this.setTrialIdsToShow();\n if (studentData.xAxis != null) {\n this.setXAxis(studentData.xAxis);\n }\n if (studentData.yAxis != null) {\n this.setYAxis(studentData.yAxis);\n }\n this.setActiveSeriesByIndex(studentData.activeSeriesIndex);\n if (studentData.backgroundImage != null) {\n this.backgroundImage = studentData.backgroundImage;\n }\n const submitCounter = studentData.submitCounter;\n if (submitCounter != null) {\n this.submitCounter = submitCounter;\n }\n if (studentData.mouseOverPoints != null && studentData.mouseOverPoints.length > 0) {\n this.mouseOverPoints = studentData.mouseOverPoints;\n }\n this.processLatestStudentWork();\n }\n\n activeSeriesChanged() {\n const useTimeoutSetupGraph = true;\n this.studentDataChanged(useTimeoutSetupGraph);\n }\n\n studentDataChanged(useTimeoutSetupGraph: boolean = false) {\n this.isDirty = true;\n this.emitComponentDirty(true);\n this.isSubmitDirty = true;\n this.emitComponentSubmitDirty(true);\n this.clearLatestComponentState();\n this.drawGraph(useTimeoutSetupGraph);\n /*\n * the student work in this component has changed so we will tell\n * the parent node that the student data will need to be saved.\n * this will also notify connected parts that this component's student\n * data has changed.\n */\n const action = 'change';\n this.createComponentState(action).then((componentState) => {\n if (this.addNextComponentStateToUndoStack) {\n if (this.previousComponentState != null) {\n this.undoStack.push(this.previousComponentState);\n }\n /*\n * Remember this current component state for the next time\n * studentDataChanged() is called. The next time\n * studentDataChanged() is called, this will be the previous\n * component state and we will add it to the undoStack. We do not\n * want to put the current component state onto the undoStack\n * because if the student clicks undo and this current component\n * state is on the top of the stack, the graph won't change.\n * Basically the undoStack contains the component states from the\n * current visit except for the current component state.\n */\n this.previousComponentState = componentState;\n this.addNextComponentStateToUndoStack = false;\n }\n /*\n * fire the componentStudentDataChanged event after a short timeout\n * so that the other component handleConnectedComponentStudentDataChanged()\n * listeners can initialize before this and are then able to process\n * this componentStudentDataChanged event\n */\n setTimeout(() => {\n this.emitComponentStudentDataChanged(componentState);\n }, 1000);\n });\n }\n\n /**\n * Create a new component state populated with the student data\n * @param action the action that is triggering creating of this component state\n * e.g. 'submit', 'save', 'change'\n * @return a promise that will return a component state\n */\n createComponentState(action) {\n const componentState = this.createNewComponentState();\n const studentData: any = {};\n studentData.version = this.studentDataVersion;\n if (this.isStudentDataVersion1()) {\n studentData.series = copy(this.getSeries());\n } else {\n if (this.trials != null) {\n studentData.trials = copy(this.trials);\n const activeTrialIndex = this.getTrialIndex(this.activeTrial);\n studentData.activeTrialIndex = activeTrialIndex;\n }\n }\n studentData.xAxis = copy(this.getXAxis());\n delete studentData.xAxis.plotBands;\n if (this.componentContent.xAxis != null && this.componentContent.xAxis.plotBands != null) {\n studentData.xAxis.plotBands = this.componentContent.xAxis.plotBands;\n }\n studentData.yAxis = this.getYAxis();\n const activeSeriesIndex = this.getSeriesIndex(this.activeSeries);\n if (activeSeriesIndex != null) {\n studentData.activeSeriesIndex = activeSeriesIndex;\n }\n const uploadedFileName = this.getUploadedFileName();\n if (uploadedFileName != null) {\n studentData.uploadedFileName = uploadedFileName;\n }\n if (this.backgroundImage != null) {\n studentData.backgroundImage = this.backgroundImage;\n }\n studentData.submitCounter = this.submitCounter;\n if (this.mouseOverPoints.length !== 0) {\n studentData.mouseOverPoints = this.mouseOverPoints;\n }\n componentState.isSubmit = this.isSubmit;\n componentState.studentData = studentData;\n componentState.componentType = 'Graph';\n componentState.nodeId = this.nodeId;\n componentState.componentId = this.componentId;\n if (this.isSubmit && this.hasDefaultFeedback()) {\n this.addDefaultFeedback(componentState);\n }\n this.isSubmit = false;\n return new Promise((resolve, reject) => {\n this.createComponentStateAdditionalProcessing(\n { resolve: resolve, reject: reject },\n componentState,\n action\n );\n });\n }\n\n /**\n * Perform any additional processing that is required before returning the component state\n * Note: this function must call deferred.resolve() otherwise student work will not be saved\n * @param deferred a deferred object\n * @param componentState the component state\n * @param action the action that we are creating the component state for\n * e.g. 'submit', 'save', 'change'\n */\n createComponentStateAdditionalProcessing(deferred, componentState, action) {\n if (this.projectService.hasAdditionalProcessingFunctions(this.nodeId, this.componentId)) {\n const additionalProcessingFunctions = this.projectService.getAdditionalProcessingFunctions(\n this.nodeId,\n this.componentId\n );\n const allPromises = [];\n for (const additionalProcessingFunction of additionalProcessingFunctions) {\n const promise = new Promise((resolve, reject) => {\n additionalProcessingFunction(\n { resolve: resolve, reject: reject },\n componentState,\n action\n );\n });\n allPromises.push(promise);\n }\n Promise.all(allPromises).then(() => {\n deferred.resolve(componentState);\n });\n } else {\n deferred.resolve(componentState);\n }\n }\n\n getSeriesIndex(series) {\n const multipleSeries = this.getSeries();\n for (let s = 0; s < multipleSeries.length; s++) {\n const singleSeries = multipleSeries[s];\n if (series === singleSeries) {\n return s;\n }\n }\n return null;\n }\n\n getSeriesById(id) {\n for (const singleSeries of this.getSeries()) {\n if (singleSeries.id === id) {\n return singleSeries;\n }\n }\n return null;\n }\n\n /**\n * Convert the table data into series data\n * @param componentState the component state to get table data from\n * @param params (optional) the params to specify what columns\n * and rows to use from the table data\n */\n convertRowDataToSeriesData(rows, params) {\n const data = [];\n let skipFirstRow = this.getSkipFirstRowValue(params);\n let xColumn = this.getXColumnValue(params);\n let yColumn = this.getYColumnValue(params);\n for (let r = 0; r < rows.length; r++) {\n if (skipFirstRow && r === 0) {\n continue;\n }\n const row = rows[r];\n const xCell = row[xColumn];\n const yCell = row[yColumn];\n if (xCell != null && yCell != null) {\n addPointFromTableIntoData(xCell, yCell, data, null);\n }\n }\n return data;\n }\n\n getSkipFirstRowValue(params) {\n if (params == null) {\n return false;\n } else {\n return params.skipFirstRow;\n }\n }\n\n getXColumnValue(params) {\n if (params == null || params.xColumn == null) {\n return 0;\n } else {\n return params.xColumn;\n }\n }\n\n getYColumnValue(params) {\n if (params == null || params.yColumn == null) {\n return 1;\n } else {\n return params.yColumn;\n }\n }\n\n setSeriesIds(allSeries) {\n const usedSeriesIds = this.getAllUsedSeriesIds(allSeries);\n for (const singleSeries of allSeries) {\n if (singleSeries.id == null) {\n const nextSeriesId = this.getNextSeriesId(usedSeriesIds);\n singleSeries.id = nextSeriesId;\n usedSeriesIds.push(nextSeriesId);\n }\n }\n }\n\n getAllUsedSeriesIds(allSeries) {\n const usedSeriesIds = [];\n for (const singleSeries of allSeries) {\n usedSeriesIds.push(singleSeries.id);\n }\n return usedSeriesIds;\n }\n\n /**\n * Get the next available series id\n * @param usedSeriesIds an array of used series ids\n * @returns the next available series id\n */\n getNextSeriesId(usedSeriesIds) {\n let nextSeriesId = null;\n let currentSeriesNumber = 0;\n let foundNextSeriesId = false;\n while (!foundNextSeriesId) {\n const tempSeriesId = 'series-' + currentSeriesNumber;\n if (usedSeriesIds.indexOf(tempSeriesId) === -1) {\n nextSeriesId = tempSeriesId;\n foundNextSeriesId = true;\n } else {\n currentSeriesNumber++;\n }\n }\n return nextSeriesId;\n }\n\n getChartById(chartId) {\n for (const chart of Highcharts.charts) {\n if (chart != null && (chart as any).renderTo.id === chartId) {\n return chart;\n }\n }\n return null;\n }\n\n @HostListener('keydown.backspace')\n handleDeleteKeyPressed(): void {\n const series = this.activeSeries;\n if (this.canEdit(series)) {\n const selectedPoints = this.getSelectedPoints();\n let index = null;\n if (selectedPoints.length > 0) {\n const indexesToDelete = [];\n const data = series.data;\n for (const selectedPoint of selectedPoints) {\n index = selectedPoint.index;\n const dataPoint = data[index];\n if (dataPoint != null) {\n /*\n * make sure the x and y values match the selected point\n * that we are going to delete\n */\n if (dataPoint[0] === selectedPoint.x || dataPoint[1] === selectedPoint.y) {\n indexesToDelete.push(index);\n }\n }\n }\n /*\n * order the array from largest to smallest. we are doing this\n * so that we delete the points from the end first. if we delete\n * points starting from lower indexes first, then the indexes\n * will shift and we will end up deleting the wrong points.\n */\n indexesToDelete.sort().reverse();\n // loop through all the indexes and remove them from the series data\n for (let i = 0; i < indexesToDelete.length; i++) {\n data.splice(indexesToDelete[i], 1);\n }\n this.addNextComponentStateToUndoStack = true;\n this.studentDataChanged();\n }\n }\n }\n\n getSelectedPoints() {\n const chart = this.getChartById(this.chartId);\n return chart.getSelectedPoints();\n }\n\n isActiveSeries(series) {\n const seriesIndex = this.getSeriesIndex(series);\n return this.isActiveSeriesIndex(seriesIndex);\n }\n\n isActiveSeriesIndex(seriesIndex) {\n return this.series.indexOf(this.activeSeries) === seriesIndex;\n }\n\n isShowSelectSeriesInput() {\n return (\n this.trialIdsToShow.length &&\n this.hasEditableSeries() &&\n this.isSelectSeriesVisible &&\n this.series.length > 1\n );\n }\n\n newTrialButtonClicked() {\n this.newTrial();\n this.addNextComponentStateToUndoStack = true;\n this.studentDataChanged();\n }\n\n newTrial() {\n const activeSeriesIndex = this.getSeriesIndex(this.activeSeries);\n const trialNumbers = this.getTrialNumbers();\n let maxTrialNumber = 0;\n if (trialNumbers.length > 0) {\n maxTrialNumber = trialNumbers[trialNumbers.length - 1];\n }\n if (this.hideAllTrialsOnNewTrial) {\n for (const trial of this.trials) {\n trial.show = false;\n }\n }\n const series = copy(this.componentContent.series);\n const trial = {\n name: $localize`Trial` + ' ' + (maxTrialNumber + 1),\n series: series,\n show: true,\n id: generateRandomKey()\n };\n this.trials.push(trial);\n this.activeTrial = trial;\n this.series = series;\n if (this.activeSeries == null) {\n this.setDefaultActiveSeries();\n } else {\n this.setActiveSeriesByIndex(activeSeriesIndex);\n }\n this.setTrialIdsToShow();\n }\n\n getTrialNumbers() {\n const trialNumbers = [];\n const trialNumberRegex = /Trial (\\d*)/;\n for (const trial of this.trials) {\n const tempTrialName = trial.name;\n const match = trialNumberRegex.exec(tempTrialName);\n if (match != null && match.length > 0) {\n const tempTrialNumber = match[1];\n trialNumbers.push(parseInt(tempTrialNumber));\n }\n }\n trialNumbers.sort();\n return trialNumbers;\n }\n\n deleteTrial(trialIndex) {\n const trialToRemove = this.trials[trialIndex];\n const trialToRemoveId = trialToRemove.id;\n this.trials.splice(trialIndex, 1);\n for (let t = 0; t < this.trialIdsToShow.length; t++) {\n if (trialToRemoveId === this.trialIdsToShow[t]) {\n this.trialIdsToShow.splice(t, 1);\n }\n }\n if (this.trials.length === 0) {\n // there are no more trials so we will create a new empty trial\n this.newTrial();\n this.setXAxis(this.componentContent.xAxis);\n this.setYAxis(this.componentContent.yAxis);\n } else if (this.trials.length > 0) {\n if (trialToRemove === this.activeTrial) {\n this.makeHighestTrialActive();\n }\n }\n this.setTrialIdsToShow();\n this.addNextComponentStateToUndoStack = true;\n this.studentDataChanged();\n }\n\n makeHighestTrialActive() {\n this.activeTrial = null;\n this.activeSeries = null;\n this.series = [];\n const highestTrial = this.getHighestTrial();\n if (highestTrial != null) {\n const seriesIndex = this.getSeriesIndex(this.activeSeries);\n this.activeTrial = highestTrial;\n this.setSeries(this.activeTrial.series);\n if (seriesIndex != null) {\n this.setActiveSeriesByIndex(seriesIndex);\n }\n }\n }\n\n getHighestTrial() {\n let highestTrialIndex = null;\n let highestTrial = null;\n for (const trialId of this.trialIdsToShow) {\n const trial = this.getTrialById(trialId);\n const trialIndex = this.getTrialIndex(trial);\n if (highestTrialIndex == null || trialIndex > highestTrialIndex) {\n highestTrialIndex = trialIndex;\n highestTrial = trial;\n }\n }\n return highestTrial;\n }\n\n activeTrialChanged() {\n const seriesIndex = this.getSeriesIndex(this.activeSeries);\n const activeTrial = this.activeTrial;\n this.series = activeTrial.series;\n this.setActiveSeriesByIndex(seriesIndex);\n this.addNextComponentStateToUndoStack = true;\n this.studentDataChanged();\n }\n\n trialIdsToShowChanged() {\n this.showOrHideTrials(this.trialIdsToShow);\n this.setActiveTrialAndSeriesByTrialIdsToShow(this.trialIdsToShow);\n // hack: for some reason, the ids to show model gets out of sync when deleting a trial, for example\n // TODO: figure out why this check is sometimes necessary and remove\n for (let a = 0; a < this.trialIdsToShow.length; a++) {\n const idToShow = this.trialIdsToShow[a];\n if (!this.getTrialById(idToShow)) {\n this.trialIdsToShow.splice(a, 1);\n }\n }\n /*\n * Make sure the trialIdsToShow has actually changed. Sometimes\n * trialIdsToShowChanged() gets called even if trialIdsToShow\n * does not change because the model for the trial checkbox\n * select is graphController.trials. This means trialIdsToShowChanged()\n * will be called when we replace the trials in createComponentState()\n * but this does not necessarily mean the trialIdsToShow has changed.\n * We do this check to minimize the number of times studentDataChanged()\n * is called.\n */\n if (\n this.previousTrialIdsToShow != null &&\n this.trialIdsToShow != null &&\n !arraysContainSameValues(this.previousTrialIdsToShow, this.trialIdsToShow)\n ) {\n this.trialIdsToShow = this.trialIdsToShow;\n this.studentDataChanged();\n }\n /*\n * Remember the trial ids to show so we can use it to make sure the\n * trialIdsToShow actually change the next time trialIdsToShowChanged()\n * is called.\n */\n this.previousTrialIdsToShow = copy(this.trialIdsToShow);\n }\n\n showOrHideTrials(trialIdsToShow) {\n for (const trial of this.trials) {\n if (trialIdsToShow.indexOf(trial.id) !== -1) {\n trial.show = true;\n } else {\n trial.show = false;\n if (this.activeTrial != null && this.activeTrial.id === trial.id) {\n this.activeTrial = null;\n this.activeSeries = null;\n this.series = [];\n }\n }\n }\n }\n\n setActiveTrialAndSeriesByTrialIdsToShow(trialIdsToShow) {\n if (trialIdsToShow.length > 0) {\n const lastShownTrialId = trialIdsToShow[trialIdsToShow.length - 1];\n const lastShownTrial = this.getTrialById(lastShownTrialId);\n if (this.hasEditableSeries(lastShownTrial.series)) {\n this.activeTrial = lastShownTrial;\n let seriesIndex = this.getSeriesIndex(this.activeSeries);\n if (!this.isSeriesEditable(this.activeTrial.series, seriesIndex)) {\n seriesIndex = this.getLatestEditableSeriesIndex(this.activeTrial.series);\n }\n this.setSeries(this.activeTrial.series);\n if (seriesIndex != null) {\n this.setActiveSeriesByIndex(seriesIndex);\n }\n }\n }\n }\n\n isSeriesEditable(multipleSeries, index) {\n if (multipleSeries[index] != null) {\n return multipleSeries[index].canEdit;\n }\n return false;\n }\n\n getLatestEditableSeriesIndex(multipleSeries) {\n for (let s = multipleSeries.length - 1; s >= 0; s--) {\n if (multipleSeries[s].canEdit) {\n return s;\n }\n }\n return null;\n }\n\n setTrialIdsToShow() {\n const idsToShow = [];\n for (const trial of this.trials) {\n if (trial.show) {\n idsToShow.push(trial.id);\n }\n }\n this.trialIdsToShow = idsToShow;\n this.previousTrialIdsToShow = idsToShow;\n }\n\n /**\n * Process the student data that we have received from a connected component.\n * @param studentData The student data from a connected component.\n * @param params The connected component params.\n */\n processConnectedComponentStudentData(studentData, params) {\n if (params.fields == null) {\n /*\n * we do not need to look at specific fields so we will directly\n * parse the the trial data from the student data.\n */\n if (this.hasTrial(studentData)) {\n this.parseLatestTrial(studentData, params);\n }\n } else {\n // we need to process specific fields in the student data\n for (const field of params.fields) {\n const name = field.name;\n const when = field.when;\n const action = field.action;\n if (when === 'always') {\n if (action === 'write') {\n // TODO\n } else if (action === 'read') {\n this.readConnectedComponentFieldFromStudentData(studentData, params, name);\n }\n } else if (when === 'firstTime') {\n if (action === 'write') {\n // TODO\n } else if (action === 'read') {\n // TODO\n }\n }\n }\n }\n }\n\n /**\n * Read the field from the new student data and perform any processing on our\n * existing student data based upon the new student data.\n * @param studentData The new student data from the connected component.\n * @param params The connected component params.\n * @param name The field name to read and process.\n */\n readConnectedComponentFieldFromStudentData(studentData, params, name) {\n if (name === 'selectedCells') {\n // only show the trials that are specified in the selectedCells array\n let selectedCells = studentData[name];\n if (selectedCells != null) {\n let selectedTrialIds = this.convertSelectedCellsToTrialIds(selectedCells);\n for (let trial of this.trials) {\n if (selectedTrialIds.includes(trial.id)) {\n trial.show = true;\n } else {\n trial.show = false;\n }\n }\n }\n } else if (name === 'trial' && this.hasTrial(studentData)) {\n this.parseLatestTrial(studentData, params);\n } else if (name === 'trialIdsToDelete') {\n this.deleteTrialsByTrialId(studentData.trialIdsToDelete);\n } else if (name === 'clearGraph' && studentData.clearGraph) {\n this.clearGraph();\n }\n }\n\n /**\n * Delete the trials\n * @param trialIdsToDelete An array of trial ids to delete\n */\n deleteTrialsByTrialId(trialIdsToDelete) {\n if (trialIdsToDelete != null) {\n for (let trialIdToDelete of trialIdsToDelete) {\n this.deleteTrialId(trialIdToDelete);\n }\n }\n }\n\n clearGraph() {\n this.trials = [];\n this.newTrial();\n this.resetSeriesHelper();\n this.drawGraph();\n }\n\n /**\n * Delete a trial\n * @param trialId The trial id string to delete\n */\n deleteTrialId(trialId) {\n for (let t = 0; t < this.trials.length; t++) {\n let trial = this.trials[t];\n if (trial.id === trialId) {\n this.trials.splice(t, 1);\n break;\n }\n }\n }\n\n /**\n * Parse the latest trial and set it into the component\n * @param studentData the student data object that has a trials field\n * @param params (optional) parameters that specify what to use from the\n * student data\n */\n parseLatestTrial(studentData, params) {\n const latestStudentDataTrial = this.getLatestStudentDataTrial(studentData);\n const latestStudentDataTrialId = latestStudentDataTrial.id;\n this.removeDefaultTrialIfNecessary(latestStudentDataTrialId);\n const latestTrial = this.createNewTrialIfNecessary(latestStudentDataTrialId);\n this.copySeriesIntoTrial(latestStudentDataTrial, latestTrial, studentData, params);\n this.copyTrialNameIntoTrial(latestStudentDataTrial, latestTrial);\n this.copyPlotBandsIntoTrial(latestStudentDataTrial, latestTrial);\n this.setLastTrialToActive();\n if (studentData.xPlotLine != null) {\n this.showXPlotLine(studentData.xPlotLine);\n }\n this.setTrialIdsToShow();\n this.activeTrialChanged();\n }\n\n getLatestStudentDataTrial(studentData) {\n let latestStudentDataTrial = null;\n if (studentData.trial != null) {\n latestStudentDataTrial = studentData.trial;\n }\n if (studentData.trials != null && studentData.trials.length > 0) {\n latestStudentDataTrial = studentData.trials[studentData.trials.length - 1];\n }\n return latestStudentDataTrial;\n }\n\n hasTrial(studentData: any): boolean {\n return (\n studentData.trial != null || (studentData.trials != null && studentData.trials.length > 0)\n );\n }\n\n hideAllTrials() {\n for (const trial of this.trials) {\n trial.show = false;\n }\n }\n\n createNewTrial(id) {\n return {\n id: id,\n name: '',\n series: [],\n show: true\n };\n }\n\n copySeries(series) {\n const newSeries: any = {\n name: series.name,\n data: series.data,\n color: series.color,\n canEdit: false,\n allowPointSelect: false\n };\n if (series.marker != null) {\n newSeries.marker = series.marker;\n }\n if (series.dashStyle != null) {\n newSeries.dashStyle = series.dashStyle;\n }\n if (series.allowPointMouseOver != null) {\n newSeries.allowPointMouseOver = series.allowPointMouseOver;\n }\n return newSeries;\n }\n\n removeDefaultTrialIfNecessary(latestStudentDataTrialId) {\n /*\n * remove the first default trial that is automatically created\n * when the student first visits the component otherwise there\n * will be a blank trial.\n */\n if (this.trials.length > 0) {\n const firstTrial = this.trials[0];\n /*\n * check if the trial has any series. if the trial doesn't\n * have any series it means it was automatically created by\n * the component.\n */\n if (this.isTrialHasEmptySeries(firstTrial)) {\n if (firstTrial.id == null || firstTrial.id !== latestStudentDataTrialId) {\n this.deleteFirstTrial(this.trials);\n }\n }\n }\n }\n\n isTrialHasEmptySeries(trial) {\n return trial.series == null || trial.series.length === 0 || this.isSeriesEmpty(trial.series);\n }\n\n isSeriesEmpty(series) {\n return series.length === 1 && series[0].data.length === 0;\n }\n\n deleteFirstTrial(trials) {\n trials.shift();\n }\n\n createNewTrialIfNecessary(trialId) {\n let trial = this.getTrialById(trialId);\n if (trial == null) {\n if (this.hideAllTrialsOnNewTrial) {\n this.hideAllTrials();\n }\n trial = this.createNewTrial(trialId);\n trial.show = true;\n this.setXAxis(this.componentContent.xAxis);\n this.setYAxis(this.componentContent.yAxis);\n this.trials.push(trial);\n }\n return trial;\n }\n\n copySeriesIntoTrial(oldTrial, newTrial, studentData, params) {\n newTrial.series = [];\n const series = oldTrial.series;\n for (let s = 0; s < series.length; s++) {\n if (this.isAddSeries(params, s)) {\n newTrial.series.push(this.copySeries(series[s]));\n if (params.highlightLatestPoint) {\n setTimeout(() => {\n this.highlightPointOnX(studentData.trial.id, studentData.xPointToHighlight);\n }, 1);\n }\n }\n }\n }\n\n isAddSeries(params, seriesIndex) {\n return (\n params == null ||\n params.seriesNumbers == null ||\n params.seriesNumbers.length === 0 ||\n (params.seriesNumbers != null && params.seriesNumbers.indexOf(seriesIndex) !== -1)\n );\n }\n\n copyTrialNameIntoTrial(oldTrial, newTrial) {\n if (oldTrial.name != null) {\n newTrial.name = oldTrial.name;\n }\n }\n\n copyPlotBandsIntoTrial(oldTrial, newTrial) {\n if (oldTrial.xAxis != null && oldTrial.xAxis.plotBands != null) {\n if (newTrial.xAxis == null) {\n newTrial.xAxis = {};\n }\n newTrial.xAxis.plotBands = oldTrial.xAxis.plotBands;\n }\n }\n\n setLastTrialToActive() {\n if (this.trials.length > 0) {\n this.activeTrial = this.trials[this.trials.length - 1];\n this.activeTrial.show = true;\n }\n }\n\n getTrialById(id) {\n for (const trial of this.trials) {\n if (trial.id === id) {\n return trial;\n }\n }\n return null;\n }\n\n hasEditableSeries(series = this.getSeries()) {\n for (const singleSeries of series) {\n if (singleSeries.canEdit) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Update the x and y axis min and max values if necessary to make sure\n * all points are visible in the graph view.\n * @param series the an array of series\n * @param xAxis the x axis object\n * @param yAxis the y axis object\n */\n updateMinMaxAxisValues(series, xAxis, yAxis) {\n const minMaxValues = this.getMinMaxValues(series);\n this.updateXAxisMinMaxIfNecessary(xAxis, minMaxValues);\n this.updateYAxisMinMaxIfNecessary(yAxis, minMaxValues);\n }\n\n updateXAxisMinMaxIfNecessary(xAxis, minMaxValues) {\n if (xAxis != null && !xAxis.locked) {\n if (minMaxValues.xMin < xAxis.min) {\n // set the value to null so highcharts will automatically set the value\n xAxis.min = null;\n xAxis.minPadding = 0.2;\n }\n if (minMaxValues.xMax >= xAxis.max) {\n // set the value to null so highcharts will automatically set the value\n xAxis.max = null;\n xAxis.maxPadding = 0.2;\n }\n }\n }\n\n updateYAxisMinMaxIfNecessary(yAxis, minMaxValues) {\n if (yAxis != null && !yAxis.locked) {\n if (minMaxValues.yMin < yAxis.min) {\n // set the value to null so highcharts will automatically set the value\n yAxis.min = null;\n yAxis.minPadding = 0.2;\n }\n if (minMaxValues.yMax >= yAxis.max) {\n // set the value to null so highcharts will automatically set the value\n yAxis.max = null;\n yAxis.maxPadding = 0.2;\n }\n }\n }\n\n getMinMaxValues(series) {\n let xMin = 0;\n let xMax = 0;\n let yMin = 0;\n let yMax = 0;\n for (const singleSeries of series) {\n const data = singleSeries.data;\n for (const dataPoint of data) {\n if (dataPoint != null) {\n let tempX = null;\n let tempY = null;\n if (dataPoint.constructor.name === 'Object') {\n tempX = dataPoint.x;\n tempY = dataPoint.y;\n } else if (dataPoint.constructor.name === 'Array') {\n tempX = dataPoint[0];\n tempY = dataPoint[1];\n } else if (dataPoint.constructor.name === 'Number') {\n tempY = dataPoint;\n }\n if (tempX > xMax) {\n xMax = tempX;\n }\n if (tempX < xMin) {\n xMin = tempX;\n }\n if (tempY > yMax) {\n yMax = tempY;\n }\n if (tempY < yMin) {\n yMin = tempY;\n }\n }\n }\n }\n const result = {\n xMin: xMin,\n xMax: xMax,\n yMin: yMin,\n yMax: yMax\n };\n return result;\n }\n\n clearSeriesIds(series) {\n for (const singleSeries of series) {\n singleSeries.id = null;\n }\n }\n\n protected snipGraph(): void {\n const hiddenCanvas: any = document.querySelector(`#${this.hiddenCanvasId}`);\n Canvg.fromString(hiddenCanvas.getContext('2d'), this.getChartById(this.chartId).getSVG())\n .render()\n .then(() => {\n this.notebookService.addNote(\n this.studentDataService.getCurrentNodeId(),\n convertToPNGFile(hiddenCanvas)\n );\n });\n }\n\n readCSVIntoActiveSeries(csvString) {\n const lines = csvString.split(/\\r\\n|\\n/);\n this.activeSeries.data = [];\n for (const line of lines) {\n const values = line.split(',');\n const x = parseFloat(values[0]);\n const y = parseFloat(values[1]);\n if (!isNaN(x) && !isNaN(y)) {\n const dataPoint = [x, y];\n this.activeSeries.data.push(dataPoint);\n }\n }\n }\n\n setUploadedFileName(fileName) {\n this.uploadedFileName = fileName;\n }\n\n getUploadedFileName() {\n return this.uploadedFileName;\n }\n\n performRounding(number: number): number {\n return this.graphService.performRounding(number, this.componentContent.roundValuesTo);\n }\n\n /**\n * Set the active series to the first series that the student can edit\n * or if there are no series the student can edit, set the active series\n * to the first series.\n */\n setDefaultActiveSeries() {\n for (let s = 0; s < this.series.length; s++) {\n const singleSeries = this.series[s];\n if (singleSeries.canEdit) {\n this.setActiveSeriesByIndex(s);\n break;\n }\n }\n if (this.activeSeries == null && this.series.length > 0) {\n /*\n * we did not find any series that the student can edit so we will\n * just set the active series to be the first series\n */\n this.setActiveSeriesByIndex(0);\n }\n }\n\n /**\n * Import any work we need from connected components\n * @param {boolean} isReset (optional) Whether this function call was\n * triggered by the student clicking the reset button.\n */\n handleConnectedComponents(isReset: boolean = false) {\n /*\n * This will hold all the promises that will return the trials that we want. The trials will\n * either be from this student or from classmates.\n */\n const promises = [];\n /*\n * this will end up containing the background from the last\n * connected component\n */\n let connectedComponentBackgroundImage = null;\n for (const connectedComponent of this.componentContent.connectedComponents) {\n const type = connectedComponent.type;\n if (type === 'showClassmateWork') {\n connectedComponentBackgroundImage = this.handleShowClassmateWorkConnectedComponent(\n connectedComponent,\n promises\n );\n } else if (type === 'showWork' || type === 'importWork' || type == null) {\n connectedComponentBackgroundImage = this.handleShowOrImportWorkConnectedComponent(\n connectedComponent,\n promises\n );\n }\n }\n\n /*\n * wait for all the promises to resolve because we may need to request the classmate work from\n * the server\n */\n Promise.all(promises).then(\n this.handleConnectedComponentPromiseResults(connectedComponentBackgroundImage, isReset)\n );\n }\n\n handleShowClassmateWorkConnectedComponent(connectedComponent, promises) {\n const nodeId = connectedComponent.nodeId;\n const componentId = connectedComponent.componentId;\n let connectedComponentBackgroundImage = null;\n this.isDisabled = true;\n if (this.configService.isPreview()) {\n const latestComponentState =\n this.studentDataService.getLatestComponentStateByNodeIdAndComponentId(nodeId, componentId);\n if (latestComponentState != null) {\n promises.push(\n this.graphConnectedComponentManager.getTrialsFromComponentState(\n nodeId,\n componentId,\n latestComponentState\n )\n );\n if (\n latestComponentState != null &&\n latestComponentState.studentData != null &&\n latestComponentState.studentData.backgroundImage != null\n ) {\n connectedComponentBackgroundImage = latestComponentState.studentData.backgroundImage;\n }\n }\n } else {\n promises.push(\n this.graphConnectedComponentManager.getTrialsFromClassmates(\n this.nodeId,\n this.componentId,\n this.configService.getPeriodId(),\n nodeId,\n componentId,\n connectedComponent.showClassmateWorkSource\n )\n );\n let component = this.projectService.getComponent(nodeId, componentId) as GraphContent;\n component = this.projectService.injectAssetPaths(component);\n connectedComponentBackgroundImage = component.backgroundImage;\n }\n return connectedComponentBackgroundImage;\n }\n\n handleShowOrImportWorkConnectedComponent(connectedComponent, promises) {\n const nodeId = connectedComponent.nodeId;\n const componentId = connectedComponent.componentId;\n let connectedComponentBackgroundImage = null;\n let latestComponentState =\n this.studentDataService.getLatestComponentStateByNodeIdAndComponentId(nodeId, componentId);\n if (latestComponentState != null) {\n if (\n latestComponentState.componentType === 'ConceptMap' ||\n latestComponentState.componentType === 'Draw' ||\n latestComponentState.componentType === 'Label'\n ) {\n const connectedComponentOfComponentState = this.component.getConnectedComponent(\n latestComponentState.nodeId,\n latestComponentState.componentId\n );\n if (connectedComponentOfComponentState.importWorkAsBackground === true) {\n promises.push(this.setComponentStateAsBackgroundImage(latestComponentState));\n }\n } else {\n if (connectedComponent.type === 'showWork') {\n latestComponentState = copy(latestComponentState);\n const canEdit = false;\n this.setCanEditForAllSeriesInComponentState(latestComponentState, canEdit);\n }\n promises.push(\n this.graphConnectedComponentManager.getTrialsFromComponentState(\n nodeId,\n componentId,\n latestComponentState\n )\n );\n if (\n latestComponentState != null &&\n latestComponentState.studentData != null &&\n latestComponentState.studentData.backgroundImage != null\n ) {\n connectedComponentBackgroundImage = latestComponentState.studentData.backgroundImage;\n }\n if (connectedComponent.importGraphSettings) {\n const component = this.projectService.getComponent(\n connectedComponent.nodeId,\n connectedComponent.componentId\n );\n this.importGraphSettings(component, latestComponentState);\n }\n }\n }\n return connectedComponentBackgroundImage;\n }\n\n importGraphSettings(component, componentState) {\n this.title = component.title;\n this.subtitle = component.subtitle;\n this.width = component.width;\n this.height = component.height;\n this.xAxis = componentState.studentData.xAxis;\n this.yAxis = componentState.studentData.yAxis;\n }\n\n handleConnectedComponentPromiseResults(connectedComponentBackgroundImage, isReset) {\n return (promiseResults) => {\n if (promiseResults.length > 0) {\n /*\n * First we will accumulate all the trials into one new component state and then we will\n * perform connected component processing.\n */\n const mergedTrials = [];\n /*\n * Loop through all the promise results. There will be a promise result for each component we\n * are importing from. Each promiseResult is an array of trials or an image url.\n */\n let trialCount = 0;\n let activeTrialIndex = 0;\n let activeSeriesIndex = 0;\n for (const promiseResult of promiseResults) {\n if (promiseResult instanceof Array) {\n const trials = promiseResult;\n for (const trial of trials) {\n if (this.canEditTrial(trial)) {\n activeTrialIndex = trialCount;\n }\n mergedTrials.push(trial);\n trialCount++;\n }\n } else if (typeof promiseResult === 'string') {\n connectedComponentBackgroundImage = promiseResult;\n }\n }\n if (this.isTrialsEnabled()) {\n activeTrialIndex = this.addTrialFromThisComponentIfNecessary(\n mergedTrials,\n trialCount,\n activeTrialIndex\n );\n }\n let newComponentState = this.createNewComponentState();\n newComponentState.studentData = {\n trials: mergedTrials,\n activeTrialIndex: activeTrialIndex,\n activeSeriesIndex: activeSeriesIndex,\n version: 2\n };\n if (\n this.componentContent.backgroundImage != null &&\n this.componentContent.backgroundImage !== ''\n ) {\n newComponentState.studentData.backgroundImage = this.componentContent.backgroundImage;\n } else if (connectedComponentBackgroundImage != null) {\n newComponentState.studentData.backgroundImage = connectedComponentBackgroundImage;\n }\n newComponentState = this.handleConnectedComponentsHelper(newComponentState, isReset);\n this.setStudentWork(newComponentState);\n this.studentDataChanged();\n }\n };\n }\n\n addTrialFromThisComponentIfNecessary(mergedTrials, trialCount, activeTrialIndex) {\n if (this.componentContent.series.length > 0) {\n const trial = this.createNewTrial(generateRandomKey());\n trial.name = $localize`Trial` + ' ' + trialCount;\n trial.series = copy(this.componentContent.series);\n mergedTrials.push(trial);\n if (this.canEditTrial(trial)) {\n activeTrialIndex = trialCount;\n }\n }\n return activeTrialIndex;\n }\n\n /**\n * Create an image from a component state and set the image as the background.\n * @param componentState A component state.\n * @return A promise that returns the url of the image that is generated from the component state.\n */\n setComponentStateAsBackgroundImage(componentState) {\n return this.generateImageFromComponentState(componentState).then((image) => {\n return image.url;\n });\n }\n\n /**\n * Perform additional connected component processing.\n * @param newComponentState The new component state generated by accumulating the trials from all\n * the connected component student data.\n */\n handleConnectedComponentsHelper(newComponentState, isReset) {\n let mergedComponentState = this.componentState;\n let firstTime = true;\n if (\n mergedComponentState == null ||\n isReset ||\n !this.graphService.componentStateHasStudentWork(mergedComponentState)\n ) {\n mergedComponentState = newComponentState;\n } else {\n /*\n * This component has previous student data so this is not the first time this component is\n * being loaded.\n */\n firstTime = false;\n }\n for (const connectedComponent of this.componentContent.connectedComponents) {\n const nodeId = connectedComponent.nodeId;\n const componentId = connectedComponent.componentId;\n const type = connectedComponent.type;\n if (type === 'showClassmateWork') {\n mergedComponentState = newComponentState;\n } else if (type === 'importWork' || type == null) {\n const connectedComponentState =\n this.studentDataService.getLatestComponentStateByNodeIdAndComponentId(\n nodeId,\n componentId\n );\n const fields = connectedComponent.fields;\n if (connectedComponentState != null) {\n if (connectedComponentState.componentType !== 'Graph') {\n mergedComponentState = this.mergeComponentState(\n mergedComponentState,\n connectedComponentState,\n fields,\n firstTime\n );\n }\n } else {\n mergedComponentState = this.mergeNullComponentState(\n mergedComponentState,\n fields,\n firstTime\n );\n }\n }\n }\n if (mergedComponentState.studentData.version == null) {\n mergedComponentState.studentData.version = this.studentDataVersion;\n }\n if (newComponentState.studentData.backgroundImage != null) {\n mergedComponentState.studentData.backgroundImage =\n newComponentState.studentData.backgroundImage;\n }\n return mergedComponentState;\n }\n\n /**\n * Merge the component state from the connected component into the component\n * state from this component.\n * @param baseComponentState The component state from this component.\n * @param connectedComponentState The component state from the connected component.\n * @param mergeFields (optional) An array of objects that specify which fields\n * to look at in the connectedComponentState. Each object can contain 3 fields which\n * are \"name\", \"when\", \"action\".\n * - \"name\" is the name of the field in the connectedComponentState.studentData object\n * For example, if connectedComponentState is from a Graph component, we may author the value to be \"trials\"\n * - \"when\" possible values\n * \"firstTime\" means we merge the \"name\" field only the first time we visit the component\n * \"always\" means we merge the \"name\" field every time we visit the component\n * - \"action\" possible values\n * \"read\" means we look at the value of the \"name\" field and perform processing on it to generate\n * some value that we will set into the baseComponentState\n * \"write\" means we copy the value of the \"name\" field from connectedComponentState.studentData to\n * baseComponentState.studentData\n * @param firstTime Whether this is the first time this component is being\n * visited.\n * @return The merged component state.\n */\n mergeComponentState(baseComponentState, connectedComponentState, mergeFields, firstTime) {\n if (mergeFields == null) {\n if (connectedComponentState.componentType === 'Graph' && firstTime) {\n // there are no merge fields specified so we will get all of the fields\n baseComponentState.studentData = copy(connectedComponentState.studentData);\n }\n } else {\n // we will merge specific fields\n for (const mergeField of mergeFields) {\n const name = mergeField.name;\n const when = mergeField.when;\n const action = mergeField.action;\n if (when === 'firstTime' && firstTime) {\n if (action === 'write') {\n baseComponentState.studentData[name] = connectedComponentState.studentData[name];\n } else if (action === 'read') {\n // TODO\n }\n } else if (when === 'always') {\n if (action === 'write') {\n baseComponentState.studentData[name] = connectedComponentState.studentData[name];\n } else if (action === 'read') {\n this.readConnectedComponentField(baseComponentState, connectedComponentState, name);\n }\n }\n }\n }\n return baseComponentState;\n }\n\n /**\n * We want to merge the component state from the connected component into this\n * component but the connected component does not have any work. We will\n * instead use default values.\n * @param baseComponentState The component state from this component.\n * @param mergeFields (optional) An array of objects that specify which fields\n * to look at. (see comment for mergeComponentState() for more information).\n * @param firstTime Whether this is the first time this component is being\n * visited.\n * @return The merged component state.\n */\n mergeNullComponentState(baseComponentState, mergeFields, firstTime) {\n if (mergeFields == null) {\n // TODO\n } else {\n for (const mergeField of mergeFields) {\n const name = mergeField.name;\n const when = mergeField.when;\n const action = mergeField.action;\n if (when === 'firstTime' && firstTime == true) {\n if (action === 'write') {\n // TODO\n } else if (action === 'read') {\n // TODO\n }\n } else if (when === 'always') {\n if (action === 'write') {\n // TODO\n } else if (action === 'read') {\n const connectedComponentState = null;\n this.readConnectedComponentField(baseComponentState, connectedComponentState, name);\n }\n }\n }\n }\n return baseComponentState;\n }\n\n /**\n * Read the field from the connected component's component state.\n * @param baseComponentState The component state from this component.\n * @param connectedComponentState The component state from the connected component.\n * @param field The field to look at in the connected component's component\n * state.\n */\n readConnectedComponentField(baseComponentState, connectedComponentState, field) {\n if (field === 'selectedCells') {\n if (connectedComponentState == null) {\n // we will default to hide all the trials\n for (const trial of baseComponentState.studentData.trials) {\n trial.show = false;\n }\n } else {\n // loop through all the trials and show the ones that are in the selected cells array\n const studentData = connectedComponentState.studentData;\n const selectedCells = studentData[field];\n const selectedTrialIds = this.convertSelectedCellsToTrialIds(selectedCells);\n for (const trial of baseComponentState.studentData.trials) {\n if (selectedTrialIds.includes(trial.id)) {\n trial.show = true;\n } else {\n trial.show = false;\n }\n }\n }\n } else if (field === 'trial') {\n // TODO\n }\n }\n\n setCanEditForAllSeriesInComponentState(componentState, canEdit) {\n for (const trial of componentState.studentData.trials) {\n this.setCanEditForAllSeries(trial.series, canEdit);\n }\n }\n\n setCanEditForAllSeries(series, canEdit) {\n for (const singleSeries of series) {\n singleSeries.canEdit = canEdit;\n }\n }\n\n undoClicked() {\n if (this.undoStack.length > 0) {\n const previousComponentState = this.undoStack.pop();\n this.setStudentWork(previousComponentState);\n this.previousComponentState = previousComponentState;\n this.drawGraph();\n } else if (this.initialComponentState == null) {\n this.previousComponentState = null;\n this.trials = [];\n this.newTrial();\n this.resetSeriesHelper();\n this.drawGraph();\n }\n }\n\n trialCheckboxClicked() {\n this.addNextComponentStateToUndoStack = true;\n }\n\n isSaveMouseOverPoints() {\n return this.componentContent.saveMouseOverPoints;\n }\n\n getXValueFromDataPoint(dataPoint) {\n if (dataPoint.constructor.name === 'Object') {\n return dataPoint.x;\n } else if (dataPoint.constructor.name === 'Array') {\n return dataPoint[0];\n }\n return null;\n }\n\n getYValueFromDataPoint(dataPoint) {\n if (dataPoint.constructor.name === 'Object') {\n return dataPoint.y;\n } else if (dataPoint.constructor.name === 'Array') {\n return dataPoint[1];\n }\n return null;\n }\n\n getLatestMouseOverPointX() {\n if (this.mouseOverPoints.length > 0) {\n return this.getXValueFromDataPoint(this.mouseOverPoints[this.mouseOverPoints.length - 1]);\n }\n return null;\n }\n\n getLatestMouseOverPointY() {\n if (this.mouseOverPoints.length > 0) {\n return this.getYValueFromDataPoint(this.mouseOverPoints[this.mouseOverPoints.length - 1]);\n }\n return null;\n }\n\n showXPlotLineIfOn(text = null) {\n if (this.plotLineManager.isShowMouseXPlotLine()) {\n let x = this.getLatestMouseOverPointX();\n if (x == null) {\n x = 0;\n }\n this.showXPlotLine(x, text);\n }\n }\n\n showYPlotLineIfOn(text = null) {\n if (this.plotLineManager.isShowMouseYPlotLine()) {\n let y = this.getLatestMouseOverPointY();\n if (y == null) {\n y = 0;\n }\n this.plotLineManager.showYPlotLine(this.getChartById(this.chartId), y, text);\n }\n }\n\n highlightPointOnX(seriesId, x) {\n const chart = this.getChartById(this.chartId);\n if (chart.series.length > 0) {\n let series = null;\n if (seriesId == null) {\n series = chart.series[chart.series.length - 1];\n } else {\n for (const singleSeries of chart.series) {\n if (singleSeries.userOptions.name === seriesId) {\n series = singleSeries;\n }\n this.removeHoverStateFromPoints(singleSeries.points);\n }\n }\n this.setHoverStateOnPoint(series.points, x);\n }\n }\n\n removeHoverStateFromPoints(points) {\n for (const point of points) {\n point.setState('');\n }\n }\n\n setHoverStateOnPoint(points, x) {\n for (const point of points) {\n if (point.x === x) {\n point.setState('hover');\n }\n }\n }\n\n convertSelectedCellsToTrialIds(selectedCells) {\n const selectedTrialIds = [];\n if (selectedCells != null) {\n for (const selectedCell of selectedCells) {\n const material = selectedCell.material;\n const bevTemp = selectedCell.bevTemp;\n const airTemp = selectedCell.airTemp;\n const selectedTrialId = material + '-' + bevTemp + 'Liquid';\n selectedTrialIds.push(selectedTrialId);\n }\n }\n return selectedTrialIds;\n }\n\n isTrialsEnabled() {\n return this.componentContent.enableTrials === true;\n }\n\n isStudentDataVersion1(version: number = null) {\n if (version == null) {\n return this.studentDataVersion == null || this.studentDataVersion === 1;\n } else {\n return version === 1;\n }\n }\n\n private showXPlotLine(x: number, text: string = ''): void {\n this.plotLineManager.showXPlotLine(this.getChartById(this.chartId), x, text);\n this.drawRectangleIfNecessary(x);\n }\n\n private drawRectangleIfNecessary(x: number): void {\n if (this.componentContent.highlightXRangeFromZero) {\n const chart = this.getChartById(this.chartId);\n this.drawRangeRectangle(0, x, chart.yAxis[0].min, chart.yAxis[0].max);\n }\n }\n}\n", + "styleUrl": "graph-student.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "changeDetectorRef", + "type": "ChangeDetectorRef", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentService", + "type": "ComponentService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "graphService", + "type": "GraphService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "notebookService", + "type": "NotebookService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentAssetService", + "type": "StudentAssetService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentDataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 112, + "jsdoctags": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "changeDetectorRef", + "type": "ChangeDetectorRef", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentService", + "type": "ComponentService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "graphService", + "type": "GraphService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "notebookService", + "type": "NotebookService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentAssetService", + "type": "StudentAssetService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentDataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "ComponentStudent" + ], + "templateData": "\n@if (componentContent.enableFileUpload) {\n \n}\n@if (showTrialSelect) {\n
    \n @if (componentContent.enableTrials) {\n \n Select trials to show\n \n \n @for (trial of trials; track trial) {\n @if (trialIdsToShow.includes(trial.id)) {\n @if (trialIdsToShow.indexOf(trial.id) === trialIdsToShow.length - 1) {\n {{ trial.name }}\n } @else {\n {{ trial.name }},\n }\n }\n }\n \n @for (trial of trials; track trial; let trialIndex = $index) {\n \n
    \n {{ trial.name }}\n @if (componentContent.canDeleteTrials) {\n \n delete\n \n }\n
    \n
    \n }\n \n
    \n }\n @if (componentContent.enableTrials && showSelectActiveTrials()) {\n \n Select trial to edit\n \n @for (trial of trials; track trial) {\n @if (trial.show && canEditTrial(trial)) {\n \n {{ trial.name }}\n \n }\n }\n \n \n }\n @if (isShowSelectSeriesInput()) {\n \n Select series to edit\n \n @for (graphSeries of series; track graphSeries) {\n \n {{ graphSeries.name }}\n \n }\n \n \n }\n
    \n \n @if (isResetSeriesButtonVisible && activeSeries != null && activeSeries.canEdit) {\n \n }\n
    \n @if (showUndoButton) {\n
    \n \n
    \n }\n
    \n}\n
    \n @if (componentContent.canCreateNewTrials) {\n \n }\n @if (isAddToNotebookEnabled()) {\n \n }\n @if (isStudentAttachmentEnabled) {\n \n }\n
    \n
    \n
    \n @if (!yAxisLocked) {\n
    \n \n Y Max\n \n \n \n \n Y Min\n \n \n
    \n }\n
    \n \n \n
    \n
    \n @if (!componentContent.xAxis.locked) {\n
    \n
    \n
    \n \n X Min\n \n \n \n \n X Max\n \n \n
    \n
    \n }\n
    \n@if (isSaveOrSubmitButtonVisible) {\n \n}\n@if (mode === 'student') {\n \n}\n
    \n \n
    \n" + }, + { + "name": "GroupTabsComponent", + "id": "component-GroupTabsComponent-b7b67c1eadcfc067b165a07aae8346799c67be7ec85c376b968ad51006ba2e67bfe9108857ee6dc82f13471ba189c6da635c6c84006a551c1fce0d436471e735", + "file": "src/assets/wise5/directives/group-tabs/group-tabs.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "group-tabs", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./group-tabs.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "groupNodes", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "GroupNode[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 22, + "modifierKind": [ + 124 + ] + }, + { + "name": "selectedTabIndex", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 23, + "modifierKind": [ + 124 + ] + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 24, + "modifierKind": [ + 123 + ] + } + ], + "methodsClass": [ + { + "name": "goToGroupTab", + "args": [ + { + "name": "groupTabIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 67, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "groupTabIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 48, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 33, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "selectCurrentGroupTab", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 60, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "setGroupNodes", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 52, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatTabsModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, OnInit } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { NodeStatusService } from '../../services/nodeStatusService';\nimport { StudentDataService } from '../../services/studentDataService';\nimport { VLEProjectService } from '../../vle/vleProjectService';\nimport { NodeService } from '../../services/nodeService';\nimport { MatTabsModule } from '@angular/material/tabs';\n\nclass GroupNode {\n id: string;\n disabled: boolean;\n startId: string;\n title: string;\n}\n\n@Component({\n imports: [MatTabsModule],\n selector: 'group-tabs',\n templateUrl: './group-tabs.component.html'\n})\nexport class GroupTabsComponent implements OnInit {\n protected groupNodes: GroupNode[] = [];\n protected selectedTabIndex: number;\n private subscriptions: Subscription = new Subscription();\n\n constructor(\n private nodeService: NodeService,\n private nodeStatusService: NodeStatusService,\n private projectService: VLEProjectService,\n private studentDataService: StudentDataService\n ) {}\n\n ngOnInit(): void {\n this.setGroupNodes();\n this.selectCurrentGroupTab();\n this.subscriptions.add(\n this.studentDataService.nodeStatusesChanged$.subscribe(() => {\n this.setGroupNodes();\n })\n );\n this.subscriptions.add(\n this.studentDataService.currentNodeChanged$.subscribe(() => {\n this.selectCurrentGroupTab();\n })\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n private setGroupNodes(): void {\n this.groupNodes = this.projectService.rootNode.ids.map((id: string) => {\n const node: GroupNode = this.projectService.getNodeById(id);\n node.disabled = !this.nodeStatusService.canVisitNode(node.id);\n return node;\n });\n }\n\n private selectCurrentGroupTab(): void {\n const currentNode = this.studentDataService.getCurrentNode();\n this.selectedTabIndex = this.groupNodes.indexOf(\n this.projectService.getParentGroup(currentNode.id)\n );\n }\n\n protected goToGroupTab(groupTabIndex: number): void {\n const groupStartNodeId = this.groupNodes[groupTabIndex].startId;\n this.nodeService.setCurrentNode(groupStartNodeId);\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeStatusService", + "type": "NodeStatusService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "VLEProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentDataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 24, + "jsdoctags": [ + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeStatusService", + "type": "NodeStatusService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "VLEProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentDataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "\n @for (node of groupNodes; track node.id) {\n \n }\n\n" + }, + { + "name": "HeaderAccountMenuComponent", + "id": "component-HeaderAccountMenuComponent-60f47c74276a9c863e863ecba0c55a26d10233621965e43f4077514d094b0ae0dbd2e18bf978e35f9cbcd1e9847576a886ca3787b458ac004f7e6ca717ac62f8", + "file": "src/app/modules/header/header-account-menu/header-account-menu.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "app-header-account-menu", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./header-account-menu.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "user", + "deprecated": false, + "deprecationMessage": "", + "line": 24, + "type": "User", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "firstName", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "modifierKind": [ + 124 + ] + }, + { + "name": "isPreviousAdmin", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "modifierKind": [ + 124 + ] + }, + { + "name": "lastName", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 20, + "modifierKind": [ + 124 + ] + }, + { + "name": "logOutURL", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 21, + "modifierKind": [ + 124 + ] + }, + { + "name": "roles", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 22, + "modifierKind": [ + 124 + ] + }, + { + "name": "switchToOriginalUserURL", + "defaultValue": "'/api/logout/impersonate'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 23, + "modifierKind": [ + 123 + ] + } + ], + "methodsClass": [ + { + "name": "logOut", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 59, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "ngOnChanges", + "args": [ + { + "name": "changes", + "type": "SimpleChanges", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 37, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "changes", + "type": "SimpleChanges", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 31, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "switchToAdmin", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 49, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "switchToOriginalUser", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 53, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatDividerModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatMenuModule", + "type": "module" + }, + { + "name": "RouterModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, OnInit, Input, SimpleChanges } from '@angular/core';\nimport { ConfigService } from '../../../services/config.service';\nimport { User } from '../../../domain/user';\nimport { HttpClient } from '@angular/common/http';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { RouterModule } from '@angular/router';\n\n@Component({\n imports: [MatButtonModule, MatDividerModule, MatIconModule, MatMenuModule, RouterModule],\n selector: 'app-header-account-menu',\n styleUrl: './header-account-menu.component.scss',\n templateUrl: './header-account-menu.component.html'\n})\nexport class HeaderAccountMenuComponent implements OnInit {\n protected firstName: string = '';\n protected isPreviousAdmin: boolean;\n protected lastName: string = '';\n protected logOutURL: string;\n protected roles: string[] = [];\n private switchToOriginalUserURL = '/api/logout/impersonate';\n @Input() user: User;\n\n constructor(\n private configService: ConfigService,\n private http: HttpClient\n ) {}\n\n ngOnInit(): void {\n this.configService.getConfig().subscribe((config) => {\n this.logOutURL = config.logOutURL;\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.user) {\n const user = changes.user.currentValue;\n if (user) {\n this.firstName = user.firstName;\n this.lastName = user.lastName;\n this.roles = user.roles;\n this.isPreviousAdmin = user.isPreviousAdmin;\n }\n }\n }\n\n protected switchToAdmin(): void {\n window.location.href = '/admin';\n }\n\n protected switchToOriginalUser(): void {\n this.http.post(this.switchToOriginalUserURL, {}).subscribe(() => {\n window.location.href = '/teacher';\n });\n }\n\n protected logOut(): void {\n this.http.get(this.logOutURL).subscribe(() => {\n window.location.href = '/';\n });\n }\n}\n", + "styleUrl": "./header-account-menu.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 24, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "\n\n \n\n" + }, + { + "name": "HeaderComponent", + "id": "component-HeaderComponent-cf70625dc54cbbf5ce4664f4eb1a69a3dcafd1f6d457a5588ea52eafff83fe8bfe6ee3048a5233330ca21433961eb04ddc7dbf0854673a19f2d92f9ffbe45566", + "file": "src/app/modules/header/header.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "app-header", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./header.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "location", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 26, + "modifierKind": [ + 124 + ] + }, + { + "name": "roles", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 27, + "modifierKind": [ + 124 + ] + }, + { + "name": "user", + "deprecated": false, + "deprecationMessage": "", + "type": "User", + "indexKey": "", + "optional": false, + "description": "", + "line": 28, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "getUser", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 45, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 40, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "setLocation", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 52, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "showMobileMenu", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 62, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "HeaderAccountMenuComponent", + "type": "component" + }, + { + "name": "HeaderLinksComponent", + "type": "component" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatToolbarModule", + "type": "module" + }, + { + "name": "RouterModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, OnInit } from '@angular/core';\nimport { Router, RouterModule } from '@angular/router';\nimport { User } from '../../domain/user';\nimport { UserService } from '../../services/user.service';\nimport { UtilService } from '../../services/util.service';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { HeaderLinksComponent } from './header-links/header-links.component';\nimport { HeaderAccountMenuComponent } from './header-account-menu/header-account-menu.component';\nimport { MatToolbarModule } from '@angular/material/toolbar';\n\n@Component({\n imports: [\n HeaderAccountMenuComponent,\n HeaderLinksComponent,\n MatButtonModule,\n MatIconModule,\n MatToolbarModule,\n RouterModule\n ],\n selector: 'app-header',\n styleUrl: './header.component.scss',\n templateUrl: './header.component.html'\n})\nexport class HeaderComponent implements OnInit {\n protected location: string = '';\n protected roles: string[] = [];\n protected user: User;\n\n constructor(\n private router: Router,\n private userService: UserService,\n private utilService: UtilService\n ) {\n this.router.events.subscribe(() => {\n this.setLocation();\n });\n }\n\n ngOnInit(): void {\n this.getUser();\n this.setLocation();\n }\n\n private getUser(): void {\n this.userService.getUser().subscribe((user) => {\n this.user = user;\n this.roles = user.roles ? user.roles : [];\n });\n }\n\n private setLocation(): void {\n if (this.router.url.match(/^\\/teacher/)) {\n this.location = 'teacher';\n } else if (this.router.url.match(/^\\/student/)) {\n this.location = 'student';\n } else {\n this.location = '';\n }\n }\n\n protected showMobileMenu(): void {\n this.utilService.showMobileMenu();\n }\n}\n", + "styleUrl": "./header.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "userService", + "type": "UserService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "utilService", + "type": "UtilService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 28, + "jsdoctags": [ + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "userService", + "type": "UserService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "utilService", + "type": "UtilService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "
    \n \n
    \n \n \n \n \n \"WISE\n \n \n \n \n @if (roles.length > 0) {\n \n }\n @if (!location) {\n \n \n \n }\n
    \n
    \n
    \n" + }, + { + "name": "HeaderLinksComponent", + "id": "component-HeaderLinksComponent-1f15380bd14127d3f52fc73adb064337ee92c57b47e2f51264ad83ef0394e6929daa3cd83b13a0d4803263e06f30c6669b2685bbdfeba070684b122c582a9d9b", + "file": "src/app/modules/header/header-links/header-links.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "app-header-links", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./header-links.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "location", + "deprecated": false, + "deprecationMessage": "", + "line": 14, + "type": "string", + "decorators": [] + }, + { + "name": "user", + "deprecated": false, + "deprecationMessage": "", + "line": 16, + "type": "User", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "roles", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "ngOnChanges", + "args": [ + { + "name": "changes", + "type": "SimpleChanges", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 18, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "changes", + "type": "SimpleChanges", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "HeaderSigninComponent", + "type": "component" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "RouterModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input, SimpleChanges } from '@angular/core';\nimport { User } from '../../../domain/user';\nimport { HeaderSigninComponent } from '../header-signin/header-signin.component';\nimport { MatButtonModule } from '@angular/material/button';\nimport { RouterModule } from '@angular/router';\n\n@Component({\n imports: [HeaderSigninComponent, MatButtonModule, RouterModule],\n selector: 'app-header-links',\n styleUrl: './header-links.component.scss',\n templateUrl: './header-links.component.html'\n})\nexport class HeaderLinksComponent {\n @Input() location: string;\n protected roles: string[] = [];\n @Input() user: User;\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.user) {\n let user = changes.user.currentValue;\n this.roles = user.roles ? user.roles : [];\n }\n }\n}\n", + "styleUrl": "./header-links.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [], + "templateData": "\n" + }, + { + "name": "HeaderSigninComponent", + "id": "component-HeaderSigninComponent-008da49636009460d8ca2dc9af1a7e363bbee7f669b4ac4e5c9e7ca3a4dfbf60f9ace46807e56f64707de45a4ce00c62af9360d5b391add9a8f3f41b014a53de", + "file": "src/app/modules/header/header-signin/header-signin.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "app-header-signin", + "styleUrls": [ + "./header-signin.component.scss" + ], + "styles": [], + "templateUrl": [ + "./header-signin.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [], + "methodsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "RouterModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { RouterModule } from '@angular/router';\n\n@Component({\n selector: 'app-header-signin',\n imports: [RouterModule],\n templateUrl: './header-signin.component.html',\n styleUrls: ['./header-signin.component.scss']\n})\nexport class HeaderSigninComponent {}\n", + "assetsDirs": [], + "styleUrlsData": [ + { + "data": ".header-signin {\n background-color: rgba(white, .12);\n margin-left: 4px;\n font-weight: 400;\n color: rgba(white, 0.54);\n\n a {\n font-weight: 500;\n color: white !important;\n padding: 2px;\n }\n}\n", + "styleUrl": "./header-signin.component.scss" + } + ], + "stylesData": "", + "extends": [], + "templateData": "\n Register or Sign In\n\n" + }, + { + "name": "HelpComponent", + "id": "component-HelpComponent-2594f943c3cf6e848a6a98d78d85eb02fa14abbe4bffffb5e76914228a705fb651860f09c9571fe5c04af82d11c5fef7551a177ebb85299133abc3eba937248c", + "file": "src/app/help/help.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "app-help", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./help.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [], + "methodsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "RouterModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { RouterModule } from '@angular/router';\n\n@Component({\n imports: [RouterModule],\n selector: 'app-help',\n styleUrl: './help.component.scss',\n templateUrl: './help.component.html'\n})\nexport class HelpComponent {}\n", + "styleUrl": "./help.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [], + "templateData": "
    \n
    \n \n
    \n
    \n" + }, + { + "name": "HelpHomeComponent", + "id": "component-HelpHomeComponent-b8015d7643800236c1b3eb68c6dd74d47dcd89f7002f1fe9895a822c341fe3dce8f0880b3613125a8418859e29a52178f2638f8af9d18570dcb207fcdb5c87a5", + "file": "src/app/help/help-home/help-home.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "app-help-home", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./help-home.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [], + "methodsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CallToActionComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { CallToActionComponent } from '../../modules/shared/call-to-action/call-to-action.component';\n\n@Component({\n imports: [CallToActionComponent],\n selector: 'app-help-home',\n styleUrl: './help-home.component.scss',\n templateUrl: './help-home.component.html'\n})\nexport class HelpHomeComponent {}\n", + "styleUrl": "./help-home.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [], + "templateData": "
    \n
    \n
    \n \n \n \n
    \n
    \n
    \n" + }, + { + "name": "HelpIconComponent", + "id": "component-HelpIconComponent-de578de7e63bfb3d2139718f40937301432f599a23122f6b04f820a0dc1f5608ec334de18749cd433eceaa71a944b641a3938792dda9b2f46d2bac1ecb24ddc4", + "file": "src/assets/wise5/themes/default/themeComponents/helpIcon/help-icon.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "help-icon", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "help-icon.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "content", + "deprecated": false, + "deprecationMessage": "", + "line": 17, + "type": "string", + "decorators": [] + }, + { + "name": "icon", + "deprecated": false, + "deprecationMessage": "", + "line": 18, + "type": "string", + "decorators": [] + }, + { + "name": "iconClass", + "deprecated": false, + "deprecationMessage": "", + "line": 19, + "type": "string", + "decorators": [] + }, + { + "name": "label", + "deprecated": false, + "deprecationMessage": "", + "line": 20, + "type": "string", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "dialog", + "deprecated": false, + "deprecationMessage": "", + "type": "MatDialog", + "indexKey": "", + "optional": false, + "description": "", + "line": 24, + "modifierKind": [ + 125 + ] + }, + { + "name": "pulse", + "defaultValue": "true", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 21 + } + ], + "methodsClass": [ + { + "name": "showRubric", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 29, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { DialogWithCloseComponent } from '../../../../directives/dialog-with-close/dialog-with-close.component';\nimport { WiseLinkService } from '../../../../../../app/services/wiseLinkService';\nimport { VLEProjectService } from '../../../../vle/vleProjectService';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n imports: [CommonModule, MatButtonModule, MatIconModule],\n selector: 'help-icon',\n styleUrl: 'help-icon.component.scss',\n templateUrl: 'help-icon.component.html'\n})\nexport class HelpIconComponent {\n @Input() content: string;\n @Input() icon: string;\n @Input() iconClass: string;\n @Input() label: string;\n pulse: boolean = true;\n\n constructor(\n public dialog: MatDialog,\n private projectService: VLEProjectService,\n private wiseLinkService: WiseLinkService\n ) {}\n\n protected showRubric(): void {\n this.dialog.open(DialogWithCloseComponent, {\n data: {\n content: this.wiseLinkService.generateHtmlWithWiseLink(\n this.projectService.replaceAssetPaths(this.content)\n ),\n title: $localize`Rubric`,\n scroll: true\n },\n panelClass: 'dialog-lg'\n });\n this.pulse = false;\n }\n}\n", + "styleUrl": "help-icon.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "VLEProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "wiseLinkService", + "type": "WiseLinkService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 21, + "jsdoctags": [ + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "VLEProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "wiseLinkService", + "type": "WiseLinkService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "
    \n \n {{ icon }}\n \n
    \n" + }, + { + "name": "HeroSectionComponent", + "id": "component-HeroSectionComponent-3aa7047bbcf6fef22baf4f8a4275f57a4813fb154e5b3dc7d54d32b60915c073aa09d2df29d90b6b41420b4f7aeaacd49ddd8937585e4454d9c24f754dee5f31", + "file": "src/app/modules/shared/hero-section/hero-section.component.ts", + "encapsulation": [ + "ViewEncapsulation.None" + ], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "app-hero-section", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./hero-section.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "headline", + "deprecated": false, + "deprecationMessage": "", + "line": 24, + "type": "string", + "decorators": [] + }, + { + "name": "imgDescription", + "deprecated": false, + "deprecationMessage": "", + "line": 26, + "type": "string", + "decorators": [] + }, + { + "name": "imgSources", + "deprecated": false, + "deprecationMessage": "", + "line": 27, + "type": "Object[]", + "decorators": [] + }, + { + "name": "imgSrc", + "deprecated": false, + "deprecationMessage": "", + "line": 28, + "type": "string", + "decorators": [] + }, + { + "name": "tagline", + "deprecated": false, + "deprecationMessage": "", + "line": 30, + "type": "string", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "bgRef", + "deprecated": false, + "deprecationMessage": "", + "type": "ElementRef", + "indexKey": "", + "optional": false, + "description": "", + "line": 22, + "decorators": [ + { + "name": "ViewChild", + "stringifiedArguments": "'bgRef'" + } + ], + "modifierKind": [ + 171 + ] + }, + { + "name": "bgStyle", + "deprecated": false, + "deprecationMessage": "", + "type": "SafeStyle", + "indexKey": "", + "optional": false, + "description": "", + "line": 23, + "modifierKind": [ + 124 + ] + }, + { + "name": "headlineRef", + "deprecated": false, + "deprecationMessage": "", + "type": "TemplateRef", + "indexKey": "", + "optional": false, + "description": "", + "line": 25, + "decorators": [ + { + "name": "ContentChild", + "stringifiedArguments": "'headlineTemplate', {static: false}" + } + ], + "modifierKind": [ + 171 + ] + }, + { + "name": "sideRef", + "deprecated": false, + "deprecationMessage": "", + "type": "TemplateRef", + "indexKey": "", + "optional": false, + "description": "", + "line": 29, + "decorators": [ + { + "name": "ContentChild", + "stringifiedArguments": "'sideTemplate', {static: false}" + } + ], + "modifierKind": [ + 171 + ] + }, + { + "name": "taglineRef", + "deprecated": false, + "deprecationMessage": "", + "type": "TemplateRef", + "indexKey": "", + "optional": false, + "description": "", + "line": 31, + "decorators": [ + { + "name": "ContentChild", + "stringifiedArguments": "'taglineTemplate', {static: false}" + } + ], + "modifierKind": [ + 171 + ] + }, + { + "name": "xsScreen", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 32, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "getBgStyle", + "args": [], + "optional": false, + "returnType": "SafeStyle", + "typeParameters": [], + "line": 53, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nReturns the background-image css value for imgSrc\n", + "description": "

    Returns the background-image css value for imgSrc

    \n", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "tagName": { + "pos": 1495, + "end": 1502, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "", + "returnType": "unknown" + } + ] + }, + { + "name": "ngAfterViewInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 43, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { BreakpointObserver } from '@angular/cdk/layout';\nimport { CommonModule } from '@angular/common';\nimport {\n Component,\n ContentChild,\n Input,\n TemplateRef,\n ViewEncapsulation,\n ViewChild,\n ElementRef\n} from '@angular/core';\nimport { DomSanitizer, SafeStyle } from '@angular/platform-browser';\n\n@Component({\n encapsulation: ViewEncapsulation.None,\n imports: [CommonModule],\n selector: 'app-hero-section',\n styleUrl: './hero-section.component.scss',\n templateUrl: './hero-section.component.html'\n})\nexport class HeroSectionComponent {\n @ViewChild('bgRef') bgRef: ElementRef;\n protected bgStyle: SafeStyle;\n @Input() headline: string;\n @ContentChild('headlineTemplate', { static: false }) headlineRef: TemplateRef;\n @Input() imgDescription: string;\n @Input() imgSources: Object[];\n @Input() imgSrc: string;\n @ContentChild('sideTemplate', { static: false }) sideRef: TemplateRef;\n @Input() tagline: string;\n @ContentChild('taglineTemplate', { static: false }) taglineRef: TemplateRef;\n protected xsScreen: boolean;\n\n constructor(\n private breakpointObserver: BreakpointObserver,\n private sanitizer: DomSanitizer\n ) {\n this.breakpointObserver.observe(['(max-width: 40rem)']).subscribe((result) => {\n this.xsScreen = result.matches;\n });\n }\n\n ngAfterViewInit(): void {\n this.bgRef.nativeElement.onload = () => {\n this.bgStyle = this.getBgStyle();\n };\n }\n\n /**\n * Returns the background-image css value for imgSrc\n * @returns {SafeStyle}\n */\n private getBgStyle(): SafeStyle {\n return this.sanitizer.bypassSecurityTrustStyle(`url(${this.bgRef.nativeElement.currentSrc})`);\n }\n}\n", + "styleUrl": "./hero-section.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "breakpointObserver", + "type": "BreakpointObserver", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "sanitizer", + "type": "DomSanitizer", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 32, + "jsdoctags": [ + { + "name": "breakpointObserver", + "type": "BreakpointObserver", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "sanitizer", + "type": "DomSanitizer", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "
    \n \n @for (source of imgSources; track source) {\n \n }\n \"{{\n \n
    \n
    \n \n {{ headline }}\n @if (headline || headlineRef) {\n

    \n \n

    \n }\n {{ tagline }}\n @if (tagline || taglineRef) {\n

    \n \n

    \n }\n
    \n @if (sideRef) {\n
    \n \n
    \n }\n
    \n \n
    \n" + }, + { + "name": "HomeComponent", + "id": "component-HomeComponent-d2bc3387397dd5d30ba8160be0d7af1409357ab0347863055e91738a17f148ddc97d0fe8c64168e00e33c97e17e3eb44638c3a51cf06d9c67d269506a2b5d5a4", + "file": "src/app/home/home.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "app-home", + "styleUrls": [ + "./home.component.scss" + ], + "styles": [], + "templateUrl": [ + "./home.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "blurbs", + "defaultValue": "[\n {\n imgSrc: 'assets/img/wise-students-building@2x.jpg',\n imgDescription: $localize`WISE students building`,\n imgSources: [\n {\n type: 'image/webp',\n srcset:\n 'assets/img/wise-students-building.webp, assets/img/wise-students-building@2x.webp 2x'\n },\n {\n srcset:\n 'assets/img/wise-students-building.jpg, assets/img/wise-students-building@2x.jpg 2x'\n }\n ],\n contentTemplate: this.sanitizer.sanitize(\n SecurityContext.HTML,\n $localize`Free, standards-aligned, and research-based inquiry curricula that address ${this.ngssLink.startTag}:START_LINK:NGSS 3D proficiency${this.ngssLink.closeTag}:CLOSE_LINK:`\n )\n },\n {\n imgSrc: 'assets/img/wise-project-view@2x.jpg',\n imgDescription: $localize`WISE unit on laptop`,\n imgSources: [\n {\n type: 'image/webp',\n srcset: 'assets/img/wise-project-view.webp, assets/img/wise-project-view@2x.webp 2x'\n },\n {\n srcset: 'assets/img/wise-project-view.jpg, assets/img/wise-project-view@2x.jpg 2x'\n }\n ],\n content: $localize`Interactive scientific models plus hands-on activities, personalized guidance, and rich embedded assessments`\n },\n {\n imgSrc: 'assets/img/wise-students-and-teacher@2x.jpg',\n imgDescription: $localize`WISE students and teacher`,\n imgSources: [\n {\n type: 'image/webp',\n srcset:\n 'assets/img/wise-students-and-teacher.webp, assets/img/wise-students-and-teacher@2x.webp 2x'\n },\n {\n srcset:\n 'assets/img/wise-students-and-teacher.jpg, assets/img/wise-students-and-teacher@2x.jpg 2x'\n }\n ],\n content: $localize`Robust teacher grading and management tools supporting individualized and customized learning`\n }\n ]", + "deprecated": false, + "deprecationMessage": "", + "type": "Array", + "indexKey": "", + "optional": false, + "description": "", + "line": 45 + }, + { + "name": "discourseNewsCategory", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 16 + }, + { + "name": "discourseUrl", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 17 + }, + { + "name": "hero", + "defaultValue": "{\n imgSrc: 'assets/img/wise-students-hero.jpg',\n imgDescription: $localize`WISE students in classroom`,\n imgSources: [\n {\n type: 'image/webp',\n sizes: '100vw',\n srcset: `assets/img/wise-students-hero-600w.webp 600w,\n assets/img/wise-students-hero-900w.webp 900w,\n assets/img/wise-students-hero-1200w.webp 1200w,\n assets/img/wise-students-hero.webp 1600w`\n },\n {\n sizes: '100vw',\n srcset: `assets/img/wise-students-hero-600w.jpg 600w,\n assets/img/wise-students-hero-900w.jpg 900w,\n assets/img/wise-students-hero-1200w.jpg 1200w,\n assets/img/wise-students-hero.jpg 1600w`\n }\n ]\n }", + "deprecated": false, + "deprecationMessage": "", + "type": "object", + "indexKey": "", + "optional": false, + "description": "", + "line": 20 + }, + { + "name": "isDiscourseNewsAvailable", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 18 + }, + { + "name": "loaded", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 19 + }, + { + "name": "ngssLink", + "defaultValue": "{\n startTag: '',\n closeTag: ''\n }", + "deprecated": false, + "deprecationMessage": "", + "type": "object", + "indexKey": "", + "optional": false, + "description": "", + "line": 41 + }, + { + "name": "smScreen", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 96, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "isSet", + "args": [ + { + "name": "str", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 119, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "str", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 108, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, OnInit, SecurityContext } from '@angular/core';\nimport { bounceIn, flipInX, flipInY, jackInTheBox, rotateIn, zoomIn } from '../animations';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { ConfigService } from '../services/config.service';\nimport { Config } from '../domain/config';\nimport { BreakpointObserver } from '@angular/cdk/layout';\n\n@Component({\n selector: 'app-home',\n templateUrl: './home.component.html',\n styleUrls: ['./home.component.scss'],\n animations: [bounceIn, flipInX, flipInY, jackInTheBox, rotateIn, zoomIn],\n standalone: false\n})\nexport class HomeComponent implements OnInit {\n discourseNewsCategory: string;\n discourseUrl: string;\n isDiscourseNewsAvailable: boolean = false;\n loaded: boolean = false;\n hero = {\n imgSrc: 'assets/img/wise-students-hero.jpg',\n imgDescription: $localize`WISE students in classroom`,\n imgSources: [\n {\n type: 'image/webp',\n sizes: '100vw',\n srcset: `assets/img/wise-students-hero-600w.webp 600w,\n assets/img/wise-students-hero-900w.webp 900w,\n assets/img/wise-students-hero-1200w.webp 1200w,\n assets/img/wise-students-hero.webp 1600w`\n },\n {\n sizes: '100vw',\n srcset: `assets/img/wise-students-hero-600w.jpg 600w,\n assets/img/wise-students-hero-900w.jpg 900w,\n assets/img/wise-students-hero-1200w.jpg 1200w,\n assets/img/wise-students-hero.jpg 1600w`\n }\n ]\n };\n ngssLink = {\n startTag: '',\n closeTag: ''\n };\n blurbs: Array = [\n {\n imgSrc: 'assets/img/wise-students-building@2x.jpg',\n imgDescription: $localize`WISE students building`,\n imgSources: [\n {\n type: 'image/webp',\n srcset:\n 'assets/img/wise-students-building.webp, assets/img/wise-students-building@2x.webp 2x'\n },\n {\n srcset:\n 'assets/img/wise-students-building.jpg, assets/img/wise-students-building@2x.jpg 2x'\n }\n ],\n contentTemplate: this.sanitizer.sanitize(\n SecurityContext.HTML,\n $localize`Free, standards-aligned, and research-based inquiry curricula that address ${this.ngssLink.startTag}:START_LINK:NGSS 3D proficiency${this.ngssLink.closeTag}:CLOSE_LINK:`\n )\n },\n {\n imgSrc: 'assets/img/wise-project-view@2x.jpg',\n imgDescription: $localize`WISE unit on laptop`,\n imgSources: [\n {\n type: 'image/webp',\n srcset: 'assets/img/wise-project-view.webp, assets/img/wise-project-view@2x.webp 2x'\n },\n {\n srcset: 'assets/img/wise-project-view.jpg, assets/img/wise-project-view@2x.jpg 2x'\n }\n ],\n content: $localize`Interactive scientific models plus hands-on activities, personalized guidance, and rich embedded assessments`\n },\n {\n imgSrc: 'assets/img/wise-students-and-teacher@2x.jpg',\n imgDescription: $localize`WISE students and teacher`,\n imgSources: [\n {\n type: 'image/webp',\n srcset:\n 'assets/img/wise-students-and-teacher.webp, assets/img/wise-students-and-teacher@2x.webp 2x'\n },\n {\n srcset:\n 'assets/img/wise-students-and-teacher.jpg, assets/img/wise-students-and-teacher@2x.jpg 2x'\n }\n ],\n content: $localize`Robust teacher grading and management tools supporting individualized and customized learning`\n }\n ];\n protected smScreen: boolean;\n\n constructor(\n private breakpointObserver: BreakpointObserver,\n private configService: ConfigService,\n private sanitizer: DomSanitizer\n ) {\n this.breakpointObserver.observe(['(min-width: 40rem)']).subscribe((result) => {\n this.smScreen = result.matches;\n });\n }\n\n ngOnInit() {\n this.configService.getConfig().subscribe((config: Config) => {\n if (config != null) {\n this.discourseUrl = this.configService.getDiscourseURL();\n this.discourseNewsCategory = this.configService.getDiscourseNewsCategory();\n this.isDiscourseNewsAvailable =\n this.isSet(this.discourseUrl) && this.isSet(this.discourseNewsCategory);\n }\n });\n }\n\n private isSet(str: string): boolean {\n return str != null && str !== '';\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": [ + { + "data": "@reference \"tailwindcss\";\n\n.features {\n @apply flex flex-col sm:flex-row gap-8 items-center sm:items-stretch place-items-center;\n}\n\napp-blurb, app-call-to-action {\n @apply max-w-full w-96;\n}\n\n/* TODO(mdc-migration): The following rule targets internal classes of button that may no longer apply for the MDC version. */\n.cta, .cta__wrap, .cta .mat-button-wrapper, .blurb {\n height: 100%;\n}\n\ndiscourse-latest-news {\n max-width: 100%;\n}\n\n.social-link {\n @apply flex items-center;\n}\n", + "styleUrl": "./home.component.scss" + } + ], + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "breakpointObserver", + "type": "BreakpointObserver", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "sanitizer", + "type": "DomSanitizer", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 96, + "jsdoctags": [ + { + "name": "breakpointObserver", + "type": "BreakpointObserver", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "sanitizer", + "type": "DomSanitizer", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "
    \n \n \n
    \n \n \n \n \n
    \n
    \n \n
    \n Integrated science learning and teaching with technology\n
    \n
    \n @if (isDiscourseNewsAvailable) {\n \n \n \n }\n \n
    \n
    \n
    \n \n The WISE Advantage\n \n
    \n @for (blurb of blurbs; track blurb.imgSrc) {\n \n @if (blurb.contentTemplate) {\n \n \n \n }\n @if (blurb.headlineTemplate) {\n \n \n \n }\n \n }\n
    \n
    \n
    \n
    \n
    \n
    \n
    \n \n Curriculum Offerings\n \n \n
    \n \n Ready to try WISE in the Classroom?\n Sign up for free!\n \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n \n Connect\n \n \n \n \n \n \n \n \n \n \n
    \n \n \n \n \n \n
    \n
    \n
    \n
    \n
    \n" + }, + { + "name": "HomePageProjectLibraryComponent", + "id": "component-HomePageProjectLibraryComponent-e7cad5e6ba92a1e61208790e6376f36a89b354624095716f6f5b49e015abef85ab094f3323aa3c9a28d8b09a823824dc5d0db241a5e83a7141950c31b399cf6f", + "file": "src/app/modules/library/home-page-project-library/home-page-project-library.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [ + { + "name": "ProjectFilterValues" + } + ], + "selector": "app-home-page-project-library", + "styleUrls": [ + "./home-page-project-library.component.scss", + "../library/library.component.scss" + ], + "styles": [], + "templateUrl": [ + "./home-page-project-library.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [], + "methodsClass": [ + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 17, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { LibraryService } from '../../../services/library.service';\nimport { ProjectFilterValues } from '../../../domain/projectFilterValues';\n\n@Component({\n providers: [ProjectFilterValues],\n selector: 'app-home-page-project-library',\n standalone: false,\n styleUrls: ['./home-page-project-library.component.scss', '../library/library.component.scss'],\n templateUrl: './home-page-project-library.component.html'\n})\nexport class HomePageProjectLibraryComponent {\n constructor(private libraryService: LibraryService) {\n libraryService.getOfficialLibraryProjects();\n }\n\n ngOnDestroy(): void {\n this.libraryService.clearAll();\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": [ + { + "data": ".library-home {\n margin-bottom: 32px;\n}\n\n.library-home__content {\n .notice {\n margin-top: 0;\n }\n}\n\n.notice {\n max-width: none;\n}\n\n.content-block {\n padding: 16px;\n border-radius: 0;\n}\n\n", + "styleUrl": "./home-page-project-library.component.scss" + }, + { + "data": "@use '@angular/material' as mat;\n@use 'style/base/typography';\n@use 'style/abstracts/variables';\n\n.library {\n text-align: left;\n border-radius: variables.$card-border-radius;\n\n h2 {\n font-weight: 400;\n margin-bottom: 8px;\n\n mat-icon {\n margin-right: 8px;\n }\n }\n\n .mat-divider {\n margin: 0;\n }\n}\n\n.library__header {\n .info-block {\n background-color: transparent;\n padding: 0 0 16px;\n font-size: mat.m2-font-size(typography.$wise-typography, 'subtitle-2');\n }\n}\n\n.library__content {\n .content-block {\n background-color: transparent;\n min-height: 100px;\n }\n\n .mat-mdc-paginator {\n background: transparent;\n }\n\n .mat-mdc-paginator-range-label {\n margin: 0 8px;\n }\n}\n\n.library__list {\n padding: 8px 0;\n}\n", + "styleUrl": "../library/library.component.scss" + } + ], + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "libraryService", + "type": "LibraryService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 12, + "jsdoctags": [ + { + "name": "libraryService", + "type": "LibraryService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "
    \n
    \n
    \n \n
    \n
    \n
    \n Explore suggested curricula for the given grade levels. Check out our\n full library to explore in more depth.\n
    \n \n
    \n
    \n
    \n" + }, + { + "name": "HtmlAuthoringComponent", + "id": "component-HtmlAuthoringComponent-d089c21c7e163ab525997fc2066e03f1ec929ab9a313f3fb8689f745729c95772814f5731c77f51a91c890ebaaa1a06acdd656a51781cd8d03b167d40233793e", + "file": "src/assets/wise5/components/html/html-authoring/html-authoring.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "template": "", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "allowedConnectedComponentTypes", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "idToOrder", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "inputChange", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "promptChange", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + } + ], + "methodsClass": [ + { + "name": "assetSelected", + "args": [ + { + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 100, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "componentChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 73, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "confirmAndRemove", + "args": [ + { + "name": "message", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "array", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 110, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "message", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "array", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "deleteStarterState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 81, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "getComponent", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 106, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "getComponents", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 102, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "isForThisComponent", + "args": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 77, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "moveObjectDown", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 122, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "moveObjectUp", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 117, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 65, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 28, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "promptChanged", + "args": [ + { + "name": "prompt", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 69, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "prompt", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "saveStarterState", + "args": [ + { + "name": "starterState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "starterState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "setShowSubmitButtonValue", + "args": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 85, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "TranslatableRichTextEditorComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { AbstractComponentAuthoring } from '../../../authoringTool/components/AbstractComponentAuthoring';\nimport { TranslatableRichTextEditorComponent } from '../../../authoringTool/components/translatable-rich-text-editor/translatable-rich-text-editor.component';\n\n@Component({\n imports: [TranslatableRichTextEditorComponent],\n template: ` `\n})\nexport class HtmlAuthoringComponent extends AbstractComponentAuthoring {}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [ + "AbstractComponentAuthoring" + ] + }, + { + "name": "HtmlStudentComponent", + "id": "component-HtmlStudentComponent-a3f1848a1fdccf3878f53e9b1225614d73c64a7924809b09113ce922f7badd87885ddace6e1525987311e2203c5e3917a61c74dbcdbb5e006f54b4d8484cfded", + "file": "src/assets/wise5/components/html/html-student/html-student.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "html-student", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "html-student.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "component", + "deprecated": false, + "deprecationMessage": "", + "line": 24, + "type": "Component", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentState", + "deprecated": false, + "deprecationMessage": "", + "line": 25, + "type": "any", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isDisabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "line": 26, + "type": "boolean", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "mode", + "deprecated": false, + "deprecationMessage": "", + "line": 27, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 28, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "workgroupId", + "deprecated": false, + "deprecationMessage": "", + "line": 29, + "type": "number", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "outputsClass": [ + { + "name": "saveComponentStateEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 30, + "type": "EventEmitter", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "starterStateChangedEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 31, + "type": "EventEmitter", + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "propertiesClass": [ + { + "name": "html", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "SafeHtml", + "indexKey": "", + "optional": false, + "description": "", + "line": 20, + "modifierKind": [ + 124 + ] + }, + { + "name": "annotationSavedToServerSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 53, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "attachments", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 33, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 34, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 35, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentType", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 36, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isDirty", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 45, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSaveButtonVisible", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 38, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSaveOrSubmitButtonVisible", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 41, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isShowAddToNotebookButton", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 39, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isStudentAttachmentEnabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 46, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmit", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 44, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmitButtonDisabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 42, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmitButtonVisible", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 40, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmitDirty", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 43, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "latestAnnotations", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 48, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "latestComponentState", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 50, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "nodeSubmitClickedSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 54, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "parentStudentWorkIds", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 49, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "prompt", + "deprecated": false, + "deprecationMessage": "", + "type": "SafeHtml", + "indexKey": "", + "optional": false, + "description": "", + "line": 37, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "requestComponentStateSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 52, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "showAddToNotebookButton", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 51, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "studentWorkSavedToServerSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 55, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "submitCounter", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 47, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 56, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "methodsClass": [ + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 45, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "addDefaultFeedback", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 688, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "attachStudentAsset", + "args": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 232, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "broadcastDoneRenderingComponent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 325, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "canSubmit", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 488, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "clearLatestComponentState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 555, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "confirmSubmit", + "args": [ + { + "name": "numberOfSubmitsLeft", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 468, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "numberOfSubmitsLeft", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "connectedComponentStudentDataSaved", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 796, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nThis function is called when a connected component of this component saves student data.\nThis was added to handle a race condition when a step has a connected component on a previous\nstep but the connected component student work on the previous step was not being imported\nbecause it wasn't being saved in time.\nHere is an example of what was happening\n- Student generates work on step 1 but does not click the save button\n- Student goes to step 2 which triggers a promise to save the student work on step 1\n- Step 2 is loaded and checks if there is any work it needs to import from step 1\n- The work in step 1 has not saved yet so step 2 does not import any work and loads without\n importing any work\n- The work from step 1 is then saved\nHere is the additional process that this function performs to fix this problem\n- Step 2 listens for when work is saved on step 1\n- When the work for step 1 is saved, step 2 checks to see if it needs to import that work\n", + "description": "

    This function is called when a connected component of this component saves student data.\nThis was added to handle a race condition when a step has a connected component on a previous\nstep but the connected component student work on the previous step was not being imported\nbecause it wasn't being saved in time.\nHere is an example of what was happening

    \n
      \n
    • Student generates work on step 1 but does not click the save button
    • \n
    • Student goes to step 2 which triggers a promise to save the student work on step 1
    • \n
    • Step 2 is loaded and checks if there is any work it needs to import from step 1
    • \n
    • The work in step 1 has not saved yet so step 2 does not import any work and loads without\nimporting any work
    • \n
    • The work from step 1 is then saved\nHere is the additional process that this function performs to fix this problem
    • \n
    • Step 2 listens for when work is saved on step 1
    • \n
    • When the work for step 1 is saved, step 2 checks to see if it needs to import that work
    • \n
    \n", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "copyAndAttachStudentAsset", + "args": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 218, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "copyPublicNotebookItem", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 632, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "copyPublicNotebookItemButtonClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 747, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createAutoCommentAnnotation", + "args": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 725, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createAutoScoreAnnotation", + "args": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 714, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createComponentState", + "args": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 568, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createComponentStateAdditionalProcessing", + "args": [ + { + "name": "promise", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 598, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "promise", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createComponentStateAndBroadcast", + "args": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 559, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createDefaultFeedbackAnnotation", + "args": [ + { + "name": "feedbackText", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 706, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "feedbackText", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createMergedComponentState", + "args": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 377, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createNewComponentState", + "args": [], + "optional": false, + "returnType": "Partial", + "typeParameters": [], + "line": 818, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "disableAllInput", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 492, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "disableComponentIfNecessary", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 332, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "disableSubmitButton", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 496, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "doAttachStudentAsset", + "args": [ + { + "name": "studentAssetRequest", + "type": "StudentAssetRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 212, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "studentAssetRequest", + "type": "StudentAssetRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 541, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentStudentDataChanged", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 572, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentSubmitDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 548, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentSubmitTriggered", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 512, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "generateImageFromComponentState", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 615, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nRender the component state and then generate an image from it.\n", + "description": "

    Render the component state and then generate an image from it.

    \n", + "jsdoctags": [ + { + "name": { + "pos": 18804, + "end": 18818, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 18798, + "end": 18803, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    The component state to render.

    \n" + }, + { + "tagName": { + "pos": 18856, + "end": 18862, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

    A promise that will return an image.

    \n" + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "generateStarterState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 216, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getAction", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 321, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getClientSaveTime", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 684, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getComponentStatePromise", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 309, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getComponentStateWrapper", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "ComponentStateWrapper", + "typeParameters": [], + "line": 301, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getDefaultFeedback", + "args": [ + { + "name": "submitCount", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 702, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "submitCount", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getElementById", + "args": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getFirstResult", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 758, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "getFirstResult", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getIsDirty", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 277, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getMaxScore", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 680, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getMaxSubmitCount", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 460, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getNumberOfSubmitsLeft", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 456, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "handleConnectedComponents", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 352, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "handleConnectedComponentsPostProcess", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 385, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "handleStudentWorkSavedToServer", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 263, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "handleStudentWorkSavedToServerAdditionalProcessing", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 287, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasAnySubmissions", + "args": [ + { + "name": "componentStates", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 344, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentStates", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasDefaultFeedback", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 695, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasMaxScore", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 676, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasMaxSubmitCount", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 437, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasMaxSubmitCountAndUsedAllSubmits", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 452, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasSubmitMessage", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 504, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasSubmitsLeft", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 500, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasUsedAllSubmits", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 441, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "importWorkAsBackground", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 658, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "importWorkByStudentWorkId", + "args": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 170, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "incrementSubmitCounter", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 389, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isAddToNotebookEnabled", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 624, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isForThisComponent", + "args": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 192, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isFromConnectedComponent", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 766, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isHandleConnectedComponentAfterConnectedComponentStudentDataSaved", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 802, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isLockAfterSubmit", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 348, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isNotebookEnabled", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 643, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isPreviewMode", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 109, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSameComponent", + "args": [ + { + "name": "component", + "type": "Component", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 188, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "component", + "type": "Component", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isStudentNoteClippingEnabled", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 647, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isWorkFromClassmate", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 196, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "lockIfNecessary", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 281, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 97, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "performSubmit", + "args": [ + { + "name": "submitTriggeredBy", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 472, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "submitTriggeredBy", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "processConnectedComponentState", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 184, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "processLatestStudentWork", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 580, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "registerNotebookItemChosenListener", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 736, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "removeAttachment", + "args": [ + { + "name": "attachment", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 245, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "attachment", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "saveButtonClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 393, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "saveForAuthoringPreviewMode", + "args": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 404, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setBackgroundImage", + "args": [ + { + "name": "image", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 674, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "image", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setComponentStateAsBackgroundImage", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 668, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 537, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsDirtyAndBroadcast", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 527, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsSubmit", + "args": [ + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 464, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsSubmitDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 508, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsSubmitDirtyAndBroadcast", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 532, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setParentStudentWorkIdToCurrentStudentWork", + "args": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 180, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setStudentWork", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 381, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setSubmitCounter", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 811, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "shouldCreateComponentState", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 317, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "showStudentAssets", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 651, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "studentDataChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 519, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "submit", + "args": [ + { + "name": "submitTriggeredBy", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 416, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "submitTriggeredBy", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "submitButtonClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 412, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToAnnotationSavedToServer", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 123, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToAttachStudentAsset", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 200, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToNodeSubmitClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 137, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToNotebookItemChosen", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 159, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToNotifyConnectedComponents", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 147, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToRequestComponentState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 289, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToStudentWorkSavedToServer", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 252, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToSubscriptions", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 113, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "tryDisableComponent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 445, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { SafeHtml } from '@angular/platform-browser';\nimport { WiseLinkService } from '../../../../../app/services/wiseLinkService';\nimport { AnnotationService } from '../../../services/annotationService';\nimport { ConfigService } from '../../../services/configService';\nimport { NodeService } from '../../../services/nodeService';\nimport { NotebookService } from '../../../services/notebookService';\nimport { StudentAssetService } from '../../../services/studentAssetService';\nimport { StudentDataService } from '../../../services/studentDataService';\nimport { ComponentStudent } from '../../component-student.component';\nimport { ComponentService } from '../../componentService';\n\n@Component({\n selector: 'html-student',\n styleUrl: 'html-student.component.scss',\n templateUrl: 'html-student.component.html'\n})\nexport class HtmlStudentComponent extends ComponentStudent {\n protected html: SafeHtml = '';\n\n constructor(\n protected annotationService: AnnotationService,\n protected componentService: ComponentService,\n protected configService: ConfigService,\n protected dialog: MatDialog,\n protected nodeService: NodeService,\n protected notebookService: NotebookService,\n protected studentAssetService: StudentAssetService,\n protected studentDataService: StudentDataService,\n private wiseLinkService: WiseLinkService\n ) {\n super(\n annotationService,\n componentService,\n configService,\n dialog,\n nodeService,\n notebookService,\n studentAssetService,\n studentDataService\n );\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n this.html = this.wiseLinkService.generateHtmlWithWiseLink(this.componentContent.html);\n this.broadcastDoneRenderingComponent();\n }\n}\n", + "styleUrl": "html-student.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentService", + "type": "ComponentService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "notebookService", + "type": "NotebookService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentAssetService", + "type": "StudentAssetService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentDataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "wiseLinkService", + "type": "WiseLinkService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 20, + "jsdoctags": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentService", + "type": "ComponentService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "notebookService", + "type": "NotebookService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentAssetService", + "type": "StudentAssetService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentDataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "wiseLinkService", + "type": "WiseLinkService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "ComponentStudent" + ], + "templateData": "
    \n" + }, + { + "name": "IdeasSummaryComponent", + "id": "component-IdeasSummaryComponent-209a5e2cc0524b23dbdd6fb39b22e7f371fa45850b7d83336da02357ae810b6cb50cf56427f02cec01af9d823bdf87a5494f16f72444560e09bf458d70434d74", + "file": "src/assets/wise5/directives/teacher-summary-display/ideas-summary-display/ideas-summary.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [ + { + "name": "IdeasSortingService", + "type": "injectable" + } + ], + "selector": "ideas-summary", + "styleUrls": [], + "styles": [ + "\n h3,\n .mat-subtitle-1 {\n margin-bottom: 8px;\n margin-top: 0;\n }\n .mat-icon {\n vertical-align: middle;\n }\n " + ], + "templateUrl": [ + "ideas-summary.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "componentType", + "deprecated": false, + "deprecationMessage": "", + "line": 37, + "type": "string", + "decorators": [] + }, + { + "name": "chartType", + "deprecated": false, + "deprecationMessage": "", + "line": 70, + "type": "string", + "decorators": [], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "line": 65, + "type": "string", + "decorators": [], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "customLabelColors", + "deprecated": false, + "deprecationMessage": "", + "line": 73, + "type": "any[]", + "decorators": [], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "doRender", + "deprecated": false, + "deprecationMessage": "", + "line": 74, + "type": "boolean", + "decorators": [], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "hasWarning", + "deprecated": false, + "deprecationMessage": "", + "line": 71, + "type": "boolean", + "decorators": [], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "highlightCorrectAnswer", + "deprecated": false, + "deprecationMessage": "", + "line": 66, + "type": "boolean", + "decorators": [], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 64, + "type": "string", + "decorators": [], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "periodId", + "deprecated": false, + "deprecationMessage": "", + "line": 69, + "type": "number", + "decorators": [], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "source", + "deprecated": false, + "deprecationMessage": "", + "line": 68, + "type": "string", + "decorators": [], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "studentDataType", + "deprecated": false, + "deprecationMessage": "", + "line": 67, + "type": "string", + "decorators": [], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "warningMessage", + "deprecated": false, + "deprecationMessage": "", + "line": 72, + "type": "string", + "decorators": [], + "inheritance": { + "file": "SummaryDisplayComponent" + } + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "allIdeas", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "literal type[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 36, + "modifierKind": [ + 124 + ] + }, + { + "name": "ideaCountMap", + "deprecated": false, + "deprecationMessage": "", + "type": "Map", + "indexKey": "", + "optional": false, + "description": "", + "line": 38, + "modifierKind": [ + 124 + ] + }, + { + "name": "ideaDescriptions", + "deprecated": false, + "deprecationMessage": "", + "type": "CRaterRubric", + "indexKey": "", + "optional": false, + "description": "", + "line": 39, + "modifierKind": [ + 123 + ] + }, + { + "name": "leastCommonIdeas", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "literal type[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 40, + "modifierKind": [ + 124 + ] + }, + { + "name": "mostCommonIdeas", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "literal type[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 41, + "modifierKind": [ + 124 + ] + }, + { + "name": "seeAllIdeas", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 42, + "modifierKind": [ + 124 + ] + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "TeacherSummaryDisplayComponent" + } + }, + { + "name": "chartConfig", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 26, + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "colors", + "defaultValue": "{\n palette: [\n '#1a237e',\n '#701e82',\n '#aa187b',\n '#d72c6c',\n '#f65158',\n '#ff7d43',\n '#ffab32',\n '#fdd835',\n '#ffee58',\n '#ade563',\n '#50d67f',\n '#00c29d',\n '#00aab3',\n '#0090bc',\n '#0074b4',\n '#01579b'\n ],\n singleHue: 'rgb(170, 24, 123)',\n correct: '#00C853',\n incorrect: '#C62828'\n }", + "deprecated": false, + "deprecationMessage": "", + "type": "object", + "indexKey": "", + "optional": false, + "description": "", + "line": 27, + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "defaultMaxScore", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 50, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "hasCorrectness", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 51, + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "Highcharts", + "defaultValue": "Highcharts", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 52, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "maxScore", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 53, + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "meanScore", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 56, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "numResponses", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 58, + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "otherComponent", + "deprecated": false, + "deprecationMessage": "", + "type": "ComponentContent", + "indexKey": "", + "optional": false, + "description": "", + "line": 59, + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "otherComponentType", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 60, + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "percentResponded", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 61, + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "studentMaxScore", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 54, + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "studentMinScore", + "defaultValue": "1", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 55, + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "totalWorkgroups", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 62, + "inheritance": { + "file": "SummaryDisplayComponent" + } + } + ], + "methodsClass": [ + { + "name": "compileAndSortIdeas", + "args": [ + { + "name": "ideasSummaryData", + "type": "IdeasSummaryData", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 86, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "ideasSummaryData", + "type": "IdeasSummaryData", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "generateIdeasSummary", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 72, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "ideaCountMapToArray", + "args": [ + { + "name": "ideaDescriptions", + "type": "CRaterIdea[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "IdeaData[]", + "typeParameters": [], + "line": 107, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "ideaDescriptions", + "type": "CRaterIdea[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 63, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "renderDisplay", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 126, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "toggleSeeAllIdeas", + "args": [ + { + "name": "event", + "type": "Event", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 131, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "event", + "type": "Event", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "useIdeaTextOrId", + "args": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 122, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "displaySourceSelfMessageToTeacher", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 47, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "TeacherSummaryDisplayComponent" + } + }, + { + "name": "getLatestScores", + "args": [], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 35, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "getLatestWork", + "args": [], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 39, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 31, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "TeacherSummaryDisplayComponent" + } + }, + { + "name": "renderSelfDisplay", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 43, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "calculateCountsAndPercentage", + "args": [ + { + "name": "dataCount", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 558, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "dataCount", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "convertObjectToArray", + "args": [ + { + "name": "obj", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 219, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "obj", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "createChartConfig", + "args": [ + { + "name": "chartType", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "title", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "xAxisType", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "total", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "series", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "colors", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 456, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "chartType", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "title", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "xAxisType", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "total", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "series", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "colors", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "createChoicesSeriesData", + "args": [ + { + "name": "component", + "type": "MultipleChoiceContent", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "summaryData", + "type": "MultipleChoiceSummaryData", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "SeriesData", + "typeParameters": [], + "line": 286, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "component", + "type": "MultipleChoiceContent", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "summaryData", + "type": "MultipleChoiceSummaryData", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "createScoresSeriesData", + "args": [ + { + "name": "summaryData", + "type": "ScoreSummaryData", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "unknown", + "typeParameters": [], + "line": 325, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "summaryData", + "type": "ScoreSummaryData", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "createSeries", + "args": [ + { + "name": "seriesData", + "type": "SeriesData", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 350, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "seriesData", + "type": "SeriesData", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "createTableSeriesData", + "args": [ + { + "name": "summaryData", + "type": "TableSummaryData", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "SeriesData", + "typeParameters": [], + "line": 247, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "summaryData", + "type": "TableSummaryData", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "filterLatestScoreAnnotations", + "args": [ + { + "name": "annotations", + "type": "Annotation[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 201, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "annotations", + "type": "Annotation[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "getChartColors", + "args": [], + "optional": false, + "returnType": "string[]", + "typeParameters": [], + "line": 405, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "getDataPointColor", + "args": [ + { + "name": "choice", + "type": "Choice", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string | null", + "typeParameters": [], + "line": 309, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "choice", + "type": "Choice", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "getGraphTitle", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 375, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "getGraphTitleForClass", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 395, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "getGraphTitleForSelf", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 387, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "getIndexByName", + "args": [ + { + "name": "series", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "name", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 431, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "series", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "name", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "getLatestScoreAnnotationForWorkgroup", + "args": [], + "optional": false, + "returnType": "Annotation", + "typeParameters": [], + "line": 169, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "getLatestStudentScores", + "args": [], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 153, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "getLatestStudentWork", + "args": [], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 191, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "getPercentResponded", + "args": [ + { + "name": "numResponses", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "totalWorkgroups", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 573, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "numResponses", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "totalWorkgroups", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "getScoreFromAnnotation", + "args": [ + { + "name": "annotation", + "type": "Annotation", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 321, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "annotation", + "type": "Annotation", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "getSummaryDataCount", + "args": [ + { + "name": "summaryData", + "type": "SummaryData", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "id", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 577, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "summaryData", + "type": "SummaryData", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "id", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "getTotalTableCount", + "args": [ + { + "name": "seriesData", + "type": "SeriesData", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 260, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "seriesData", + "type": "SeriesData", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "getTotalWorkgroups", + "args": [ + { + "name": "dataCount", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 564, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "dataCount", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "hasCorrectAnswer", + "args": [ + { + "name": "component", + "type": "MultipleChoiceContent", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 305, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "component", + "type": "MultipleChoiceContent", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "initializeCustomLabelColors", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 100, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "initializeOtherComponent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 93, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "isAuthoringPreview", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 120, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "isSourceSelf", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 581, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "isStudentDataType", + "args": [ + { + "name": "studentDataType", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 452, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "studentDataType", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "isStudentDataTypeResponses", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 444, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "isStudentDataTypeScores", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 448, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "isStudentRun", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 124, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "isVLEPreview", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 116, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "ngOnChanges", + "args": [ + { + "name": "changes", + "type": "SimpleChanges", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 106, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "changes", + "type": "SimpleChanges", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "processComponentStates", + "args": [ + { + "name": "componentStates", + "type": "ComponentState[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "unknown", + "typeParameters": [], + "line": 225, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "componentStates", + "type": "ComponentState[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "processScoreAnnotations", + "args": [ + { + "name": "annotations", + "type": "Annotation[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 266, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "annotations", + "type": "Annotation[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "renderClassResponses", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 144, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "renderClassScores", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 177, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "renderGraph", + "args": [ + { + "name": "seriesData", + "type": "SeriesData", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "total", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 340, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "seriesData", + "type": "SeriesData", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "total", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "setCustomLabelColors", + "args": [ + { + "name": "series", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "colors", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "customLabelColors", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 422, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "series", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "colors", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "customLabelColors", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "setLatestAnnotationIfNewer", + "args": [ + { + "name": "latestAnnotations", + "type": "Annotation", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "annotation", + "type": "Annotation", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 211, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "latestAnnotations", + "type": "Annotation", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "annotation", + "type": "Annotation", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "setMaxScore", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 182, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "setMinMaxScore", + "args": [ + { + "name": "annotations", + "type": "Annotation[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 274, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "annotations", + "type": "Annotation[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { AnnotationService } from '../../../services/annotationService';\nimport { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { ConfigService } from '../../../services/configService';\nimport { CRaterIdea } from '../../../components/common/cRater/CRaterIdea';\nimport { CRaterRubric } from '../../../components/common/cRater/CRaterRubric';\nimport { CRaterService } from '../../../services/cRaterService';\nimport { DialogGuidanceSummaryData } from '../summary-data/DialogGuidanceSummaryData';\nimport { IdeaData } from '../../../components/common/cRater/IdeaData';\nimport { IdeasSortingService } from '../../../services/ideasSortingService';\nimport { IdeasSummaryData } from '../summary-data/IdeasSummaryData';\nimport { MatIconModule } from '@angular/material/icon';\nimport { OpenResponseSummaryData } from '../summary-data/OpenResponseSummaryData';\nimport { SummaryService } from '../../../components/summary/summaryService';\nimport { TeacherDataService } from '../../../services/teacherDataService';\nimport { TeacherProjectService } from '../../../services/teacherProjectService';\nimport { TeacherSummaryDisplayComponent } from '../teacher-summary-display.component';\n\n@Component({\n imports: [CommonModule, MatIconModule],\n providers: [IdeasSortingService],\n selector: 'ideas-summary',\n styles: `\n h3,\n .mat-subtitle-1 {\n margin-bottom: 8px;\n margin-top: 0;\n }\n .mat-icon {\n vertical-align: middle;\n }\n `,\n templateUrl: 'ideas-summary.component.html'\n})\nexport class IdeasSummaryComponent extends TeacherSummaryDisplayComponent {\n protected allIdeas: { id: string; text: string; count: number }[] = [];\n @Input() componentType: string;\n protected ideaCountMap: Map;\n private ideaDescriptions: CRaterRubric;\n protected leastCommonIdeas: { id: string; text: string; count: number }[] = [];\n protected mostCommonIdeas: { id: string; text: string; count: number }[] = [];\n protected seeAllIdeas: boolean;\n\n constructor(\n protected annotationService: AnnotationService,\n protected configService: ConfigService,\n protected cRaterService: CRaterService,\n protected dataService: TeacherDataService,\n private ideasSortingService: IdeasSortingService,\n protected projectService: TeacherProjectService,\n protected summaryService: SummaryService\n ) {\n super(\n annotationService,\n configService,\n cRaterService,\n dataService,\n projectService,\n summaryService\n );\n }\n\n ngOnInit(): void {\n this.ideaDescriptions = this.cRaterService.getCRaterRubric(\n this.nodeId,\n this.componentId,\n this.componentType\n );\n this.generateIdeasSummary();\n }\n\n private generateIdeasSummary(): void {\n if (this.componentType === 'DialogGuidance') {\n this.getLatestWork().subscribe((componentStates) =>\n this.compileAndSortIdeas(new DialogGuidanceSummaryData(componentStates))\n );\n } else if (this.componentType === 'OpenResponse') {\n this.compileAndSortIdeas(\n new OpenResponseSummaryData(\n this.annotationService.getAnnotationsByNodeIdComponentId(this.nodeId, this.componentId)\n )\n );\n }\n }\n\n private compileAndSortIdeas(ideasSummaryData: IdeasSummaryData) {\n this.ideaCountMap = ideasSummaryData.getIdeaCountMap();\n if (!Array.from(this.ideaCountMap.values()).some((value) => value > 0)) {\n // No ideas detected\n this.doRender = false;\n } else {\n const ideaCountArray = this.ideaCountMapToArray(this.ideaDescriptions.ideas);\n const sortedIdeas = this.ideasSortingService.sortByCount(ideaCountArray);\n this.mostCommonIdeas = [...sortedIdeas].splice(0, 3);\n if (sortedIdeas.length <= 3) {\n this.leastCommonIdeas = [...this.mostCommonIdeas].reverse();\n } else {\n this.leastCommonIdeas = [...sortedIdeas]\n .splice(sortedIdeas.length - 3, sortedIdeas.length)\n .reverse();\n }\n this.allIdeas = this.ideasSortingService.sortById(ideaCountArray);\n this.doRender = true;\n }\n }\n\n private ideaCountMapToArray(ideaDescriptions: CRaterIdea[]): IdeaData[] {\n const ideaCountArray = [];\n this.ideaCountMap.forEach((count, ideaId) => {\n const ideaDescription = ideaDescriptions.find(\n (ideaDescription) => ideaDescription.name === ideaId\n );\n ideaCountArray.push({\n id: ideaId,\n text: this.useIdeaTextOrId(ideaId, ideaDescription?.text),\n count: count\n });\n });\n return ideaCountArray;\n }\n\n private useIdeaTextOrId(id: string, text: string): string {\n return text ?? 'idea ' + id;\n }\n\n protected renderDisplay(): void {\n super.renderDisplay();\n this.generateIdeasSummary();\n }\n\n protected toggleSeeAllIdeas(event: Event): void {\n event.preventDefault();\n this.seeAllIdeas = !this.seeAllIdeas;\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "\n h3,\n .mat-subtitle-1 {\n margin-bottom: 8px;\n margin-top: 0;\n }\n .mat-icon {\n vertical-align: middle;\n }\n \n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "cRaterService", + "type": "CRaterService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ideasSortingService", + "type": "IdeasSortingService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "summaryService", + "type": "SummaryService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 42, + "jsdoctags": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "cRaterService", + "type": "CRaterService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "ideasSortingService", + "type": "IdeasSortingService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "summaryService", + "type": "SummaryService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "TeacherSummaryDisplayComponent" + ], + "templateData": "\n
    \n {{ idea.id }}. {{ idea.text }} (person{{ idea.count }})\n
    \n
    \n\n

    Student Ideas Detected

    \n@if (hasWarning) {\n

    {{ warningMessage }}

    \n}\n@if (doRender) {\n
    \n
    \n

    Most Common:

    \n
      \n @for (idea of mostCommonIdeas; track idea.id) {\n
    • \n \n
    • \n }\n
    \n
    \n
    \n

    Least Common:

    \n
      \n @for (idea of leastCommonIdeas; track idea.id) {\n
    • \n \n
    • \n }\n
    \n
    \n
    \n @if (seeAllIdeas) {\n

    All Ideas:

    \n
      \n @for (idea of allIdeas; track idea.id) {\n
    • \n \n
    • \n }\n
    \n Hide all ideas\n } @else {\n Show all ideas\n }\n} @else {\n
    Your students' ideas will show up here as they are detected in the activity.
    \n}\n" + }, + { + "name": "InsertNodeAfterButtonComponent", + "id": "component-InsertNodeAfterButtonComponent-776bd47d8b92bcc14815746fe2d823e6719421e58a35d27abc6ce3f11ce8800132665c29cdcb8c394845d20017c1786669acc4ff68a7ebf8026da242c1fce611", + "file": "src/assets/wise5/authoringTool/choose-node-location/insert-node-after-button/insert-node-after-button.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "insert-node-after-button", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./insert-node-after-button.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "disabled", + "deprecated": false, + "deprecationMessage": "", + "line": 12, + "type": "boolean", + "decorators": [] + } + ], + "outputsClass": [ + { + "name": "insertEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 13, + "type": "EventEmitter" + } + ], + "propertiesClass": [], + "methodsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@Component({\n imports: [MatButtonModule, MatIconModule, MatTooltipModule],\n selector: 'insert-node-after-button',\n templateUrl: './insert-node-after-button.component.html'\n})\nexport class InsertNodeAfterButtonComponent {\n @Input() disabled: boolean;\n @Output() insertEvent = new EventEmitter();\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [], + "templateData": "\n subdirectory_arrow_left\n\n" + }, + { + "name": "InsertNodeInsideButtonComponent", + "id": "component-InsertNodeInsideButtonComponent-4a3f8cc494055d5facabce72994ba51fa74300424461bcc0a33b8cb563700d05abad69e08bc39fc51273675e6daad3d9e131a67cb3b58538598f4e30ef9620f5", + "file": "src/assets/wise5/authoringTool/choose-node-location/insert-node-inside-button/insert-node-inside-button.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "insert-node-inside-button", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./insert-node-inside-button.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [ + { + "name": "insertEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 12, + "type": "EventEmitter" + } + ], + "propertiesClass": [], + "methodsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, EventEmitter, Output } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@Component({\n imports: [MatButtonModule, MatIconModule, MatTooltipModule],\n selector: 'insert-node-inside-button',\n templateUrl: './insert-node-inside-button.component.html'\n})\nexport class InsertNodeInsideButtonComponent {\n @Output() insertEvent = new EventEmitter();\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [], + "templateData": "\n call_received\n\n" + }, + { + "name": "JigsawComponent", + "id": "component-JigsawComponent-6d67e34e6a85aa488f772612d6e9c6a93e56bddfed86d624edf842b965680eb6cae7d1dc6ed1059cf73c526bcd23b4ccf1552d0045ebffcc548d3fda76396093", + "file": "src/assets/wise5/authoringTool/structure/jigsaw/jigsaw.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [ + "./jigsaw.component.scss", + "../../add-content.scss" + ], + "styles": [], + "templateUrl": [ + "./jigsaw.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "numGroups", + "defaultValue": "'2'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "modifierKind": [ + 124 + ] + }, + { + "name": "groupsPath", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 8, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ConfigureStructureComponent" + } + }, + { + "name": "nodesPath", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 9, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ConfigureStructureComponent" + } + }, + { + "name": "structure", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ConfigureStructureComponent" + } + }, + { + "name": "structureDir", + "defaultValue": "'assets/wise5/authoringTool/structure'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ConfigureStructureComponent" + } + }, + { + "name": "submitting", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ConfigureStructureComponent" + } + }, + { + "name": "target", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ConfigureStructureComponent" + } + } + ], + "methodsClass": [ + { + "name": "fetchGroups", + "args": [ + { + "name": "numGroups", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 18, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "numGroups", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ConfigureStructureComponent" + } + }, + { + "name": "fetchNodes", + "args": [ + { + "name": "numGroups", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "numGroups", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ConfigureStructureComponent" + } + }, + { + "name": "injectGroupAndNodes", + "args": [ + { + "name": "numGroups", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "'2'" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "numGroups", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "'2'", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ConfigureStructureComponent" + } + }, + { + "name": "addNodesToProject", + "args": [ + { + "name": "nodes", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 78, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodes", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ConfigureStructureComponent" + } + }, + { + "name": "chooseLocation", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 52, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ConfigureStructureComponent" + } + }, + { + "name": "injectGroup", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 32, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ConfigureStructureComponent" + } + }, + { + "name": "injectNodes", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 36, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ConfigureStructureComponent" + } + }, + { + "name": "injectUniqueIds", + "args": [ + { + "name": "structure", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 72, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "structure", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ConfigureStructureComponent" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ConfigureStructureComponent" + } + }, + { + "name": "saveAndGoBackToProjectHome", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 86, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ConfigureStructureComponent" + } + }, + { + "name": "submit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 59, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ConfigureStructureComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatDivider" + }, + { + "name": "MatRadioModule", + "type": "module" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatButton" + }, + { + "name": "RouterLink" + }, + { + "name": "MatProgressBar" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatButton } from '@angular/material/button';\nimport { MatDivider } from '@angular/material/divider';\nimport { MatProgressBar } from '@angular/material/progress-bar';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { RouterLink } from '@angular/router';\nimport { ConfigureStructureComponent } from '../configure-structure.component';\n\n@Component({\n imports: [MatDivider, MatRadioModule, FormsModule, MatButton, RouterLink, MatProgressBar],\n styleUrls: ['./jigsaw.component.scss', '../../add-content.scss'],\n templateUrl: './jigsaw.component.html'\n})\nexport class JigsawComponent extends ConfigureStructureComponent {\n protected numGroups: string = '2';\n\n protected fetchGroups(numGroups: string): void {\n super.fetchGroups(`jigsaw/groups-${numGroups}.json`);\n }\n\n protected fetchNodes(numGroups: string): void {\n super.fetchNodes(`jigsaw/nodes-${numGroups}.json`);\n }\n\n protected injectGroupAndNodes(numGroups: string = '2'): void {\n this.fetchGroups(numGroups);\n this.fetchNodes(numGroups);\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": [ + { + "data": ".num-groups-radio-group {\n display: flex;\n flex-direction: column;\n}\n", + "styleUrl": "./jigsaw.component.scss" + }, + { + "data": ".nav-controls {\n background-color: white;\n position: sticky;\n bottom: 0;\n padding-bottom: 8px;\n z-index: 1;\n\n .mat-divider {\n margin: 16px 0 8px 0;\n }\n}\n", + "styleUrl": "../../add-content.scss" + } + ], + "stylesData": "", + "extends": [ + "ConfigureStructureComponent" + ], + "templateData": "
    Jigsaw
    \n

    \n The Jigsaw KI lesson structure guides students through learning about specific aspects of a\n science topic of their choice and engages them in collaboration to learn more. Students share\n their own ideas and reflect on what they learned from their classmates.\n

    \n\n

    Choose number of groups in this Jigsaw activity:

    \n\n Two groups\n Three groups\n Four groups\n\n
    \n \n
    \n \n \n \n \n @if (submitting) {\n \n }\n Submit\n \n
    \n
    \n" + }, + { + "name": "KiCycleUsingOerComponent", + "id": "component-KiCycleUsingOerComponent-1ffdb33694c0dc6ac81d88da6d538141a4201160c231e876e1bf33b9c09cd051a9e5517f24aa1cf775d3611e80e83b0cc1e640f384aca9be663ecc6f5eecc127", + "file": "src/assets/wise5/authoringTool/structure/ki-cycle-using-oer/ki-cycle-using-oer.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./ki-cycle-using-oer.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "groupsPath", + "defaultValue": "`ki-cycle-using-oer/groups.json`", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ConfigureStructureComponent" + } + }, + { + "name": "nodesPath", + "defaultValue": "`ki-cycle-using-oer/nodes.json`", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ConfigureStructureComponent" + } + }, + { + "name": "structure", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ConfigureStructureComponent" + } + }, + { + "name": "structureDir", + "defaultValue": "'assets/wise5/authoringTool/structure'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ConfigureStructureComponent" + } + }, + { + "name": "submitting", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ConfigureStructureComponent" + } + }, + { + "name": "target", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ConfigureStructureComponent" + } + } + ], + "methodsClass": [ + { + "name": "addNodesToProject", + "args": [ + { + "name": "nodes", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 78, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodes", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ConfigureStructureComponent" + } + }, + { + "name": "chooseLocation", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 52, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ConfigureStructureComponent" + } + }, + { + "name": "fetchGroups", + "args": [ + { + "name": "groupsPath", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "this.groupsPath" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 40, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "groupsPath", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "this.groupsPath", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ConfigureStructureComponent" + } + }, + { + "name": "fetchNodes", + "args": [ + { + "name": "nodesPath", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "this.nodesPath" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 46, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodesPath", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "this.nodesPath", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ConfigureStructureComponent" + } + }, + { + "name": "injectGroup", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 32, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ConfigureStructureComponent" + } + }, + { + "name": "injectGroupAndNodes", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 27, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ConfigureStructureComponent" + } + }, + { + "name": "injectNodes", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 36, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ConfigureStructureComponent" + } + }, + { + "name": "injectUniqueIds", + "args": [ + { + "name": "structure", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 72, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "structure", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ConfigureStructureComponent" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ConfigureStructureComponent" + } + }, + { + "name": "saveAndGoBackToProjectHome", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 86, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ConfigureStructureComponent" + } + }, + { + "name": "submit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 59, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ConfigureStructureComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatDivider" + }, + { + "name": "MatButton" + }, + { + "name": "RouterLink" + }, + { + "name": "MatProgressBar" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { ConfigureStructureComponent } from '../configure-structure.component';\nimport { MatProgressBar } from '@angular/material/progress-bar';\nimport { RouterLink } from '@angular/router';\nimport { MatButton } from '@angular/material/button';\nimport { MatDivider } from '@angular/material/divider';\n\n@Component({\n imports: [MatDivider, MatButton, RouterLink, MatProgressBar],\n styleUrl: '../../add-content.scss',\n templateUrl: './ki-cycle-using-oer.component.html'\n})\nexport class KiCycleUsingOerComponent extends ConfigureStructureComponent {\n protected groupsPath = `ki-cycle-using-oer/groups.json`;\n protected nodesPath = `ki-cycle-using-oer/nodes.json`;\n}\n", + "styleUrl": "../../add-content.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [ + "ConfigureStructureComponent" + ], + "templateData": "
    KI Lesson with OER
    \n

    \n The KI Lesson with OER guides you to embed an open educational resource (OER) of your choice in a\n lesson structure that promotes knowledge integration (KI). The structure suggests different step\n types that engage students in eliciting their ideas, discovering new ideas through use of the OER,\n distinguishing among their initial and new ideas, and making connections to form integrated\n understanding.\n

    \n
    \n \n
    \n \n \n \n \n @if (submitting) {\n \n }\n Submit\n \n
    \n
    \n" + }, + { + "name": "LabelAuthoring", + "id": "component-LabelAuthoring-065fd6ef676328619141cf2f926fdbdfc0f4bd02c6778b105cbd280f1ab9ca087db9f6d1fae5e0ffe8d5c03db5d5e175bf273ba25025768eb75932d50b79eed4", + "file": "src/assets/wise5/components/label/label-authoring/label-authoring.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "label-authoring", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "label-authoring.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "numberInputChange", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 34 + }, + { + "name": "textInputChange", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 35 + }, + { + "name": "allowedConnectedComponentTypes", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "idToOrder", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "inputChange", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "promptChange", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + } + ], + "methodsClass": [ + { + "name": "addLabel", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 56, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "compareTextAlphabetically", + "args": [ + { + "name": "stringA", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "stringB", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "1 | 0 | -1", + "typeParameters": [], + "line": 84, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "stringA", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "stringB", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "deleteLabel", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "label", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 72, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "label", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "deleteStarterState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 94, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 37, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "openColorViewer", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 99, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "saveStarterState", + "args": [ + { + "name": "starterState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 79, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "starterState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "assetSelected", + "args": [ + { + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 100, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "componentChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 73, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "confirmAndRemove", + "args": [ + { + "name": "message", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "array", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 110, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "message", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "array", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "getComponent", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 106, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "getComponents", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 102, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "isForThisComponent", + "args": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 77, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "moveObjectDown", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 122, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "moveObjectUp", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 117, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 65, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "promptChanged", + "args": [ + { + "name": "prompt", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 69, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "prompt", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "setShowSubmitButtonValue", + "args": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 85, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "EditComponentPrompt", + "type": "component" + }, + { + "name": "TranslatableInputComponent", + "type": "component" + }, + { + "name": "TranslatableAssetChooserComponent", + "type": "component" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatInput" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatCheckbox" + }, + { + "name": "MatButton" + }, + { + "name": "MatTooltip" + }, + { + "name": "MatIcon" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatButton } from '@angular/material/button';\nimport { MatCheckbox } from '@angular/material/checkbox';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInput } from '@angular/material/input';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { Subject } from 'rxjs';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport { EditComponentPrompt } from '../../../../../app/authoring-tool/edit-component-prompt/edit-component-prompt.component';\nimport { AbstractComponentAuthoring } from '../../../authoringTool/components/AbstractComponentAuthoring';\nimport { TranslatableAssetChooserComponent } from '../../../authoringTool/components/translatable-asset-chooser/translatable-asset-chooser.component';\nimport { TranslatableInputComponent } from '../../../authoringTool/components/translatable-input/translatable-input.component';\n\n@Component({\n selector: 'label-authoring',\n templateUrl: 'label-authoring.component.html',\n styleUrl: 'label-authoring.component.scss',\n imports: [\n EditComponentPrompt,\n TranslatableInputComponent,\n TranslatableAssetChooserComponent,\n MatFormFieldModule,\n MatInput,\n FormsModule,\n MatCheckbox,\n MatButton,\n MatTooltip,\n MatIcon\n ]\n})\nexport class LabelAuthoring extends AbstractComponentAuthoring {\n numberInputChange: Subject = new Subject();\n textInputChange: Subject = new Subject();\n\n ngOnInit(): void {\n super.ngOnInit();\n if (this.componentContent.enableCircles == null) {\n // If this component was created before enableCircles was implemented, we will default it to\n // true in the authoring so that the \"Enable Dots\" checkbox is checked.\n this.componentContent.enableCircles = true;\n }\n this.subscriptions.add(\n this.numberInputChange.pipe(debounceTime(1000), distinctUntilChanged()).subscribe(() => {\n this.componentChanged();\n })\n );\n this.subscriptions.add(\n this.textInputChange.pipe(debounceTime(1000), distinctUntilChanged()).subscribe(() => {\n this.componentChanged();\n })\n );\n }\n\n addLabel(): void {\n const newLabel = {\n text: $localize`Enter text here`,\n color: 'blue',\n pointX: 100,\n pointY: 100,\n textX: 200,\n textY: 200,\n canEdit: false,\n canDelete: false,\n isStarterLabel: true\n };\n this.componentContent.labels.push(newLabel);\n this.componentChanged();\n }\n\n deleteLabel(index: number, label: any): void {\n if (confirm($localize`Are you sure you want to delete this label?\\n\\n${label.text}`)) {\n this.componentContent.labels.splice(index, 1);\n this.componentChanged();\n }\n }\n\n saveStarterState(starterState: any): void {\n this.componentContent.labels = starterState;\n this.componentChanged();\n }\n\n compareTextAlphabetically(stringA: string, stringB: string) {\n if (stringA < stringB) {\n return -1;\n } else if (stringA > stringB) {\n return 1;\n } else {\n return 0;\n }\n }\n\n deleteStarterState(): void {\n this.componentContent.labels = [];\n this.componentChanged();\n }\n\n openColorViewer(): void {\n window.open('http://www.javascripter.net/faq/colornam.htm');\n }\n}\n", + "styleUrl": "label-authoring.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [ + "AbstractComponentAuthoring" + ], + "templateData": "\n
    \n \n \n
    \n
    \n \n Canvas Width (px)\n \n \n \n Canvas Height (px)\n \n \n
    \n
    \n \n Point Radius Size (px)\n \n \n \n Font Size\n \n \n \n Label Max Character Width\n \n \n
    \n
    \n
    \n \n Can Student Create Labels\n \n
    \n
    \n \n Enable Dots\n \n
    \n
    \n \n Allow Student to Upload Image for Background\n \n
    \n
    \n
    \n
    \n Starter Labels\n \n add\n \n
    \n @if (componentContent.labels == null || componentContent.labels.length === 0) {\n
    \n There are no starter labels. Click the \"Add Label\" button to add a starter label.\n
    \n }\n @for (label of componentContent.labels; track label; let labelIndex = $index) {\n
    \n
    \n \n \n Color\n \n \n \n palette\n \n
    \n
    \n
    \n \n Can Student Edit Label\n \n
    \n
    \n \n Can Student Delete Label\n \n
    \n
    \n @if (componentContent.enableCircles) {\n
    \n Point Location\n \n X\n \n \n \n Y\n \n \n
    \n }\n
    \n Text Location\n \n X\n \n \n \n Y\n \n \n \n \n delete\n \n
    \n
    \n }\n
    \n" + }, + { + "name": "LabelShowWorkComponent", + "id": "component-LabelShowWorkComponent-2a2e1e362ba8de7c104087fd3e2211f4f723cf88dc888a6ec86bcb6c95b72fec61e5b8bda85166ff565aa71016f0b47dcf4baa4a99ac4961e07fb180ffc0cbea", + "file": "src/assets/wise5/components/label/label-show-work/label-show-work.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "label-show-work", + "styleUrls": [], + "styles": [ + ".label-canvas { border: 1px solid black; }" + ], + "template": "
    \n
    \n \n
    \n
    \n", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "line": 8, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "componentState", + "deprecated": false, + "deprecationMessage": "", + "line": 9, + "type": "any", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "isRevision", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "line": 10, + "type": "boolean", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 7, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "canvas", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 21, + "modifierKind": [ + 123 + ] + }, + { + "name": "canvasId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 20, + "modifierKind": [ + 124 + ] + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "inheritance": { + "file": "ComponentShowWorkDirective" + } + } + ], + "methodsClass": [ + { + "name": "enableFabricTextPadding", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 45, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "getCanvasIdPrefix", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 41, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 31, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "setStudentWork", + "args": [ + { + "name": "canvas", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 71, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "canvas", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setupCanvas", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 60, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "ngAfterViewInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 33, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentShowWorkDirective" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { fabric } from 'fabric';\nimport { Component } from '@angular/core';\nimport { NodeService } from '../../../services/nodeService';\nimport { ProjectService } from '../../../services/projectService';\nimport { LabelService } from '../labelService';\nimport { ComponentShowWorkDirective } from '../../component-show-work.directive';\n\n@Component({\n selector: 'label-show-work',\n styles: ['.label-canvas { border: 1px solid black; }'],\n template: `\n
    \n
    \n \n
    \n
    \n `\n})\nexport class LabelShowWorkComponent extends ComponentShowWorkDirective {\n protected canvasId: string;\n private canvas: any;\n\n constructor(\n private labelService: LabelService,\n protected nodeService: NodeService,\n protected projectService: ProjectService\n ) {\n super(nodeService, projectService);\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n this.canvasId = this.getCanvasIdPrefix() + this.componentState.id;\n this.enableFabricTextPadding();\n // wait for angular to completely render the html before we initialize the canvas\n setTimeout(() => {\n this.setupCanvas();\n });\n }\n\n private getCanvasIdPrefix(): string {\n return this.isRevision ? 'label-canvas-revision-' : 'label-canvas-';\n }\n\n private enableFabricTextPadding(): void {\n fabric.Text.prototype.set({\n _getNonTransformedDimensions() {\n return new fabric.Point(this.width, this.height).scalarAdd(this.padding);\n },\n _calculateCurrentDimensions() {\n return fabric.util.transformPoint(\n this._getTransformedDimensions(),\n this.getViewportTransform(),\n true\n );\n }\n });\n }\n\n private setupCanvas(): void {\n const isDisabled: boolean = true;\n this.canvas = this.labelService.initializeCanvas(\n this.canvasId,\n this.componentContent.width,\n this.componentContent.height,\n isDisabled\n );\n this.setStudentWork(this.canvas, this.componentContent, this.componentState);\n }\n\n private setStudentWork(canvas: any, componentContent: any, componentState: any): void {\n this.labelService.addLabelsToCanvas(\n canvas,\n componentState.studentData.labels,\n componentContent.width,\n componentContent.height,\n componentContent.pointSize,\n componentContent.fontSize,\n componentContent.labelWidth,\n componentContent.enableCircles,\n componentState.studentData.version\n );\n this.labelService.setBackgroundImage(canvas, componentState.studentData.backgroundImage);\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": ".label-canvas { border: 1px solid black; }\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "labelService", + "type": "LabelService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 21, + "jsdoctags": [ + { + "name": "labelService", + "type": "LabelService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "ComponentShowWorkDirective" + ] + }, + { + "name": "LabelStudentComponent", + "id": "component-LabelStudentComponent-a63ffb10102833d3ad78155e6862bbc4593a0c168d1402b107e75943fc884a12353077c245616462e1eddee2456d10451c5918376965235e71248cce422250ef", + "file": "src/assets/wise5/components/label/label-student/label-student.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "label-student", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "label-student.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "component", + "deprecated": false, + "deprecationMessage": "", + "line": 24, + "type": "Component", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentState", + "deprecated": false, + "deprecationMessage": "", + "line": 25, + "type": "any", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isDisabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "line": 26, + "type": "boolean", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "mode", + "deprecated": false, + "deprecationMessage": "", + "line": 27, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 28, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "workgroupId", + "deprecated": false, + "deprecationMessage": "", + "line": 29, + "type": "number", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "outputsClass": [ + { + "name": "saveComponentStateEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 30, + "type": "EventEmitter", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "starterStateChangedEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 31, + "type": "EventEmitter", + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "propertiesClass": [ + { + "name": "addNewLabelButtonVisible", + "defaultValue": "true", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 47, + "modifierKind": [ + 124 + ] + }, + { + "name": "backgroundImage", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 48 + }, + { + "name": "canvas", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 49 + }, + { + "name": "canvasHeight", + "defaultValue": "600", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 50 + }, + { + "name": "canvasId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 51 + }, + { + "name": "canvasWidth", + "defaultValue": "800", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 52 + }, + { + "name": "circleZIndex", + "defaultValue": "2", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 53 + }, + { + "name": "disabled", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 54 + }, + { + "name": "editLabelMode", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 55 + }, + { + "name": "enableCircles", + "defaultValue": "true", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 56 + }, + { + "name": "ENTER_KEY_CODE", + "defaultValue": "13", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 57 + }, + { + "name": "isResetButtonVisible", + "defaultValue": "true", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 58 + }, + { + "name": "labels", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 59 + }, + { + "name": "lineZIndex", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 60 + }, + { + "name": "NEW_LABEL_X_LOCATION", + "defaultValue": "80", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 61 + }, + { + "name": "NEW_LABEL_Y_LOCATION", + "defaultValue": "80", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 62 + }, + { + "name": "selectedLabel", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 63 + }, + { + "name": "selectedLabelText", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 64 + }, + { + "name": "SPACE_BETWEEN_LABELS", + "defaultValue": "200", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 65 + }, + { + "name": "studentDataVersion", + "defaultValue": "2", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 69 + }, + { + "name": "textZIndex", + "defaultValue": "1", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 70 + }, + { + "name": "annotationSavedToServerSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 53, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "attachments", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 33, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 34, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 35, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentType", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 36, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isDirty", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 45, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSaveButtonVisible", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 38, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSaveOrSubmitButtonVisible", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 41, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isShowAddToNotebookButton", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 39, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isStudentAttachmentEnabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 46, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmit", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 44, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmitButtonDisabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 42, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmitButtonVisible", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 40, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmitDirty", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 43, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "latestAnnotations", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 48, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "latestComponentState", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 50, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "nodeSubmitClickedSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 54, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "parentStudentWorkIds", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 49, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "prompt", + "deprecated": false, + "deprecationMessage": "", + "type": "SafeHtml", + "indexKey": "", + "optional": false, + "description": "", + "line": 37, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "requestComponentStateSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 52, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "showAddToNotebookButton", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 51, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "studentWorkSavedToServerSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 55, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "submitCounter", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 47, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 56, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "methodsClass": [ + { + "name": "addLabelsToCanvas", + "args": [ + { + "name": "labels", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 344, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "labels", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addListenersToLabel", + "args": [ + { + "name": "label", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 577, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "label", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addNewLabel", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 360, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "attachStudentAsset", + "args": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 808, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createComponentState", + "args": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 444, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCreate a new component state populated with the student data.\ne.g. 'submit', 'save', 'change'\n", + "description": "

    Create a new component state populated with the student data.\ne.g. 'submit', 'save', 'change'

    \n", + "jsdoctags": [ + { + "name": { + "pos": 15371, + "end": 15377, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "action" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 15365, + "end": 15370, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    The action that is triggering creating of this component state\ne.g. 'submit', 'save', 'change'

    \n" + }, + { + "tagName": { + "pos": 15484, + "end": 15490, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

    A promise that will return a component state.

    \n" + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createKeydownListener", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 548, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "createMergedComponentState", + "args": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 688, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCreate a component state with the merged student responses\n", + "description": "

    Create a component state with the merged student responses

    \n", + "jsdoctags": [ + { + "name": { + "pos": 23163, + "end": 23178, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentStates" + }, + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 23157, + "end": 23162, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    an array of component states

    \n" + }, + { + "tagName": { + "pos": 23214, + "end": 23220, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

    a component state with the merged student data

    \n" + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "deleteBackgroundImage", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 812, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "deleteLabel", + "args": [ + { + "name": "label", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 669, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "label", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "deleteLabelButtonClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 660, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "enableFabricTextPadding", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 114, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "generateStarterState", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 804, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getConnectedComponentForComponentState", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 753, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getLabelData", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 387, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getLabelFromCircle", + "args": [ + { + "name": "circle", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 573, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the label object given the canvas circle object.\n", + "description": "

    Get the label object given the canvas circle object.

    \n", + "jsdoctags": [ + { + "name": { + "pos": 19259, + "end": 19265, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "circle" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 19253, + "end": 19258, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    A canvas circle object.

    \n" + }, + { + "tagName": { + "pos": 19296, + "end": 19302, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

    A label object.

    \n" + } + ] + }, + { + "name": "getLabelJSONObjectFromText", + "args": [ + { + "name": "text", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 420, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the simple JSON object that represents the label\n", + "description": "

    Get the simple JSON object that represents the label

    \n", + "jsdoctags": [ + { + "name": { + "pos": 14579, + "end": 14583, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "text" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 14573, + "end": 14578, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    a Fabric text object

    \n" + }, + { + "tagName": { + "pos": 14611, + "end": 14618, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

    a simple JSON object that represents the label

    \n" + } + ] + }, + { + "name": "getNewLabelLocation", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 469, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "getNextPointLocation", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 484, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "getNextTextLocation", + "args": [ + { + "name": "pointX", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "pointY", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 493, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "pointX", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "pointY", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getNumShowWorkConnectedComponents", + "args": [ + { + "name": "connectedComponents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 794, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponents", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getTextCoordinate", + "args": [ + { + "name": "fabricObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 395, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "fabricObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getUnoccupiedPointLocation", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 521, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "giveFocusToLabelTextInput", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 606, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "handleConnectedComponentsPostProcess", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 674, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "handleMovingCircle", + "args": [ + { + "name": "circleObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "top", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "left", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 241, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "circleObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "top", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "left", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "handleMovingText", + "args": [ + { + "name": "textObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "top", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "left", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 282, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "textObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "top", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "left", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "initializeComponent", + "args": [ + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 132, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "initializeStudentWork", + "args": [ + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 311, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isPointOccupied", + "args": [ + { + "name": "occupiedPointLocations", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "pointX", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "pointY", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 515, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "occupiedPointLocations", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "pointX", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "pointY", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "keyPressed", + "args": [ + { + "name": "e", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 558, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "e", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "limitObjectXPosition", + "args": [ + { + "name": "target", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 211, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nMake sure the object is within the width bounds of the canvas.\nbounds of the canvas.\n", + "description": "

    Make sure the object is within the width bounds of the canvas.\nbounds of the canvas.

    \n", + "jsdoctags": [ + { + "name": { + "pos": 7359, + "end": 7365, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "target" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 7353, + "end": 7358, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    The fabric object.

    \n" + }, + { + "tagName": { + "pos": 7391, + "end": 7398, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

    The x (aka left) position of the object after we have made sure it is within the\nbounds of the canvas.

    \n" + } + ] + }, + { + "name": "limitObjectYPosition", + "args": [ + { + "name": "target", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 229, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nMake sure the object is within the height bounds of the canvas.\nbounds of the canvas.\n", + "description": "

    Make sure the object is within the height bounds of the canvas.\nbounds of the canvas.

    \n", + "jsdoctags": [ + { + "name": { + "pos": 7882, + "end": 7888, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "target" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 7876, + "end": 7881, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    The fabric object.

    \n" + }, + { + "tagName": { + "pos": 7914, + "end": 7921, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

    The y (aka top) position of the object after we have made sure it is within the\nbounds of the canvas.

    \n" + } + ] + }, + { + "name": "mergeLabelComponentState", + "args": [ + { + "name": "componentStateFrom", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentStateTo", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 711, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentStateFrom", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentStateTo", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "mergeOpenResponseComponentState", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 727, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngAfterViewInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 108, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 96, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "onlyHasShowWorkConnectedComponents", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 785, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "refreshFabricObject", + "args": [ + { + "name": "fabricObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 273, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "fabricObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "refreshZIndex", + "args": [ + { + "name": "fabricObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "zIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 278, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "fabricObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "zIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "registerMouseDownListener", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 174, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "registerObjectMovingListener", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 189, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "registerTextChangedListener", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 302, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "removeLabelFromCanvas", + "args": [ + { + "name": "canvas", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "label", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 647, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "canvas", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "label", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "reset", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 765, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "selectedLabelTextChanged", + "args": [ + { + "name": "label", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "textObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "textString", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 632, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nThe student has changed the label text on the selected label\n", + "description": "

    The student has changed the label text on the selected label

    \n", + "jsdoctags": [ + { + "name": { + "pos": 21392, + "end": 21397, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "label" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 21386, + "end": 21391, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    The label that has changed.

    \n" + }, + { + "name": { + "pos": 21438, + "end": 21448, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "textObject" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 21432, + "end": 21437, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    The label's canvas text object.

    \n" + }, + { + "name": { + "pos": 21493, + "end": 21503, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "textString" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 21487, + "end": 21492, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    The text string.

    \n" + } + ] + }, + { + "name": "selectLabel", + "args": [ + { + "name": "label", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 593, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nMake the label selected which means we will show the UI elements to allow the text to be edited\nand the button to delete the label.\n", + "description": "

    Make the label selected which means we will show the UI elements to allow the text to be edited\nand the button to delete the label.

    \n", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": { + "pos": 19855, + "end": 19860, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "label" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 19849, + "end": 19854, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    The label object.

    \n" + } + ] + }, + { + "name": "setBackgroundImage", + "args": [ + { + "name": "backgroundImagePath", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 543, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\n", + "description": "", + "jsdoctags": [ + { + "name": { + "pos": 18442, + "end": 18461, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "backgroundImagePath" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 18436, + "end": 18441, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    the url path to an image or null to remove the background

    \n" + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setStarterLabels", + "args": [ + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 328, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setStudentDataVersion", + "args": [ + { + "name": "studentDataVersion", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 781, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentDataVersion", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setStudentWork", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 335, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setupCanvas", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 147, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "snipImage", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 653, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "unselectAll", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 183, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "wrapTextIfNecessary", + "args": [ + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 639, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addDefaultFeedback", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 688, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "broadcastDoneRenderingComponent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 325, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "canSubmit", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 488, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "clearLatestComponentState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 555, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "confirmSubmit", + "args": [ + { + "name": "numberOfSubmitsLeft", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 468, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "numberOfSubmitsLeft", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "connectedComponentStudentDataSaved", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 796, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nThis function is called when a connected component of this component saves student data.\nThis was added to handle a race condition when a step has a connected component on a previous\nstep but the connected component student work on the previous step was not being imported\nbecause it wasn't being saved in time.\nHere is an example of what was happening\n- Student generates work on step 1 but does not click the save button\n- Student goes to step 2 which triggers a promise to save the student work on step 1\n- Step 2 is loaded and checks if there is any work it needs to import from step 1\n- The work in step 1 has not saved yet so step 2 does not import any work and loads without\n importing any work\n- The work from step 1 is then saved\nHere is the additional process that this function performs to fix this problem\n- Step 2 listens for when work is saved on step 1\n- When the work for step 1 is saved, step 2 checks to see if it needs to import that work\n", + "description": "

    This function is called when a connected component of this component saves student data.\nThis was added to handle a race condition when a step has a connected component on a previous\nstep but the connected component student work on the previous step was not being imported\nbecause it wasn't being saved in time.\nHere is an example of what was happening

    \n
      \n
    • Student generates work on step 1 but does not click the save button
    • \n
    • Student goes to step 2 which triggers a promise to save the student work on step 1
    • \n
    • Step 2 is loaded and checks if there is any work it needs to import from step 1
    • \n
    • The work in step 1 has not saved yet so step 2 does not import any work and loads without\nimporting any work
    • \n
    • The work from step 1 is then saved\nHere is the additional process that this function performs to fix this problem
    • \n
    • Step 2 listens for when work is saved on step 1
    • \n
    • When the work for step 1 is saved, step 2 checks to see if it needs to import that work
    • \n
    \n", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "copyAndAttachStudentAsset", + "args": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 218, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "copyPublicNotebookItem", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 632, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "copyPublicNotebookItemButtonClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 747, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createAutoCommentAnnotation", + "args": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 725, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createAutoScoreAnnotation", + "args": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 714, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createComponentStateAdditionalProcessing", + "args": [ + { + "name": "promise", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 598, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "promise", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createComponentStateAndBroadcast", + "args": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 559, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createDefaultFeedbackAnnotation", + "args": [ + { + "name": "feedbackText", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 706, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "feedbackText", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createNewComponentState", + "args": [], + "optional": false, + "returnType": "Partial", + "typeParameters": [], + "line": 818, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "disableAllInput", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 492, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "disableComponentIfNecessary", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 332, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "disableSubmitButton", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 496, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "doAttachStudentAsset", + "args": [ + { + "name": "studentAssetRequest", + "type": "StudentAssetRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 212, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "studentAssetRequest", + "type": "StudentAssetRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 541, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentStudentDataChanged", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 572, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentSubmitDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 548, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentSubmitTriggered", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 512, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "generateImageFromComponentState", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 615, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nRender the component state and then generate an image from it.\n", + "description": "

    Render the component state and then generate an image from it.

    \n", + "jsdoctags": [ + { + "name": { + "pos": 18804, + "end": 18818, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 18798, + "end": 18803, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    The component state to render.

    \n" + }, + { + "tagName": { + "pos": 18856, + "end": 18862, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

    A promise that will return an image.

    \n" + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getAction", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 321, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getClientSaveTime", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 684, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getComponentStatePromise", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 309, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getComponentStateWrapper", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "ComponentStateWrapper", + "typeParameters": [], + "line": 301, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getDefaultFeedback", + "args": [ + { + "name": "submitCount", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 702, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "submitCount", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getElementById", + "args": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getFirstResult", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 758, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "getFirstResult", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getIsDirty", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 277, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getMaxScore", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 680, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getMaxSubmitCount", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 460, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getNumberOfSubmitsLeft", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 456, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "handleConnectedComponents", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 352, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "handleStudentWorkSavedToServer", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 263, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "handleStudentWorkSavedToServerAdditionalProcessing", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 287, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasAnySubmissions", + "args": [ + { + "name": "componentStates", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 344, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentStates", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasDefaultFeedback", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 695, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasMaxScore", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 676, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasMaxSubmitCount", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 437, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasMaxSubmitCountAndUsedAllSubmits", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 452, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasSubmitMessage", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 504, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasSubmitsLeft", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 500, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasUsedAllSubmits", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 441, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "importWorkAsBackground", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 658, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "importWorkByStudentWorkId", + "args": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 170, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "incrementSubmitCounter", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 389, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isAddToNotebookEnabled", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 624, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isForThisComponent", + "args": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 192, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isFromConnectedComponent", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 766, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isHandleConnectedComponentAfterConnectedComponentStudentDataSaved", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 802, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isLockAfterSubmit", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 348, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isNotebookEnabled", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 643, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isPreviewMode", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 109, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSameComponent", + "args": [ + { + "name": "component", + "type": "Component", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 188, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "component", + "type": "Component", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isStudentNoteClippingEnabled", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 647, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isWorkFromClassmate", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 196, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "lockIfNecessary", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 281, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 97, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "performSubmit", + "args": [ + { + "name": "submitTriggeredBy", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 472, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "submitTriggeredBy", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "processConnectedComponentState", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 184, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "processLatestStudentWork", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 580, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "registerNotebookItemChosenListener", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 736, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "removeAttachment", + "args": [ + { + "name": "attachment", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 245, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "attachment", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "saveButtonClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 393, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "saveForAuthoringPreviewMode", + "args": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 404, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setComponentStateAsBackgroundImage", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 668, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 537, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsDirtyAndBroadcast", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 527, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsSubmit", + "args": [ + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 464, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsSubmitDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 508, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsSubmitDirtyAndBroadcast", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 532, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setParentStudentWorkIdToCurrentStudentWork", + "args": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 180, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setSubmitCounter", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 811, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "shouldCreateComponentState", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 317, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "showStudentAssets", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 651, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "studentDataChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 519, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "submit", + "args": [ + { + "name": "submitTriggeredBy", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 416, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "submitTriggeredBy", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "submitButtonClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 412, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToAnnotationSavedToServer", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 123, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToAttachStudentAsset", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 200, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToNodeSubmitClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 137, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToNotebookItemChosen", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 159, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToNotifyConnectedComponents", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 147, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToRequestComponentState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 289, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToStudentWorkSavedToServer", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 252, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToSubscriptions", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 113, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "tryDisableComponent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 445, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "AddToNotebookButtonComponent", + "type": "component" + }, + { + "name": "ComponentAnnotationsComponent", + "type": "component" + }, + { + "name": "ComponentHeaderComponent", + "type": "component" + }, + { + "name": "ComponentSaveSubmitButtonsComponent", + "type": "component" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatDialogModule", + "type": "module" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatInputModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { fabric } from 'fabric';\nimport { ChangeDetectorRef, Component } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatDialog, MatDialogModule } from '@angular/material/dialog';\nimport { AnnotationService } from '../../../services/annotationService';\nimport { ConfigService } from '../../../services/configService';\nimport { NodeService } from '../../../services/nodeService';\nimport { NotebookService } from '../../../services/notebookService';\nimport { StudentDataService } from '../../../services/studentDataService';\nimport { ComponentStudent } from '../../component-student.component';\nimport { ComponentService } from '../../componentService';\nimport { LabelService } from '../labelService';\nimport { StudentAssetService } from '../../../services/studentAssetService';\nimport { convertToPNGFile } from '../../../common/canvas/canvas';\nimport { wordWrap } from '../../../common/string/string';\nimport { hasConnectedComponent } from '../../../common/ComponentContent';\nimport { ComponentHeaderComponent } from '../../../directives/component-header/component-header.component';\nimport { AddToNotebookButtonComponent } from '../../../directives/add-to-notebook-button/add-to-notebook-button.component';\nimport { ComponentSaveSubmitButtonsComponent } from '../../../directives/component-save-submit-buttons/component-save-submit-buttons.component';\nimport { ComponentAnnotationsComponent } from '../../../directives/componentAnnotations/component-annotations.component';\nimport { LabelStudentData } from '../LabelStudentData';\n\n@Component({\n imports: [\n AddToNotebookButtonComponent,\n ComponentAnnotationsComponent,\n ComponentHeaderComponent,\n ComponentSaveSubmitButtonsComponent,\n FormsModule,\n MatButtonModule,\n MatDialogModule,\n MatFormFieldModule,\n MatIconModule,\n MatInputModule,\n MatTooltipModule\n ],\n selector: 'label-student',\n styleUrl: 'label-student.component.scss',\n templateUrl: 'label-student.component.html'\n})\nexport class LabelStudentComponent extends ComponentStudent {\n protected addNewLabelButtonVisible: boolean = true;\n backgroundImage: string;\n canvas: any;\n canvasHeight: number = 600;\n canvasId: string;\n canvasWidth: number = 800;\n circleZIndex: number = 2;\n disabled: boolean;\n editLabelMode: boolean = false;\n enableCircles: boolean = true;\n ENTER_KEY_CODE: number = 13;\n isResetButtonVisible: boolean = true;\n labels: any[] = [];\n lineZIndex: number = 0;\n NEW_LABEL_X_LOCATION: number = 80;\n NEW_LABEL_Y_LOCATION: number = 80;\n selectedLabel: any;\n selectedLabelText: any;\n SPACE_BETWEEN_LABELS: number = 200;\n\n // Student data version 1 is where the text x and y positioning is relative to the circle.\n // Student data version 2 is where the text x and y positioning is absolute.\n studentDataVersion: number = 2;\n textZIndex: number = 1;\n\n constructor(\n protected annotationService: AnnotationService,\n private changeDetector: ChangeDetectorRef,\n protected componentService: ComponentService,\n protected configService: ConfigService,\n protected dialog: MatDialog,\n private labelService: LabelService,\n protected nodeService: NodeService,\n protected notebookService: NotebookService,\n protected studentAssetService: StudentAssetService,\n protected studentDataService: StudentDataService\n ) {\n super(\n annotationService,\n componentService,\n configService,\n dialog,\n nodeService,\n notebookService,\n studentAssetService,\n studentDataService\n );\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n this.enableFabricTextPadding();\n const domIdEnding = this.labelService.getDomIdEnding(\n this.nodeId,\n this.componentId,\n this.componentState\n );\n this.canvasId = this.labelService.getCanvasId(domIdEnding);\n this.initializeComponent(this.componentContent);\n }\n\n ngAfterViewInit(): void {\n this.setupCanvas();\n this.broadcastDoneRenderingComponent();\n this.changeDetector.detectChanges(); // prevents dev-mode change detection error\n }\n\n private enableFabricTextPadding(): void {\n // modify Fabric so that Text elements can utilize padding\n fabric.Text.prototype.set({\n _getNonTransformedDimensions() {\n // Object dimensions\n return new fabric.Point(this.width, this.height).scalarAdd(this.padding);\n },\n _calculateCurrentDimensions() {\n // Controls dimensions\n return fabric.util.transformPoint(\n this._getTransformedDimensions(),\n this.getViewportTransform(),\n true\n );\n }\n });\n }\n\n initializeComponent(componentContent: any): void {\n this.canvasWidth = componentContent.width;\n this.canvasHeight = componentContent.height;\n this.enableCircles = componentContent.enableCircles;\n this.isSaveButtonVisible = componentContent.showSaveButton;\n this.isSubmitButtonVisible = componentContent.showSubmitButton;\n this.addNewLabelButtonVisible = componentContent.canCreateLabels && !this.isDisabled;\n if (this.onlyHasShowWorkConnectedComponents()) {\n this.isDisabled = true;\n }\n if (this.isDisabled) {\n this.isResetButtonVisible = false;\n }\n }\n\n private setupCanvas(): void {\n this.canvas = this.labelService.initializeCanvas(\n this.canvasId,\n this.canvasWidth,\n this.canvasHeight,\n this.isDisabled\n );\n this.registerMouseDownListener();\n this.registerObjectMovingListener();\n this.registerTextChangedListener();\n if (!this.disabled) {\n this.createKeydownListener();\n }\n this.initializeStudentWork(this.componentContent, this.componentState);\n if (\n this.backgroundImage == null &&\n this.componentContent.backgroundImage != null &&\n this.componentContent.backgroundImage !== ''\n ) {\n this.setBackgroundImage(this.componentContent.backgroundImage);\n }\n if (this.hasMaxSubmitCount() && !this.hasSubmitsLeft()) {\n this.isSubmitButtonDisabled = true;\n }\n this.disableComponentIfNecessary();\n }\n\n private registerMouseDownListener(): void {\n this.canvas.on('mouse:down', (options: any) => {\n if (this.canvas.getActiveObject() == null) {\n // no objects in the canvas were clicked\n this.unselectAll();\n }\n });\n }\n\n private unselectAll(): void {\n this.selectedLabel = null;\n this.editLabelMode = false;\n this.canvas.discardActiveObject();\n }\n\n registerObjectMovingListener(): void {\n this.canvas.on('object:moving', (options: any) => {\n const target = options.target;\n const top = this.limitObjectYPosition(target);\n const left = this.limitObjectXPosition(target);\n const type = target.get('type');\n if (type === 'circle') {\n this.handleMovingCircle(target, top, left);\n } else if (type === 'i-text') {\n this.handleMovingText(target, top, left);\n }\n this.canvas.renderAll();\n this.studentDataChanged();\n });\n }\n\n /**\n * Make sure the object is within the width bounds of the canvas.\n * @param target The fabric object.\n * @returns The x (aka left) position of the object after we have made sure it is within the\n * bounds of the canvas.\n */\n limitObjectXPosition(target: any): number {\n let left = target.get('left');\n if (left < 0) {\n left = 0;\n target.set('left', left);\n } else if (left > this.canvasWidth) {\n left = this.canvasWidth;\n target.set('left', left);\n }\n return left;\n }\n\n /**\n * Make sure the object is within the height bounds of the canvas.\n * @param target The fabric object.\n * @returns The y (aka top) position of the object after we have made sure it is within the\n * bounds of the canvas.\n */\n limitObjectYPosition(target: any): number {\n let top = target.get('top');\n if (top < 0) {\n top = 0;\n target.set('top', top);\n } else if (top > this.canvasHeight) {\n top = this.canvasHeight;\n target.set('top', top);\n }\n return top;\n }\n\n handleMovingCircle(circleObject: any, top: number, left: number): void {\n // The student is moving the point of the label so we need to update the endpoint of the line\n // and the position of the text element. The endpoint of the line and the position of the text\n // element should maintain the relative position to the point.\n let xDiff = 0;\n let yDiff = 0;\n\n const line = circleObject.line;\n if (line != null) {\n if (this.studentDataVersion === 1) {\n xDiff = line.x2 - line.x1;\n yDiff = line.y2 - line.y1;\n line.set({ x1: left, y1: top, x2: left + xDiff, y2: top + yDiff });\n } else {\n line.set({ x1: left, y1: top });\n }\n this.refreshFabricObject(line);\n this.refreshZIndex(line, this.lineZIndex);\n }\n\n const text = circleObject.text;\n if (text != null) {\n if (this.studentDataVersion === 1) {\n // In the old student data version the text position is relative to the circle so we need to\n // move the text along with the circle.\n text.set({ left: left + xDiff, top: top + yDiff });\n this.refreshFabricObject(text);\n this.refreshZIndex(text, this.textZIndex);\n }\n }\n }\n\n refreshFabricObject(fabricObject: any): void {\n this.canvas.remove(fabricObject);\n this.canvas.add(fabricObject);\n }\n\n refreshZIndex(fabricObject: any, zIndex: number): void {\n this.canvas.moveTo(fabricObject, zIndex);\n }\n\n handleMovingText(textObject: any, top: number, left: number): void {\n if (this.enableCircles) {\n // The student is moving the text of the label so we need to update the endpoint of the line.\n // The endpoint of the line should be in the same position as the text element.\n const line = textObject.line;\n if (line != null) {\n line.set({ x2: left, y2: top });\n this.refreshFabricObject(line);\n this.refreshZIndex(line, this.lineZIndex);\n }\n } else {\n // We are only showing the text so we will set the circle position to be the same as the text\n // position.\n const circle = textObject.circle;\n const line = textObject.line;\n circle.set({ left: left, top: top });\n line.set({ x1: left, y1: top, x2: left, y2: top });\n }\n }\n\n registerTextChangedListener(): void {\n this.canvas.on('text:changed', (options: any) => {\n const target = options.target;\n if (target.get('type') === 'i-text') {\n this.studentDataChanged();\n }\n });\n }\n\n initializeStudentWork(componentContent: any, componentState: any): void {\n if (hasConnectedComponent(componentContent, 'showWork')) {\n this.handleConnectedComponents();\n } else if (this.labelService.componentStateHasStudentWork(componentState, componentContent)) {\n this.setStudentWork(componentState);\n } else if (this.component.hasConnectedComponent()) {\n this.handleConnectedComponents();\n if (componentContent.labels != null) {\n this.setStarterLabels(componentContent);\n }\n } else if (this.labelService.componentStateIsSameAsStarter(componentState, componentContent)) {\n this.setStudentWork(componentState);\n } else if (componentState == null && componentContent.labels != null) {\n this.setStarterLabels(componentContent);\n }\n }\n\n private setStarterLabels(componentContent: any): void {\n // Make sure starter labels have isStarterLabel set to true. Starter labels from old Label\n // component content did not have this field.\n componentContent.labels.forEach((label: any) => (label.isStarterLabel = true));\n this.addLabelsToCanvas(componentContent.labels);\n }\n\n setStudentWork(componentState: any): void {\n const studentData = componentState.studentData;\n this.setStudentDataVersion(studentData.version == null ? 1 : studentData.version);\n this.addLabelsToCanvas(studentData.labels);\n this.setBackgroundImage(studentData.backgroundImage);\n this.submitCounter = studentData.submitCounter;\n this.processLatestStudentWork();\n }\n\n private addLabelsToCanvas(labels: any[]): void {\n const fabricLabels = this.labelService.addLabelsToCanvas(\n this.canvas,\n labels,\n this.canvasWidth,\n this.canvasHeight,\n this.componentContent.pointSize,\n this.componentContent.fontSize,\n this.componentContent.labelWidth,\n this.enableCircles,\n this.studentDataVersion\n );\n fabricLabels.forEach((label: any) => this.addListenersToLabel(label));\n fabricLabels.forEach((label: any) => this.labels.push(label));\n }\n\n protected addNewLabel(): void {\n const newLabelLocation = this.getNewLabelLocation();\n const newLabel = this.labelService.createLabel(\n newLabelLocation.pointX,\n newLabelLocation.pointY,\n newLabelLocation.textX,\n newLabelLocation.textY,\n $localize`A New Label`,\n 'blue',\n true,\n true,\n this.componentContent.canvasWidth,\n this.componentContent.canvasHeight,\n this.componentContent.pointSize,\n this.componentContent.fontSize,\n this.componentContent.labelWidth,\n this.studentDataVersion,\n this.labelService.getTimestamp(),\n false\n );\n this.labelService.addLabelToCanvas(this.canvas, newLabel, this.enableCircles);\n this.addListenersToLabel(newLabel);\n this.labels.push(newLabel);\n this.selectLabel(newLabel);\n this.studentDataChanged();\n }\n\n getLabelData(): any[] {\n const labels = this.canvas\n .getObjects('i-text')\n .map((object: any) => this.getLabelJSONObjectFromText(object));\n labels.sort((labelA: any, labelB: any) => labelA.timestamp - labelB.timestamp);\n return labels;\n }\n\n getTextCoordinate(fabricObject: any): any {\n let textX: number;\n let textY: number;\n if (this.studentDataVersion == 1) {\n const lineObject = fabricObject.line;\n\n // get the offset of the end of the line (this is where the text object is also located)\n textX = lineObject.x2 - lineObject.x1;\n textY = lineObject.y2 - lineObject.y1;\n } else {\n const textObject = fabricObject.text;\n textX = textObject.left;\n textY = textObject.top;\n }\n return {\n textX: textX,\n textY: textY\n };\n }\n\n /**\n * Get the simple JSON object that represents the label\n * @param text a Fabric text object\n * @returns a simple JSON object that represents the label\n */\n getLabelJSONObjectFromText(text: any): any {\n const label = this.labels.find((label: any) => label.text == text);\n const circleObject = label.circle;\n const { textX, textY } = this.getTextCoordinate(label);\n return {\n pointX: parseInt(circleObject.get('left')),\n pointY: parseInt(circleObject.get('top')),\n textX: parseInt(textX),\n textY: parseInt(textY),\n text: label.textString,\n color: label.text.backgroundColor,\n canEdit: label.canEdit,\n canDelete: label.canDelete,\n timestamp: label.timestamp,\n isStarterLabel: label.isStarterLabel\n };\n }\n\n /**\n * Create a new component state populated with the student data.\n * @param action The action that is triggering creating of this component state\n * e.g. 'submit', 'save', 'change'\n * @return A promise that will return a component state.\n */\n createComponentState(action: string): Promise {\n const componentState: any = this.createNewComponentState();\n componentState.studentData = new LabelStudentData(\n this.getLabelData(),\n this.backgroundImage,\n this.submitCounter,\n this.studentDataVersion\n );\n componentState.isSubmit = this.isSubmit;\n componentState.componentType = 'Label';\n componentState.nodeId = this.nodeId;\n componentState.componentId = this.componentId;\n if (this.isSubmit && this.hasDefaultFeedback()) {\n this.addDefaultFeedback(componentState);\n }\n this.isSubmit = false;\n return new Promise((resolve, reject) => {\n this.createComponentStateAdditionalProcessing(\n { resolve: resolve, reject: reject },\n componentState,\n action\n );\n });\n }\n\n private getNewLabelLocation(): any {\n const nextPointLocation = this.getNextPointLocation();\n const pointX = nextPointLocation.pointX;\n const pointY = nextPointLocation.pointY;\n const newTextLocation = this.getNextTextLocation(pointX, pointY);\n const textX = newTextLocation.textX;\n const textY = newTextLocation.textY;\n return {\n pointX: pointX,\n pointY: pointY,\n textX: textX,\n textY: textY\n };\n }\n\n private getNextPointLocation(): any {\n return (\n this.getUnoccupiedPointLocation() || {\n pointX: this.NEW_LABEL_X_LOCATION,\n pointY: this.NEW_LABEL_Y_LOCATION\n }\n );\n }\n\n private getNextTextLocation(pointX: number, pointY: number): any {\n let textX = null;\n let textY = null;\n if (this.enableCircles) {\n // place the text to the bottom right of the circle\n if (this.studentDataVersion == 1) {\n // text is relatively positioned\n textX = 100;\n textY = 100;\n } else {\n // text is absolutely positioned\n textX = pointX + 100;\n textY = pointY + 100;\n }\n } else {\n // circles are not enabled so we are only using the text\n textX = pointX;\n textY = pointY;\n }\n return { textX: textX, textY: textY };\n }\n\n private isPointOccupied(occupiedPointLocations: any[], pointX: number, pointY: number): boolean {\n return occupiedPointLocations.some(\n (location) => location.pointX == pointX && location.pointY == pointY\n );\n }\n\n getUnoccupiedPointLocation(): any {\n const occupiedPointLocations = this.getLabelData().map((label) => ({\n pointX: label.pointX,\n pointY: label.pointY\n }));\n for (let y = this.NEW_LABEL_Y_LOCATION; y < this.canvasHeight; y += this.SPACE_BETWEEN_LABELS) {\n for (\n let x = this.NEW_LABEL_X_LOCATION;\n x < this.canvasWidth;\n x += this.SPACE_BETWEEN_LABELS\n ) {\n if (!this.isPointOccupied(occupiedPointLocations, x, y)) {\n return { pointX: x, pointY: y };\n }\n }\n }\n return null;\n }\n\n /**\n * @param backgroundImagePath the url path to an image or null to remove the background\n */\n setBackgroundImage(backgroundImagePath: string): void {\n this.backgroundImage = backgroundImagePath;\n this.canvas.setBackgroundImage(backgroundImagePath, this.canvas.renderAll.bind(this.canvas));\n }\n\n createKeydownListener(): void {\n window.addEventListener(\n 'keydown',\n (e) => {\n this.keyPressed(e);\n },\n false\n );\n }\n\n keyPressed(e: any): void {\n if (e.keyCode === this.ENTER_KEY_CODE) {\n if (this.selectedLabel != null) {\n // treat the enter keypress as the intention of submitting any changes to the label text.\n this.unselectAll();\n this.canvas.renderAll();\n }\n }\n }\n\n /**\n * Get the label object given the canvas circle object.\n * @param circle A canvas circle object.\n * @return A label object.\n */\n getLabelFromCircle(circle: any): any {\n return this.labels.find((label: any) => label.circle == circle);\n }\n\n private addListenersToLabel(label: any): void {\n if (this.enableCircles) {\n label.circle.on('mousedown', () => {\n this.selectLabel(label);\n });\n }\n label.text.on('mousedown', () => {\n this.selectLabel(label);\n });\n }\n\n /**\n * Make the label selected which means we will show the UI elements to allow the text to be edited\n * and the button to delete the label.\n * @param label The label object.\n */\n private selectLabel(label: any): void {\n this.selectedLabel = label;\n if (label.canEdit) {\n this.selectedLabelText = label.text.text;\n this.editLabelMode = true;\n this.canvas.setActiveObject(label.text);\n this.canvas.renderAll();\n this.giveFocusToLabelTextInput();\n } else {\n this.editLabelMode = false;\n }\n }\n\n giveFocusToLabelTextInput(): void {\n setTimeout(() => {\n // Get the y position of the top of the edit label text input. If this value is negative, it\n // means the element is above the currently viewable area and can not be seen. If the value is\n // positive, it means the element is currently in the viewable area and can be seen.\n const editLabelTextInput = $(`#editLabelTextInput-${this.componentId}`);\n const offset = editLabelTextInput.offset();\n const editLabelTextInputTop = offset.top;\n\n // Check if the edit label text input is viewable. We want to make sure the input is in view.\n // If the input is not in view and we give it focus, it will have the undesirable effect of\n // scrolling the view up so that the input comes into view. We don't want it to scroll because\n // it's jarring when the student is trying to select a label in the canvas.\n if (editLabelTextInputTop > 100) {\n // the input is in view so we will give it focus.\n editLabelTextInput.focus();\n }\n });\n }\n\n /**\n * The student has changed the label text on the selected label\n * @param label The label that has changed.\n * @param textObject The label's canvas text object.\n * @param textString The text string.\n */\n selectedLabelTextChanged(label: any, textObject: any, textString: string): void {\n label.textString = textString;\n textObject.text = this.wrapTextIfNecessary(textString);\n this.studentDataChanged();\n this.canvas.renderAll();\n }\n\n private wrapTextIfNecessary(text: string): string {\n let wrappedText = text;\n if (this.componentContent.labelWidth != null && this.componentContent.labelWidth !== '') {\n wrappedText = wordWrap(text, this.componentContent.labelWidth);\n }\n return wrappedText;\n }\n\n private removeLabelFromCanvas(canvas: any, label: any): void {\n canvas.remove(label.circle);\n canvas.remove(label.line);\n canvas.remove(label.text);\n }\n\n snipImage(): void {\n this.notebookService.addNote(\n this.studentDataService.getCurrentNodeId(),\n convertToPNGFile(this.canvas)\n );\n }\n\n deleteLabelButtonClicked(): void {\n const selectedLabelText = this.selectedLabel.textString;\n if (confirm($localize`Are you sure you want to delete this label?\\n\\n${selectedLabelText}`)) {\n this.deleteLabel(this.selectedLabel);\n this.unselectAll();\n this.studentDataChanged();\n }\n }\n\n deleteLabel(label: any): void {\n this.removeLabelFromCanvas(this.canvas, label);\n this.labels.splice(this.labels.indexOf(label), 1);\n }\n\n handleConnectedComponentsPostProcess(): void {\n if (\n this.componentContent.backgroundImage != null &&\n this.componentContent.backgroundImage != ''\n ) {\n this.setBackgroundImage(this.componentContent.backgroundImage);\n }\n }\n\n /**\n * Create a component state with the merged student responses\n * @param componentStates an array of component states\n * @return a component state with the merged student data\n */\n createMergedComponentState(componentStates: any[]): any {\n const componentStateTo: any = {\n studentData: new LabelStudentData()\n };\n for (const componentState of componentStates) {\n switch (componentState.componentType) {\n case 'Label':\n this.mergeLabelComponentState(componentState, componentStateTo);\n break;\n case 'OpenResponse':\n this.mergeOpenResponseComponentState(componentState);\n break;\n case 'ConceptMap':\n case 'Draw':\n case 'Embedded':\n case 'Graph':\n case 'Table':\n this.importWorkAsBackground(componentState);\n }\n }\n return componentStateTo;\n }\n\n mergeLabelComponentState(componentStateFrom: any, componentStateTo: any): any {\n const studentDataFrom = componentStateFrom.studentData;\n const studentDataTo = componentStateTo.studentData;\n if (studentDataFrom.version != null) {\n studentDataTo.version = studentDataFrom.version;\n }\n componentStateTo.studentData.labels = componentStateTo.studentData.labels.concat(\n studentDataFrom.labels\n );\n const backgroundImage = studentDataFrom.backgroundImage;\n if (backgroundImage != null && backgroundImage != '') {\n studentDataTo.backgroundImage = backgroundImage;\n }\n return componentStateTo;\n }\n\n mergeOpenResponseComponentState(componentState: any): void {\n const connectedComponent = this.getConnectedComponentForComponentState(componentState);\n if (connectedComponent != null) {\n const response = componentState.studentData.response;\n if (connectedComponent.importWorkAsBackground) {\n const charactersPerLine = connectedComponent.charactersPerLine;\n const spaceInbetweenLines = connectedComponent.spaceInbetweenLines;\n const fontSize = connectedComponent.fontSize;\n this.labelService\n .createImageFromText(\n response,\n null,\n null,\n charactersPerLine,\n null,\n spaceInbetweenLines,\n fontSize\n )\n .then((image: string) => {\n this.setBackgroundImage(image);\n this.studentDataChanged();\n });\n }\n }\n }\n\n getConnectedComponentForComponentState(componentState: any): any {\n for (const connectedComponent of this.componentContent.connectedComponents) {\n if (\n componentState.nodeId == connectedComponent.nodeId &&\n componentState.componentId == connectedComponent.componentId\n ) {\n return connectedComponent;\n }\n }\n return null;\n }\n\n protected reset(): void {\n if (confirm($localize`Are you sure you want to reset to the initial state?`)) {\n this.labels.forEach((label: any) => this.removeLabelFromCanvas(this.canvas, label));\n this.labels = [];\n if (this.componentContent.backgroundImage != null) {\n this.setBackgroundImage(this.componentContent.backgroundImage);\n }\n this.unselectAll();\n this.setStarterLabels(this.componentContent);\n if (this.component.hasConnectedComponent()) {\n this.handleConnectedComponents();\n }\n this.studentDataChanged();\n }\n }\n\n setStudentDataVersion(studentDataVersion: number): void {\n this.studentDataVersion = studentDataVersion;\n }\n\n onlyHasShowWorkConnectedComponents(): boolean {\n const connectedComponents = this.componentContent.connectedComponents;\n return (\n connectedComponents != null &&\n connectedComponents.length > 0 &&\n connectedComponents.length === this.getNumShowWorkConnectedComponents(connectedComponents)\n );\n }\n\n getNumShowWorkConnectedComponents(connectedComponents: any[]): number {\n let showWorkConnectedComponentCount = 0;\n for (const connectedComponent of connectedComponents) {\n if (connectedComponent.type === 'showWork') {\n showWorkConnectedComponentCount += 1;\n }\n }\n return showWorkConnectedComponentCount;\n }\n\n generateStarterState(): any {\n return this.getLabelData();\n }\n\n attachStudentAsset(studentAsset: any): any {\n this.setBackgroundImage(studentAsset.url);\n }\n\n protected deleteBackgroundImage(): void {\n if (confirm($localize`Are you sure you want to delete the background image?`)) {\n this.setBackgroundImage(null);\n this.studentDataChanged();\n }\n }\n}\n", + "styleUrl": "label-student.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "changeDetector", + "type": "ChangeDetectorRef", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentService", + "type": "ComponentService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "labelService", + "type": "LabelService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "notebookService", + "type": "NotebookService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentAssetService", + "type": "StudentAssetService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentDataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 70, + "jsdoctags": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "changeDetector", + "type": "ChangeDetectorRef", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentService", + "type": "ComponentService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "labelService", + "type": "LabelService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "notebookService", + "type": "NotebookService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentAssetService", + "type": "StudentAssetService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentDataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "ComponentStudent" + ], + "templateData": "\n
    \n @if (addNewLabelButtonVisible) {\n \n add\n \n }\n
    \n @if (editLabelMode) {\n \n Label Text\n \n \n }\n
    \n @if (!isDisabled && selectedLabel != null && selectedLabel.canDelete) {\n \n delete\n \n }\n \n @if (isShowAddToNotebookButton) {\n \n }\n
    \n @if (componentContent.enableStudentUploadBackground) {\n @if (backgroundImage == null) {\n \n attach_file\n \n } @else {\n \n delete_outline\n \n }\n }\n @if (isResetButtonVisible) {\n \n restore\n \n }\n
    \n
    \n \n
    \n@if (isSaveOrSubmitButtonVisible) {\n \n}\n@if (mode === 'student') {\n \n}\n" + }, + { + "name": "LibraryFiltersComponent", + "id": "component-LibraryFiltersComponent-587066c1a5f9d46de45f991f3e8893e5298f0aee0a9456c787cd0e76404be4d2a5de612cb16951829e6a745d265f015e169ab506fc220189021c290866e8f776", + "file": "src/app/modules/library/library-filters/library-filters.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "app-library-filters", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./library-filters.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "isSplitScreen", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "line": 43, + "type": "boolean", + "decorators": [] + }, + { + "name": "showAdvancedFilteringOptions", + "defaultValue": "true", + "deprecated": false, + "deprecationMessage": "", + "line": 42, + "type": "boolean", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "communityProjects", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "LibraryProject[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 38, + "modifierKind": [ + 123 + ] + }, + { + "name": "disciplineOptions", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "Discipline[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 39, + "modifierKind": [ + 124 + ] + }, + { + "name": "featureOptions", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "Feature[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 40, + "modifierKind": [ + 124 + ] + }, + { + "name": "gradeLevelOptions", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "GradeLevel[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 41, + "modifierKind": [ + 124 + ] + }, + { + "name": "libraryProjects", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "LibraryProject[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 44, + "modifierKind": [ + 123 + ] + }, + { + "name": "locationOptions", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "Location[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 50, + "modifierKind": [ + 124 + ] + }, + { + "name": "personalProjects", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "LibraryProject[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 45, + "modifierKind": [ + 123 + ] + }, + { + "name": "possibleStandardLabels", + "defaultValue": "['NGSS', 'Common Core', 'Learning For Justice']", + "deprecated": false, + "deprecationMessage": "", + "type": "[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 46, + "modifierKind": [ + 124 + ] + }, + { + "name": "sharedProjects", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "LibraryProject[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 47, + "modifierKind": [ + 123 + ] + }, + { + "name": "showFilters", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 48, + "modifierKind": [ + 124 + ] + }, + { + "name": "standardOptions", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "Standard[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 49, + "modifierKind": [ + 124 + ] + }, + { + "name": "unitTypeOptions", + "defaultValue": "[\n { id: 'WISE Platform', name: $localize`WISE Platform` },\n { id: 'Other Platform', name: $localize`Other Platform` }\n ]", + "deprecated": false, + "deprecationMessage": "", + "type": "literal type[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 51, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "clearFilterValues", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 198, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "emitFilterValues", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 194, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "filterUpdated", + "args": [ + { + "name": "value", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "context", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "''" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 170, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "value", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "context", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "''", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnChanges", + "args": [ + { + "name": "changes", + "type": "SimpleChanges", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 80, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "changes", + "type": "SimpleChanges", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "populateFilterOptions", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 86, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "populateFilterOptionsFromProject", + "args": [ + { + "name": "project", + "type": "LibraryProject", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 95, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "project", + "type": "LibraryProject", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "populateGradeLevels", + "args": [ + { + "name": "project", + "type": "LibraryProject", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 107, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "project", + "type": "LibraryProject", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "populateLocations", + "args": [ + { + "name": "project", + "type": "LibraryProject", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 131, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "project", + "type": "LibraryProject", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "populateStandards", + "args": [ + { + "name": "project", + "type": "LibraryProject", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 116, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "project", + "type": "LibraryProject", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "removeDuplicatesAndSortAlphabetically", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 137, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "searchUpdated", + "args": [ + { + "name": "value", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 165, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "value", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "showTypeInfo", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 203, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "MatBadgeModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "LocationSelectMenuComponent", + "type": "component" + }, + { + "name": "SearchBarComponent", + "type": "component" + }, + { + "name": "SelectMenuComponent", + "type": "component" + }, + { + "name": "StandardsSelectMenuComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input, SimpleChanges } from '@angular/core';\nimport { LibraryProject } from '../libraryProject';\nimport { LibraryService } from '../../../services/library.service';\nimport { Standard, StandardType } from '../standard';\nimport { Discipline } from '../Discipline';\nimport { ProjectFilterValues } from '../../../domain/projectFilterValues';\nimport { UtilService } from '../../../services/util.service';\nimport { SearchBarComponent } from '../../shared/search-bar/search-bar.component';\nimport { CommonModule } from '@angular/common';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatBadgeModule } from '@angular/material/badge';\nimport { SelectMenuComponent } from '../../shared/select-menu/select-menu.component';\nimport { StandardsSelectMenuComponent } from '../../shared/standards-select-menu/standards-select-menu.component';\nimport { Feature } from '../Feature';\nimport { Grade, GradeLevel } from '../GradeLevel';\nimport { MatDialog } from '@angular/material/dialog';\nimport { DialogWithCloseComponent } from '../../../../assets/wise5/directives/dialog-with-close/dialog-with-close.component';\nimport { Location } from '../Location';\nimport { LocationSelectMenuComponent } from '../../shared/location-select-menu/location-select-menu.component';\n\n@Component({\n imports: [\n CommonModule,\n MatBadgeModule,\n MatButtonModule,\n MatIconModule,\n LocationSelectMenuComponent,\n SearchBarComponent,\n SelectMenuComponent,\n StandardsSelectMenuComponent\n ],\n selector: 'app-library-filters',\n styleUrl: './library-filters.component.scss',\n templateUrl: './library-filters.component.html'\n})\nexport class LibraryFiltersComponent {\n private communityProjects: LibraryProject[] = [];\n protected disciplineOptions: Discipline[] = [];\n protected featureOptions: Feature[] = [];\n protected gradeLevelOptions: GradeLevel[] = [];\n @Input() showAdvancedFilteringOptions: boolean = true;\n @Input() isSplitScreen: boolean = false;\n private libraryProjects: LibraryProject[] = [];\n private personalProjects: LibraryProject[] = [];\n protected possibleStandardLabels = ['NGSS', 'Common Core', 'Learning For Justice'];\n private sharedProjects: LibraryProject[] = [];\n protected showFilters: boolean = false;\n protected standardOptions: Standard[] = [];\n protected locationOptions: Location[] = [];\n protected unitTypeOptions: { id: string; name: string }[] = [\n { id: 'WISE Platform', name: $localize`WISE Platform` },\n { id: 'Other Platform', name: $localize`Other Platform` }\n ];\n\n constructor(\n private dialog: MatDialog,\n protected filterValues: ProjectFilterValues,\n private libraryService: LibraryService,\n private utilService: UtilService\n ) {\n this.libraryService.officialLibraryProjectsSource$.subscribe((projects: LibraryProject[]) => {\n this.libraryProjects = projects;\n this.populateFilterOptions();\n });\n this.libraryService.communityLibraryProjectsSource$.subscribe((projects: LibraryProject[]) => {\n this.communityProjects = projects;\n this.populateFilterOptions();\n });\n this.libraryService.sharedLibraryProjectsSource$.subscribe((projects: LibraryProject[]) => {\n this.sharedProjects = projects;\n this.populateFilterOptions();\n });\n this.libraryService.personalLibraryProjectsSource$.subscribe((projects: LibraryProject[]) => {\n this.personalProjects = projects;\n this.populateFilterOptions();\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.projects) {\n this.populateFilterOptions();\n }\n }\n\n private populateFilterOptions(): void {\n this.libraryProjects\n .concat(this.communityProjects)\n .concat(this.sharedProjects)\n .concat(this.personalProjects)\n .forEach((project: LibraryProject) => this.populateFilterOptionsFromProject(project));\n this.removeDuplicatesAndSortAlphabetically();\n }\n\n private populateFilterOptionsFromProject(project: LibraryProject): void {\n project.metadata.disciplines?.forEach((discipline: any) =>\n this.disciplineOptions.push(new Discipline(discipline.id, discipline.name))\n );\n project.metadata.features?.forEach((feature: any) =>\n this.featureOptions.push(new Feature(feature.id, feature.name))\n );\n this.populateGradeLevels(project);\n this.populateStandards(project);\n this.populateLocations(project);\n }\n\n private populateGradeLevels(project: LibraryProject): void {\n project.metadata.grades\n ?.map((gradeLevel: string) => Number(gradeLevel))\n .filter((gradeLevel: number) => Object.values(Grade).includes(gradeLevel))\n .forEach((gradeLevel: number) => {\n this.gradeLevelOptions.push(new GradeLevel(gradeLevel));\n });\n }\n\n private populateStandards(project: LibraryProject): void {\n const standards = project.metadata.standards;\n [\n ['ngss', $localize`NGSS`],\n ['commonCore', $localize`Common Core`],\n ['learningForJustice', $localize`Learning For Justice`]\n ].forEach(([key, name]) => {\n (standards?.[key] ?? []).forEach((standard: any) =>\n this.standardOptions.push(\n new Standard(standard.id, standard.name, name as StandardType, standard.url)\n )\n );\n });\n }\n\n private populateLocations(project: LibraryProject): void {\n project.metadata.locations?.forEach((location: Location) =>\n this.locationOptions.push(Object.assign(new Location(), location))\n );\n }\n\n private removeDuplicatesAndSortAlphabetically(): void {\n this.standardOptions = this.utilService.removeObjectArrayDuplicatesByProperty(\n this.standardOptions,\n 'id'\n );\n this.utilService.sortObjectArrayByProperty(this.standardOptions, 'id');\n this.locationOptions = this.utilService.removeObjectArrayDuplicatesByProperty(\n this.locationOptions,\n 'id'\n );\n this.utilService.sortObjectArrayByProperty(this.locationOptions, 'id');\n this.disciplineOptions = this.utilService.removeObjectArrayDuplicatesByProperty(\n this.disciplineOptions,\n 'id'\n );\n this.utilService.sortObjectArrayByProperty(this.disciplineOptions, 'name');\n this.featureOptions = this.utilService.removeObjectArrayDuplicatesByProperty(\n this.featureOptions,\n 'id'\n );\n this.utilService.sortObjectArrayByProperty(this.featureOptions, 'name');\n this.gradeLevelOptions = this.utilService.removeObjectArrayDuplicatesByProperty(\n this.gradeLevelOptions,\n 'grade'\n );\n this.gradeLevelOptions.sort((a, b) => a.grade - b.grade);\n }\n\n protected searchUpdated(value: string): void {\n this.filterValues.searchValue = value.toLocaleLowerCase();\n this.emitFilterValues();\n }\n\n protected filterUpdated(value: any[], context: string = ''): void {\n switch (context) {\n case 'discipline':\n this.filterValues.disciplineValue = value;\n break;\n case 'gradeLevel':\n this.filterValues.gradeLevelValue = value;\n break;\n case 'standard':\n this.filterValues.standardValue = value;\n break;\n case 'feature':\n this.filterValues.featureValue = value;\n break;\n case 'unitType':\n this.filterValues.unitTypeValue = value;\n break;\n case 'location':\n this.filterValues.locationValue = value;\n break;\n }\n this.emitFilterValues();\n }\n\n private emitFilterValues(): void {\n this.filterValues.emitUpdated();\n }\n\n protected clearFilterValues(): void {\n this.filterValues.clear();\n this.emitFilterValues();\n }\n\n protected showTypeInfo(): void {\n const message = $localize`\"Type\" indicates the platform on which a unit runs. \"WISE Platform\" units are created\n using the WISE authoring tool. Students use WISE accounts to complete lessons and teachers can review and grade\n work on the WISE platform. \"Other\" units are created using different platforms. Resources for these units\n are linked in the unit details.`;\n this.dialog.open(DialogWithCloseComponent, {\n data: {\n content: message,\n title: $localize`Unit Type`\n },\n panelClass: 'dialog-sm'\n });\n }\n}\n", + "styleUrl": "./library-filters.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "filterValues", + "type": "ProjectFilterValues", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "libraryService", + "type": "LibraryService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "utilService", + "type": "UtilService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 54, + "jsdoctags": [ + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "filterValues", + "type": "ProjectFilterValues", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "libraryService", + "type": "LibraryService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "utilService", + "type": "UtilService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "
    \n
    \n
    \n \n
    \n \n filter_list\n \n
    \n
    \n
    \n
    \n

    Filters

    \n @if (filterValues.hasFilters()) {\n Clear all\n }\n
    \n \n @if (unitTypeOptions.length > 0) {\n \n \n \n info\n \n
    \n }\n @if (disciplineOptions.length > 0) {\n \n \n \n }\n @if (gradeLevelOptions.length > 0 && showAdvancedFilteringOptions) {\n \n \n \n }\n @if (standardOptions.length > 0) {\n \n \n \n }\n @if (featureOptions.length > 0) {\n \n \n \n }\n @if (locationOptions.length > 0) {\n \n \n \n }\n \n\n" + }, + { + "name": "LibraryGroupThumbsComponent", + "id": "component-LibraryGroupThumbsComponent-9ed39f2946cafe7a0d73f0bd35e6084d0f19fbb8df5fbdd94865f0fe503957d6b65b8f924cc6819c4cb90cfea1d82e909b74e2db79cb0f36de1ef4eb5d977328", + "file": "src/app/modules/library/library-group-thumbs/library-group-thumbs.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "app-library-group-thumbs", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./library-group-thumbs.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "group", + "defaultValue": "new LibraryGroup()", + "deprecated": false, + "deprecationMessage": "", + "line": 12, + "type": "LibraryGroup", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "children", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "Array", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "getThumbStyle", + "args": [ + { + "name": "projectThumb", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "SafeStyle", + "typeParameters": [], + "line": 28, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nReturns the background-image css value for project thumbnail\n", + "description": "

    Returns the background-image css value for project thumbnail

    \n", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": { + "pos": 872, + "end": 884, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "projectThumb" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 857, + "end": 862, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "", + "typeExpression": { + "pos": 863, + "end": 871, + "kind": 310, + "id": 0, + "flags": 16842752, + "modifierFlagsCache": 0, + "transformFlags": 0, + "type": { + "pos": 864, + "end": 870, + "kind": 154, + "id": 0, + "flags": 16777216, + "transformFlags": 1 + } + } + }, + { + "tagName": { + "pos": 891, + "end": 898, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "", + "returnType": "unknown" + } + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 16, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input, OnInit } from '@angular/core';\nimport { DomSanitizer, SafeStyle } from '@angular/platform-browser';\nimport { LibraryGroup } from '../libraryGroup';\n\n@Component({\n selector: 'app-library-group-thumbs',\n styleUrl: './library-group-thumbs.component.scss',\n templateUrl: './library-group-thumbs.component.html'\n})\nexport class LibraryGroupThumbsComponent implements OnInit {\n protected children: Array = [];\n @Input() group: LibraryGroup = new LibraryGroup();\n\n constructor(private sanitizer: DomSanitizer) {}\n\n ngOnInit(): void {\n this.children = this.group.children;\n this.children\n .filter((project) => project.type === 'project')\n .forEach((project) => (project.thumbStyle = this.getThumbStyle(project.projectThumb)));\n }\n\n /**\n * Returns the background-image css value for project thumbnail\n * @param {string} projectThumb\n * @returns {SafeStyle}\n */\n private getThumbStyle(projectThumb: string): SafeStyle {\n const DEFAULT_THUMB = 'assets/img/default-picture.svg';\n const STYLE = `url(${projectThumb}), url(${DEFAULT_THUMB})`;\n return this.sanitizer.bypassSecurityTrustStyle(STYLE);\n }\n}\n", + "styleUrl": "./library-group-thumbs.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "sanitizer", + "type": "DomSanitizer", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 12, + "jsdoctags": [ + { + "name": "sanitizer", + "type": "DomSanitizer", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "
    \n @for (child of children; track child) {\n @if (child.type === 'project' && child.visible) {\n \n }\n }\n
    \n" + }, + { + "name": "LibraryProjectComponent", + "id": "component-LibraryProjectComponent-881585a360ebfef584af289bcb9b5c451e59ba4b4d00ecf96a782cd11146ab26d0a68406dc3335d65731db7a4efb74d655cebab2c88faf45aa22ccba05fabcc5", + "file": "src/app/modules/library/library-project/library-project.component.ts", + "encapsulation": [ + "ViewEncapsulation.None" + ], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "app-library-project", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./library-project.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "checked", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "line": 41, + "type": "boolean", + "decorators": [] + }, + { + "name": "myUnit", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "line": 42, + "type": "boolean", + "decorators": [] + }, + { + "name": "project", + "defaultValue": "new LibraryProject()", + "deprecated": false, + "deprecationMessage": "", + "line": 43, + "type": "LibraryProject", + "decorators": [] + } + ], + "outputsClass": [ + { + "name": "projectSelectionEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 44, + "type": "EventEmitter" + } + ], + "propertiesClass": [ + { + "name": "animateDelay", + "defaultValue": "'0s'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 39, + "modifierKind": [ + 124 + ] + }, + { + "name": "animateDuration", + "defaultValue": "'0s'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 40, + "modifierKind": [ + 124 + ] + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 46, + "modifierKind": [ + 123 + ] + } + ], + "methodsClass": [ + { + "name": "getThumbStyle", + "args": [ + { + "name": "projectThumb", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "SafeStyle", + "typeParameters": [], + "line": 99, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nReturns the background-image css value for project thumbnail\n", + "description": "

    Returns the background-image css value for project thumbnail

    \n", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": { + "pos": 3490, + "end": 3502, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "projectThumb" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3475, + "end": 3480, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "", + "typeExpression": { + "pos": 3481, + "end": 3489, + "kind": 310, + "id": 0, + "flags": 16842752, + "modifierFlagsCache": 0, + "transformFlags": 0, + "type": { + "pos": 3482, + "end": 3488, + "kind": 154, + "id": 0, + "flags": 16777216, + "transformFlags": 1 + } + } + }, + { + "tagName": { + "pos": 3509, + "end": 3516, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "", + "returnType": "unknown" + } + ] + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 90, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 54, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "selectProject", + "args": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 113, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "showDetails", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 105, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "subscribeToTagDeleted", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 80, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "subscribeToTagUpdated", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 67, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "LibraryProjectDisciplinesComponent", + "type": "component" + }, + { + "name": "MatCardModule", + "type": "module" + }, + { + "name": "MatCheckboxModule", + "type": "module" + }, + { + "name": "MatDialogModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + }, + { + "name": "UnitTagsComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input, OnInit, ViewEncapsulation, Output, EventEmitter } from '@angular/core';\nimport { DomSanitizer, SafeStyle } from '@angular/platform-browser';\nimport { MatDialog, MatDialogModule } from '@angular/material/dialog';\nimport { LibraryProject } from '../libraryProject';\nimport { LibraryProjectDetailsComponent } from '../library-project-details/library-project-details.component';\nimport { flash } from '../../../animations';\nimport { ProjectSelectionEvent } from '../../../domain/projectSelectionEvent';\nimport { Subscription } from 'rxjs';\nimport { ProjectTagService } from '../../../../assets/wise5/services/projectTagService';\nimport { Tag } from '../../../domain/tag';\nimport { CommonModule } from '@angular/common';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { LibraryProjectDisciplinesComponent } from '../library-project-disciplines/library-project-disciplines.component';\nimport { MatIconModule } from '@angular/material/icon';\nimport { UnitTagsComponent } from '../../../teacher/unit-tags/unit-tags.component';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n animations: [flash],\n encapsulation: ViewEncapsulation.None,\n imports: [\n CommonModule,\n FormsModule,\n LibraryProjectDisciplinesComponent,\n MatCardModule,\n MatCheckboxModule,\n MatDialogModule,\n MatIconModule,\n MatTooltipModule,\n UnitTagsComponent\n ],\n selector: 'app-library-project',\n styleUrl: './library-project.component.scss',\n templateUrl: './library-project.component.html'\n})\nexport class LibraryProjectComponent implements OnInit {\n protected animateDelay: string = '0s';\n protected animateDuration: string = '0s';\n @Input() checked: boolean = false;\n @Input() myUnit: boolean = false;\n @Input() project: LibraryProject = new LibraryProject();\n @Output() projectSelectionEvent: EventEmitter =\n new EventEmitter();\n private subscriptions: Subscription = new Subscription();\n\n constructor(\n private dialog: MatDialog,\n private projectTagService: ProjectTagService,\n private sanitizer: DomSanitizer\n ) {}\n\n ngOnInit(): void {\n this.project.thumbStyle = this.getThumbStyle(this.project.projectThumb);\n if (this.project.isHighlighted) {\n this.animateDuration = '2s';\n this.animateDelay = '1s';\n setTimeout(() => {\n this.project.isHighlighted = false;\n }, 7000);\n }\n this.subscribeToTagUpdated();\n this.subscribeToTagDeleted();\n }\n\n private subscribeToTagUpdated(): void {\n this.subscriptions.add(\n this.projectTagService.tagUpdated$.subscribe((updatedTag: Tag) => {\n const projectTag = this.project.tags.find((tag: Tag) => tag.id === updatedTag.id);\n if (projectTag != null) {\n projectTag.text = updatedTag.text;\n projectTag.color = updatedTag.color;\n this.projectTagService.sortTags(this.project.tags);\n }\n })\n );\n }\n\n private subscribeToTagDeleted(): void {\n this.subscriptions.add(\n this.projectTagService.tagDeleted$.subscribe((tag: Tag) => {\n if (this.project.hasTag(tag)) {\n this.project.removeTag(tag);\n }\n })\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n /**\n * Returns the background-image css value for project thumbnail\n * @param {string} projectThumb\n * @returns {SafeStyle}\n */\n private getThumbStyle(projectThumb: string): SafeStyle {\n const DEFAULT_THUMB = 'assets/img/default-picture-sm.svg';\n const STYLE = `url(${projectThumb}), url(${DEFAULT_THUMB})`;\n return this.sanitizer.bypassSecurityTrustStyle(STYLE);\n }\n\n protected showDetails(): void {\n this.dialog.open(LibraryProjectDetailsComponent, {\n ariaLabel: $localize`Unit Details`,\n data: { project: this.project },\n panelClass: 'dialog-md'\n });\n }\n\n protected selectProject(event: any): void {\n this.project.selected = event.target.checked;\n event.stopPropagation();\n this.projectSelectionEvent.emit({ selected: event.target.checked, project: this.project });\n }\n}\n", + "styleUrl": "./library-project.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectTagService", + "type": "ProjectTagService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "sanitizer", + "type": "DomSanitizer", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 46, + "jsdoctags": [ + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectTagService", + "type": "ProjectTagService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "sanitizer", + "type": "DomSanitizer", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "@if (project.visible) {\n \n
    \n @if (myUnit) {\n \n }\n
    \n \n \n

    \n {{ project.metadata.title }} \n (ID: {{ project.id }}) \n @if (project.wiseVersion === 4) {\n warning\n }\n

    \n @if (project.shared) {\n

    Shared by {{ project.owner.displayName }}

    \n }\n
    \n \n
    \n \n \n}\n" + }, + { + "name": "LibraryProjectDetailsComponent", + "id": "component-LibraryProjectDetailsComponent-fe79d0506efc7c3f6119825b060d996819c29ce6daf6f42b8aab755480343df62096699a8d61b21cc652937aa2f49bf27c2aa777c29066f06973e41d678601b4", + "file": "src/app/modules/library/library-project-details/library-project-details.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "app-library-project-details", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./library-project-details.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "authorsString", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 37, + "modifierKind": [ + 124 + ] + }, + { + "name": "canPreview", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 38, + "modifierKind": [ + 124 + ] + }, + { + "name": "data", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 57, + "decorators": [ + { + "name": "Inject", + "stringifiedArguments": "MAT_DIALOG_DATA" + } + ], + "modifierKind": [ + 171, + 125 + ] + }, + { + "name": "dialog", + "deprecated": false, + "deprecationMessage": "", + "type": "MatDialog", + "indexKey": "", + "optional": false, + "description": "", + "line": 58, + "modifierKind": [ + 125 + ] + }, + { + "name": "dialogRef", + "deprecated": false, + "deprecationMessage": "", + "type": "MatDialogRef", + "indexKey": "", + "optional": false, + "description": "", + "line": 59, + "modifierKind": [ + 125 + ] + }, + { + "name": "isCopy", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 39, + "modifierKind": [ + 124 + ] + }, + { + "name": "isMyUnit", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 40, + "modifierKind": [ + 124 + ] + }, + { + "name": "isRunProject", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 42, + "modifierKind": [ + 124 + ] + }, + { + "name": "isTeacher", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 41, + "modifierKind": [ + 124 + ] + }, + { + "name": "licenseInfo", + "defaultValue": "$localize`License pertains to original content created by the author(s). Authors are responsible for the usage and attribution of any third-party content linked to or included in this work.`", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 43, + "modifierKind": [ + 124 + ] + }, + { + "name": "licenseUrl", + "defaultValue": "'http://creativecommons.org/licenses/by-sa/4.0/'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 44, + "modifierKind": [ + 124 + ] + }, + { + "name": "parentAuthorsString", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 45, + "modifierKind": [ + 124 + ] + }, + { + "name": "parentProject", + "deprecated": false, + "deprecationMessage": "", + "type": "ParentProject", + "indexKey": "", + "optional": false, + "description": "", + "line": 46, + "modifierKind": [ + 124 + ] + }, + { + "name": "project", + "deprecated": false, + "deprecationMessage": "", + "type": "Project", + "indexKey": "", + "optional": false, + "description": "", + "line": 47, + "modifierKind": [ + 124 + ] + }, + { + "name": "standardLabels", + "defaultValue": "{\n commonCore: $localize`Common Core`,\n learningForJustice: $localize`Learning For Justice`,\n ngss: $localize`NGSS`\n }", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 48, + "modifierKind": [ + 124 + ] + }, + { + "name": "standards", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 53, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "close", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 103, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "getAuthorsString", + "args": [ + { + "name": "authors", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 99, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "authors", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 63, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "previewProject", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 116, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "previewProjectV5", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 127, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "runProject", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 107, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "setLicenseInfo", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 89, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "userIsAuthor", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "DiscourseCategoryActivityComponent", + "type": "component" + }, + { + "name": "LibraryProjectMenuComponent", + "type": "component" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatDialogModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + }, + { + "name": "UnitTagsComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Inject, OnInit } from '@angular/core';\nimport {\n MatDialog,\n MatDialogRef,\n MAT_DIALOG_DATA,\n MatDialogModule\n} from '@angular/material/dialog';\nimport { UserService } from '../../../services/user.service';\nimport { CreateRunDialogComponent } from '../../../teacher/create-run-dialog/create-run-dialog.component';\nimport { Project } from '../../../domain/project';\nimport { ParentProject } from '../../../domain/parentProject';\nimport { ConfigService } from '../../../services/config.service';\nimport { LibraryProjectMenuComponent } from '../library-project-menu/library-project-menu.component';\nimport { CommonModule } from '@angular/common';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { UnitTagsComponent } from '../../../teacher/unit-tags/unit-tags.component';\nimport { DiscourseCategoryActivityComponent } from '../discourse-category-activity/discourse-category-activity.component';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n imports: [\n CommonModule,\n DiscourseCategoryActivityComponent,\n LibraryProjectMenuComponent,\n MatButtonModule,\n MatDialogModule,\n MatIconModule,\n MatTooltipModule,\n UnitTagsComponent\n ],\n selector: 'app-library-project-details',\n styleUrl: './library-project-details.component.scss',\n templateUrl: './library-project-details.component.html'\n})\nexport class LibraryProjectDetailsComponent implements OnInit {\n protected authorsString: string = '';\n protected canPreview: boolean;\n protected isCopy: boolean;\n protected isMyUnit: boolean;\n protected isTeacher: boolean;\n protected isRunProject: false;\n protected licenseInfo = $localize`License pertains to original content created by the author(s). Authors are responsible for the usage and attribution of any third-party content linked to or included in this work.`;\n protected licenseUrl = 'http://creativecommons.org/licenses/by-sa/4.0/';\n protected parentAuthorsString: string = '';\n protected parentProject: ParentProject;\n protected project: Project;\n protected standardLabels: any = {\n commonCore: $localize`Common Core`,\n learningForJustice: $localize`Learning For Justice`,\n ngss: $localize`NGSS`\n };\n protected standards: any;\n\n constructor(\n private configService: ConfigService,\n @Inject(MAT_DIALOG_DATA) public data: any,\n public dialog: MatDialog,\n public dialogRef: MatDialogRef,\n private userService: UserService\n ) {}\n\n ngOnInit(): void {\n this.isTeacher = this.userService.isTeacher();\n this.isRunProject = this.data.isRunProject;\n if (this.data.project) {\n this.project = new Project(this.data.project);\n const numParents = this.data.project.metadata.parentProjects?.length ?? 0;\n if (numParents > 0) {\n this.parentProject = new ParentProject(\n this.data.project.metadata.parentProjects[numParents - 1]\n );\n }\n this.standards = this.project.metadata.standards;\n this.setLicenseInfo();\n this.canPreview = !(\n this.project.metadata.unitType === 'Other' && this.project.metadata.resources.length === 0\n );\n }\n this.isMyUnit = this.userIsAuthor();\n }\n\n private userIsAuthor(): boolean {\n return this.project.metadata.authors.some(\n (author) => author.id === this.userService.getUserId()\n );\n }\n\n private setLicenseInfo(): void {\n this.authorsString = this.getAuthorsString(this.project.metadata.authors);\n if (this.parentProject) {\n this.parentAuthorsString = this.getAuthorsString(this.parentProject.authors);\n if (!this.authorsString) {\n this.isCopy = true;\n }\n }\n }\n\n private getAuthorsString(authors: any[]): string {\n return authors?.map((author) => `${author.firstName} ${author.lastName}`).join(', ') ?? '';\n }\n\n protected close(): void {\n this.dialogRef.close();\n }\n\n protected runProject(): void {\n this.dialog.open(CreateRunDialogComponent, {\n data: this.data,\n panelClass: 'dialog-md',\n disableClose: true\n });\n this.dialogRef.close();\n }\n\n protected previewProject(): void {\n if (this.project.wiseVersion === 4) {\n window.open(\n `${this.configService.getWISE4Hostname()}` +\n `/previewproject.html?projectId=${this.project.id}`\n );\n } else {\n this.previewProjectV5();\n }\n }\n\n private previewProjectV5(): void {\n if (this.project.metadata.unitType === 'Platform') {\n window.open(`/preview/unit/${this.project.id}`);\n } else {\n window.open(this.project.metadata.resources[0].url);\n }\n }\n}\n", + "styleUrl": "./library-project-details.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialogRef", + "type": "MatDialogRef", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "userService", + "type": "UserService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 53, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialogRef", + "type": "MatDialogRef", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "userService", + "type": "UserService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "\n @if (standards.length > 0) {\n
    \n {{ standardsName }}: \n @for (standard of standards; track standard.id; let last = $last) {\n {{ standard.id }}{{ last ? '' : ' • ' }}\n }\n
    \n }\n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    {{ project.metadata.title }}
    \n
    \n @if (project.metadata.grades.length || project.metadata.totalTime) {\n
    \n @if (project.metadata.grades.length) {\n Grade level:\n }\n @for (\n grade of project.metadata.grades;\n track grade;\n let first = $first;\n let last = $last\n ) {\n {{ first ? ' ' : '' }}{{ grade }}{{ last ? '' : ', ' }}\n }\n @if (project.metadata.grades.length && project.metadata.totalTime) {\n  | \n }\n @if (project.metadata.totalTime) {\n Duration: {{ project.metadata.totalTime }}\n }\n
    \n }\n
    \n Unit ID: {{ project.id }}\n
    \n
    \n
    \n \n
    \n
    \n \n @if (isTeacher && project.wiseVersion !== 4) {\n \n }\n
    \n
    \n
    \n @if (project.wiseVersion === 4) {\n

    \n warning \n Legacy Unit\n

    \n }\n @if (project.metadata.unitType !== 'Platform') {\n

    \n Note: This unit was created outside of the WISE platform. Teaching resources are linked\n below.\n

    \n }\n @if (project.metadata.resources?.length > 0) {\n

    \n Resources:\n {{ first ? ' ' : '' }}\n @for (resource of project.metadata.resources; track resource.name; let last = $last) {\n {{ resource.name }}{{ last ? '' : ' • ' }}\n }\n

    \n }\n @if (project.metadata.summary) {\n
    \n }\n @if (project.metadata.disciplines?.length) {\n

    \n Discipline:\n @for (\n discipline of project.metadata.disciplines;\n track discipline.name;\n let last = $last\n ) {\n {{ discipline.name }}{{ last ? '' : ' • ' }}\n }\n

    \n }\n @if (project.metadata.features?.length) {\n

    \n Features:\n @for (feature of project.metadata.features; track feature.name; let last = $last) {\n {{ feature.name }}{{ last ? '' : ' • ' }}\n }\n

    \n }\n @if (\n standards?.commonCore?.length +\n standards?.ngss?.length +\n standards?.learningForJustice?.length >\n 0\n ) {\n

    \n Standards Addressed:\n @if (standards.commonCore) {\n \n }\n @if (standards.ngss) {\n \n }\n @if (standards.learningForJustice) {\n \n }\n

    \n }\n @if (project.metadata.locations?.length > 0) {\n

    \n Locations:\n @for (location of project.metadata.locations; track location.id; let last = $last) {\n {{ location.level3 ? location.level3 + ', ' : ''\n }}{{ location.level2 ? location.level2 + ', ' : '' }}{{ location.level1 }}\n {{ last ? '' : ' • ' }}\n }\n

    \n }\n @if (project.tags) {\n \n }\n
    \n @if (project.metadata.discourseCategoryURL) {\n \n }\n
    \n \"CC \n @if (isCopy) {\n \n @if (parentAuthorsString.length == 0) {\n This unit is a copy of\n {{ parentProject.title }} (used\n under CC BY-SA).\n } @else {\n This unit is a copy of\n {{ parentProject.title }} by\n {{ parentAuthorsString }} (used under\n CC BY-SA).\n }\n \n } @else {\n \n @if (authorsString.length == 0) {\n This unit is licensed under\n CC BY-SA.\n \n } @else {\n This unit is licensed under\n CC BY-SA by {{ authorsString }}.\n \n }\n \n }\n @if (project.license) {\n View License\n } @else {\n More\n }\n
    \n
    \n
    \n
    \n \n @if (\n isTeacher &&\n !isRunProject &&\n project.wiseVersion !== 4 &&\n project.metadata.unitType === 'Platform'\n ) {\n \n }\n @if (canPreview) {\n \n }\n
    \n" + }, + { + "name": "LibraryProjectDisciplinesComponent", + "id": "component-LibraryProjectDisciplinesComponent-2ca8b925f69612bb0ad74bc9bc1074b0fa3b327c9f3c41125995afec83c66386ea2a9021bd85168d84afe40806d703281597e8512f4692a8ce44972d41baa528", + "file": "src/app/modules/library/library-project-disciplines/library-project-disciplines.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "app-library-project-disciplines", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./library-project-disciplines.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "project", + "defaultValue": "new LibraryProject()", + "deprecated": false, + "deprecationMessage": "", + "line": 14, + "type": "LibraryProject", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "disciplines", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 16, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input, OnInit } from '@angular/core';\nimport { LibraryProject } from '../libraryProject';\nimport { CommonModule } from '@angular/common';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@Component({\n selector: 'app-library-project-disciplines',\n templateUrl: './library-project-disciplines.component.html',\n styleUrl: './library-project-disciplines.component.scss',\n imports: [CommonModule, MatTooltipModule]\n})\nexport class LibraryProjectDisciplinesComponent implements OnInit {\n protected disciplines: any[];\n @Input() project: LibraryProject = new LibraryProject();\n\n ngOnInit(): void {\n if (this.project.metadata.disciplines?.length) {\n this.disciplines = this.project.metadata.disciplines;\n const colors = {\n ESS: '#2E7D32',\n ETS: '#1565C0',\n LS: '#D81B60',\n Math: '#444444',\n PS: '#8E24AA',\n SJ: '#F57C00'\n };\n this.disciplines.forEach((discipline) => {\n discipline.color = colors[discipline.id] ?? '#000000';\n });\n }\n }\n}\n", + "styleUrl": "./library-project-disciplines.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "@if (disciplines && disciplines.length) {\n
    \n @for (discipline of disciplines; track discipline) {\n \n {{ discipline.id }}\n \n }\n
    \n}\n" + }, + { + "name": "LibraryProjectMenuComponent", + "id": "component-LibraryProjectMenuComponent-d006a06072475f4c01de30a0981f65adc2efd5bb9173ac8b71f36959acea15a784397705b97f7478ac387370c024da6ca88cc18cb28361f6af0774777ba73701", + "file": "src/app/modules/library/library-project-menu/library-project-menu.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "app-library-project-menu", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./library-project-menu.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "isMyUnit", + "deprecated": false, + "deprecationMessage": "", + "line": 27, + "type": "boolean", + "decorators": [] + }, + { + "name": "isRun", + "deprecated": false, + "deprecationMessage": "", + "line": 28, + "type": "boolean", + "decorators": [] + }, + { + "name": "project", + "deprecated": false, + "deprecationMessage": "", + "line": 29, + "type": "Project", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "archived", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 23, + "modifierKind": [ + 124 + ] + }, + { + "name": "canEdit", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 24, + "modifierKind": [ + 124 + ] + }, + { + "name": "canShare", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 25, + "modifierKind": [ + 124 + ] + }, + { + "name": "isChild", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 26, + "modifierKind": [ + 124 + ] + }, + { + "name": "publishUnitUrl", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 30, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "archive", + "args": [ + { + "name": "archive", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 91, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "archive", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "copyProject", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 63, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "editProject", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 70, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "hasEditPermission", + "args": [ + { + "name": "sharedOwner", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 59, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "sharedOwner", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isOwner", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 48, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "isSharedOwnerWithEditPermission", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 52, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 40, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "shareProject", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 84, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatDividerModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatMenuModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { Project } from '../../../domain/project';\nimport { TeacherService } from '../../../teacher/teacher.service';\nimport { ShareProjectDialogComponent } from '../share-project-dialog/share-project-dialog.component';\nimport { UserService } from '../../../services/user.service';\nimport { ConfigService } from '../../../services/config.service';\nimport { EditRunWarningDialogComponent } from '../../../teacher/edit-run-warning-dialog/edit-run-warning-dialog.component';\nimport { ArchiveProjectService } from '../../../services/archive-project.service';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { CopyProjectDialogComponent } from '../copy-project-dialog/copy-project-dialog.component';\n\n@Component({\n imports: [MatButtonModule, MatDividerModule, MatIconModule, MatMenuModule],\n selector: 'app-library-project-menu',\n styleUrl: './library-project-menu.component.scss',\n templateUrl: './library-project-menu.component.html'\n})\nexport class LibraryProjectMenuComponent {\n protected archived: boolean;\n protected canEdit: boolean;\n protected canShare: boolean;\n protected isChild: boolean;\n @Input() isMyUnit: boolean;\n @Input() isRun: boolean;\n @Input() project: Project;\n protected publishUnitUrl: string;\n\n constructor(\n private archiveProjectService: ArchiveProjectService,\n private configService: ConfigService,\n private dialog: MatDialog,\n private teacherService: TeacherService,\n private userService: UserService\n ) {}\n\n ngOnInit(): void {\n this.canEdit = this.isOwner() || this.isSharedOwnerWithEditPermission();\n this.canShare = this.isOwner() && !this.isRun;\n this.isChild = this.project.isChild();\n this.archived = this.project.hasTagWithText('archived');\n this.publishUnitUrl = `${this.configService.getContextPath()}/contact?projectId=${this.project.id}&publish=true`;\n }\n\n private isOwner(): boolean {\n return this.userService.getUserId() == this.project.owner.id;\n }\n\n private isSharedOwnerWithEditPermission(): boolean {\n const userId = this.userService.getUserId();\n return this.project.sharedOwners.some(\n (owner) => owner.id === userId && this.hasEditPermission(owner)\n );\n }\n\n private hasEditPermission(sharedOwner: any): boolean {\n return sharedOwner.permissions.includes(Project.EDIT_PERMISSION);\n }\n\n protected copyProject(): void {\n this.dialog.open(CopyProjectDialogComponent, {\n data: this.project,\n panelClass: 'dialog-sm'\n });\n }\n\n protected editProject(): void {\n this.teacherService.getProjectLastRun(this.project.id).subscribe((projectRun) => {\n if (projectRun != null) {\n projectRun.project = this.project;\n this.dialog.open(EditRunWarningDialogComponent, {\n data: projectRun,\n panelClass: 'dialog-sm'\n });\n } else {\n window.location.href = `${this.configService.getContextPath()}/teacher/edit/unit/${this.project.id}`;\n }\n });\n }\n\n protected shareProject(): void {\n this.dialog.open(ShareProjectDialogComponent, {\n data: { project: this.project },\n panelClass: 'dialog-md'\n });\n }\n\n protected archive(archive: boolean): void {\n this.archiveProjectService.archiveProject(this.project, archive);\n }\n}\n", + "styleUrl": "./library-project-menu.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "archiveProjectService", + "type": "ArchiveProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "teacherService", + "type": "TeacherService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "userService", + "type": "UserService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 30, + "jsdoctags": [ + { + "name": "archiveProjectService", + "type": "ArchiveProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "teacherService", + "type": "TeacherService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "userService", + "type": "UserService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "\n\n \n\n" + }, + { + "name": "ListClassroomCoursesDialogComponent", + "id": "component-ListClassroomCoursesDialogComponent-cba8fee18eee33b020fe066fc979d0561092ea5e1d39b7779949e0a1c66ac8de42083508fd5c18d3564dcff002b566bbaf7c107a06fadc6bce1ce27e8ac98cdc", + "file": "src/app/teacher/list-classroom-courses-dialog/list-classroom-courses-dialog.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./list-classroom-courses-dialog.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "addFailureCount", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 51 + }, + { + "name": "addSuccessCount", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 50 + }, + { + "name": "courseIds", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 44 + }, + { + "name": "courses", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "Course[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 43 + }, + { + "name": "coursesControl", + "deprecated": false, + "deprecationMessage": "", + "type": "FormArray", + "indexKey": "", + "optional": false, + "description": "", + "line": 49 + }, + { + "name": "coursesFailedToAdd", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 53 + }, + { + "name": "coursesSuccessfullyAdded", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 52 + }, + { + "name": "data", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 58, + "decorators": [ + { + "name": "Inject", + "stringifiedArguments": "MAT_DIALOG_DATA" + } + ], + "modifierKind": [ + 171, + 125 + ] + }, + { + "name": "dialog", + "deprecated": false, + "deprecationMessage": "", + "type": "MatDialog", + "indexKey": "", + "optional": false, + "description": "", + "line": 56, + "modifierKind": [ + 125 + ] + }, + { + "name": "dialogRef", + "deprecated": false, + "deprecationMessage": "", + "type": "MatDialogRef", + "indexKey": "", + "optional": false, + "description": "", + "line": 57, + "modifierKind": [ + 125 + ] + }, + { + "name": "endTime", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 45 + }, + { + "name": "form", + "deprecated": false, + "deprecationMessage": "", + "type": "FormGroup", + "indexKey": "", + "optional": false, + "description": "", + "line": 48 + }, + { + "name": "isAdded", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 46 + }, + { + "name": "isAdding", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 47 + }, + { + "name": "run", + "deprecated": false, + "deprecationMessage": "", + "type": "Run", + "indexKey": "", + "optional": false, + "description": "", + "line": 42 + } + ], + "methodsClass": [ + { + "name": "addToClassroom", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 96, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "closeAll", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 154, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getCourseNameAndSection", + "args": [ + { + "name": "courseId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 138, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "courseId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isCourseSelected", + "args": [], + "optional": false, + "returnType": "ValidatorFn", + "typeParameters": [], + "line": 90, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 69, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "showAddToClassroomResults", + "args": [ + { + "name": "courses", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 119, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "courses", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatCheckboxModule", + "type": "module" + }, + { + "name": "MatDialogModule", + "type": "module" + }, + { + "name": "MatDividerModule", + "type": "module" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatInputModule", + "type": "module" + }, + { + "name": "MatProgressBarModule", + "type": "module" + }, + { + "name": "ReactiveFormsModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Inject, OnInit } from '@angular/core';\nimport { TeacherService } from '../teacher.service';\nimport { Course } from '../../domain/course';\nimport { MAT_DIALOG_DATA, MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { UserService } from '../../services/user.service';\nimport {\n FormArray,\n FormBuilder,\n FormControl,\n FormGroup,\n Validators,\n ValidatorFn\n} from '@angular/forms';\nimport { Run } from '../../domain/run';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\n\n@Component({\n imports: [\n FormsModule,\n MatButtonModule,\n MatCheckboxModule,\n MatDialogModule,\n MatDividerModule,\n MatFormFieldModule,\n MatIconModule,\n MatInputModule,\n MatProgressBarModule,\n ReactiveFormsModule\n ],\n styleUrl: './list-classroom-courses-dialog.component.scss',\n templateUrl: './list-classroom-courses-dialog.component.html'\n})\nexport class ListClassroomCoursesDialogComponent implements OnInit {\n run: Run;\n courses: Course[] = [];\n courseIds: string[] = [];\n endTime: string = '';\n isAdded: boolean = false;\n isAdding: boolean = false;\n form: FormGroup;\n coursesControl: FormArray;\n addSuccessCount: number = 0;\n addFailureCount: number = 0;\n coursesSuccessfullyAdded: any[] = [];\n coursesFailedToAdd: any[] = [];\n\n constructor(\n public dialog: MatDialog,\n public dialogRef: MatDialogRef,\n @Inject(MAT_DIALOG_DATA) public data: any,\n private teacherService: TeacherService,\n private userService: UserService,\n private fb: FormBuilder\n ) {\n this.run = data.run;\n for (const course of data.courses) {\n this.courses.push(new Course(course));\n }\n }\n\n ngOnInit() {\n const descriptionText = $localize`Hi class! Please complete the \"${this.data.run.name}:unitTitle:\" WISE unit. (Access Code: ${this.data.run.runCode}:accessCode:)`;\n const description = new FormControl(descriptionText, Validators.required);\n this.coursesControl = new FormArray(this.courses.map(() => new FormControl(false)));\n this.coursesControl.valueChanges.subscribe((controls) => {\n this.courseIds = [];\n controls.forEach((value, index) => {\n if (value) {\n this.courseIds.push(this.courses[index].id);\n }\n });\n });\n this.form = this.fb.group(\n {\n selectedCourses: this.coursesControl,\n description: description\n },\n { validator: this.isCourseSelected() }\n );\n }\n\n private isCourseSelected(): ValidatorFn {\n return () => {\n return this.courseIds.length > 0 ? null : { required: true };\n };\n }\n\n addToClassroom() {\n this.isAdding = true;\n let endTime = '';\n if (this.run.endTime) {\n const date = new Date(this.run.endTime).getTime();\n if (date > Date.now()) {\n endTime = date.toString();\n }\n }\n this.teacherService\n .addToClassroom(\n this.data.run.runCode,\n this.data.run.name,\n this.courseIds,\n this.userService.getUser().getValue().username,\n endTime,\n this.form.controls['description'].value\n )\n .subscribe((response) => {\n this.showAddToClassroomResults(response.courses);\n });\n }\n\n private showAddToClassroomResults(courses) {\n this.isAdded = true;\n this.isAdding = false;\n this.addSuccessCount = 0;\n this.addFailureCount = 0;\n this.coursesSuccessfullyAdded = [];\n this.coursesFailedToAdd = [];\n for (const course of courses) {\n course.name = this.getCourseNameAndSection(course.id);\n if (course.success) {\n this.coursesSuccessfullyAdded.push(course);\n this.addSuccessCount++;\n } else {\n this.coursesFailedToAdd.push(course);\n this.addFailureCount++;\n }\n }\n }\n\n private getCourseNameAndSection(courseId: string): string {\n for (const course of this.courses) {\n if (course.id === courseId) {\n let courseNameAndSection = course.name;\n if (course.section) {\n courseNameAndSection += ' ' + $localize`(Section ${course.section}:section:)`;\n }\n return courseNameAndSection;\n }\n }\n }\n\n get selectedCoursesControl() {\n return this.form.get('selectedCourses');\n }\n\n closeAll() {\n this.dialog.closeAll();\n }\n}\n", + "styleUrl": "./list-classroom-courses-dialog.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialogRef", + "type": "MatDialogRef", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "teacherService", + "type": "TeacherService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "userService", + "type": "UserService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "fb", + "type": "FormBuilder", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 53, + "jsdoctags": [ + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialogRef", + "type": "MatDialogRef", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "teacherService", + "type": "TeacherService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "userService", + "type": "UserService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "fb", + "type": "FormBuilder", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ], + "accessors": { + "selectedCoursesControl": { + "name": "selectedCoursesControl", + "getSignature": { + "name": "selectedCoursesControl", + "type": "", + "returnType": "", + "line": 150 + } + } + }, + "templateData": "

    \n \n Share to Google Classroom\n

    \n@if (!courses.length) {\n \n
    \n

    Hey there! Looks like you don't have any active Google Classroom classes.

    \n

    \n Visit Google Classroom to create\n a class and try again.\n

    \n
    \n
    \n \n \n \n}\n@if (courses.length && !isAdded) {\n
    \n \n

    \n {{ data.run.name }} (Run ID: {{ data.run.id }})\n

    \n

    Add an assignment for this unit to Google Classroom.

    \n

    1. Choose from your Google Classroom classes

    \n
    \n @for (control of selectedCoursesControl.controls; track control; let i = $index) {\n

    \n \n {{ courses[i].name }}\n @if (courses[i].section) {\n (Section {{ courses[i].section }})\n }\n \n

    \n }\n
    \n \n

    2. Add Description

    \n \n Assignment description\n \n Description is required.\n \n
    \n \n \n \n @if (isAdding) {\n \n }\n Add\n \n \n
    \n}\n@if (isAdded && courses.length) {\n \n
    \n

    \n {{ data.run.name }} (Run ID: {{ data.run.id }})\n

    \n @if (addSuccessCount > 0) {\n
    \n
    \n

    \n The unit has been successfully added to the following Google Classroom classes:\n

    \n @for (course of coursesSuccessfullyAdded; track course) {\n

    {{ course.name }}

    \n }\n
    \n }\n @if (addFailureCount > 0) {\n
    \n
    \n

    There was a problem adding the unit to the following Google Classroom classes:

    \n @for (course of coursesFailedToAdd; track course) {\n

    {{ course.name }}

    \n }\n
    \n }\n
    \n
    \n \n \n \n}\n" + }, + { + "name": "LocationSelectMenuComponent", + "id": "component-LocationSelectMenuComponent-a25cefd29f2e58ddbd54b8ce2e85c84d22d54d6b2bbac24a03c0b24e25e2f84a53d98f3713aa5dc3a70d66e01f41bbbc293d57d0917bac6c884417bdf55be502", + "file": "src/app/modules/shared/location-select-menu/location-select-menu.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "location-select-menu", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./location-select-menu.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "disable", + "deprecated": false, + "deprecationMessage": "", + "line": 22, + "type": "boolean", + "decorators": [], + "inheritance": { + "file": "SelectMenuComponent" + } + }, + { + "name": "multiple", + "deprecated": false, + "deprecationMessage": "", + "line": 23, + "type": "boolean", + "decorators": [], + "inheritance": { + "file": "SelectMenuComponent" + } + }, + { + "name": "options", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "line": 24, + "type": "any[]", + "decorators": [], + "inheritance": { + "file": "SelectMenuComponent" + } + }, + { + "name": "placeholderText", + "defaultValue": "$localize`Select an option`", + "deprecated": false, + "deprecationMessage": "", + "line": 25, + "type": "string", + "decorators": [], + "inheritance": { + "file": "SelectMenuComponent" + } + }, + { + "name": "value", + "deprecated": false, + "deprecationMessage": "", + "line": 27, + "type": "any", + "decorators": [], + "inheritance": { + "file": "SelectMenuComponent" + } + }, + { + "name": "valueProp", + "defaultValue": "'value'", + "deprecated": false, + "deprecationMessage": "", + "line": 28, + "type": "string", + "decorators": [], + "inheritance": { + "file": "SelectMenuComponent" + } + }, + { + "name": "viewValueProp", + "defaultValue": "'viewValue'", + "deprecated": false, + "deprecationMessage": "", + "line": 29, + "type": "string", + "decorators": [], + "inheritance": { + "file": "SelectMenuComponent" + } + } + ], + "outputsClass": [ + { + "name": "update", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 21, + "type": "EventEmitter", + "inheritance": { + "file": "SelectMenuComponent" + } + } + ], + "propertiesClass": [ + { + "name": "labels", + "deprecated": false, + "deprecationMessage": "", + "type": "LocationType[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "modifierKind": [ + 124 + ] + }, + { + "name": "locationOptions", + "defaultValue": "{ level3: [], level2: [], level1: [] }", + "deprecated": false, + "deprecationMessage": "", + "type": "object", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "modifierKind": [ + 124 + ] + }, + { + "name": "locationTypeToLabel", + "defaultValue": "locationTypeToLabel", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 20, + "modifierKind": [ + 124 + ] + }, + { + "name": "selectField", + "defaultValue": "new FormControl('')", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 26, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "SelectMenuComponent" + } + } + ], + "methodsClass": [ + { + "name": "alphabetizeOptions", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 39, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "keepNonEmptyLabels", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 47, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "SelectMenuComponent" + } + }, + { + "name": "populateLocationOptions", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 29, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "ngOnChanges", + "args": [ + { + "name": "changes", + "type": "SimpleChanges", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 41, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "changes", + "type": "SimpleChanges", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SelectMenuComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatSelectModule", + "type": "module" + }, + { + "name": "ReactiveFormsModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { SelectMenuComponent } from '../select-menu/select-menu.component';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatSelectModule } from '@angular/material/select';\nimport {\n Location,\n LocationOption,\n LocationType,\n locationTypeToLabel\n} from '../../library/Location';\n\n@Component({\n imports: [FormsModule, MatSelectModule, ReactiveFormsModule],\n selector: 'location-select-menu',\n templateUrl: './location-select-menu.component.html'\n})\nexport class LocationSelectMenuComponent extends SelectMenuComponent {\n protected labels: LocationType[];\n protected locationOptions = { level3: [], level2: [], level1: [] };\n protected locationTypeToLabel = locationTypeToLabel;\n\n ngOnInit(): void {\n super.ngOnInit();\n this.populateLocationOptions();\n this.alphabetizeOptions();\n this.keepNonEmptyLabels();\n }\n\n private populateLocationOptions(): void {\n this.options\n .flatMap((option: Location) => option.getLocationOptions())\n .forEach((option: LocationOption) => {\n if (!this.locationOptions[option.type].some((opt) => opt.name === option.name)) {\n this.locationOptions[option.type].push(option);\n }\n });\n }\n\n private alphabetizeOptions(): void {\n (Object.keys(this.locationOptions) as LocationType[]).forEach((key: LocationType) =>\n this.locationOptions[key].sort((a: LocationOption, b: LocationOption) =>\n a.name.localeCompare(b.name)\n )\n );\n }\n\n private keepNonEmptyLabels(): void {\n this.labels = Object.keys(this.locationOptions).filter(\n (key: LocationType) => this.locationOptions[key].length > 0\n ) as LocationType[];\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [ + "SelectMenuComponent" + ], + "templateData": "\n {{ placeholderText }}\n \n @if (multiple) {\n \n {{ selectField.value ? selectField.value[0] : '' }}\n @if (selectField.value?.length > 1) {\n (+{{ selectField.value.length - 1 }} more)\n }\n \n }\n @for (label of labels; track label) {\n \n @for (option of locationOptions[label]; track option.id) {\n {{ option[viewValueProp] }}\n }\n \n }\n \n\n" + }, + { + "name": "LoginComponent", + "id": "component-LoginComponent-80944137ef074505ac6218d24bbf59e931f8573371c48d6c13a656213891c33a0117447aa366623df95b3f0c93427867165bce1b3b2a183d0ef883a2658c36ac", + "file": "src/app/login/login.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "app-login", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./login.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [], + "methodsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\n\n@Component({\n selector: 'app-login',\n standalone: false,\n styleUrl: './login.component.scss',\n templateUrl: './login.component.html'\n})\nexport class LoginComponent {}\n", + "styleUrl": "./login.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [], + "templateData": "
    \n \n \n
    \n" + }, + { + "name": "LoginHomeComponent", + "id": "component-LoginHomeComponent-e3ed7cfa4a6a9f174333e2d1c30df0c517c56e996f2752967c33e1791cea6033cf77c702bef2f31f2decaa458fabc4b5d2aa9bef79d809ab3b13010f79c88290", + "file": "src/app/login/login-home/login-home.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "app-login", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./login-home.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "accessCode", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 15 + }, + { + "name": "credentials", + "defaultValue": "{ username: '', password: '', recaptchaResponse: null }", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 16 + }, + { + "name": "googleAuthenticationEnabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "modifierKind": [ + 124 + ] + }, + { + "name": "isRecaptchaEnabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 18 + }, + { + "name": "isRecaptchaVerificationFailed", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 19 + }, + { + "name": "isReLoginDueToErrorSavingData", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 20 + }, + { + "name": "microsoftAuthenticationEnabled", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 21, + "modifierKind": [ + 124 + ] + }, + { + "name": "passwordError", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 22 + }, + { + "name": "processing", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 23 + }, + { + "name": "recaptchaRef", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 24, + "decorators": [ + { + "name": "ViewChild", + "stringifiedArguments": "'recaptchaRef', {static: false}" + } + ], + "modifierKind": [ + 171 + ] + }, + { + "name": "showSocialLogin", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 25, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "appendAccessCodeParameter", + "args": [ + { + "name": "url", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 116, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "url", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getRedirectUrl", + "args": [ + { + "name": "social", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 101, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "social", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isRedirectToAppRoutes", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 65, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "login", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 70, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 35, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "recaptchaResolved", + "args": [ + { + "name": "recaptchaResponse", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 97, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "recaptchaResponse", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "socialSignIn", + "args": [ + { + "name": "socialPlatform", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 93, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 125 + ], + "jsdoctags": [ + { + "name": "socialPlatform", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, OnInit, ViewChild } from '@angular/core';\nimport { Router, ActivatedRoute } from '@angular/router';\nimport { UserService } from '../../services/user.service';\nimport { ConfigService } from '../../services/config.service';\nimport { ReCaptchaV3Service } from 'ng-recaptcha-2';\nimport { lastValueFrom } from 'rxjs';\n\n@Component({\n selector: 'app-login',\n standalone: false,\n styleUrl: './login-home.component.scss',\n templateUrl: './login-home.component.html'\n})\nexport class LoginHomeComponent implements OnInit {\n accessCode: string = '';\n credentials: any = { username: '', password: '', recaptchaResponse: null };\n protected googleAuthenticationEnabled: boolean = false;\n isRecaptchaEnabled: boolean = false;\n isRecaptchaVerificationFailed: boolean = false;\n isReLoginDueToErrorSavingData: boolean;\n protected microsoftAuthenticationEnabled: boolean;\n passwordError: boolean = false;\n processing: boolean = false;\n @ViewChild('recaptchaRef', { static: false }) recaptchaRef: any;\n protected showSocialLogin: boolean;\n\n constructor(\n private configService: ConfigService,\n private router: Router,\n private route: ActivatedRoute,\n private recaptchaV3Service: ReCaptchaV3Service,\n private userService: UserService\n ) {}\n\n ngOnInit(): void {\n this.configService.getConfig().subscribe((config) => {\n if (config != null) {\n this.googleAuthenticationEnabled = config.googleClientId != '';\n this.microsoftAuthenticationEnabled = config.microsoftClientId != '';\n }\n if (this.userService.isSignedIn()) {\n this.router.navigateByUrl(this.getRedirectUrl(''));\n }\n this.showSocialLogin =\n this.googleAuthenticationEnabled || this.microsoftAuthenticationEnabled;\n });\n this.route.params.subscribe((params) => {\n if (params['username'] != null) {\n this.credentials.username = params['username'];\n this.showSocialLogin = false;\n }\n });\n this.route.queryParams.subscribe((params) => {\n if (params['username'] != null) {\n this.credentials.username = params['username'];\n }\n if (params['accessCode'] != null) {\n this.accessCode = params['accessCode'];\n }\n });\n this.isReLoginDueToErrorSavingData = this.isRedirectToAppRoutes();\n this.isRecaptchaEnabled = this.configService.isRecaptchaEnabled();\n }\n\n private isRedirectToAppRoutes(): boolean {\n const regExp = RegExp('/student/unit|/teacher/manage|/teacher/edit');\n return regExp.test(this.getRedirectUrl(''));\n }\n\n async login(): Promise {\n this.processing = true;\n this.passwordError = false;\n if (this.isRecaptchaEnabled) {\n this.credentials.recaptchaResponse = await lastValueFrom(\n this.recaptchaV3Service.execute('importantAction')\n );\n }\n this.userService.authenticate(this.credentials, (response: any) => {\n if (this.userService.isAuthenticated) {\n this.router.navigateByUrl(this.getRedirectUrl(''));\n } else {\n this.processing = false;\n this.credentials.password = '';\n if (response.isRecaptchaVerificationFailed) {\n this.isRecaptchaVerificationFailed = true;\n } else {\n this.passwordError = true;\n }\n }\n });\n }\n\n public socialSignIn(socialPlatform: string) {\n window.location.href = this.getRedirectUrl(socialPlatform);\n }\n\n recaptchaResolved(recaptchaResponse) {\n this.credentials.recaptchaResponse = recaptchaResponse;\n }\n\n getRedirectUrl(social: string): string {\n let redirectUrl = '';\n if (social === 'google') {\n redirectUrl = `${this.configService.getContextPath()}/api/google-login?redirectUrl=${this.userService.getRedirectUrl()}`;\n } else if (social === 'microsoft') {\n redirectUrl = `/api/microsoft-login?redirectUrl=/`;\n } else {\n redirectUrl = this.userService.getRedirectUrl();\n }\n if (this.accessCode !== '') {\n redirectUrl = this.appendAccessCodeParameter(redirectUrl);\n }\n return redirectUrl;\n }\n\n private appendAccessCodeParameter(url: string): string {\n return `${url}${url.includes('?') ? '&' : '?'}accessCode=${this.accessCode}`;\n }\n}\n", + "styleUrl": "./login-home.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "recaptchaV3Service", + "type": "ReCaptchaV3Service", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "userService", + "type": "UserService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 25, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "recaptchaV3Service", + "type": "ReCaptchaV3Service", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "userService", + "type": "UserService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "\n \n
    \n

    Sign in to WISE

    \n @if (passwordError) {\n

    \n Username and password not recognized. Please try again.\n

    \n }\n @if (isReLoginDueToErrorSavingData) {\n

    \n There was an error saving data. Please log in again. You may need to re-do your recent\n work. We apologize for the inconvenience.\n

    \n }\n

    \n \n Username\n \n \n

    \n

    \n \n Password\n \n \n

    \n @if (isRecaptchaEnabled) {\n

    \n This site is protected by reCAPTCHA and the Google\n Privacy Policy and\n Terms of Service apply.\n

    \n }\n @if (isRecaptchaEnabled) {\n @if (!isRecaptchaVerificationFailed) {\n
     
    \n }\n @if (isRecaptchaVerificationFailed) {\n Recaptcha failed. Please reload the page and try again!\n }\n }\n

    \n \n @if (processing) {\n \n }\n Sign In\n \n

    \n \n @if (showSocialLogin) {\n
    \n

    - or -

    \n @if (googleAuthenticationEnabled) {\n

    \n

    \n }\n @if (microsoftAuthenticationEnabled) {\n

    \n

    \n }\n
    \n }\n
    \n \n \n

    Forgot username or password?

    \n

    New to WISE? Join for free!

    \n
    \n
    \n" + }, + { + "name": "MainMenuComponent", + "id": "component-MainMenuComponent-51f024a348c0e4d64442d1334bc7dc3e40d3e5896a9165113640f28d4d84072ed857dbbb5d179288e7ee4118581658b95995073dd402ff2f47ba27477ea50c9e", + "file": "src/assets/wise5/common/main-menu/main-menu.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "main-menu", + "styleUrls": [], + "styles": [ + ".menu-sidenav__divider { margin: 0px; }" + ], + "templateUrl": [ + "./main-menu.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "title", + "deprecated": false, + "deprecationMessage": "", + "line": 16, + "type": "string", + "decorators": [] + }, + { + "name": "views", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "line": 17, + "type": "any", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [], + "methodsClass": [ + { + "name": "goToView", + "args": [ + { + "name": "view", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 24, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "view", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "MatDividerModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatToolbarModule", + "type": "module" + }, + { + "name": "MatListModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatListModule } from '@angular/material/list';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n imports: [CommonModule, MatDividerModule, MatIconModule, MatToolbarModule, MatListModule],\n selector: 'main-menu',\n styles: ['.menu-sidenav__divider { margin: 0px; }'],\n templateUrl: './main-menu.component.html'\n})\nexport class MainMenuComponent {\n @Input() title: string;\n @Input() views: any = [];\n\n constructor(\n private route: ActivatedRoute,\n private router: Router\n ) {}\n\n protected goToView(view: any): void {\n if (view.action != null) {\n view.action();\n }\n this.router.navigate(view.route, { relativeTo: this.route });\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": ".menu-sidenav__divider { margin: 0px; }\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 17, + "jsdoctags": [ + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "\n \n @for (view of views; track view.name) {\n @if (view.type === type && view.active) {\n \n \n {{ view.icon }} \n {{ view.name }}\n \n \n }\n }\n \n\n\n\n
    {{ title }}
    \n
    \n\n\n\n" + }, + { + "name": "ManagePeriodComponent", + "id": "component-ManagePeriodComponent-3b276191164eaa1a30f72d8cce00f5890d34d5d33a5baf63b11a5bf1ee65129a068af0b3ea522577f2d4a256a1e9d68af2082eea55a88bef0d9a0384f6a8f3e4", + "file": "src/assets/wise5/classroomMonitor/classroomMonitorComponents/manageStudents/manage-period/manage-period.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "manage-period", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "manage-period.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "period", + "deprecated": false, + "deprecationMessage": "", + "line": 27, + "type": "any", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "emptyTeams", + "defaultValue": "new Map()", + "deprecated": false, + "deprecationMessage": "", + "type": "Map", + "indexKey": "", + "optional": false, + "description": "", + "line": 26 + }, + { + "name": "students", + "defaultValue": "new Set()", + "deprecated": false, + "deprecationMessage": "", + "type": "Set", + "indexKey": "", + "optional": false, + "description": "", + "line": 28 + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 29, + "modifierKind": [ + 123 + ] + }, + { + "name": "teams", + "defaultValue": "new Map()", + "deprecated": false, + "deprecationMessage": "", + "type": "Map", + "indexKey": "", + "optional": false, + "description": "", + "line": 30 + }, + { + "name": "unassignedTeam", + "defaultValue": "{ users: [] }", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 31 + } + ], + "methodsClass": [ + { + "name": "init", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 55, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "initEmptyTeams", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 66, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "initStudents", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 87, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "initTeams", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 60, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "initUnassignedTeam", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 81, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "ngOnChanges", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 39, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 51, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 43, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatCard" + }, + { + "name": "CdkDropListGroup" + }, + { + "name": "MatCardContent" + }, + { + "name": "AddTeamButtonComponent", + "type": "component" + }, + { + "name": "ManageTeamComponent", + "type": "component" + }, + { + "name": "ManageTeamsComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { WorkgroupService } from '../../../../../../app/services/workgroup.service';\nimport { ConfigService } from '../../../../services/configService';\nimport { GetWorkgroupService } from '../../../../../../app/services/getWorkgroupService';\nimport { MatCard, MatCardContent } from '@angular/material/card';\nimport { CdkDropListGroup } from '@angular/cdk/drag-drop';\nimport { AddTeamButtonComponent } from '../add-team-button/add-team-button.component';\nimport { ManageTeamComponent } from '../manage-team/manage-team.component';\nimport { ManageTeamsComponent } from '../manage-teams/manage-teams.component';\n\n@Component({\n imports: [\n MatCard,\n CdkDropListGroup,\n MatCardContent,\n AddTeamButtonComponent,\n ManageTeamComponent,\n ManageTeamsComponent\n ],\n selector: 'manage-period',\n styleUrl: 'manage-period.component.scss',\n templateUrl: 'manage-period.component.html'\n})\nexport class ManagePeriodComponent {\n emptyTeams: Map = new Map();\n @Input() period: any;\n students: Set = new Set();\n private subscriptions: Subscription = new Subscription();\n teams: Map = new Map();\n unassignedTeam: any = { users: [] };\n\n constructor(\n private configService: ConfigService,\n private getWorkgroupService: GetWorkgroupService,\n private workgroupService: WorkgroupService\n ) {}\n\n ngOnChanges(): void {\n this.init();\n }\n\n ngOnInit(): void {\n this.subscriptions.add(\n this.configService.configRetrieved$.subscribe(() => {\n this.init();\n })\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n init(): void {\n this.initTeams();\n this.initStudents();\n }\n\n initTeams(): void {\n this.teams = this.workgroupService.getWorkgroupsInPeriod(this.period.periodId);\n this.initEmptyTeams();\n this.initUnassignedTeam();\n }\n\n private initEmptyTeams(): void {\n this.emptyTeams.clear();\n this.getWorkgroupService\n .getAllWorkgroupsInPeriod(this.period.periodId)\n .subscribe((workgroups: any[]) => {\n for (const workgroup of workgroups) {\n if (!this.teams.has(workgroup.id)) {\n workgroup.workgroupId = workgroup.id;\n workgroup.users = [];\n this.emptyTeams.set(workgroup.id, workgroup);\n }\n }\n });\n }\n\n private initUnassignedTeam(): void {\n this.unassignedTeam = {\n users: this.configService.getUsersNotInWorkgroupInPeriod(this.period.periodId)\n };\n }\n\n initStudents(): void {\n this.students.clear();\n for (const workgroup of this.configService.getClassmateUserInfos()) {\n if (workgroup.periodId === this.period.periodId) {\n for (const user of workgroup.users) {\n this.students.add(user);\n }\n }\n }\n }\n}\n", + "styleUrl": "manage-period.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getWorkgroupService", + "type": "GetWorkgroupService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "workgroupService", + "type": "WorkgroupService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 31, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "getWorkgroupService", + "type": "GetWorkgroupService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "workgroupService", + "type": "WorkgroupService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "\n \n
    \n

    \n Period {{ period.periodName }}\n \n Students: {{ students.size }} | Teams: {{ teams.size }}\n \n

    \n \n @if (unassignedTeam.users.length > 0 || teams.size > 0) {\n \n }\n
    \n @if (unassignedTeam.users.length > 0) {\n \n }\n \n @if (emptyTeams.size > 0) {\n

    Empty Teams

    \n \n }\n
    \n
    \n" + }, + { + "name": "ManageShowStudentInfoComponent", + "id": "component-ManageShowStudentInfoComponent-418909f4019a9121302140f3ab660d5c1cabde0742e9b78840baa28d11524969e47fcda5b281ccab4291050626596ebeabac85d8643d57689c858ce3d2ec5830", + "file": "src/assets/wise5/classroomMonitor/classroomMonitorComponents/manageStudents/manage-show-student-info/manage-show-student-info.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./manage-show-student-info.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "canViewStudentNames", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 30, + "modifierKind": [ + 124 + ] + }, + { + "name": "user", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 36, + "decorators": [ + { + "name": "Inject", + "stringifiedArguments": "MAT_DIALOG_DATA" + } + ], + "modifierKind": [ + 171, + 125 + ] + } + ], + "methodsClass": [ + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 39, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatDialogTitle" + }, + { + "name": "CdkScrollable" + }, + { + "name": "MatDialogContent" + }, + { + "name": "MatDialogActions" + }, + { + "name": "MatButton" + }, + { + "name": "MatDialogClose" + }, + { + "name": "DatePipe", + "type": "pipe" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { HttpClient } from '@angular/common/http';\nimport { Component, Inject } from '@angular/core';\nimport {\n MatDialog,\n MAT_DIALOG_DATA,\n MatDialogTitle,\n MatDialogContent,\n MatDialogActions,\n MatDialogClose\n} from '@angular/material/dialog';\nimport { ConfigService } from '../../../../services/configService';\nimport { CdkScrollable } from '@angular/cdk/scrolling';\nimport { MatButton } from '@angular/material/button';\nimport { DatePipe } from '@angular/common';\n\n@Component({\n imports: [\n MatDialogTitle,\n CdkScrollable,\n MatDialogContent,\n MatDialogActions,\n MatButton,\n MatDialogClose,\n DatePipe\n ],\n styleUrl: './manage-show-student-info.component.scss',\n templateUrl: './manage-show-student-info.component.html'\n})\nexport class ManageShowStudentInfoComponent {\n protected canViewStudentNames: boolean;\n\n constructor(\n protected dialog: MatDialog,\n private configService: ConfigService,\n private http: HttpClient,\n @Inject(MAT_DIALOG_DATA) public user: any\n ) {}\n\n ngOnInit() {\n this.canViewStudentNames = this.configService.getPermissions().canViewStudentNames;\n this.http.get(`/api/user/info/${this.user.id}`).subscribe((userInfo) => {\n Object.assign(this.user, userInfo);\n });\n }\n}\n", + "styleUrl": "./manage-show-student-info.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "user", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 30, + "jsdoctags": [ + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "user", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "

    \n @if (canViewStudentNames) {\n {{ user.name }}\n } @else {\n Student {{ user.id }}\n }\n

    \n\n
    \n \n \n \n \n \n @if (canViewStudentNames) {\n \n \n \n \n }\n \n \n \n \n \n \n \n \n \n \n \n \n
    Student ID{{ user.id }}
    Username{{ user.username }}
    Most Recent Login\n {{ user.lastLoginTime | date: 'fullDate' }},\n {{ user.lastLoginTime | date: 'shortTime' }}\n
    Registration Date{{ user.signUpTime | date: 'fullDate' }}, {{ user.signUpTime | date: 'shortTime' }}
    Number of Logins{{ user.numberOfLogins }}
    \n
    \n
    \n\n \n\n" + }, + { + "name": "ManageStudentsComponent", + "id": "component-ManageStudentsComponent-109a0fbeb70a7cc4df25359bf54472dde470cbdc586c201c3a3f6e689da3fbcacebbfc9d8ce2620f59d2193889d0030920b1643b9550d1ac90f1505a39f4f512", + "file": "src/assets/wise5/classroomMonitor/classroomMonitorComponents/manageStudents/manage-students/manage-students.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "manage-students", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "manage-students.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "periods", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "modifierKind": [ + 124 + ] + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "modifierKind": [ + 123 + ] + } + ], + "methodsClass": [ + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 31, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 18, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "setVisiblePeriods", + "args": [ + { + "name": "currentPeriod", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 27, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "currentPeriod", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "ManagePeriodComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { TeacherDataService } from '../../../../services/teacherDataService';\nimport { ManagePeriodComponent } from '../manage-period/manage-period.component';\n\n@Component({\n imports: [ManagePeriodComponent],\n selector: 'manage-students',\n styleUrl: 'manage-students.component.scss',\n templateUrl: 'manage-students.component.html'\n})\nexport class ManageStudentsComponent {\n protected periods: any[];\n private subscriptions: Subscription = new Subscription();\n\n constructor(private dataService: TeacherDataService) {}\n\n ngOnInit(): void {\n this.setVisiblePeriods(this.dataService.getCurrentPeriod());\n this.subscriptions.add(\n this.dataService.currentPeriodChanged$.subscribe(({ currentPeriod }) => {\n this.setVisiblePeriods(currentPeriod);\n })\n );\n }\n\n setVisiblePeriods(currentPeriod: any): void {\n this.periods = currentPeriod.periodId === -1 ? this.dataService.getPeriods() : [currentPeriod];\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n}\n", + "styleUrl": "manage-students.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 14, + "jsdoctags": [ + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "
    \n
    \n
    \n

    Tip: Drag a student to change teams within current period.

    \n @for (period of periods; track period) {\n @if (period.periodId !== -1) {\n \n }\n }\n
    \n
    \n
    \n" + }, + { + "name": "ManageTagsDialogComponent", + "id": "component-ManageTagsDialogComponent-895c4ceaa8a00a4d6a4f07b36d4e007ad3d6cd86b2bbbc8701e486464c28f090af57659d551f15fe278cdd648e51745f65a2f80e1cd11e9cfd8e4eabaa9d91fa", + "file": "src/app/teacher/manage-tags-dialog/manage-tags-dialog.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "manage-tags-dialog", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./manage-tags-dialog.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "idToEditing", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "literal type", + "indexKey": "", + "optional": false, + "description": "", + "line": 38, + "modifierKind": [ + 124 + ] + }, + { + "name": "inputChanged", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 39, + "modifierKind": [ + 124 + ] + }, + { + "name": "projects", + "deprecated": false, + "deprecationMessage": "", + "type": "Project[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 40, + "modifierKind": [ + 123 + ] + }, + { + "name": "showCreateTag", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 41, + "modifierKind": [ + 124 + ] + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 42, + "modifierKind": [ + 123 + ] + }, + { + "name": "tags", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "Tag[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 43, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "cancelEditing", + "args": [ + { + "name": "tag", + "type": "Tag", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 72, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "tag", + "type": "Tag", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "delete", + "args": [ + { + "name": "tag", + "type": "Tag", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 76, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "tag", + "type": "Tag", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getDeleteMessage", + "args": [ + { + "name": "tag", + "type": "Tag", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 85, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "tag", + "type": "Tag", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 68, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 51, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "EditTagComponent", + "type": "component" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatDialogModule", + "type": "module" + }, + { + "name": "MatDividerModule", + "type": "module" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatInputModule", + "type": "module" + }, + { + "name": "MatListModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + }, + { + "name": "TagComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, OnInit } from '@angular/core';\nimport { Tag } from '../../domain/tag';\nimport { Subject, Subscription } from 'rxjs';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { ProjectTagService } from '../../../assets/wise5/services/projectTagService';\nimport { MatIconModule } from '@angular/material/icon';\nimport { TeacherService } from '../teacher.service';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { EditTagComponent } from '../edit-tag/edit-tag.component';\nimport { Project } from '../../domain/project';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatListModule } from '@angular/material/list';\nimport { TagComponent } from '../tag/tag.component';\n\n@Component({\n imports: [\n EditTagComponent,\n MatButtonModule,\n MatDialogModule,\n MatDividerModule,\n MatFormFieldModule,\n MatIconModule,\n MatInputModule,\n MatListModule,\n MatTooltipModule,\n TagComponent\n ],\n selector: 'manage-tags-dialog',\n styleUrl: './manage-tags-dialog.component.scss',\n templateUrl: './manage-tags-dialog.component.html'\n})\nexport class ManageTagsDialogComponent implements OnInit {\n protected idToEditing: { [id: string]: boolean } = {};\n protected inputChanged: Subject = new Subject();\n private projects: Project[];\n protected showCreateTag: boolean;\n private subscriptions: Subscription = new Subscription();\n protected tags: Tag[] = [];\n\n constructor(\n private projectTagService: ProjectTagService,\n private snackBar: MatSnackBar,\n private teacherService: TeacherService\n ) {}\n\n ngOnInit(): void {\n this.teacherService.getPersonalAndSharedProjects().subscribe((projects) => {\n this.projects = projects;\n });\n this.subscriptions.add(\n this.projectTagService.retrieveUserTags().subscribe((tags: Tag[]) => {\n this.tags = tags;\n })\n );\n this.subscriptions.add(\n this.projectTagService.newTag$.subscribe((tag: Tag) => {\n this.tags.push(tag);\n this.projectTagService.sortTags(this.tags);\n })\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n protected cancelEditing(tag: Tag): void {\n this.idToEditing[tag.id] = false;\n }\n\n protected delete(tag: Tag): void {\n if (confirm(this.getDeleteMessage(tag))) {\n this.projectTagService.deleteTag(tag).subscribe((tag: Tag) => {\n this.tags = this.tags.filter((t) => t.id !== tag.id);\n this.snackBar.open($localize`Tag deleted`);\n });\n }\n }\n\n private getDeleteMessage(tag: Tag): string {\n const numProjectsWithTag = this.projects.filter((project: Project) =>\n project.tags.some((projectTag: Tag) => projectTag.id === tag.id)\n ).length;\n const numberOfProjectsMessage =\n numProjectsWithTag === 1\n ? $localize`There is ${numProjectsWithTag} unit with this tag.`\n : $localize`There are ${numProjectsWithTag} units with this tag.`;\n return $localize`Are you sure you want to delete this tag? ` + numberOfProjectsMessage;\n }\n}\n", + "styleUrl": "./manage-tags-dialog.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "projectTagService", + "type": "ProjectTagService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "snackBar", + "type": "MatSnackBar", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "teacherService", + "type": "TeacherService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 43, + "jsdoctags": [ + { + "name": "projectTagService", + "type": "ProjectTagService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "snackBar", + "type": "MatSnackBar", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "teacherService", + "type": "TeacherService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "

    Manage Tags

    \n\n
    \n @if (showCreateTag) {\n \n } @else {\n
    \n \n
    \n }\n \n @for (tag of tags; track tag.id; let tagIndex = $index; let last = $last) {\n
    \n \n
    \n @if (idToEditing[tag.id]) {\n
    \n \n
    \n } @else {\n \n \n \n edit\n \n \n close\n \n }\n
    \n
    \n @if (!last) {\n \n }\n
    \n }\n
    \n
    \n
    \n\n \n\n" + }, + { + "name": "ManageTeamComponent", + "id": "component-ManageTeamComponent-3d2df4053b98cb8754f533dac13c81a1f0917c7ae4cf4f04eafe3a2a02e626bf0feaa9fe67e6405db4ed7bc2267e8b443390deecbb295762d983f951b96380fd", + "file": "src/assets/wise5/classroomMonitor/classroomMonitorComponents/manageStudents/manage-team/manage-team.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "manage-team", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "manage-team.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "team", + "deprecated": false, + "deprecationMessage": "", + "line": 36, + "type": "any", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "avatarColor", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 31, + "modifierKind": [ + 124 + ] + }, + { + "name": "canGradeStudentWork", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 32, + "modifierKind": [ + 124 + ] + }, + { + "name": "isUnassigned", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 33, + "modifierKind": [ + 124 + ] + }, + { + "name": "lgScreen", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 34, + "modifierKind": [ + 124 + ] + }, + { + "name": "mdScreen", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 35, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "canDrop", + "args": [ + { + "name": "drag", + "type": "CdkDrag", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "drop", + "type": "CdkDropList", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 75, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "drag", + "type": "CdkDrag", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "drop", + "type": "CdkDropList", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "changePeriod", + "args": [ + { + "name": "event", + "type": "Event", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 59, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "event", + "type": "Event", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "dragEnter", + "args": [ + { + "name": "event", + "type": "CdkDragEnter", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 67, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "event", + "type": "CdkDragEnter", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "dragExit", + "args": [ + { + "name": "event", + "type": "CdkDragExit", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 71, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "event", + "type": "CdkDragExit", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "drop", + "args": [ + { + "name": "event", + "type": "CdkDragDrop", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 79, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "event", + "type": "CdkDragDrop", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "moveUser", + "args": [ + { + "name": "event", + "type": "CdkDragDrop", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 103, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "event", + "type": "CdkDragDrop", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 53, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "removeUser", + "args": [ + { + "name": "user", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 131, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "user", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "DragDropModule", + "type": "module" + }, + { + "name": "ManageUserComponent", + "type": "component" + }, + { + "name": "MatCardModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import {\n CdkDrag,\n CdkDragDrop,\n CdkDragEnter,\n CdkDragExit,\n CdkDropList,\n DragDropModule,\n transferArrayItem\n} from '@angular/cdk/drag-drop';\nimport { ChangeTeamPeriodDialogComponent } from '../change-team-period-dialog/change-team-period-dialog.component';\nimport { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { ConfigService } from '../../../../services/configService';\nimport { getAvatarColorForWorkgroupId } from '../../../../common/workgroup/workgroup';\nimport { ManageUserComponent } from '../manage-user/manage-user.component';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { MoveUserConfirmDialogComponent } from '../move-user-confirm-dialog/move-user-confirm-dialog.component';\nimport { UpdateWorkgroupService } from '../../../../../../app/services/updateWorkgroupService';\nimport { BreakpointObserver } from '@angular/cdk/layout';\n\n@Component({\n imports: [CommonModule, DragDropModule, ManageUserComponent, MatCardModule, MatIconModule],\n selector: 'manage-team',\n styleUrl: 'manage-team.component.scss',\n templateUrl: 'manage-team.component.html'\n})\nexport class ManageTeamComponent {\n protected avatarColor: string;\n protected canGradeStudentWork: boolean;\n protected isUnassigned: boolean;\n protected lgScreen: boolean;\n protected mdScreen: boolean;\n @Input() team: any;\n\n constructor(\n private breakpointObserver: BreakpointObserver,\n private configService: ConfigService,\n private dialog: MatDialog,\n private snackBar: MatSnackBar,\n private updateWorkgroupService: UpdateWorkgroupService\n ) {\n this.breakpointObserver.observe(['(min-width: 48rem)']).subscribe((result) => {\n this.mdScreen = result.matches;\n });\n this.breakpointObserver.observe(['(min-width: 64rem)']).subscribe((result) => {\n this.lgScreen = result.matches;\n });\n }\n\n ngOnInit(): void {\n this.avatarColor = getAvatarColorForWorkgroupId(this.team.workgroupId);\n this.canGradeStudentWork = this.configService.getPermissions().canGradeStudentWork;\n this.isUnassigned = this.team.workgroupId == null;\n }\n\n protected changePeriod(event: Event): void {\n event.preventDefault();\n this.dialog.open(ChangeTeamPeriodDialogComponent, {\n data: this.team,\n panelClass: 'dialog-sm'\n });\n }\n\n protected dragEnter(event: CdkDragEnter): void {\n event.container.element.nativeElement.classList.add('primary-bg');\n }\n\n protected dragExit(event: CdkDragExit): void {\n event.container.element.nativeElement.classList.remove('primary-bg');\n }\n\n protected canDrop(drag: CdkDrag, drop: CdkDropList): boolean {\n return !drop.element.nativeElement.classList.contains('unassigned') && drop.data.length < 3;\n }\n\n protected drop(event: CdkDragDrop): void {\n const containerEl = event.container.element.nativeElement;\n const itemEl = event.item.element.nativeElement;\n if (event.previousContainer !== event.container) {\n itemEl.style.opacity = '.4';\n this.dialog\n .open(MoveUserConfirmDialogComponent, {\n panelClass: 'dialog-sm',\n data: event.item.data != null\n })\n .afterClosed()\n .subscribe((doMoveUser: boolean) => {\n if (doMoveUser) {\n this.moveUser(event);\n }\n containerEl.classList.remove('primary-bg');\n itemEl.style.opacity = '1';\n });\n } else {\n containerEl.classList.remove('primary-bg');\n itemEl.style.opacity = '1';\n }\n }\n\n private moveUser(event: CdkDragDrop): void {\n this.updateWorkgroupService\n .moveMember(event.item.data.user.id, this.team.workgroupId)\n .subscribe({\n next: (workgroupId: number) => {\n const previousIndex = event.previousContainer.data.findIndex(\n (user) => user === event.item.data.user\n );\n transferArrayItem(\n event.previousContainer.data,\n event.container.data,\n previousIndex,\n event.currentIndex\n );\n this.configService\n .retrieveConfig(`/api/config/classroomMonitor/${this.configService.getRunId()}`)\n .subscribe({\n next: () => {\n this.snackBar.open($localize`Moved student to Team ${workgroupId}.`);\n }\n });\n },\n error: () => {\n this.snackBar.open($localize`Error: Could not move student.`);\n }\n });\n }\n\n protected removeUser(user: any): void {\n this.team.users.splice(this.team.users.indexOf(user), 1);\n }\n}\n", + "styleUrl": "manage-team.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "breakpointObserver", + "type": "BreakpointObserver", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "snackBar", + "type": "MatSnackBar", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "updateWorkgroupService", + "type": "UpdateWorkgroupService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 36, + "jsdoctags": [ + { + "name": "breakpointObserver", + "type": "BreakpointObserver", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "snackBar", + "type": "MatSnackBar", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "updateWorkgroupService", + "type": "UpdateWorkgroupService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "\n
    \n @if (team.workGroupId) {\n account_circle\n }\n @if (isUnassigned) {\n

    Students without a team

    \n } @else {\n

    Team {{ team.workgroupId }}

    \n }\n \n \n @if (this.team.users.length === 0) {\n No students\n } @else if (canGradeStudentWork && !isUnassigned) {\n Change Period\n }\n \n
    \n \n \n @for (user of team.users; track $index) {\n \n \n \n }\n \n \n\n" + }, + { + "name": "ManageTeamsComponent", + "id": "component-ManageTeamsComponent-2623d7693792cedfe5f5e9f02a65baceb97b612ff5d72adcfdb9cdc63cefae6887656cc927e456527fb05a41189e19a8cf299ce7777140a4e6173b20ea0aa162", + "file": "src/assets/wise5/classroomMonitor/classroomMonitorComponents/manageStudents/manage-teams/manage-teams.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "manage-teams", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "manage-teams.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "teams", + "deprecated": false, + "deprecationMessage": "", + "line": 12, + "type": "any", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [], + "methodsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "ManageTeamComponent", + "type": "component" + }, + { + "name": "KeyValuePipe", + "type": "pipe" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input } from '@angular/core';\nimport { ManageTeamComponent } from '../manage-team/manage-team.component';\nimport { KeyValuePipe } from '@angular/common';\n\n@Component({\n imports: [ManageTeamComponent, KeyValuePipe],\n selector: 'manage-teams',\n styleUrl: 'manage-teams.component.scss',\n templateUrl: 'manage-teams.component.html'\n})\nexport class ManageTeamsComponent {\n @Input() protected teams: any;\n}\n", + "styleUrl": "manage-teams.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [], + "templateData": "
      \n @for (team of teams | keyvalue; track team) {\n
    • \n \n
    • \n }\n
    \n" + }, + { + "name": "ManageUserComponent", + "id": "component-ManageUserComponent-13814011cc9c1a5ebe7224fa33293084efdef5e268cb846c7772713210d2aadb86db6535eff00580807af8f2a06760784eb4b0a5831154a69d2abb1239a76018", + "file": "src/assets/wise5/classroomMonitor/classroomMonitorComponents/manageStudents/manage-user/manage-user.component.ts", + "encapsulation": [ + "ViewEncapsulation.None" + ], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "manage-user", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "manage-user.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "user", + "deprecated": false, + "deprecationMessage": "", + "line": 21, + "type": "any", + "decorators": [] + } + ], + "outputsClass": [ + { + "name": "removeUserEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 22, + "type": "EventEmitter" + } + ], + "propertiesClass": [], + "methodsClass": [ + { + "name": "changePassword", + "args": [ + { + "name": "event", + "type": "Event", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 67, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "event", + "type": "Event", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "openDialog", + "args": [ + { + "name": "event", + "type": "Event", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialogComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "MatDialogRef", + "typeParameters": [], + "line": 71, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "event", + "type": "Event", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialogComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "performRemoveUser", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 45, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "removeUser", + "args": [ + { + "name": "event", + "type": "Event", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 35, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "event", + "type": "Event", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "viewUserInfo", + "args": [ + { + "name": "event", + "type": "Event", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 31, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "event", + "type": "Event", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + }, + { + "name": "ShowStudentInfoComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { ChangeStudentPasswordDialogComponent } from '../change-student-password-dialog/change-student-password-dialog.component';\nimport { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { ConfigService } from '../../../../services/configService';\nimport { HttpClient } from '@angular/common/http';\nimport { ManageShowStudentInfoComponent } from '../manage-show-student-info/manage-show-student-info.component';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { RemoveUserConfirmDialogComponent } from '../remove-user-confirm-dialog/remove-user-confirm-dialog.component';\nimport { ShowStudentInfoComponent } from '../show-student-info/show-student-info.component';\n\n@Component({\n encapsulation: ViewEncapsulation.None,\n imports: [MatIconModule, MatTooltipModule, ShowStudentInfoComponent],\n selector: 'manage-user',\n styleUrl: 'manage-user.component.scss',\n templateUrl: 'manage-user.component.html'\n})\nexport class ManageUserComponent {\n @Input() user: any;\n @Output() removeUserEvent: EventEmitter = new EventEmitter();\n\n constructor(\n private dialog: MatDialog,\n private configService: ConfigService,\n private http: HttpClient,\n private snackBar: MatSnackBar\n ) {}\n\n protected viewUserInfo(event: Event): void {\n this.openDialog(event, ManageShowStudentInfoComponent);\n }\n\n protected removeUser(event: Event): void {\n this.openDialog(event, RemoveUserConfirmDialogComponent)\n .afterClosed()\n .subscribe((doRemoveUser: boolean) => {\n if (doRemoveUser) {\n this.performRemoveUser();\n }\n });\n }\n\n performRemoveUser(): void {\n const runId = this.configService.getRunId();\n const studentId = this.user.id;\n this.http.delete(`/api/teacher/run/${runId}/student/${studentId}/remove`).subscribe({\n next: () => {\n this.removeUserEvent.emit(this.user);\n this.configService.retrieveConfig(`/api/config/classroomMonitor/${runId}`).subscribe({\n next: () => {\n this.snackBar.open(\n $localize`Removed ${this.user.name} (${this.user.username}) from unit.`\n );\n }\n });\n },\n error: () => {\n this.snackBar.open(\n $localize`Error: Could not remove ${this.user.name} (${this.user.username}) from unit.`\n );\n }\n });\n }\n\n protected changePassword(event: Event): void {\n this.openDialog(event, ChangeStudentPasswordDialogComponent);\n }\n\n private openDialog(event: Event, dialogComponent: any): MatDialogRef {\n event.preventDefault();\n return this.dialog.open(dialogComponent, {\n data: this.user,\n panelClass: 'dialog-sm'\n });\n }\n}\n", + "styleUrl": "manage-user.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "snackBar", + "type": "MatSnackBar", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 22, + "jsdoctags": [ + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "http", + "type": "HttpClient", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "snackBar", + "type": "MatSnackBar", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "
    \n \n \n \n info\n \n @if (user.isGoogleUser) {\n \n \n \n } @else {\n \n vpn_key\n \n }\n \n clear\n \n
    \n" + }, + { + "name": "MatchAuthoringComponent", + "id": "component-MatchAuthoringComponent-b9ffe1944c29b0299f97114fcafb05489ec72c82cacdf66aed1a68b53fe78a2f46f4310bf283c34ebabc2f7addc53bc72e38ecfab9b8e3b213d5a69a4fd0b4ca", + "file": "src/assets/wise5/components/match/match-authoring/match-authoring.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "match-authoring.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "defaultSourceBucketId", + "defaultValue": "'0'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 34, + "modifierKind": [ + 123 + ] + }, + { + "name": "feedbackChange", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 35, + "modifierKind": [ + 124 + ] + }, + { + "name": "allowedConnectedComponentTypes", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "idToOrder", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "inputChange", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "promptChange", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + } + ], + "methodsClass": [ + { + "name": "addBucket", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 63, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "addBucketToFeedback", + "args": [ + { + "name": "bucketId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 199, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "bucketId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addChoice", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 53, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "addChoiceToFeedback", + "args": [ + { + "name": "choiceId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 190, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "choiceId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "componentHasFeedback", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 252, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "createFeedbackObject", + "args": [ + { + "name": "choiceId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "feedback", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isCorrect", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "position", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + }, + { + "name": "incorrectPositionFeedback", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 215, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "choiceId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "feedback", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "isCorrect", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "position", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + }, + { + "name": "incorrectPositionFeedback", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "deleteBucket", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 180, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "deleteChoice", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 122, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getBucketNameById", + "args": [ + { + "name": "bucketId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 285, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "bucketId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getChoiceTextById", + "args": [ + { + "name": "choiceId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 280, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "choiceId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isCorrectClicked", + "args": [ + { + "name": "feedback", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 267, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "feedback", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isNonEmpty", + "args": [ + { + "name": "str", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 263, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "str", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "moveBucketDown", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 138, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "moveBucketDownInBucketFeedback", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 164, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "moveBucketDownInBuckets", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 150, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "moveBucketInBucketFeedback", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "amountToShift", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 168, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "amountToShift", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "moveBucketInBuckets", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "amountToShift", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 154, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "amountToShift", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "moveBucketUp", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 130, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "moveBucketUpInBucketFeedback", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 160, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "moveBucketUpInBuckets", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 146, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "moveChoiceDown", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 82, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "moveChoiceDownInAllBucketFeedback", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 108, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "moveChoiceDownInChoices", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 94, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "moveChoiceInAllBucketFeedback", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "amountToShift", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 112, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "amountToShift", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "moveChoiceInChoices", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "amountToShift", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 98, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "amountToShift", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "moveChoiceUp", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 74, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "moveChoiceUpInAllBucketFeedback", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 104, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "moveChoiceUpInChoices", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 90, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 37, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "processSelectedAsset", + "args": [ + { + "name": "value", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 276, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "value", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "removeBucketFromFeedback", + "args": [ + { + "name": "bucketId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 239, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "bucketId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "removeChoiceFromFeedback", + "args": [ + { + "name": "choiceId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 231, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "choiceId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "turnOnSubmitButtonIfFeedbackExists", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 47, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "assetSelected", + "args": [ + { + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 100, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "componentChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 73, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "confirmAndRemove", + "args": [ + { + "name": "message", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "array", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 110, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "message", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "array", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "deleteStarterState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 81, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "getComponent", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 106, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "getComponents", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 102, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "isForThisComponent", + "args": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 77, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "moveObjectDown", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 122, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "moveObjectUp", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 117, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 65, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "promptChanged", + "args": [ + { + "name": "prompt", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 69, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "prompt", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "saveStarterState", + "args": [ + { + "name": "starterState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "starterState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "setShowSubmitButtonValue", + "args": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 85, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "EditComponentPrompt", + "type": "component" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatCheckboxModule", + "type": "module" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatInputModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + }, + { + "name": "TranslatableAssetChooserComponent", + "type": "component" + }, + { + "name": "TranslatableInputComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { AbstractComponentAuthoring } from '../../../authoringTool/components/AbstractComponentAuthoring';\nimport { Component } from '@angular/core';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport { EditComponentPrompt } from '../../../../../app/authoring-tool/edit-component-prompt/edit-component-prompt.component';\nimport { FormsModule } from '@angular/forms';\nimport { generateRandomKey } from '../../../common/string/string';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { Subject } from 'rxjs';\nimport { TranslatableAssetChooserComponent } from '../../../authoringTool/components/translatable-asset-chooser/translatable-asset-chooser.component';\nimport { TranslatableInputComponent } from '../../../authoringTool/components/translatable-input/translatable-input.component';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\n\n@Component({\n imports: [\n EditComponentPrompt,\n FormsModule,\n MatButtonModule,\n MatCheckboxModule,\n MatFormFieldModule,\n MatIconModule,\n MatInputModule,\n MatTooltipModule,\n TranslatableAssetChooserComponent,\n TranslatableInputComponent\n ],\n styleUrl: 'match-authoring.component.scss',\n templateUrl: 'match-authoring.component.html'\n})\nexport class MatchAuthoringComponent extends AbstractComponentAuthoring {\n private defaultSourceBucketId: string = '0';\n protected feedbackChange: Subject = new Subject();\n\n ngOnInit(): void {\n super.ngOnInit();\n this.subscriptions.add(\n this.feedbackChange.pipe(debounceTime(1000), distinctUntilChanged()).subscribe(() => {\n this.turnOnSubmitButtonIfFeedbackExists();\n this.componentChanged();\n })\n );\n }\n\n private turnOnSubmitButtonIfFeedbackExists() {\n if (this.componentHasFeedback()) {\n this.setShowSubmitButtonValue(true);\n }\n }\n\n protected addChoice(): void {\n const newChoice = {\n id: generateRandomKey(),\n value: ''\n };\n this.componentContent.choices.push(newChoice);\n this.addChoiceToFeedback(newChoice.id);\n this.componentChanged();\n }\n\n protected addBucket(): void {\n const newBucket = {\n id: generateRandomKey(),\n value: '',\n type: 'bucket'\n };\n this.componentContent.buckets.push(newBucket);\n this.addBucketToFeedback(newBucket.id);\n this.componentChanged();\n }\n\n protected moveChoiceUp(index: number): void {\n if (index != 0) {\n this.moveChoiceUpInChoices(index);\n this.moveChoiceUpInAllBucketFeedback(index);\n this.componentChanged();\n }\n }\n\n protected moveChoiceDown(index: number): void {\n if (index < this.componentContent.choices.length - 1) {\n this.moveChoiceDownInChoices(index);\n this.moveChoiceDownInAllBucketFeedback(index);\n this.componentChanged();\n }\n }\n\n private moveChoiceUpInChoices(index: number) {\n this.moveChoiceInChoices(index, -1);\n }\n\n private moveChoiceDownInChoices(index: number) {\n this.moveChoiceInChoices(index, 1);\n }\n\n private moveChoiceInChoices(index: number, amountToShift: number) {\n const choice = this.componentContent.choices[index];\n this.componentContent.choices.splice(index, 1);\n this.componentContent.choices.splice(index + amountToShift, 0, choice);\n }\n\n private moveChoiceUpInAllBucketFeedback(index: number) {\n this.moveChoiceInAllBucketFeedback(index, -1);\n }\n\n private moveChoiceDownInAllBucketFeedback(index: number) {\n this.moveChoiceInAllBucketFeedback(index, 1);\n }\n\n private moveChoiceInAllBucketFeedback(index: number, amountToShift: number) {\n const feedback = this.componentContent.feedback;\n for (const bucketFeedbackObj of feedback) {\n const bucketFeedbackChoices = bucketFeedbackObj.choices;\n const tempChoice = bucketFeedbackChoices[index];\n bucketFeedbackChoices.splice(index, 1);\n bucketFeedbackChoices.splice(index + amountToShift, 0, tempChoice);\n }\n }\n\n protected deleteChoice(index: number): void {\n if (confirm($localize`Are you sure you want to delete this choice?`)) {\n const deletedChoice = this.componentContent.choices.splice(index, 1);\n this.removeChoiceFromFeedback(deletedChoice[0].id);\n this.componentChanged();\n }\n }\n\n protected moveBucketUp(index: number): void {\n if (index > 0) {\n this.moveBucketUpInBuckets(index);\n this.moveBucketUpInBucketFeedback(index);\n this.componentChanged();\n }\n }\n\n protected moveBucketDown(index: number): void {\n if (index < this.componentContent.buckets.length - 1) {\n this.moveBucketDownInBuckets(index);\n this.moveBucketDownInBucketFeedback(index);\n this.componentChanged();\n }\n }\n\n private moveBucketUpInBuckets(index: number) {\n this.moveBucketInBuckets(index, -1);\n }\n\n private moveBucketDownInBuckets(index: number) {\n this.moveBucketInBuckets(index, 1);\n }\n\n private moveBucketInBuckets(index: number, amountToShift: number) {\n const bucket = this.componentContent.buckets[index];\n this.componentContent.buckets.splice(index, 1);\n this.componentContent.buckets.splice(index + amountToShift, 0, bucket);\n }\n\n private moveBucketUpInBucketFeedback(index: number) {\n this.moveBucketInBucketFeedback(index, -1);\n }\n\n private moveBucketDownInBucketFeedback(index: number) {\n this.moveBucketInBucketFeedback(index, 1);\n }\n\n private moveBucketInBucketFeedback(index: number, amountToShift: number) {\n // the bucket feedback index for authored buckets starts at 1 because the source bucket is at 0\n const bucketFeedbackIndex = index + 1;\n const bucketFeedbackObj = this.componentContent.feedback[bucketFeedbackIndex];\n this.componentContent.feedback.splice(bucketFeedbackIndex, 1);\n this.componentContent.feedback.splice(\n bucketFeedbackIndex + amountToShift,\n 0,\n bucketFeedbackObj\n );\n }\n\n protected deleteBucket(index: number): void {\n if (confirm($localize`Are you sure you want to delete this bucket?`)) {\n const deletedBucket = this.componentContent.buckets.splice(index, 1);\n if (deletedBucket != null && deletedBucket.length > 0) {\n this.removeBucketFromFeedback(deletedBucket[0].id);\n }\n this.componentChanged();\n }\n }\n\n private addChoiceToFeedback(choiceId: string): void {\n const feedback = this.componentContent.feedback;\n for (const bucketFeedback of feedback) {\n const feedbackText = '';\n const isCorrect = false;\n bucketFeedback.choices.push(this.createFeedbackObject(choiceId, feedbackText, isCorrect));\n }\n }\n\n private addBucketToFeedback(bucketId: string): void {\n const feedback = this.componentContent.feedback;\n const bucket = {\n bucketId: bucketId,\n choices: []\n };\n const choices = this.componentContent.choices;\n for (const choice of choices) {\n const choiceId = choice.id;\n const feedbackText = '';\n const isCorrect = false;\n bucket.choices.push(this.createFeedbackObject(choiceId, feedbackText, isCorrect));\n }\n feedback.push(bucket);\n }\n\n private createFeedbackObject(\n choiceId: string,\n feedback: string,\n isCorrect: boolean,\n position: number = null,\n incorrectPositionFeedback: string = null\n ): any {\n return {\n choiceId: choiceId,\n feedback: feedback,\n isCorrect: isCorrect,\n position: position,\n incorrectPositionFeedback: incorrectPositionFeedback\n };\n }\n\n private removeChoiceFromFeedback(choiceId: string): void {\n for (const bucketFeedback of this.componentContent.feedback) {\n bucketFeedback.choices = bucketFeedback.choices.filter((choice) => {\n return choice.choiceId !== choiceId;\n });\n }\n }\n\n private removeBucketFromFeedback(bucketId: string): void {\n const feedback = this.componentContent.feedback;\n for (let f = 0; f < feedback.length; f++) {\n const bucketFeedback = feedback[f];\n if (bucketFeedback != null) {\n if (bucketId === bucketFeedback.bucketId) {\n feedback.splice(f, 1);\n break;\n }\n }\n }\n }\n\n private componentHasFeedback(): boolean {\n for (const feedback of this.componentContent.feedback) {\n for (const choice of feedback.choices) {\n if (choice.isCorrect || this.isNonEmpty(choice.feedback)) {\n return true;\n }\n }\n }\n return false;\n }\n\n private isNonEmpty(str: string): boolean {\n return str != null && str != '';\n }\n\n protected isCorrectClicked(feedback: any): void {\n if (!feedback.isCorrect) {\n delete feedback.position;\n delete feedback.incorrectPositionFeedback;\n }\n this.turnOnSubmitButtonIfFeedbackExists();\n this.componentChanged();\n }\n\n protected processSelectedAsset(value: string): string {\n return `\"${value}\"`;\n }\n\n protected getChoiceTextById(choiceId: string): string {\n const choice = this.componentContent.choices.find((choice) => choice.id === choiceId);\n return choice ? choice.value : null;\n }\n\n protected getBucketNameById(bucketId: string): string {\n if (bucketId === this.defaultSourceBucketId) {\n const choicesLabel = this.componentContent.choicesLabel;\n return choicesLabel ? choicesLabel : $localize`Choices`;\n }\n const bucket = this.componentContent.buckets.find((bucket) => bucket.id === bucketId);\n return bucket ? bucket.value : null;\n }\n}\n", + "styleUrl": "match-authoring.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [ + "AbstractComponentAuthoring" + ], + "templateData": "\n

    \n \n Show source and target buckets side-by-side\n \n

    \n

    \n \n Show choices after target buckets\n \n

    \n

    \n \n Students can put each choice in multiple buckets\n \n

    \n
    \n Choices\n \n add\n \n @if (componentContent.choices.length === 0) {\n
    There are no choices. Click the \"Add choice\" button to add a choice.
    \n }\n @for (\n choice of componentContent.choices;\n track choice.id;\n let choiceIndex = $index, isFirst = $first, isLast = $last\n ) {\n
    \n \n \n \n arrow_upward\n \n \n arrow_downward\n \n \n delete\n \n
    \n }\n
    \n
    \n \n
    \n Target buckets\n \n add\n \n @if (componentContent.buckets.length === 0) {\n
    \n There are no target buckets. Click the \"Add target bucket\" button to add a bucket.\n
    \n }\n @for (\n bucket of componentContent.buckets;\n track bucket.id;\n let bucketIndex = $index, isFirst = $first, isLast = $last\n ) {\n
    \n \n \n \n arrow_upward\n \n \n arrow_downward\n \n \n delete\n \n
    \n }\n
    \n
    \n
    \n

    Feedback

    \n \n Choices need to be ordered within buckets\n \n
    \n @for (bucketFeedback of componentContent.feedback; track $index) {\n
    \n

    Bucket name: {{ getBucketNameById(bucketFeedback.bucketId) }}

    \n @for (choiceFeedback of bucketFeedback.choices; track $index) {\n
    \n Choice: {{ getChoiceTextById(choiceFeedback.choiceId) }} \n
    \n \n \n Is correct\n \n
    \n @if (componentContent.ordered && choiceFeedback.isCorrect) {\n
    \n \n Position\n \n \n \n
    \n }\n
    \n }\n
    \n }\n
    \n" + }, + { + "name": "MatchChoiceItemComponent", + "id": "component-MatchChoiceItemComponent-bfc43c70dc6f3a6407474439e1ee609e3b74d901e26c67b815bc97d1d78004ea86d8ed44be14a71a7140eaa233862ff085c5c06e74b42e84054c8ab366d5cf4f", + "file": "src/assets/wise5/components/match/match-choice-item/match-choice-item.component.ts", + "encapsulation": [ + "ViewEncapsulation.None" + ], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "match-choice-item", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "match-choice-item.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "buckets", + "deprecated": false, + "deprecationMessage": "", + "line": 22, + "type": "any", + "decorators": [] + }, + { + "name": "hasCorrectAnswer", + "deprecated": false, + "deprecationMessage": "", + "line": 23, + "type": "boolean", + "decorators": [] + }, + { + "name": "isDisabled", + "deprecated": false, + "deprecationMessage": "", + "line": 24, + "type": "boolean", + "decorators": [] + }, + { + "name": "item", + "deprecated": false, + "deprecationMessage": "", + "line": 25, + "type": "any", + "decorators": [] + } + ], + "outputsClass": [ + { + "name": "onStudentDataChanged", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 26, + "type": "EventEmitter" + } + ], + "propertiesClass": [], + "methodsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "DeleteChoiceButtonComponent", + "type": "component" + }, + { + "name": "MatCardModule", + "type": "module" + }, + { + "name": "MatchStatusIconComponent", + "type": "component" + }, + { + "name": "MatIconModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { DeleteChoiceButtonComponent } from '../delete-choice-button/delete-choice-button.component';\nimport { MatchStatusIconComponent } from '../match-status-icon/match-status-icon.component';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatCardModule } from '@angular/material/card';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n encapsulation: ViewEncapsulation.None,\n imports: [\n CommonModule,\n DeleteChoiceButtonComponent,\n MatCardModule,\n MatchStatusIconComponent,\n MatIconModule\n ],\n selector: 'match-choice-item',\n styleUrl: 'match-choice-item.component.scss',\n templateUrl: 'match-choice-item.component.html'\n})\nexport class MatchChoiceItemComponent {\n @Input() buckets: any;\n @Input() hasCorrectAnswer: boolean;\n @Input() isDisabled: boolean;\n @Input() item: any;\n @Output() onStudentDataChanged = new EventEmitter();\n}\n", + "styleUrl": "match-choice-item.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [], + "templateData": "\n
    \n @if (!isDisabled) {\n drag_indicator\n }\n
    \n @if (item.studentCreated) {\n \n }\n @if (item.studentCreated) {\n \n }\n
    \n @if (item.feedback) {\n \n @if (item.status) {\n \n }\n
    \n \n }\n
    \n" + }, + { + "name": "MatchFeedbackSectionComponent", + "id": "component-MatchFeedbackSectionComponent-2d3a7f13f93c169200a60a25a5fc968fa5123ab0f1f4b0bd044167c1d5d76d10b2dae368d36541dab396fe39ff79fbd4b4f1014781ec3ebdbd01d9f87ff74e1a", + "file": "src/assets/wise5/components/match/match-student/match-feedback-section/match-feedback-section.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "match-feedback-section", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "match-feedback-section.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "line": 9, + "type": "MatchContent", + "decorators": [] + }, + { + "name": "hasCorrectAnswer", + "deprecated": false, + "deprecationMessage": "", + "line": 10, + "type": "boolean", + "decorators": [] + }, + { + "name": "isCorrect", + "deprecated": false, + "deprecationMessage": "", + "line": 11, + "type": "boolean", + "decorators": [] + }, + { + "name": "isLatestComponentStateSubmit", + "deprecated": false, + "deprecationMessage": "", + "line": 12, + "type": "boolean", + "decorators": [] + }, + { + "name": "submitCounter", + "deprecated": false, + "deprecationMessage": "", + "line": 13, + "type": "number", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [], + "methodsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input } from '@angular/core';\nimport { MatchContent } from '../../MatchContent';\n\n@Component({\n selector: 'match-feedback-section',\n templateUrl: 'match-feedback-section.component.html'\n})\nexport class MatchFeedbackSectionComponent {\n @Input() componentContent: MatchContent;\n @Input() hasCorrectAnswer: boolean;\n @Input() isCorrect: boolean;\n @Input() isLatestComponentStateSubmit: boolean;\n @Input() submitCounter: number;\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [], + "templateData": "@if (hasCorrectAnswer) {\n @if (componentContent.maxSubmitCount != null) {\n

    \n You have used {{ submitCounter }} of {{ componentContent.maxSubmitCount }}\n {componentContent.maxSubmitCount, plural, =1 {attempt} other {attempts}}.\n

    \n }\n @if (isLatestComponentStateSubmit && hasCorrectAnswer) {\n @if (isCorrect) {\n

    Correct

    \n } @else {\n

    Incorrect

    \n }\n }\n}\n" + }, + { + "name": "MatchShowWorkComponent", + "id": "component-MatchShowWorkComponent-5f8968a8da5d83e43565fa87856e31e5e1c72c692d7b50d1bf8033aa2195fb5745a08b5b3d481accdbcefad228a691d1a4118b6224144c6722bbfa5abc9e6fec", + "file": "src/assets/wise5/components/match/match-show-work/match-show-work.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "match-show-work", + "styleUrls": [ + "../match-student/match-student-default/match-student-default.component.scss", + "match-show-work.component.scss" + ], + "styles": [], + "templateUrl": [ + "match-show-work.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "line": 8, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "componentState", + "deprecated": false, + "deprecationMessage": "", + "line": 9, + "type": "any", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "isRevision", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "line": 10, + "type": "boolean", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 7, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "hasCorrectAnswer", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 20, + "modifierKind": [ + 124 + ] + }, + { + "name": "sourceBucket", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 21, + "modifierKind": [ + 124 + ] + }, + { + "name": "sourceBucketId", + "defaultValue": "'0'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 22, + "modifierKind": [ + 123 + ] + }, + { + "name": "targetBuckets", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 23, + "modifierKind": [ + 124 + ] + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "inheritance": { + "file": "ComponentShowWorkDirective" + } + } + ], + "methodsClass": [ + { + "name": "initializeBuckets", + "args": [ + { + "name": "buckets", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 39, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "buckets", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 33, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "setItemStatuses", + "args": [ + { + "name": "items", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 50, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "items", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngAfterViewInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 33, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentShowWorkDirective" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "MatchChoiceItemComponent", + "type": "component" + }, + { + "name": "MatchFeedbackSectionComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { NodeService } from '../../../services/nodeService';\nimport { ProjectService } from '../../../services/projectService';\nimport { ComponentShowWorkDirective } from '../../component-show-work.directive';\nimport { MatchService } from '../matchService';\nimport { MatchFeedbackSectionComponent } from '../match-student/match-feedback-section/match-feedback-section.component';\nimport { CommonModule } from '@angular/common';\nimport { MatchChoiceItemComponent } from '../match-choice-item/match-choice-item.component';\n\n@Component({\n imports: [CommonModule, MatchChoiceItemComponent, MatchFeedbackSectionComponent],\n selector: 'match-show-work',\n styleUrls: [\n '../match-student/match-student-default/match-student-default.component.scss',\n 'match-show-work.component.scss'\n ],\n templateUrl: 'match-show-work.component.html'\n})\nexport class MatchShowWorkComponent extends ComponentShowWorkDirective {\n protected hasCorrectAnswer: boolean;\n protected sourceBucket: any;\n private sourceBucketId = '0';\n protected targetBuckets: any[] = [];\n\n constructor(\n protected matchService: MatchService,\n protected nodeService: NodeService,\n protected projectService: ProjectService\n ) {\n super(nodeService, projectService);\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n this.hasCorrectAnswer = this.matchService.componentHasCorrectAnswer(this.componentContent);\n this.initializeBuckets(this.componentState.studentData.buckets);\n }\n\n private initializeBuckets(buckets: any[]): void {\n buckets.forEach((bucket) => {\n this.setItemStatuses(bucket.items);\n if (bucket.id === this.sourceBucketId) {\n this.sourceBucket = bucket;\n } else {\n this.targetBuckets.push(bucket);\n }\n });\n }\n\n private setItemStatuses(items: any[]): void {\n items.forEach((item) => this.matchService.setItemStatus(item, this.hasCorrectAnswer));\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": [ + { + "data": "@use 'style/abstracts/variables';\n\n.match {\n margin: 0 -4px;\n}\n\n.bucket {\n border-radius: variables.$button-border-radius;\n margin: 4px;\n}\n\n.bucket-title {\n padding: 8px 12px 0;\n\n h3 {\n margin: 0;\n }\n}\n\n.items {\n column-gap: 0;\n margin: 0;\n padding: 4px;\n height: 100%;\n min-height: 48px;\n border-bottom-left-radius: variables.$button-border-radius;\n border-bottom-right-radius: variables.$button-border-radius;\n transition: background-color 250ms;\n}\n\n.item {\n padding: 4px;\n list-style-type: none;\n -webkit-column-break-inside: avoid;\n page-break-inside: avoid;\n break-inside: avoid;\n\n &:not(.disabled) {\n cursor: move;\n }\n}\n\n.target {\n height: 100%;\n}\n\n.cdk-drag-placeholder {\n opacity: .4;\n}\n\ncomponent-save-submit-buttons {\n display: block;\n margin-top: 16px;\n margin-bottom: 8px;\n}\n", + "styleUrl": "../match-student/match-student-default/match-student-default.component.scss" + }, + { + "data": ".match {\n margin: 0;\n}\n", + "styleUrl": "match-show-work.component.scss" + } + ], + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "matchService", + "type": "MatchService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 23, + "jsdoctags": [ + { + "name": "matchService", + "type": "MatchService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "ComponentShowWorkDirective" + ], + "templateData": "
    \n
    \n \n \n
    \n

    \n
    \n \n @for (item of sourceBucket.items; track item.id) {\n
  • \n \n
  • \n }\n \n
    \n
    \n \n @for (bucket of targetBuckets; track bucket.id) {\n \n
    \n
    \n

    \n
    \n
      \n @for (item of bucket.items; track item.id) {\n
    • \n \n
    • \n }\n
    \n
    \n \n }\n \n \n \n\n" + }, + { + "name": "MatchStatusIconComponent", + "id": "component-MatchStatusIconComponent-67e9dd6f4e9d44d86346299946dc48f98cb4efc69780f5f0d29eeb7b1e410f72c053e7fc7a0a2e64e23cc25d6e67b5c68cb254dd88214e8793e38201309c938f", + "file": "src/assets/wise5/components/match/match-status-icon/match-status-icon.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "match-status-icon", + "styleUrls": [], + "styles": [], + "template": "@switch (status) {\n @case ('correct') {\n check\n }\n @case ('warn') {\n warning\n }\n @case ('incorrect') {\n clear\n }\n}\n", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "status", + "deprecated": false, + "deprecationMessage": "", + "line": 22, + "type": "string", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [], + "methodsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatIconModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n imports: [MatIconModule],\n selector: 'match-status-icon',\n template: `\n @switch (status) {\n @case ('correct') {\n check\n }\n @case ('warn') {\n warning\n }\n @case ('incorrect') {\n clear\n }\n }\n `\n})\nexport class MatchStatusIconComponent {\n @Input() status: string;\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [] + }, + { + "name": "MatchStudent", + "id": "component-MatchStudent-a2540d4a8285bec45fce2a51ae484f63424168a006ee87749e55899c2efff8499c487efab581f5325071ce6ef9df52d2b4fe44fab9e15248795624d5ec7311fb", + "file": "src/assets/wise5/components/match/match-student/match-student.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "template": "
    ", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "component", + "deprecated": false, + "deprecationMessage": "", + "line": 18, + "type": "any", + "decorators": [] + }, + { + "name": "componentState", + "deprecated": false, + "deprecationMessage": "", + "line": 20, + "type": "any", + "decorators": [] + }, + { + "name": "mode", + "deprecated": false, + "deprecationMessage": "", + "line": 21, + "type": "string", + "decorators": [] + }, + { + "name": "workgroupId", + "deprecated": false, + "deprecationMessage": "", + "line": 22, + "type": "number", + "decorators": [] + } + ], + "outputsClass": [ + { + "name": "saveComponentStateEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 23, + "type": "EventEmitter" + } + ], + "propertiesClass": [ + { + "name": "componentElementRef", + "deprecated": false, + "deprecationMessage": "", + "type": "ElementRef", + "indexKey": "", + "optional": false, + "description": "", + "line": 24, + "decorators": [ + { + "name": "ViewChild", + "stringifiedArguments": "'component'" + } + ], + "modifierKind": [ + 171, + 123 + ] + }, + { + "name": "componentRef", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 19 + } + ], + "methodsClass": [ + { + "name": "ngAfterViewInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 31, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 51, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import {\n ApplicationRef,\n Component,\n ElementRef,\n EnvironmentInjector,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n createComponent\n} from '@angular/core';\nimport { MatchStudentChoiceReuseComponent } from './match-student-choice-reuse/match-student-choice-reuse.component';\nimport { MatchStudentDefaultComponent } from './match-student-default/match-student-default.component';\nimport { MatchContent } from '../MatchContent';\n\n@Component({ template: '
    ' })\nexport class MatchStudent {\n @Input() component: any;\n componentRef: any;\n @Input() componentState: any;\n @Input() mode: string;\n @Input() workgroupId: number;\n @Output() saveComponentStateEvent: EventEmitter = new EventEmitter();\n @ViewChild('component') private componentElementRef: ElementRef;\n\n constructor(\n private applicationRef: ApplicationRef,\n private injector: EnvironmentInjector\n ) {}\n\n ngAfterViewInit(): void {\n this.componentRef = createComponent(\n (this.component.content as MatchContent).choiceReuseEnabled\n ? MatchStudentChoiceReuseComponent\n : MatchStudentDefaultComponent,\n {\n hostElement: this.componentElementRef.nativeElement,\n environmentInjector: this.injector\n }\n );\n Object.assign(this.componentRef.instance, {\n component: this.component,\n componentState: this.componentState,\n mode: this.mode,\n workgroupId: this.workgroupId,\n saveComponentStateEvent: this.saveComponentStateEvent\n });\n this.applicationRef.attachView(this.componentRef.hostView);\n }\n\n ngOnDestroy(): void {\n this.componentRef.destroy();\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "applicationRef", + "type": "ApplicationRef", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "injector", + "type": "EnvironmentInjector", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 24, + "jsdoctags": [ + { + "name": "applicationRef", + "type": "ApplicationRef", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "injector", + "type": "EnvironmentInjector", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [] + }, + { + "name": "MatchStudentChoiceReuseComponent", + "id": "component-MatchStudentChoiceReuseComponent-1de2cc03fa45ffc1b62c22bfce3dff16ed02be4ff1d105c46b35a18943aa29b551c39b3bdea9c581d21c7b395d11580a4eeba92b2cd2f1b51fc6b4c163956060", + "file": "src/assets/wise5/components/match/match-student/match-student-choice-reuse/match-student-choice-reuse.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "../match-student-default/match-student-default.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "component", + "deprecated": false, + "deprecationMessage": "", + "line": 24, + "type": "Component", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentState", + "deprecated": false, + "deprecationMessage": "", + "line": 25, + "type": "any", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isDisabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "line": 26, + "type": "boolean", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "mode", + "deprecated": false, + "deprecationMessage": "", + "line": 27, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 28, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "workgroupId", + "deprecated": false, + "deprecationMessage": "", + "line": 29, + "type": "number", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "outputsClass": [ + { + "name": "saveComponentStateEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 30, + "type": "EventEmitter", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "starterStateChangedEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 31, + "type": "EventEmitter", + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "propertiesClass": [ + { + "name": "buckets", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 57, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "MatchStudentDefaultComponent" + } + }, + { + "name": "choices", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "Choice[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 58, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "MatchStudentDefaultComponent" + } + }, + { + "name": "hasCorrectAnswer", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 59, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "MatchStudentDefaultComponent" + } + }, + { + "name": "isCorrect", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 60, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "MatchStudentDefaultComponent" + } + }, + { + "name": "isLatestComponentStateSubmit", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 61, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "MatchStudentDefaultComponent" + } + }, + { + "name": "sourceBucket", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 62, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "MatchStudentDefaultComponent" + } + }, + { + "name": "sourceBucketId", + "defaultValue": "'0'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 63, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "MatchStudentDefaultComponent" + } + }, + { + "name": "annotationSavedToServerSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 53, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "attachments", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 33, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 34, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 35, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentType", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 36, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isDirty", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 45, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSaveButtonVisible", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 38, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSaveOrSubmitButtonVisible", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 41, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isShowAddToNotebookButton", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 39, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isStudentAttachmentEnabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 46, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmit", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 44, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmitButtonDisabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 42, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmitButtonVisible", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 40, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmitDirty", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 43, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "latestAnnotations", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 48, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "latestComponentState", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 50, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "nodeSubmitClickedSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 54, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "parentStudentWorkIds", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 49, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "prompt", + "deprecated": false, + "deprecationMessage": "", + "type": "SafeHtml", + "indexKey": "", + "optional": false, + "description": "", + "line": 37, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "requestComponentStateSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 52, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "showAddToNotebookButton", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 51, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "studentWorkSavedToServerSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 55, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "submitCounter", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 47, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 56, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "methodsClass": [ + { + "name": "addAuthoredChoiceToBucket", + "args": [ + { + "name": "choiceId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "bucket", + "type": "Bucket", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 40, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "choiceId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "bucket", + "type": "Bucket", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "MatchStudentDefaultComponent" + } + }, + { + "name": "checkAnswer", + "args": [ + { + "name": "choiceIdsExcludedFromFeedback", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]" + }, + { + "name": "buckets", + "type": "Bucket[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "this.getNonSourceBuckets()" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 58, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "choiceIdsExcludedFromFeedback", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]", + "tagName": { + "text": "param" + } + }, + { + "name": "buckets", + "type": "Bucket[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "this.getNonSourceBuckets()", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "MatchStudentDefaultComponent" + } + }, + { + "name": "drop", + "args": [ + { + "name": "event", + "type": "MatchCdkDragDrop", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 34, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "event", + "type": "MatchCdkDragDrop", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "MatchStudentDefaultComponent" + } + }, + { + "name": "getNonSourceBuckets", + "args": [], + "optional": false, + "returnType": "Bucket[]", + "typeParameters": [], + "line": 65, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "getUpdatedChoicesSinceLastSubmit", + "args": [ + { + "name": "latestSubmitComponentState", + "type": "ComponentState", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string[]", + "typeParameters": [], + "line": 44, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "latestSubmitComponentState", + "type": "ComponentState", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "MatchStudentDefaultComponent" + } + }, + { + "name": "addChoice", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 628, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "MatchStudentDefaultComponent" + } + }, + { + "name": "addChoiceToBucket", + "args": [ + { + "name": "choice", + "type": "Choice", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "bucket", + "type": "Bucket", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 214, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "choice", + "type": "Choice", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "bucket", + "type": "Bucket", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "MatchStudentDefaultComponent" + } + }, + { + "name": "addComponentStateChoicesToBuckets", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 191, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "MatchStudentDefaultComponent" + } + }, + { + "name": "addIdeasToSourceBucket", + "args": [ + { + "name": "responses", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "rubric", + "type": "CRaterRubric", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 614, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "responses", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "rubric", + "type": "CRaterRubric", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "MatchStudentDefaultComponent" + } + }, + { + "name": "addNotebookItemToSourceBucket", + "args": [ + { + "name": "notebookItem", + "type": "NotebookItem", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 153, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "notebookItem", + "type": "NotebookItem", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "MatchStudentDefaultComponent" + } + }, + { + "name": "checkAnswerAndDisplayFeedback", + "args": [ + { + "name": "bucketId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "choice", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "position", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "hasCorrectAnswer", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 418, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "bucketId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "choice", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "position", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "hasCorrectAnswer", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "MatchStudentDefaultComponent" + } + }, + { + "name": "checkItemAnswer", + "args": [ + { + "name": "choiceIdsExcludedFromFeedback", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "choiceId", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "bucketId", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "item", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "position", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isCorrect", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 392, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "choiceIdsExcludedFromFeedback", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "choiceId", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "bucketId", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "item", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "position", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "isCorrect", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "MatchStudentDefaultComponent" + } + }, + { + "name": "choicePositionHasChangedInBucket", + "args": [ + { + "name": "previousBucketChoiceIds", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentChoiceId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentChoiceIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 343, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "previousBucketChoiceIds", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentChoiceId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentChoiceIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "MatchStudentDefaultComponent" + } + }, + { + "name": "cleanBuckets", + "args": [ + { + "name": "originalComponentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "buckets", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 550, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\ninjected into it such as onclick attributes and absolute asset paths.\n", + "description": "

    injected into it such as onclick attributes and absolute asset paths.

    \n", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": { + "pos": 19752, + "end": 19776, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "originalComponentContent" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 19746, + "end": 19751, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    The component content that has not had any additional content\ninjected into it such as onclick attributes and absolute asset paths.

    \n" + }, + { + "name": { + "pos": 19926, + "end": 19933, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "buckets" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 19920, + "end": 19925, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "" + } + ], + "inheritance": { + "file": "MatchStudentDefaultComponent" + } + }, + { + "name": "clearFeedback", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 574, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "MatchStudentDefaultComponent" + } + }, + { + "name": "createComponentState", + "args": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 502, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCreate a new component state populated with the student data\ne.g. 'submit', 'save', 'change'\n", + "description": "

    Create a new component state populated with the student data\ne.g. 'submit', 'save', 'change'

    \n", + "jsdoctags": [ + { + "name": { + "pos": 18149, + "end": 18155, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "action" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 18143, + "end": 18148, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    the action that is triggering creating of this component state\ne.g. 'submit', 'save', 'change'

    \n" + }, + { + "tagName": { + "pos": 18262, + "end": 18268, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

    a promise that will return a component state

    \n" + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createComponentStateObject", + "args": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 522, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "MatchStudentDefaultComponent" + } + }, + { + "name": "createMergedComponentState", + "args": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 595, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "doesPositionMatter", + "args": [ + { + "name": "feedbackPosition", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 441, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "feedbackPosition", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "MatchStudentDefaultComponent" + } + }, + { + "name": "dragEnter", + "args": [ + { + "name": "event", + "type": "CdkDragEnter", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 159, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "event", + "type": "CdkDragEnter", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "MatchStudentDefaultComponent" + } + }, + { + "name": "dragExit", + "args": [ + { + "name": "event", + "type": "CdkDragExit", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 163, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "event", + "type": "CdkDragExit", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "MatchStudentDefaultComponent" + } + }, + { + "name": "getBucketById", + "args": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "buckets", + "type": "Bucket[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "this.buckets" + } + ], + "optional": false, + "returnType": "Bucket", + "typeParameters": [], + "line": 210, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "buckets", + "type": "Bucket[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "this.buckets", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "MatchStudentDefaultComponent" + } + }, + { + "name": "getCleanedValue", + "args": [ + { + "name": "originalComponentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "matchObj", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 566, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\ninjected into it such as onclick attributes and absolute asset paths.\n", + "description": "

    injected into it such as onclick attributes and absolute asset paths.

    \n", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": { + "pos": 20329, + "end": 20353, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "originalComponentContent" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 20323, + "end": 20328, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    The component content that has not had any additional content\ninjected into it such as onclick attributes and absolute asset paths.

    \n" + }, + { + "name": { + "pos": 20503, + "end": 20511, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "matchObj" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 20497, + "end": 20502, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "" + } + ], + "inheritance": { + "file": "MatchStudentDefaultComponent" + } + }, + { + "name": "getCorrectness", + "args": [ + { + "name": "feedbackObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "position", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 476, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "feedbackObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "position", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "MatchStudentDefaultComponent" + } + }, + { + "name": "getFeedback", + "args": [ + { + "name": "feedbackObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "hasCorrectAnswer", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "position", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 435, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "feedbackObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "hasCorrectAnswer", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "position", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "MatchStudentDefaultComponent" + } + }, + { + "name": "getFeedbackObject", + "args": [ + { + "name": "bucketId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "choiceId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 482, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "bucketId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "choiceId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "MatchStudentDefaultComponent" + } + }, + { + "name": "getIncorrectPositionFeedback", + "args": [ + { + "name": "feedbackObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 459, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "feedbackObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "MatchStudentDefaultComponent" + } + }, + { + "name": "getNonPositionFeedback", + "args": [ + { + "name": "feedbackObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "hasCorrectAnswer", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 466, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "feedbackObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "hasCorrectAnswer", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "MatchStudentDefaultComponent" + } + }, + { + "name": "getPositionFeedback", + "args": [ + { + "name": "feedbackObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "position", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "hasCorrectAnswer", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 445, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "feedbackObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "position", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "hasCorrectAnswer", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "MatchStudentDefaultComponent" + } + }, + { + "name": "getPreviousAndCurrentChoiceIds", + "args": [ + { + "name": "previousBuckets", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentBucket", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 316, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "previousBuckets", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentBucket", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "MatchStudentDefaultComponent" + } + }, + { + "name": "importPrivateNotes", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 136, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "MatchStudentDefaultComponent" + } + }, + { + "name": "initializeBuckets", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 120, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "MatchStudentDefaultComponent" + } + }, + { + "name": "isAuthorHasSpecifiedACorrectPosition", + "args": [ + { + "name": "choiceId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 587, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nReturns true if the choice has been authored to have a correct position\n", + "description": "

    Returns true if the choice has been authored to have a correct position

    \n", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": { + "pos": 21078, + "end": 21086, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "choiceId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 21063, + "end": 21068, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    the choice id

    \n", + "typeExpression": { + "pos": 21069, + "end": 21077, + "kind": 310, + "id": 0, + "flags": 16842752, + "modifierFlagsCache": 0, + "transformFlags": 0, + "type": { + "pos": 21070, + "end": 21076, + "kind": 154, + "id": 0, + "flags": 16777216, + "transformFlags": 1 + } + } + }, + { + "tagName": { + "pos": 21107, + "end": 21113, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

    whether the choice has a correct position in any bucket

    \n", + "returnType": "boolean" + } + ], + "inheritance": { + "file": "MatchStudentDefaultComponent" + } + }, + { + "name": "isChoiceChanged", + "args": [ + { + "name": "previousBucketChoiceIds", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentBucketChoiceIds", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentChoiceIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 326, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "previousBucketChoiceIds", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentBucketChoiceIds", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentChoiceIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "MatchStudentDefaultComponent" + } + }, + { + "name": "isInSourceBucket", + "args": [ + { + "name": "idea", + "type": "CRaterIdea", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 624, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "idea", + "type": "CRaterIdea", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "MatchStudentDefaultComponent" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 90, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "processDirtyStudentWork", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 260, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "MatchStudentDefaultComponent" + } + }, + { + "name": "processPreviousStudentWork", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 230, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the latest submitted componentState and display feedback for choices that haven't changed\nsince. This will also determine if submit is dirty.\n", + "description": "

    Get the latest submitted componentState and display feedback for choices that haven't changed\nsince. This will also determine if submit is dirty.

    \n", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "MatchStudentDefaultComponent" + } + }, + { + "name": "setGeneralComponentStatus", + "args": [ + { + "name": "isCorrect", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isSubmitDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 255, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "isCorrect", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "isSubmitDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "MatchStudentDefaultComponent" + } + }, + { + "name": "setIsSubmitDirty", + "args": [ + { + "name": "isSubmitDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 290, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isSubmitDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setStudentWork", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 182, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "shouldImportPrivateNotes", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 116, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "MatchStudentDefaultComponent" + } + }, + { + "name": "showFeedbackOnUnchangedChoices", + "args": [ + { + "name": "latestSubmitComponentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 280, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "latestSubmitComponentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "MatchStudentDefaultComponent" + } + }, + { + "name": "studentDataChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 490, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToNewNotes", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 145, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "MatchStudentDefaultComponent" + } + }, + { + "name": "addDefaultFeedback", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 688, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "attachStudentAsset", + "args": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 232, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "broadcastDoneRenderingComponent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 325, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "canSubmit", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 488, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "clearLatestComponentState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 555, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "confirmSubmit", + "args": [ + { + "name": "numberOfSubmitsLeft", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 468, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "numberOfSubmitsLeft", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "connectedComponentStudentDataSaved", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 796, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nThis function is called when a connected component of this component saves student data.\nThis was added to handle a race condition when a step has a connected component on a previous\nstep but the connected component student work on the previous step was not being imported\nbecause it wasn't being saved in time.\nHere is an example of what was happening\n- Student generates work on step 1 but does not click the save button\n- Student goes to step 2 which triggers a promise to save the student work on step 1\n- Step 2 is loaded and checks if there is any work it needs to import from step 1\n- The work in step 1 has not saved yet so step 2 does not import any work and loads without\n importing any work\n- The work from step 1 is then saved\nHere is the additional process that this function performs to fix this problem\n- Step 2 listens for when work is saved on step 1\n- When the work for step 1 is saved, step 2 checks to see if it needs to import that work\n", + "description": "

    This function is called when a connected component of this component saves student data.\nThis was added to handle a race condition when a step has a connected component on a previous\nstep but the connected component student work on the previous step was not being imported\nbecause it wasn't being saved in time.\nHere is an example of what was happening

    \n
      \n
    • Student generates work on step 1 but does not click the save button
    • \n
    • Student goes to step 2 which triggers a promise to save the student work on step 1
    • \n
    • Step 2 is loaded and checks if there is any work it needs to import from step 1
    • \n
    • The work in step 1 has not saved yet so step 2 does not import any work and loads without\nimporting any work
    • \n
    • The work from step 1 is then saved\nHere is the additional process that this function performs to fix this problem
    • \n
    • Step 2 listens for when work is saved on step 1
    • \n
    • When the work for step 1 is saved, step 2 checks to see if it needs to import that work
    • \n
    \n", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "copyAndAttachStudentAsset", + "args": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 218, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "copyPublicNotebookItem", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 632, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "copyPublicNotebookItemButtonClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 747, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createAutoCommentAnnotation", + "args": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 725, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createAutoScoreAnnotation", + "args": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 714, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createComponentStateAdditionalProcessing", + "args": [ + { + "name": "promise", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 598, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "promise", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createComponentStateAndBroadcast", + "args": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 559, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createDefaultFeedbackAnnotation", + "args": [ + { + "name": "feedbackText", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 706, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "feedbackText", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createNewComponentState", + "args": [], + "optional": false, + "returnType": "Partial", + "typeParameters": [], + "line": 818, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "disableAllInput", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 492, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "disableComponentIfNecessary", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 332, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "disableSubmitButton", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 496, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "doAttachStudentAsset", + "args": [ + { + "name": "studentAssetRequest", + "type": "StudentAssetRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 212, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "studentAssetRequest", + "type": "StudentAssetRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 541, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentStudentDataChanged", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 572, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentSubmitDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 548, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentSubmitTriggered", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 512, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "generateImageFromComponentState", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 615, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nRender the component state and then generate an image from it.\n", + "description": "

    Render the component state and then generate an image from it.

    \n", + "jsdoctags": [ + { + "name": { + "pos": 18804, + "end": 18818, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 18798, + "end": 18803, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    The component state to render.

    \n" + }, + { + "tagName": { + "pos": 18856, + "end": 18862, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

    A promise that will return an image.

    \n" + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "generateStarterState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 216, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getAction", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 321, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getClientSaveTime", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 684, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getComponentStatePromise", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 309, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getComponentStateWrapper", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "ComponentStateWrapper", + "typeParameters": [], + "line": 301, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getDefaultFeedback", + "args": [ + { + "name": "submitCount", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 702, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "submitCount", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getElementById", + "args": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getFirstResult", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 758, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "getFirstResult", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getIsDirty", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 277, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getMaxScore", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 680, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getMaxSubmitCount", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 460, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getNumberOfSubmitsLeft", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 456, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "handleConnectedComponents", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 352, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "handleConnectedComponentsPostProcess", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 385, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "handleStudentWorkSavedToServer", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 263, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "handleStudentWorkSavedToServerAdditionalProcessing", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 287, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasAnySubmissions", + "args": [ + { + "name": "componentStates", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 344, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentStates", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasDefaultFeedback", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 695, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasMaxScore", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 676, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasMaxSubmitCount", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 437, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasMaxSubmitCountAndUsedAllSubmits", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 452, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasSubmitMessage", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 504, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasSubmitsLeft", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 500, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasUsedAllSubmits", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 441, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "importWorkAsBackground", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 658, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "importWorkByStudentWorkId", + "args": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 170, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "incrementSubmitCounter", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 389, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isAddToNotebookEnabled", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 624, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isForThisComponent", + "args": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 192, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isFromConnectedComponent", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 766, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isHandleConnectedComponentAfterConnectedComponentStudentDataSaved", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 802, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isLockAfterSubmit", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 348, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isNotebookEnabled", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 643, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isPreviewMode", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 109, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSameComponent", + "args": [ + { + "name": "component", + "type": "Component", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 188, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "component", + "type": "Component", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isStudentNoteClippingEnabled", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 647, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isWorkFromClassmate", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 196, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "lockIfNecessary", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 281, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 97, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "performSubmit", + "args": [ + { + "name": "submitTriggeredBy", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 472, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "submitTriggeredBy", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "processConnectedComponentState", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 184, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "processLatestStudentWork", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 580, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "registerNotebookItemChosenListener", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 736, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "removeAttachment", + "args": [ + { + "name": "attachment", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 245, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "attachment", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "saveButtonClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 393, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "saveForAuthoringPreviewMode", + "args": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 404, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setBackgroundImage", + "args": [ + { + "name": "image", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 674, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "image", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setComponentStateAsBackgroundImage", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 668, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 537, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsDirtyAndBroadcast", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 527, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsSubmit", + "args": [ + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 464, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsSubmitDirtyAndBroadcast", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 532, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setParentStudentWorkIdToCurrentStudentWork", + "args": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 180, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setSubmitCounter", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 811, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "shouldCreateComponentState", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 317, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "showStudentAssets", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 651, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "submit", + "args": [ + { + "name": "submitTriggeredBy", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 416, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "submitTriggeredBy", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "submitButtonClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 412, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToAnnotationSavedToServer", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 123, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToAttachStudentAsset", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 200, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToNodeSubmitClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 137, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToNotebookItemChosen", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 159, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToNotifyConnectedComponents", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 147, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToRequestComponentState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 289, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToStudentWorkSavedToServer", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 252, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToSubscriptions", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 113, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "tryDisableComponent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 445, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "AddChoiceButtonComponent", + "type": "component" + }, + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "ComponentAnnotationsComponent", + "type": "component" + }, + { + "name": "ComponentHeaderComponent", + "type": "component" + }, + { + "name": "ComponentSaveSubmitButtonsComponent", + "type": "component" + }, + { + "name": "DragDropModule", + "type": "module" + }, + { + "name": "MatchChoiceItemComponent", + "type": "component" + }, + { + "name": "MatchFeedbackSectionComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { AddChoiceButtonComponent } from '../add-choice-button/add-choice-button.component';\nimport { Bucket } from '../../bucket';\nimport { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { ComponentAnnotationsComponent } from '../../../../directives/componentAnnotations/component-annotations.component';\nimport { ComponentHeaderComponent } from '../../../../directives/component-header/component-header.component';\nimport { ComponentSaveSubmitButtonsComponent } from '../../../../directives/component-save-submit-buttons/component-save-submit-buttons.component';\nimport { ComponentState } from '../../../../../../app/domain/componentState';\nimport { Container } from '../container';\nimport { copy } from '../../../../common/object/object';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { Item } from '../item';\nimport { MatchCdkDragDrop } from '../MatchCdkDragDrop';\nimport { MatchChoiceItemComponent } from '../../match-choice-item/match-choice-item.component';\nimport { MatchFeedbackSectionComponent } from '../match-feedback-section/match-feedback-section.component';\nimport { MatchStudentDefaultComponent } from '../match-student-default/match-student-default.component';\nimport { moveItem } from '../move-item';\n\n@Component({\n imports: [\n AddChoiceButtonComponent,\n CommonModule,\n ComponentAnnotationsComponent,\n ComponentHeaderComponent,\n ComponentSaveSubmitButtonsComponent,\n DragDropModule,\n MatchChoiceItemComponent,\n MatchFeedbackSectionComponent\n ],\n styleUrl: '../match-student-default/match-student-default.component.scss',\n templateUrl: '../match-student-default/match-student-default.component.html'\n})\nexport class MatchStudentChoiceReuseComponent extends MatchStudentDefaultComponent {\n protected drop(event: MatchCdkDragDrop): void {\n moveItem(event);\n event.container.element.nativeElement.classList.remove('primary-bg');\n this.studentDataChanged();\n }\n\n protected addAuthoredChoiceToBucket(choiceId: string, bucket: Bucket): void {\n bucket.items.push(copy(this.choices.find((choice) => choice.id === choiceId)));\n }\n\n protected getUpdatedChoicesSinceLastSubmit(latestSubmitComponentState: ComponentState): string[] {\n const previousBuckets = latestSubmitComponentState.studentData.buckets;\n const removedChoices = this.getNonSourceBuckets().flatMap((bucket: Bucket) => {\n const { currentBucketChoiceIds, previousBucketChoiceIds } =\n this.getPreviousAndCurrentChoiceIds(previousBuckets, bucket);\n return previousBucketChoiceIds.filter(\n (choiceId: string) => !currentBucketChoiceIds.includes(choiceId)\n );\n });\n return super\n .getUpdatedChoicesSinceLastSubmit(latestSubmitComponentState)\n .concat(removedChoices);\n }\n\n protected checkAnswer(\n choiceIdsExcludedFromFeedback: string[] = [],\n buckets: Bucket[] = this.getNonSourceBuckets()\n ): void {\n super.checkAnswer(choiceIdsExcludedFromFeedback, buckets);\n }\n\n private getNonSourceBuckets(): Bucket[] {\n return this.buckets.filter((bucket: Bucket) => bucket.id !== this.sourceBucketId);\n }\n}\n", + "styleUrl": "../match-student-default/match-student-default.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [ + "MatchStudentDefaultComponent" + ], + "templateData": "\n
    \n \n \n
    \n

    \n @if (componentContent.canCreateChoices) {\n \n }\n
    \n \n @for (item of buckets[0].items; track item.id; let position = $index) {\n \n \n \n }\n \n
    \n \n \n @for (bucket of buckets.slice(1); track bucket.id) {\n \n
    \n
    \n

    \n
    \n \n @for (item of bucket.items; track item.id; let position = $index) {\n \n \n \n }\n \n
    \n \n }\n \n\n\n@if (isSaveOrSubmitButtonVisible) {\n \n}\n@if (mode === 'student') {\n \n}\n" + }, + { + "name": "MatchStudentDefaultComponent", + "id": "component-MatchStudentDefaultComponent-b316923de21df95bd8c14882933698a87648145d17ea023b96ad8d1dfeb266ba3781d46653b0e120a577cd76b9319bef65c44c06e77f2edb909d6dba434ed7f2", + "file": "src/assets/wise5/components/match/match-student/match-student-default/match-student-default.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "match-student-default.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "component", + "deprecated": false, + "deprecationMessage": "", + "line": 24, + "type": "Component", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentState", + "deprecated": false, + "deprecationMessage": "", + "line": 25, + "type": "any", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isDisabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "line": 26, + "type": "boolean", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "mode", + "deprecated": false, + "deprecationMessage": "", + "line": 27, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 28, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "workgroupId", + "deprecated": false, + "deprecationMessage": "", + "line": 29, + "type": "number", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "outputsClass": [ + { + "name": "saveComponentStateEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 30, + "type": "EventEmitter", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "starterStateChangedEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 31, + "type": "EventEmitter", + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "propertiesClass": [ + { + "name": "buckets", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 57, + "modifierKind": [ + 124 + ] + }, + { + "name": "choices", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "Choice[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 58, + "modifierKind": [ + 124 + ] + }, + { + "name": "hasCorrectAnswer", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 59, + "modifierKind": [ + 124 + ] + }, + { + "name": "isCorrect", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 60, + "modifierKind": [ + 124 + ] + }, + { + "name": "isLatestComponentStateSubmit", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 61, + "modifierKind": [ + 124 + ] + }, + { + "name": "sourceBucket", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 62, + "modifierKind": [ + 123 + ] + }, + { + "name": "sourceBucketId", + "defaultValue": "'0'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 63, + "modifierKind": [ + 124 + ] + }, + { + "name": "annotationSavedToServerSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 53, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "attachments", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 33, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 34, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 35, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentType", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 36, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isDirty", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 45, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSaveButtonVisible", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 38, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSaveOrSubmitButtonVisible", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 41, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isShowAddToNotebookButton", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 39, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isStudentAttachmentEnabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 46, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmit", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 44, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmitButtonDisabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 42, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmitButtonVisible", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 40, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmitDirty", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 43, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "latestAnnotations", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 48, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "latestComponentState", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 50, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "nodeSubmitClickedSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 54, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "parentStudentWorkIds", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 49, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "prompt", + "deprecated": false, + "deprecationMessage": "", + "type": "SafeHtml", + "indexKey": "", + "optional": false, + "description": "", + "line": 37, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "requestComponentStateSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 52, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "showAddToNotebookButton", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 51, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "studentWorkSavedToServerSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 55, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "submitCounter", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 47, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 56, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "methodsClass": [ + { + "name": "addAuthoredChoiceToBucket", + "args": [ + { + "name": "choiceId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "bucket", + "type": "Bucket", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 222, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "choiceId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "bucket", + "type": "Bucket", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addChoice", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 628, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "addChoiceToBucket", + "args": [ + { + "name": "choice", + "type": "Choice", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "bucket", + "type": "Bucket", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 214, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "choice", + "type": "Choice", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "bucket", + "type": "Bucket", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addComponentStateChoicesToBuckets", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 191, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addIdeasToSourceBucket", + "args": [ + { + "name": "responses", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "rubric", + "type": "CRaterRubric", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 614, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "responses", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "rubric", + "type": "CRaterRubric", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addNotebookItemToSourceBucket", + "args": [ + { + "name": "notebookItem", + "type": "NotebookItem", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 153, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "notebookItem", + "type": "NotebookItem", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "checkAnswer", + "args": [ + { + "name": "choiceIdsExcludedFromFeedback", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]" + }, + { + "name": "buckets", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "this.buckets" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 361, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCheck if the student has answered correctly and show feedback.\nstudent submits and feedback for all the choices are displayed. Then the student moves a choice\nto a different bucket but does not submit. They leave the step and then come back. At this\npoint, we want to show the feedback for all the choices that the student has not moved since\nthe submit. We do not want to show the feedback for the choice that the student moved after the\nsubmit because that would let them receive feedback without submitting.\n", + "description": "

    Check if the student has answered correctly and show feedback.\nstudent submits and feedback for all the choices are displayed. Then the student moves a choice\nto a different bucket but does not submit. They leave the step and then come back. At this\npoint, we want to show the feedback for all the choices that the student has not moved since\nthe submit. We do not want to show the feedback for the choice that the student moved after the\nsubmit because that would let them receive feedback without submitting.

    \n", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "choiceIdsExcludedFromFeedback", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]", + "tagName": { + "text": "param" + } + }, + { + "name": { + "pos": 13395, + "end": 13402, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "buckets" + }, + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "this.buckets", + "tagName": { + "pos": 13389, + "end": 13394, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    to check\nstudent submits and feedback for all the choices are displayed. Then the student moves a choice\nto a different bucket but does not submit. They leave the step and then come back. At this\npoint, we want to show the feedback for all the choices that the student has not moved since\nthe submit. We do not want to show the feedback for the choice that the student moved after the\nsubmit because that would let them receive feedback without submitting.

    \n" + } + ] + }, + { + "name": "checkAnswerAndDisplayFeedback", + "args": [ + { + "name": "bucketId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "choice", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "position", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "hasCorrectAnswer", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 418, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "bucketId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "choice", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "position", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "hasCorrectAnswer", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "checkItemAnswer", + "args": [ + { + "name": "choiceIdsExcludedFromFeedback", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "choiceId", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "bucketId", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "item", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "position", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isCorrect", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 392, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "choiceIdsExcludedFromFeedback", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "choiceId", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "bucketId", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "item", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "position", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "isCorrect", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "choicePositionHasChangedInBucket", + "args": [ + { + "name": "previousBucketChoiceIds", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentChoiceId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentChoiceIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 343, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "previousBucketChoiceIds", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentChoiceId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentChoiceIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "cleanBuckets", + "args": [ + { + "name": "originalComponentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "buckets", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 550, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\ninjected into it such as onclick attributes and absolute asset paths.\n", + "description": "

    injected into it such as onclick attributes and absolute asset paths.

    \n", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": { + "pos": 19752, + "end": 19776, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "originalComponentContent" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 19746, + "end": 19751, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    The component content that has not had any additional content\ninjected into it such as onclick attributes and absolute asset paths.

    \n" + }, + { + "name": { + "pos": 19926, + "end": 19933, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "buckets" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 19920, + "end": 19925, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "" + } + ] + }, + { + "name": "clearFeedback", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 574, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "createComponentState", + "args": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 502, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCreate a new component state populated with the student data\ne.g. 'submit', 'save', 'change'\n", + "description": "

    Create a new component state populated with the student data\ne.g. 'submit', 'save', 'change'

    \n", + "jsdoctags": [ + { + "name": { + "pos": 18149, + "end": 18155, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "action" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 18143, + "end": 18148, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    the action that is triggering creating of this component state\ne.g. 'submit', 'save', 'change'

    \n" + }, + { + "tagName": { + "pos": 18262, + "end": 18268, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

    a promise that will return a component state

    \n" + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createComponentStateObject", + "args": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 522, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createMergedComponentState", + "args": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 595, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "doesPositionMatter", + "args": [ + { + "name": "feedbackPosition", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 441, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "feedbackPosition", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "dragEnter", + "args": [ + { + "name": "event", + "type": "CdkDragEnter", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 159, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "event", + "type": "CdkDragEnter", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "dragExit", + "args": [ + { + "name": "event", + "type": "CdkDragExit", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 163, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "event", + "type": "CdkDragExit", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "drop", + "args": [ + { + "name": "event", + "type": "MatchCdkDragDrop", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 167, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "event", + "type": "MatchCdkDragDrop", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getBucketById", + "args": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "buckets", + "type": "Bucket[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "this.buckets" + } + ], + "optional": false, + "returnType": "Bucket", + "typeParameters": [], + "line": 210, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "buckets", + "type": "Bucket[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "this.buckets", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getCleanedValue", + "args": [ + { + "name": "originalComponentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "matchObj", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 566, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\ninjected into it such as onclick attributes and absolute asset paths.\n", + "description": "

    injected into it such as onclick attributes and absolute asset paths.

    \n", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": { + "pos": 20329, + "end": 20353, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "originalComponentContent" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 20323, + "end": 20328, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    The component content that has not had any additional content\ninjected into it such as onclick attributes and absolute asset paths.

    \n" + }, + { + "name": { + "pos": 20503, + "end": 20511, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "matchObj" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 20497, + "end": 20502, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "" + } + ] + }, + { + "name": "getCorrectness", + "args": [ + { + "name": "feedbackObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "position", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 476, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "feedbackObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "position", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getFeedback", + "args": [ + { + "name": "feedbackObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "hasCorrectAnswer", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "position", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 435, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "feedbackObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "hasCorrectAnswer", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "position", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getFeedbackObject", + "args": [ + { + "name": "bucketId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "choiceId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 482, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "bucketId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "choiceId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getIncorrectPositionFeedback", + "args": [ + { + "name": "feedbackObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 459, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "feedbackObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getNonPositionFeedback", + "args": [ + { + "name": "feedbackObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "hasCorrectAnswer", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 466, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "feedbackObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "hasCorrectAnswer", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getPositionFeedback", + "args": [ + { + "name": "feedbackObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "position", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "hasCorrectAnswer", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 445, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "feedbackObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "position", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "hasCorrectAnswer", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getPreviousAndCurrentChoiceIds", + "args": [ + { + "name": "previousBuckets", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentBucket", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 316, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "previousBuckets", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentBucket", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getUpdatedChoicesSinceLastSubmit", + "args": [ + { + "name": "latestSubmitComponentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string[]", + "typeParameters": [], + "line": 295, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "latestSubmitComponentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "importPrivateNotes", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 136, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "initializeBuckets", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 120, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "isAuthorHasSpecifiedACorrectPosition", + "args": [ + { + "name": "choiceId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 587, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nReturns true if the choice has been authored to have a correct position\n", + "description": "

    Returns true if the choice has been authored to have a correct position

    \n", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": { + "pos": 21078, + "end": 21086, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "choiceId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 21063, + "end": 21068, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    the choice id

    \n", + "typeExpression": { + "pos": 21069, + "end": 21077, + "kind": 310, + "id": 0, + "flags": 16842752, + "modifierFlagsCache": 0, + "transformFlags": 0, + "type": { + "pos": 21070, + "end": 21076, + "kind": 154, + "id": 0, + "flags": 16777216, + "transformFlags": 1 + } + } + }, + { + "tagName": { + "pos": 21107, + "end": 21113, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

    whether the choice has a correct position in any bucket

    \n", + "returnType": "boolean" + } + ] + }, + { + "name": "isChoiceChanged", + "args": [ + { + "name": "previousBucketChoiceIds", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentBucketChoiceIds", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentChoiceIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 326, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "previousBucketChoiceIds", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentBucketChoiceIds", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentChoiceIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isInSourceBucket", + "args": [ + { + "name": "idea", + "type": "CRaterIdea", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 624, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "idea", + "type": "CRaterIdea", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 90, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "processDirtyStudentWork", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 260, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "processPreviousStudentWork", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 230, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the latest submitted componentState and display feedback for choices that haven't changed\nsince. This will also determine if submit is dirty.\n", + "description": "

    Get the latest submitted componentState and display feedback for choices that haven't changed\nsince. This will also determine if submit is dirty.

    \n", + "modifierKind": [ + 123 + ] + }, + { + "name": "setGeneralComponentStatus", + "args": [ + { + "name": "isCorrect", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isSubmitDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 255, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "isCorrect", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "isSubmitDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setIsSubmitDirty", + "args": [ + { + "name": "isSubmitDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 290, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isSubmitDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setStudentWork", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 182, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "shouldImportPrivateNotes", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 116, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "showFeedbackOnUnchangedChoices", + "args": [ + { + "name": "latestSubmitComponentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 280, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "latestSubmitComponentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "studentDataChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 490, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToNewNotes", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 145, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "addDefaultFeedback", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 688, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "attachStudentAsset", + "args": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 232, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "broadcastDoneRenderingComponent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 325, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "canSubmit", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 488, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "clearLatestComponentState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 555, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "confirmSubmit", + "args": [ + { + "name": "numberOfSubmitsLeft", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 468, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "numberOfSubmitsLeft", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "connectedComponentStudentDataSaved", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 796, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nThis function is called when a connected component of this component saves student data.\nThis was added to handle a race condition when a step has a connected component on a previous\nstep but the connected component student work on the previous step was not being imported\nbecause it wasn't being saved in time.\nHere is an example of what was happening\n- Student generates work on step 1 but does not click the save button\n- Student goes to step 2 which triggers a promise to save the student work on step 1\n- Step 2 is loaded and checks if there is any work it needs to import from step 1\n- The work in step 1 has not saved yet so step 2 does not import any work and loads without\n importing any work\n- The work from step 1 is then saved\nHere is the additional process that this function performs to fix this problem\n- Step 2 listens for when work is saved on step 1\n- When the work for step 1 is saved, step 2 checks to see if it needs to import that work\n", + "description": "

    This function is called when a connected component of this component saves student data.\nThis was added to handle a race condition when a step has a connected component on a previous\nstep but the connected component student work on the previous step was not being imported\nbecause it wasn't being saved in time.\nHere is an example of what was happening

    \n
      \n
    • Student generates work on step 1 but does not click the save button
    • \n
    • Student goes to step 2 which triggers a promise to save the student work on step 1
    • \n
    • Step 2 is loaded and checks if there is any work it needs to import from step 1
    • \n
    • The work in step 1 has not saved yet so step 2 does not import any work and loads without\nimporting any work
    • \n
    • The work from step 1 is then saved\nHere is the additional process that this function performs to fix this problem
    • \n
    • Step 2 listens for when work is saved on step 1
    • \n
    • When the work for step 1 is saved, step 2 checks to see if it needs to import that work
    • \n
    \n", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "copyAndAttachStudentAsset", + "args": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 218, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "copyPublicNotebookItem", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 632, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "copyPublicNotebookItemButtonClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 747, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createAutoCommentAnnotation", + "args": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 725, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createAutoScoreAnnotation", + "args": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 714, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createComponentStateAdditionalProcessing", + "args": [ + { + "name": "promise", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 598, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "promise", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createComponentStateAndBroadcast", + "args": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 559, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createDefaultFeedbackAnnotation", + "args": [ + { + "name": "feedbackText", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 706, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "feedbackText", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createNewComponentState", + "args": [], + "optional": false, + "returnType": "Partial", + "typeParameters": [], + "line": 818, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "disableAllInput", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 492, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "disableComponentIfNecessary", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 332, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "disableSubmitButton", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 496, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "doAttachStudentAsset", + "args": [ + { + "name": "studentAssetRequest", + "type": "StudentAssetRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 212, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "studentAssetRequest", + "type": "StudentAssetRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 541, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentStudentDataChanged", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 572, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentSubmitDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 548, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentSubmitTriggered", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 512, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "generateImageFromComponentState", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 615, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nRender the component state and then generate an image from it.\n", + "description": "

    Render the component state and then generate an image from it.

    \n", + "jsdoctags": [ + { + "name": { + "pos": 18804, + "end": 18818, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 18798, + "end": 18803, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    The component state to render.

    \n" + }, + { + "tagName": { + "pos": 18856, + "end": 18862, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

    A promise that will return an image.

    \n" + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "generateStarterState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 216, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getAction", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 321, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getClientSaveTime", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 684, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getComponentStatePromise", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 309, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getComponentStateWrapper", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "ComponentStateWrapper", + "typeParameters": [], + "line": 301, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getDefaultFeedback", + "args": [ + { + "name": "submitCount", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 702, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "submitCount", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getElementById", + "args": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getFirstResult", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 758, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "getFirstResult", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getIsDirty", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 277, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getMaxScore", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 680, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getMaxSubmitCount", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 460, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getNumberOfSubmitsLeft", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 456, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "handleConnectedComponents", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 352, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "handleConnectedComponentsPostProcess", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 385, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "handleStudentWorkSavedToServer", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 263, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "handleStudentWorkSavedToServerAdditionalProcessing", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 287, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasAnySubmissions", + "args": [ + { + "name": "componentStates", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 344, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentStates", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasDefaultFeedback", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 695, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasMaxScore", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 676, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasMaxSubmitCount", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 437, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasMaxSubmitCountAndUsedAllSubmits", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 452, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasSubmitMessage", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 504, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasSubmitsLeft", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 500, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasUsedAllSubmits", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 441, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "importWorkAsBackground", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 658, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "importWorkByStudentWorkId", + "args": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 170, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "incrementSubmitCounter", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 389, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isAddToNotebookEnabled", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 624, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isForThisComponent", + "args": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 192, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isFromConnectedComponent", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 766, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isHandleConnectedComponentAfterConnectedComponentStudentDataSaved", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 802, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isLockAfterSubmit", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 348, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isNotebookEnabled", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 643, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isPreviewMode", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 109, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSameComponent", + "args": [ + { + "name": "component", + "type": "Component", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 188, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "component", + "type": "Component", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isStudentNoteClippingEnabled", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 647, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isWorkFromClassmate", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 196, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "lockIfNecessary", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 281, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 97, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "performSubmit", + "args": [ + { + "name": "submitTriggeredBy", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 472, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "submitTriggeredBy", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "processConnectedComponentState", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 184, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "processLatestStudentWork", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 580, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "registerNotebookItemChosenListener", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 736, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "removeAttachment", + "args": [ + { + "name": "attachment", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 245, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "attachment", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "saveButtonClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 393, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "saveForAuthoringPreviewMode", + "args": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 404, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setBackgroundImage", + "args": [ + { + "name": "image", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 674, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "image", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setComponentStateAsBackgroundImage", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 668, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 537, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsDirtyAndBroadcast", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 527, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsSubmit", + "args": [ + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 464, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsSubmitDirtyAndBroadcast", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 532, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setParentStudentWorkIdToCurrentStudentWork", + "args": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 180, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setSubmitCounter", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 811, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "shouldCreateComponentState", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 317, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "showStudentAssets", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 651, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "submit", + "args": [ + { + "name": "submitTriggeredBy", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 416, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "submitTriggeredBy", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "submitButtonClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 412, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToAnnotationSavedToServer", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 123, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToAttachStudentAsset", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 200, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToNodeSubmitClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 137, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToNotebookItemChosen", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 159, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToNotifyConnectedComponents", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 147, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToRequestComponentState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 289, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToStudentWorkSavedToServer", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 252, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToSubscriptions", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 113, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "tryDisableComponent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 445, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "AddChoiceButtonComponent", + "type": "component" + }, + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "ComponentAnnotationsComponent", + "type": "component" + }, + { + "name": "ComponentHeaderComponent", + "type": "component" + }, + { + "name": "ComponentSaveSubmitButtonsComponent", + "type": "component" + }, + { + "name": "DragDropModule", + "type": "module" + }, + { + "name": "MatchChoiceItemComponent", + "type": "component" + }, + { + "name": "MatchFeedbackSectionComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { AddChoiceButtonComponent } from '../add-choice-button/add-choice-button.component';\nimport { AddMatchChoiceDialogComponent } from '../add-match-choice-dialog/add-match-choice-dialog';\nimport { AnnotationService } from '../../../../services/annotationService';\nimport { Bucket, mergeBucket } from '../../bucket';\nimport {\n CdkDragEnter,\n CdkDragExit,\n moveItemInArray,\n transferArrayItem\n} from '@angular/cdk/drag-drop';\nimport { Choice, createChoiceFromNotebookItem } from '../../choice';\nimport { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { ComponentAnnotationsComponent } from '../../../../directives/componentAnnotations/component-annotations.component';\nimport { ComponentHeaderComponent } from '../../../../directives/component-header/component-header.component';\nimport { ComponentSaveSubmitButtonsComponent } from '../../../../directives/component-save-submit-buttons/component-save-submit-buttons.component';\nimport { ComponentService } from '../../../componentService';\nimport { ComponentStudent } from '../../../component-student.component';\nimport { ConfigService } from '../../../../services/configService';\nimport { Container } from '../container';\nimport { copy } from '../../../../common/object/object';\nimport { CRaterService } from '../../../../services/cRaterService';\nimport { CRaterRubric, getUniqueIdeas } from '../../../common/cRater/CRaterRubric';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { filter } from 'rxjs';\nimport { generateRandomKey } from '../../../../common/string/string';\nimport { hasConnectedComponent } from '../../../../common/ComponentContent';\nimport { Item } from '../item';\nimport { MatchCdkDragDrop } from '../MatchCdkDragDrop';\nimport { MatchChoiceItemComponent } from '../../match-choice-item/match-choice-item.component';\nimport { MatchFeedbackSectionComponent } from '../match-feedback-section/match-feedback-section.component';\nimport { MatchService } from '../../matchService';\nimport { MatDialog } from '@angular/material/dialog';\nimport { NodeService } from '../../../../services/nodeService';\nimport { NotebookItem } from '../../../../common/notebook/notebookItem';\nimport { NotebookService } from '../../../../services/notebookService';\nimport { ProjectService } from '../../../../services/projectService';\nimport { StudentAssetService } from '../../../../services/studentAssetService';\nimport { StudentDataService } from '../../../../services/studentDataService';\nimport { CRaterIdea } from '../../../common/cRater/CRaterIdea';\n\n@Component({\n imports: [\n AddChoiceButtonComponent,\n CommonModule,\n ComponentAnnotationsComponent,\n ComponentHeaderComponent,\n ComponentSaveSubmitButtonsComponent,\n DragDropModule,\n MatchChoiceItemComponent,\n MatchFeedbackSectionComponent\n ],\n styleUrl: 'match-student-default.component.scss',\n templateUrl: 'match-student-default.component.html'\n})\nexport class MatchStudentDefaultComponent extends ComponentStudent {\n protected buckets: any[] = [];\n protected choices: Choice[] = [];\n protected hasCorrectAnswer: boolean = false;\n protected isCorrect: boolean = false;\n protected isLatestComponentStateSubmit: boolean = false;\n private sourceBucket: any;\n protected sourceBucketId: string = '0';\n\n constructor(\n protected annotationService: AnnotationService,\n protected assetService: StudentAssetService,\n protected componentService: ComponentService,\n protected configService: ConfigService,\n private craterService: CRaterService,\n protected dataService: StudentDataService,\n protected dialog: MatDialog,\n protected matchService: MatchService,\n protected nodeService: NodeService,\n protected notebookService: NotebookService,\n private projectService: ProjectService\n ) {\n super(\n annotationService,\n componentService,\n configService,\n dialog,\n nodeService,\n notebookService,\n assetService,\n dataService\n );\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n this.hasCorrectAnswer = this.matchService.componentHasCorrectAnswer(this.componentContent);\n this.choices = this.componentContent.choices;\n if (this.shouldImportPrivateNotes()) {\n this.importPrivateNotes();\n this.subscribeToNewNotes();\n }\n this.initializeBuckets();\n if (\n hasConnectedComponent(this.componentContent, 'showWork') ||\n this.component.hasConnectedComponent()\n ) {\n this.handleConnectedComponents();\n }\n if (\n this.matchService.componentStateHasStudentWork(this.componentState, this.componentContent)\n ) {\n this.setStudentWork(this.componentState);\n }\n this.isLatestComponentStateSubmit = this.componentState != null && this.componentState.isSubmit;\n this.tryDisableComponent();\n this.disableComponentIfNecessary();\n this.broadcastDoneRenderingComponent();\n }\n\n private shouldImportPrivateNotes(): boolean {\n return this.isNotebookEnabled() && this.componentContent.importPrivateNotes;\n }\n\n private initializeBuckets(): void {\n this.buckets = [];\n this.sourceBucket = {\n id: this.sourceBucketId,\n value: this.componentContent.choicesLabel ?? $localize`Choices`,\n type: 'bucket',\n items: [...this.choices]\n };\n this.buckets.push(this.sourceBucket);\n this.componentContent.buckets.forEach((bucket) => {\n const bucketCopy = copy(bucket);\n bucketCopy.items = [];\n this.buckets.push(bucketCopy);\n });\n }\n\n private importPrivateNotes(): void {\n this.notebookService\n .getPrivateNotebookItems()\n .filter((item) => item.type === 'note' && item.serverDeleteTime == null)\n .forEach((item) => {\n this.choices.push(createChoiceFromNotebookItem(item));\n });\n }\n\n private subscribeToNewNotes(): void {\n this.subscriptions.add(\n this.notebookService.notebookUpdated$\n .pipe(filter(({ notebookItem }) => notebookItem.type === 'note'))\n .subscribe(({ notebookItem }) => this.addNotebookItemToSourceBucket(notebookItem))\n );\n }\n\n private addNotebookItemToSourceBucket(notebookItem: NotebookItem): void {\n const choice = createChoiceFromNotebookItem(notebookItem);\n this.choices.push(choice);\n this.getBucketById(this.sourceBucketId).items.push(choice);\n }\n\n protected dragEnter(event: CdkDragEnter): void {\n event.container.element.nativeElement.classList.add('primary-bg');\n }\n\n protected dragExit(event: CdkDragExit): void {\n event.container.element.nativeElement.classList.remove('primary-bg');\n }\n\n protected drop(event: MatchCdkDragDrop): void {\n if (event.previousContainer === event.container) {\n moveItemInArray(event.container.data.items, event.item.data.position, event.currentIndex);\n } else {\n transferArrayItem(\n event.previousContainer.data.items,\n event.container.data.items,\n event.item.data.position,\n event.currentIndex\n );\n }\n event.container.element.nativeElement.classList.remove('primary-bg');\n this.studentDataChanged();\n }\n\n setStudentWork(componentState: any): void {\n this.getBucketById(this.sourceBucketId).items = [];\n this.addComponentStateChoicesToBuckets(componentState);\n if (componentState.studentData.submitCounter != null) {\n this.submitCounter = componentState.studentData.submitCounter;\n }\n this.processPreviousStudentWork();\n }\n\n private addComponentStateChoicesToBuckets(componentState: any): void {\n const choiceIds = this.choices.map((choice) => choice.id);\n componentState.studentData.buckets.forEach((componentStateBucket) => {\n if (this.buckets.some((bucket) => bucket.id === componentStateBucket.id)) {\n const bucket = this.getBucketById(componentStateBucket.id);\n componentStateBucket.items.forEach((componentStateChoice) => {\n this.addChoiceToBucket(componentStateChoice, bucket);\n const choiceLocation = choiceIds.indexOf(componentStateChoice.id);\n if (choiceLocation != -1) {\n choiceIds.splice(choiceLocation, 1);\n }\n });\n }\n });\n\n const sourceBucket = this.getBucketById(this.sourceBucketId);\n choiceIds.forEach((choiceId) => this.addAuthoredChoiceToBucket(choiceId, sourceBucket));\n }\n\n private getBucketById(id: string, buckets: Bucket[] = this.buckets): Bucket {\n return buckets.find((bucket) => bucket.id === id);\n }\n\n private addChoiceToBucket(choice: Choice, bucket: Bucket): void {\n bucket.items.push(\n this.choices.some((authoredChoice) => authoredChoice.id === choice.id)\n ? this.choices.find((authoredChoice) => authoredChoice.id === choice.id)\n : choice // this is a choice that was created by the student\n );\n }\n\n protected addAuthoredChoiceToBucket(choiceId: string, bucket: Bucket): void {\n bucket.items.push(this.choices.find((choice) => choice.id === choiceId));\n }\n\n /**\n * Get the latest submitted componentState and display feedback for choices that haven't changed\n * since. This will also determine if submit is dirty.\n */\n private processPreviousStudentWork(): void {\n const latestComponentState = this.dataService.getLatestComponentStateByNodeIdAndComponentId(\n this.nodeId,\n this.componentId\n );\n if (latestComponentState == null) {\n return;\n }\n this.latestComponentState = latestComponentState;\n if (latestComponentState.isSubmit) {\n this.setGeneralComponentStatus(latestComponentState.isCorrect, false);\n this.checkAnswer();\n } else {\n const latestSubmitComponentState = this.dataService.getLatestSubmitComponentState(\n this.nodeId,\n this.componentId\n );\n if (latestSubmitComponentState != null) {\n this.showFeedbackOnUnchangedChoices(latestSubmitComponentState);\n } else {\n this.setGeneralComponentStatus(null, false);\n }\n }\n }\n\n private setGeneralComponentStatus(isCorrect: boolean, isSubmitDirty: boolean): void {\n this.isCorrect = isCorrect;\n this.setIsSubmitDirty(isSubmitDirty);\n }\n\n private processDirtyStudentWork(): void {\n const latestSubmitComponentState = this.dataService.getLatestSubmitComponentState(\n this.nodeId,\n this.componentId\n );\n if (latestSubmitComponentState != null) {\n this.showFeedbackOnUnchangedChoices(latestSubmitComponentState);\n } else {\n const latestComponentState = this.dataService.getLatestComponentStateByNodeIdAndComponentId(\n this.nodeId,\n this.componentId\n );\n if (latestComponentState != null) {\n this.isCorrect = null;\n this.setIsSubmitDirty(true);\n this.latestComponentState = latestComponentState;\n }\n }\n }\n\n private showFeedbackOnUnchangedChoices(latestSubmitComponentState: any): void {\n const updatedChoices = this.getUpdatedChoicesSinceLastSubmit(latestSubmitComponentState);\n if (updatedChoices.length > 0) {\n this.setIsSubmitDirty(true);\n } else {\n this.setIsSubmitDirty(false);\n }\n this.checkAnswer(updatedChoices);\n }\n\n setIsSubmitDirty(isSubmitDirty: boolean): void {\n this.isSubmitDirty = isSubmitDirty;\n this.emitComponentSubmitDirty(isSubmitDirty);\n }\n\n protected getUpdatedChoicesSinceLastSubmit(latestSubmitComponentState: any): string[] {\n const updatedChoices = [];\n const previousBuckets = latestSubmitComponentState.studentData.buckets;\n this.buckets.forEach((currentBucket) => {\n const { currentBucketChoiceIds, previousBucketChoiceIds } =\n this.getPreviousAndCurrentChoiceIds(previousBuckets, currentBucket);\n for (\n let currentChoiceIndex = 0;\n currentChoiceIndex < currentBucketChoiceIds.length;\n currentChoiceIndex++\n ) {\n if (\n this.isChoiceChanged(previousBucketChoiceIds, currentBucketChoiceIds, currentChoiceIndex)\n ) {\n updatedChoices.push(currentBucketChoiceIds[currentChoiceIndex]);\n }\n }\n });\n return updatedChoices;\n }\n\n protected getPreviousAndCurrentChoiceIds(previousBuckets: any[], currentBucket: any): any {\n const currentBucketChoiceIds = currentBucket.items.map((item) => item.id);\n const previousBucket = this.getBucketById(currentBucket.id, previousBuckets);\n const previousBucketChoiceIds = previousBucket.items.map((item) => item.id);\n return {\n currentBucketChoiceIds,\n previousBucketChoiceIds\n };\n }\n\n private isChoiceChanged(\n previousBucketChoiceIds: string[],\n currentBucketChoiceIds: string[],\n currentChoiceIndex: number\n ): boolean {\n const currentBucketChoiceId = currentBucketChoiceIds[currentChoiceIndex];\n return (\n !previousBucketChoiceIds.includes(currentBucketChoiceId) ||\n (this.isAuthorHasSpecifiedACorrectPosition(currentBucketChoiceId) &&\n this.choicePositionHasChangedInBucket(\n previousBucketChoiceIds,\n currentBucketChoiceId,\n currentChoiceIndex\n ))\n );\n }\n\n private choicePositionHasChangedInBucket(\n previousBucketChoiceIds: string[],\n currentChoiceId: string,\n currentChoiceIndex: number\n ): boolean {\n return currentChoiceIndex != previousBucketChoiceIds.indexOf(currentChoiceId);\n }\n\n /**\n * Check if the student has answered correctly and show feedback.\n * @param choiceIds to not show feedback for. This is used in the scenario where the\n * @param buckets to check\n * student submits and feedback for all the choices are displayed. Then the student moves a choice\n * to a different bucket but does not submit. They leave the step and then come back. At this\n * point, we want to show the feedback for all the choices that the student has not moved since\n * the submit. We do not want to show the feedback for the choice that the student moved after the\n * submit because that would let them receive feedback without submitting.\n */\n protected checkAnswer(\n choiceIdsExcludedFromFeedback: string[] = [],\n buckets: any[] = this.buckets\n ): void {\n let isCorrect = true;\n buckets.forEach((bucket) => {\n const bucketId = bucket.id;\n const items = bucket.items;\n\n let i = 0;\n items.forEach((item) => {\n const position = i++ + 1;\n const choiceId = item.id;\n isCorrect = this.checkItemAnswer(\n choiceIdsExcludedFromFeedback,\n choiceId,\n bucketId,\n item,\n position,\n isCorrect\n );\n });\n });\n\n if (this.hasCorrectAnswer) {\n this.isCorrect = isCorrect;\n } else {\n this.isCorrect = null;\n }\n }\n\n private checkItemAnswer(\n choiceIdsExcludedFromFeedback: string[],\n choiceId: any,\n bucketId: any,\n item: any,\n position: number,\n isCorrect: boolean\n ): boolean {\n if (\n choiceIdsExcludedFromFeedback.includes(choiceId) ||\n this.getFeedbackObject(bucketId, choiceId) == null\n ) {\n item.feedback = null;\n } else {\n const isChoiceCorrect = this.checkAnswerAndDisplayFeedback(\n bucketId,\n item,\n position,\n this.hasCorrectAnswer\n );\n isCorrect &&= isChoiceCorrect;\n }\n this.matchService.setItemStatus(item, this.hasCorrectAnswer);\n return isCorrect;\n }\n\n private checkAnswerAndDisplayFeedback(\n bucketId: string,\n choice: any,\n position: number,\n hasCorrectAnswer: boolean\n ): boolean {\n const feedbackObject = this.getFeedbackObject(bucketId, choice.id);\n choice.feedback = this.getFeedback(feedbackObject, hasCorrectAnswer, position);\n const isCorrect = hasCorrectAnswer ? this.getCorrectness(feedbackObject, position) : null;\n choice.isCorrect = isCorrect;\n if (this.doesPositionMatter(feedbackObject.position)) {\n choice.isIncorrectPosition = feedbackObject.position !== position;\n }\n this.tryDisableComponent();\n return isCorrect;\n }\n\n private getFeedback(feedbackObject: any, hasCorrectAnswer: boolean, position: number): string {\n return this.doesPositionMatter(feedbackObject.position)\n ? this.getPositionFeedback(feedbackObject, position, hasCorrectAnswer)\n : this.getNonPositionFeedback(feedbackObject, hasCorrectAnswer);\n }\n\n private doesPositionMatter(feedbackPosition: number): boolean {\n return this.componentContent.ordered && feedbackPosition != null;\n }\n\n private getPositionFeedback(\n feedbackObject: any,\n position: number,\n hasCorrectAnswer: boolean\n ): string {\n if (feedbackObject.position === position) {\n return feedbackObject.feedback\n ? feedbackObject.feedback\n : this.getNonPositionFeedback(feedbackObject, hasCorrectAnswer);\n } else {\n return this.getIncorrectPositionFeedback(feedbackObject);\n }\n }\n\n private getIncorrectPositionFeedback(feedbackObject: any): string {\n const incorrectPositionFeedback = feedbackObject.incorrectPositionFeedback;\n return incorrectPositionFeedback == null || incorrectPositionFeedback === ''\n ? $localize`Correct bucket but wrong position`\n : incorrectPositionFeedback;\n }\n\n private getNonPositionFeedback(feedbackObject: any, hasCorrectAnswer: boolean): string {\n let feedbackText = '';\n if (feedbackObject.feedback === '' && hasCorrectAnswer) {\n feedbackText = feedbackObject.isCorrect ? $localize`Correct` : $localize`Incorrect`;\n } else {\n feedbackText = feedbackObject.feedback;\n }\n return feedbackText;\n }\n\n private getCorrectness(feedbackObject: any, position: number): boolean {\n return this.doesPositionMatter(feedbackObject.position)\n ? feedbackObject.position === position\n : feedbackObject.isCorrect;\n }\n\n private getFeedbackObject(bucketId: string, choiceId: string): any {\n return (\n this.componentContent.feedback\n .find((bucketFeedback) => bucketFeedback.bucketId === bucketId)\n ?.choices.find((choiceFeedback) => choiceFeedback.choiceId === choiceId) ?? null\n );\n }\n\n studentDataChanged(): void {\n this.isCorrect = null;\n this.isLatestComponentStateSubmit = false;\n super.studentDataChanged();\n }\n\n /**\n * Create a new component state populated with the student data\n * @param action the action that is triggering creating of this component state\n * e.g. 'submit', 'save', 'change'\n * @return a promise that will return a component state\n */\n createComponentState(action: string): Promise {\n if (action === 'submit') {\n this.checkAnswer();\n this.isLatestComponentStateSubmit = true;\n } else {\n this.clearFeedback();\n this.processDirtyStudentWork();\n this.isLatestComponentStateSubmit = false;\n }\n const componentState = this.createComponentStateObject(action);\n this.isSubmit = false;\n return new Promise((resolve, reject) => {\n this.createComponentStateAdditionalProcessing(\n { resolve: resolve, reject: reject },\n componentState,\n action\n );\n });\n }\n\n private createComponentStateObject(action: string): any {\n const componentState: any = this.createNewComponentState();\n componentState.componentType = 'Match';\n componentState.nodeId = this.nodeId;\n componentState.componentId = this.componentId;\n componentState.isSubmit = this.isSubmit;\n const studentData: any = {\n buckets: this.cleanBuckets(\n this.projectService.getComponent(this.nodeId, this.componentId),\n copy(this.buckets)\n ),\n submitCounter: this.submitCounter\n };\n if (action === 'submit' && this.hasCorrectAnswer) {\n studentData.isCorrect = this.isCorrect;\n }\n componentState.studentData = studentData;\n if (this.isSubmit && this.hasDefaultFeedback()) {\n this.addDefaultFeedback(componentState);\n }\n return componentState;\n }\n\n /**\n * @param originalComponentContent The component content that has not had any additional content\n * injected into it such as onclick attributes and absolute asset paths.\n * @param buckets\n */\n private cleanBuckets(originalComponentContent: any, buckets: any): any {\n buckets.forEach((bucket) => {\n bucket.value = this.getCleanedValue(originalComponentContent, bucket);\n bucket.items.forEach((item) => {\n item.value = this.getCleanedValue(originalComponentContent, item);\n delete item.status;\n });\n });\n return buckets;\n }\n\n /**\n * @param originalComponentContent The component content that has not had any additional content\n * injected into it such as onclick attributes and absolute asset paths.\n * @param matchObj\n */\n private getCleanedValue(originalComponentContent: any, matchObj: any): string {\n return (\n originalComponentContent.buckets\n .concat(originalComponentContent.choices)\n .find((obj) => obj.id === matchObj.id)?.value ?? matchObj.value\n );\n }\n\n private clearFeedback(): void {\n this.choices.forEach((choice) => {\n choice.isCorrect = null;\n choice.isIncorrectPosition = null;\n choice.feedback = null;\n });\n }\n\n /**\n * Returns true if the choice has been authored to have a correct position\n * @param {string} choiceId the choice id\n * @return {boolean} whether the choice has a correct position in any bucket\n */\n private isAuthorHasSpecifiedACorrectPosition(choiceId: string): boolean {\n return this.componentContent.feedback.some((feedbackBucket) =>\n feedbackBucket.choices.some(\n (choice) => choice.choiceId === choiceId && choice.position != null\n )\n );\n }\n\n createMergedComponentState(componentStates: any[]): any[] {\n const mergedBuckets = [];\n componentStates.forEach((componentState) => {\n if (componentState.componentType === 'Match') {\n componentState.studentData.buckets.forEach((bucket) => mergeBucket(mergedBuckets, bucket));\n } else if (componentState.componentType === 'DialogGuidance') {\n this.addIdeasToSourceBucket(\n componentState.studentData.responses,\n this.craterService.getCRaterRubric(componentState.nodeId, componentState.componentId)\n );\n }\n });\n const mergedComponentState: any = this.createNewComponentState();\n mergedComponentState.studentData = {\n buckets: mergedBuckets\n };\n return mergedComponentState;\n }\n\n private addIdeasToSourceBucket(responses: any[], rubric: CRaterRubric): void {\n getUniqueIdeas(responses, rubric)\n .filter((idea) => !this.isInSourceBucket(idea))\n .forEach((idea) => {\n const choice = new Choice(idea.name, idea.text);\n this.choices.push(choice);\n this.getBucketById(this.sourceBucketId).items.push(choice);\n });\n }\n\n private isInSourceBucket(idea: CRaterIdea): boolean {\n return this.sourceBucket.items.some((item) => item.value === idea.text);\n }\n\n protected addChoice(): void {\n this.dialog\n .open(AddMatchChoiceDialogComponent, {\n panelClass: 'dialog-sm'\n })\n .afterClosed()\n .subscribe((result) => {\n if (result) {\n const choice = new Choice(generateRandomKey(), result);\n choice.studentCreated = true;\n this.sourceBucket.items.push(choice);\n this.studentDataChanged();\n }\n });\n }\n}\n", + "styleUrl": "match-student-default.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "assetService", + "type": "StudentAssetService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentService", + "type": "ComponentService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "craterService", + "type": "CRaterService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "matchService", + "type": "MatchService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "notebookService", + "type": "NotebookService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 63, + "jsdoctags": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "assetService", + "type": "StudentAssetService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentService", + "type": "ComponentService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "craterService", + "type": "CRaterService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "matchService", + "type": "MatchService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "notebookService", + "type": "NotebookService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "ComponentStudent" + ], + "templateData": "\n
    \n \n \n
    \n

    \n @if (componentContent.canCreateChoices) {\n \n }\n
    \n \n @for (item of buckets[0].items; track item.id; let position = $index) {\n \n \n \n }\n \n
    \n \n \n @for (bucket of buckets.slice(1); track bucket.id) {\n \n
    \n
    \n

    \n
    \n \n @for (item of bucket.items; track item.id; let position = $index) {\n \n \n \n }\n \n
    \n \n }\n \n\n\n@if (isSaveOrSubmitButtonVisible) {\n \n}\n@if (mode === 'student') {\n \n}\n" + }, + { + "name": "MatchSummaryDisplayComponent", + "id": "component-MatchSummaryDisplayComponent-dfd1e337fb70eb58c9dc7868786631debc1c27a8892a86bcaa4a94ab6cdecae8ed21777b26a98c755f960da29e2a002a2dafd0f0ecd7166e69e7b44d7457428b", + "file": "src/assets/wise5/directives/teacher-summary-display/match-summary-display/match-summary-display.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "match-summary-display", + "styleUrls": [], + "styles": [ + "\n @reference \"tailwindcss\";\n h3,\n .mat-subtitle-1 {\n margin-bottom: 8px;\n margin-top: 0;\n }\n .bucket {\n @apply p-2 mb-2 rounded-md;\n }\n .choice {\n @apply flex gap-1 px-2 py-1 mt-1 rounded-md bg-white border border-neutral-200 text-sm;\n }\n .mat-icon {\n vertical-align: middle;\n }\n " + ], + "templateUrl": [ + "./match-summary-display.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "chartType", + "deprecated": false, + "deprecationMessage": "", + "line": 70, + "type": "string", + "decorators": [], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "line": 65, + "type": "string", + "decorators": [], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "customLabelColors", + "deprecated": false, + "deprecationMessage": "", + "line": 73, + "type": "any[]", + "decorators": [], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "doRender", + "deprecated": false, + "deprecationMessage": "", + "line": 74, + "type": "boolean", + "decorators": [], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "hasWarning", + "deprecated": false, + "deprecationMessage": "", + "line": 71, + "type": "boolean", + "decorators": [], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "highlightCorrectAnswer", + "deprecated": false, + "deprecationMessage": "", + "line": 66, + "type": "boolean", + "decorators": [], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 64, + "type": "string", + "decorators": [], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "periodId", + "deprecated": false, + "deprecationMessage": "", + "line": 69, + "type": "number", + "decorators": [], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "source", + "deprecated": false, + "deprecationMessage": "", + "line": 68, + "type": "string", + "decorators": [], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "studentDataType", + "deprecated": false, + "deprecationMessage": "", + "line": 67, + "type": "string", + "decorators": [], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "warningMessage", + "deprecated": false, + "deprecationMessage": "", + "line": 72, + "type": "string", + "decorators": [], + "inheritance": { + "file": "SummaryDisplayComponent" + } + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "bucketData", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "literal type[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 32, + "modifierKind": [ + 124 + ] + }, + { + "name": "bucketsShowMore", + "defaultValue": "new Map()", + "deprecated": false, + "deprecationMessage": "", + "type": "Map", + "indexKey": "", + "optional": false, + "description": "", + "line": 33, + "modifierKind": [ + 123 + ] + }, + { + "name": "bucketValues", + "defaultValue": "new Set()", + "deprecated": false, + "deprecationMessage": "", + "type": "Set", + "indexKey": "", + "optional": false, + "description": "", + "line": 34, + "modifierKind": [ + 123 + ] + }, + { + "name": "isChoiceReuseMatch", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 35, + "modifierKind": [ + 124 + ] + }, + { + "name": "matchSummaryData", + "deprecated": false, + "deprecationMessage": "", + "type": "MatchSummaryData", + "indexKey": "", + "optional": false, + "description": "", + "line": 36, + "modifierKind": [ + 123 + ] + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "TeacherSummaryDisplayComponent" + } + }, + { + "name": "chartConfig", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 26, + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "colors", + "defaultValue": "{\n palette: [\n '#1a237e',\n '#701e82',\n '#aa187b',\n '#d72c6c',\n '#f65158',\n '#ff7d43',\n '#ffab32',\n '#fdd835',\n '#ffee58',\n '#ade563',\n '#50d67f',\n '#00c29d',\n '#00aab3',\n '#0090bc',\n '#0074b4',\n '#01579b'\n ],\n singleHue: 'rgb(170, 24, 123)',\n correct: '#00C853',\n incorrect: '#C62828'\n }", + "deprecated": false, + "deprecationMessage": "", + "type": "object", + "indexKey": "", + "optional": false, + "description": "", + "line": 27, + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "defaultMaxScore", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 50, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "hasCorrectness", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 51, + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "Highcharts", + "defaultValue": "Highcharts", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 52, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "maxScore", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 53, + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "meanScore", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 56, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "numResponses", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 58, + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "otherComponent", + "deprecated": false, + "deprecationMessage": "", + "type": "ComponentContent", + "indexKey": "", + "optional": false, + "description": "", + "line": 59, + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "otherComponentType", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 60, + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "percentResponded", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 61, + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "studentMaxScore", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 54, + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "studentMinScore", + "defaultValue": "1", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 55, + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "totalWorkgroups", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 62, + "inheritance": { + "file": "SummaryDisplayComponent" + } + } + ], + "methodsClass": [ + { + "name": "generateSummary", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 49, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "getBucketDataByValue", + "args": [ + { + "name": "bucketValue", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "MatchSummaryDataPoint[]", + "typeParameters": [], + "line": 72, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "bucketValue", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getBucketShowMore", + "args": [ + { + "name": "bucketValue", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 87, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "bucketValue", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 38, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "renderDisplay", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 96, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "setBucketData", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 66, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "setBucketShowMore", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "setBucketValues", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 60, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "setIsChoiceReuseMatch", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 43, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "sortChoices", + "args": [ + { + "name": "choiceA", + "type": "MatchSummaryDataPoint", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "choiceB", + "type": "MatchSummaryDataPoint", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 79, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "choiceA", + "type": "MatchSummaryDataPoint", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "choiceB", + "type": "MatchSummaryDataPoint", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "toggleBucketShowMore", + "args": [ + { + "name": "bucketValue", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "event", + "type": "Event", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 91, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "bucketValue", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "event", + "type": "Event", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "displaySourceSelfMessageToTeacher", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 47, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "TeacherSummaryDisplayComponent" + } + }, + { + "name": "getLatestScores", + "args": [], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 35, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "getLatestWork", + "args": [], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 39, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 31, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "TeacherSummaryDisplayComponent" + } + }, + { + "name": "renderSelfDisplay", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 43, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "calculateCountsAndPercentage", + "args": [ + { + "name": "dataCount", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 558, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "dataCount", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "convertObjectToArray", + "args": [ + { + "name": "obj", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 219, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "obj", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "createChartConfig", + "args": [ + { + "name": "chartType", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "title", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "xAxisType", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "total", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "series", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "colors", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 456, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "chartType", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "title", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "xAxisType", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "total", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "series", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "colors", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "createChoicesSeriesData", + "args": [ + { + "name": "component", + "type": "MultipleChoiceContent", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "summaryData", + "type": "MultipleChoiceSummaryData", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "SeriesData", + "typeParameters": [], + "line": 286, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "component", + "type": "MultipleChoiceContent", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "summaryData", + "type": "MultipleChoiceSummaryData", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "createScoresSeriesData", + "args": [ + { + "name": "summaryData", + "type": "ScoreSummaryData", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "unknown", + "typeParameters": [], + "line": 325, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "summaryData", + "type": "ScoreSummaryData", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "createSeries", + "args": [ + { + "name": "seriesData", + "type": "SeriesData", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 350, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "seriesData", + "type": "SeriesData", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "createTableSeriesData", + "args": [ + { + "name": "summaryData", + "type": "TableSummaryData", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "SeriesData", + "typeParameters": [], + "line": 247, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "summaryData", + "type": "TableSummaryData", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "filterLatestScoreAnnotations", + "args": [ + { + "name": "annotations", + "type": "Annotation[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 201, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "annotations", + "type": "Annotation[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "getChartColors", + "args": [], + "optional": false, + "returnType": "string[]", + "typeParameters": [], + "line": 405, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "getDataPointColor", + "args": [ + { + "name": "choice", + "type": "Choice", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string | null", + "typeParameters": [], + "line": 309, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "choice", + "type": "Choice", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "getGraphTitle", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 375, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "getGraphTitleForClass", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 395, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "getGraphTitleForSelf", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 387, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "getIndexByName", + "args": [ + { + "name": "series", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "name", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 431, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "series", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "name", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "getLatestScoreAnnotationForWorkgroup", + "args": [], + "optional": false, + "returnType": "Annotation", + "typeParameters": [], + "line": 169, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "getLatestStudentScores", + "args": [], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 153, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "getLatestStudentWork", + "args": [], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 191, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "getPercentResponded", + "args": [ + { + "name": "numResponses", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "totalWorkgroups", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 573, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "numResponses", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "totalWorkgroups", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "getScoreFromAnnotation", + "args": [ + { + "name": "annotation", + "type": "Annotation", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 321, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "annotation", + "type": "Annotation", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "getSummaryDataCount", + "args": [ + { + "name": "summaryData", + "type": "SummaryData", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "id", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 577, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "summaryData", + "type": "SummaryData", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "id", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "getTotalTableCount", + "args": [ + { + "name": "seriesData", + "type": "SeriesData", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 260, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "seriesData", + "type": "SeriesData", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "getTotalWorkgroups", + "args": [ + { + "name": "dataCount", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 564, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "dataCount", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "hasCorrectAnswer", + "args": [ + { + "name": "component", + "type": "MultipleChoiceContent", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 305, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "component", + "type": "MultipleChoiceContent", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "initializeCustomLabelColors", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 100, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "initializeOtherComponent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 93, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "isAuthoringPreview", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 120, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "isSourceSelf", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 581, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "isStudentDataType", + "args": [ + { + "name": "studentDataType", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 452, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "studentDataType", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "isStudentDataTypeResponses", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 444, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "isStudentDataTypeScores", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 448, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "isStudentRun", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 124, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "isVLEPreview", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 116, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "ngOnChanges", + "args": [ + { + "name": "changes", + "type": "SimpleChanges", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 106, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "changes", + "type": "SimpleChanges", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "processComponentStates", + "args": [ + { + "name": "componentStates", + "type": "ComponentState[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "unknown", + "typeParameters": [], + "line": 225, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "componentStates", + "type": "ComponentState[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "processScoreAnnotations", + "args": [ + { + "name": "annotations", + "type": "Annotation[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 266, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "annotations", + "type": "Annotation[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "renderClassResponses", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 144, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "renderClassScores", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 177, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "renderGraph", + "args": [ + { + "name": "seriesData", + "type": "SeriesData", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "total", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 340, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "seriesData", + "type": "SeriesData", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "total", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "setCustomLabelColors", + "args": [ + { + "name": "series", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "colors", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "customLabelColors", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 422, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "series", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "colors", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "customLabelColors", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "setLatestAnnotationIfNewer", + "args": [ + { + "name": "latestAnnotations", + "type": "Annotation", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "annotation", + "type": "Annotation", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 211, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "latestAnnotations", + "type": "Annotation", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "annotation", + "type": "Annotation", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "setMaxScore", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 182, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "setMinMaxScore", + "args": [ + { + "name": "annotations", + "type": "Annotation[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 274, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "annotations", + "type": "Annotation[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { CommonModule } from '@angular/common';\nimport { Component, OnInit } from '@angular/core';\nimport { MatchContent } from '../../../components/match/MatchContent';\nimport { MatchSummaryData } from '../summary-data/MatchSummaryData';\nimport { MatchSummaryDataPoint } from '../summary-data/MatchSummaryDataPoint';\nimport { MatIconModule } from '@angular/material/icon';\nimport { TeacherSummaryDisplayComponent } from '../teacher-summary-display.component';\n\n@Component({\n imports: [CommonModule, MatIconModule],\n selector: 'match-summary-display',\n styles: `\n @reference \"tailwindcss\";\n h3,\n .mat-subtitle-1 {\n margin-bottom: 8px;\n margin-top: 0;\n }\n .bucket {\n @apply p-2 mb-2 rounded-md;\n }\n .choice {\n @apply flex gap-1 px-2 py-1 mt-1 rounded-md bg-white border border-neutral-200 text-sm;\n }\n .mat-icon {\n vertical-align: middle;\n }\n `,\n templateUrl: './match-summary-display.component.html'\n})\nexport class MatchSummaryDisplayComponent extends TeacherSummaryDisplayComponent implements OnInit {\n protected bucketData: { value: string; choices: MatchSummaryDataPoint[] }[] = [];\n private bucketsShowMore: Map = new Map();\n private bucketValues: Set = new Set();\n protected isChoiceReuseMatch: boolean;\n private matchSummaryData: MatchSummaryData;\n\n ngOnInit(): void {\n this.setIsChoiceReuseMatch();\n this.generateSummary();\n }\n\n private setIsChoiceReuseMatch(): void {\n this.isChoiceReuseMatch = (\n this.projectService.getComponent(this.nodeId, this.componentId) as MatchContent\n ).choiceReuseEnabled;\n }\n\n private generateSummary(): void {\n this.getLatestWork().subscribe((componentStates) => {\n this.bucketData = [];\n this.bucketValues.clear();\n this.matchSummaryData = new MatchSummaryData(componentStates);\n this.setBucketValues();\n this.setBucketData();\n this.setBucketShowMore();\n });\n }\n\n protected setBucketValues(): void {\n this.matchSummaryData\n .getBucketsData()\n .forEach((bucket) => this.bucketValues.add(bucket.bucketValue));\n }\n\n protected setBucketData(): void {\n this.bucketValues.forEach((value) =>\n this.bucketData.push({ value: value, choices: this.getBucketDataByValue(value) })\n );\n }\n\n private getBucketDataByValue(bucketValue: string): MatchSummaryDataPoint[] {\n return this.matchSummaryData\n .getBucketsData()\n .find((bucket) => bucket.bucketValue === bucketValue)\n .bucketDataPoints.sort(this.sortChoices);\n }\n\n private sortChoices(choiceA: MatchSummaryDataPoint, choiceB: MatchSummaryDataPoint): number {\n return choiceB.getCount() - choiceA.getCount();\n }\n\n private setBucketShowMore(): void {\n this.bucketValues.forEach((value) => this.bucketsShowMore.set(value, false));\n }\n\n protected getBucketShowMore(bucketValue: string): boolean {\n return this.bucketsShowMore.get(bucketValue);\n }\n\n protected toggleBucketShowMore(bucketValue: string, event: Event): void {\n event.preventDefault();\n this.bucketsShowMore.set(bucketValue, !this.bucketsShowMore.get(bucketValue));\n }\n\n protected renderDisplay(): void {\n super.renderDisplay();\n this.generateSummary();\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "\n @reference \"tailwindcss\";\n h3,\n .mat-subtitle-1 {\n margin-bottom: 8px;\n margin-top: 0;\n }\n .bucket {\n @apply p-2 mb-2 rounded-md;\n }\n .choice {\n @apply flex gap-1 px-2 py-1 mt-1 rounded-md bg-white border border-neutral-200 text-sm;\n }\n .mat-icon {\n vertical-align: middle;\n }\n \n", + "extends": [ + "TeacherSummaryDisplayComponent" + ], + "implements": [ + "OnInit" + ], + "templateData": "\n
    \n

    \n {{ bucket.value }}\n @if (first) {\n (Source Bucket)\n }\n

    \n \n
    \n
    \n\n

    Choice Frequency

    \n@if (bucketData.length > 0) {\n

    Number of teams that moved each item (choice) into the different buckets (categories).

    \n
    \n \n @for (bucket of bucketData; track $index) {\n @if ($index > 0) {\n
    \n \n
    \n }\n }\n
    \n} @else {\n
    \n Your students' choices will show up here when they complete the activity.\n
    \n}\n" + }, + { + "name": "MilestoneClassResponsesComponent", + "id": "component-MilestoneClassResponsesComponent-f168d31b491b1014c18ed1ee473ad080ffc53d1f785170cf1befc603ec2067ed15958a3b4eb443c0b3e17db456e8af2705eb627568557daa004b7555f61cf6ab", + "file": "src/assets/wise5/classroomMonitor/classroomMonitorComponents/milestones/milestone-class-responses/milestone-class-responses.component.ts", + "encapsulation": [ + "ViewEncapsulation.None" + ], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "milestone-class-responses", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./milestone-class-responses.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "milestone", + "deprecated": false, + "deprecationMessage": "", + "line": 42, + "type": "any", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "component", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 37, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractClassResponsesComponent" + } + }, + { + "name": "firstNodeId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 38, + "modifierKind": [ + 123 + ] + }, + { + "name": "firstNodePosition", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 39, + "modifierKind": [ + 124 + ] + }, + { + "name": "lastNodeId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 40, + "modifierKind": [ + 123 + ] + }, + { + "name": "lastNodePosition", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 41, + "modifierKind": [ + 124 + ] + }, + { + "name": "node", + "deprecated": false, + "deprecationMessage": "", + "type": "Node", + "indexKey": "", + "optional": false, + "description": "", + "line": 43, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractClassResponsesComponent" + } + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 44, + "modifierKind": [ + 123 + ] + }, + { + "name": "allWorkgroupsExpanded", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractClassResponsesComponent" + } + }, + { + "name": "sortBy", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractClassResponsesComponent" + } + }, + { + "name": "sortedWorkgroups", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractClassResponsesComponent" + } + }, + { + "name": "workgroupExpanded", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "Record", + "indexKey": "", + "optional": false, + "description": "", + "line": 20, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractClassResponsesComponent" + } + }, + { + "name": "workgroupInView", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "Record", + "indexKey": "", + "optional": false, + "description": "", + "line": 21, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "AbstractClassResponsesComponent" + } + }, + { + "name": "workgroups", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractClassResponsesComponent" + } + }, + { + "name": "workgroupsById", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "Record", + "indexKey": "", + "optional": false, + "description": "", + "line": 22, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractClassResponsesComponent" + } + } + ], + "methodsClass": [ + { + "name": "collapseAll", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 157, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractClassResponsesComponent" + } + }, + { + "name": "expandAll", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 150, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractClassResponsesComponent" + } + }, + { + "name": "getChangeInScore", + "args": [ + { + "name": "initialScore", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "revisedScore", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 205, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "initialScore", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "revisedScore", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getComponentStates", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 139, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractClassResponsesComponent" + } + }, + { + "name": "getNodePositions", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 143, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "getScoreByWorkgroupId", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 194, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getWorkgroup", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 127, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getWorkgroupScore", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 190, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractClassResponsesComponent" + } + }, + { + "name": "hasWork", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 131, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractClassResponsesComponent" + } + }, + { + "name": "isCompleted", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeStatus", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 135, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeStatus", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractClassResponsesComponent" + } + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 62, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 46, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "onUpdateExpand", + "args": [ + { + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 164, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractClassResponsesComponent" + } + }, + { + "name": "saveEvent", + "args": [ + { + "name": "event", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 172, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "event", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "subscribeToAnnotations", + "args": [], + "optional": false, + "returnType": "Subscription", + "typeParameters": [], + "line": 88, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "subscribeToEvents", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 66, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "subscribeToFirstNodeAnnotations", + "args": [], + "optional": false, + "returnType": "Subscription", + "typeParameters": [], + "line": 114, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "subscribeToNotifications", + "args": [], + "optional": false, + "returnType": "Subscription", + "typeParameters": [], + "line": 75, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "subscribeToStudentWork", + "args": [], + "optional": false, + "returnType": "Subscription", + "typeParameters": [], + "line": 101, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "updateWorkgroup", + "args": [ + { + "name": "workgroup", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 176, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "workgroup", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractClassResponsesComponent" + } + }, + { + "name": "createCompletionStatus", + "args": [ + { + "name": "nodeStatus", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "CompletionStatus", + "typeParameters": [], + "line": 81, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeStatus", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractClassResponsesComponent" + } + }, + { + "name": "createSortFunction", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 132, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "AbstractClassResponsesComponent" + } + }, + { + "name": "getCompletionStatus", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "CompletionStatus", + "typeParameters": [], + "line": 74, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractClassResponsesComponent" + } + }, + { + "name": "getLatestAnnotationTimeByWorkgroupId", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 111, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractClassResponsesComponent" + } + }, + { + "name": "getLatestWorkTimeByWorkgroupId", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 101, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractClassResponsesComponent" + } + }, + { + "name": "isAnnotationForWorkgroup", + "args": [ + { + "name": "annotation", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 120, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "annotation", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractClassResponsesComponent" + } + }, + { + "name": "isWorkgroupShown", + "args": [ + { + "name": "workgroup", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 169, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "workgroup", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractClassResponsesComponent" + } + }, + { + "name": "onIntersection", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "intersectionObserverEntries", + "type": "IntersectionObserverEntry[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 150, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "intersectionObserverEntries", + "type": "IntersectionObserverEntry[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractClassResponsesComponent" + } + }, + { + "name": "retrieveStudentData", + "args": [ + { + "name": "node", + "type": "Node", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 33, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "node", + "type": "Node", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractClassResponsesComponent" + } + }, + { + "name": "setWorkgroupsById", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 47, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractClassResponsesComponent" + } + }, + { + "name": "sortWorkgroups", + "args": [ + { + "name": "sortBy", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 127, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "sortBy", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractClassResponsesComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatList" + }, + { + "name": "MatListItem" + }, + { + "name": "WorkgroupSelectAutocompleteComponent", + "type": "component" + }, + { + "name": "MatButton" + }, + { + "name": "NgIf" + }, + { + "name": "MatIcon" + }, + { + "name": "NgClass" + }, + { + "name": "MatTooltip" + }, + { + "name": "IntersectionObserverModule", + "type": "module" + }, + { + "name": "NgFor" + }, + { + "name": "MilestoneWorkgroupItemComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { copy } from '../../../../common/object/object';\nimport { Annotation } from '../../../../common/Annotation';\nimport { filter, Subscription } from 'rxjs';\nimport { AbstractClassResponsesComponent } from '../../AbstractClassResponsesComponent';\nimport { Node } from '../../../../common/Node';\nimport { Notification } from '../../../../../../app/domain/notification';\nimport { MatList, MatListItem } from '@angular/material/list';\nimport { WorkgroupSelectAutocompleteComponent } from '../../../../../../app/classroom-monitor/workgroup-select/workgroup-select-autocomplete/workgroup-select-autocomplete.component';\nimport { MatButton } from '@angular/material/button';\nimport { NgIf, NgClass, NgFor } from '@angular/common';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { IntersectionObserverModule } from '@ng-web-apis/intersection-observer';\nimport { MilestoneWorkgroupItemComponent } from '../milestone-workgroup-item/milestone-workgroup-item.component';\n\n@Component({\n imports: [\n MatList,\n MatListItem,\n WorkgroupSelectAutocompleteComponent,\n MatButton,\n NgIf,\n MatIcon,\n NgClass,\n MatTooltip,\n IntersectionObserverModule,\n NgFor,\n MilestoneWorkgroupItemComponent\n ],\n encapsulation: ViewEncapsulation.None,\n selector: 'milestone-class-responses',\n styleUrl: './milestone-class-responses.component.scss',\n templateUrl: './milestone-class-responses.component.html'\n})\nexport class MilestoneClassResponsesComponent extends AbstractClassResponsesComponent {\n protected component: any;\n private firstNodeId: string;\n protected firstNodePosition: string;\n private lastNodeId: string;\n protected lastNodePosition: string;\n @Input() milestone: any;\n protected node: Node;\n private subscriptions: Subscription = new Subscription();\n\n ngOnInit(): void {\n this.node = this.projectService.getNode(this.milestone.nodeId);\n this.component = this.node.getComponent(this.milestone.componentId);\n if (this.milestone.report.locations.length > 1) {\n this.firstNodeId = this.milestone.report.locations[0].nodeId;\n this.lastNodeId =\n this.milestone.report.locations[this.milestone.report.locations.length - 1].nodeId;\n }\n this.retrieveStudentData(this.projectService.getNode(this.firstNodeId));\n if (this.milestone.report.locations.length > 1) {\n this.retrieveStudentData(this.projectService.getNode(this.lastNodeId));\n }\n this.subscribeToEvents();\n this.getNodePositions();\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n private subscribeToEvents(): void {\n this.subscriptions.add(this.subscribeToNotifications());\n this.subscriptions.add(this.subscribeToAnnotations());\n this.subscriptions.add(this.subscribeToStudentWork());\n if (this.milestone.report.locations.length > 1) {\n this.subscriptions.add(this.subscribeToFirstNodeAnnotations());\n }\n }\n\n private subscribeToNotifications(): Subscription {\n return this.notificationService.notificationChanged$\n .pipe(\n filter(\n (notification: Notification) =>\n notification.type === 'CRaterResult' && this.workgroupsById[notification.toWorkgroupId]\n )\n )\n .subscribe((notification) =>\n this.updateWorkgroup(this.getWorkgroup(notification.toWorkgroupId))\n );\n }\n\n private subscribeToAnnotations(): Subscription {\n return this.annotationService.annotationReceived$\n .pipe(\n filter(\n (annotation: Annotation) =>\n annotation.nodeId === this.node.id && this.workgroupsById[annotation.toWorkgroupId]\n )\n )\n .subscribe((annotation: Annotation) =>\n this.updateWorkgroup(this.getWorkgroup(annotation.toWorkgroupId))\n );\n }\n\n private subscribeToStudentWork(): Subscription {\n return this.dataService.studentWorkReceived$\n .pipe(\n filter(\n ({ studentWork }) =>\n studentWork.nodeId === this.node.id && this.workgroupsById[studentWork.workgroupId]\n )\n )\n .subscribe(({ studentWork }) =>\n this.updateWorkgroup(this.getWorkgroup(studentWork.workgroupId))\n );\n }\n\n private subscribeToFirstNodeAnnotations(): Subscription {\n return this.annotationService.annotationReceived$\n .pipe(\n filter(\n (annotation: Annotation) =>\n annotation.nodeId === this.firstNodeId && this.workgroupsById[annotation.toWorkgroupId]\n )\n )\n .subscribe((annotation: Annotation) =>\n this.updateWorkgroup(this.getWorkgroup(annotation.toWorkgroupId))\n );\n }\n\n private getWorkgroup(workgroupId: number): any {\n return this.workgroupsById[workgroupId];\n }\n\n protected hasWork(): boolean {\n return this.projectService.nodeHasWork(this.node.id);\n }\n\n protected isCompleted(workgroupId: number, nodeStatus: any): boolean {\n return nodeStatus.isCompleted;\n }\n\n protected getComponentStates(): any[] {\n return this.dataService.getComponentStatesByNodeId(this.node.id);\n }\n\n private getNodePositions(): void {\n if (this.milestone.report.locations.length > 1) {\n this.firstNodePosition = this.projectService.getNodePositionById(this.firstNodeId);\n this.lastNodePosition = this.projectService.getNodePositionById(this.lastNodeId);\n }\n }\n\n protected expandAll(): void {\n super.expandAll();\n this.saveEvent('MilestoneStudentWorkExpandAllClicked', {\n milestoneId: this.milestone.id\n });\n }\n\n protected collapseAll(): void {\n super.collapseAll();\n this.saveEvent('MilestoneStudentWorkCollapseAllClicked', {\n milestoneId: this.milestone.id\n });\n }\n\n protected onUpdateExpand({ workgroupId, value }): void {\n super.onUpdateExpand({ workgroupId, value });\n this.saveEvent(value ? 'MilestoneStudentWorkOpened' : 'MilestoneStudentWorkClosed', {\n milestoneId: this.milestone.id,\n workgroupId: workgroupId\n });\n }\n\n private saveEvent(event: string, data: any): void {\n this.dataService.saveEvent('ClassroomMonitor', null, null, null, 'Navigation', event, data);\n }\n\n protected updateWorkgroup(workgroup: any): void {\n super.updateWorkgroup(workgroup);\n if (this.milestone.report.locations.length > 1) {\n const firstLocation = this.milestone.report.locations[0];\n workgroup.initialScore = this.getScoreByWorkgroupId(\n workgroup.workgroupId,\n firstLocation.nodeId,\n firstLocation.componentId\n );\n workgroup.changeInScore = this.getChangeInScore(workgroup.initialScore, workgroup.score);\n }\n this.workgroupsById[workgroup.workgroupId] = copy(workgroup);\n }\n\n protected getWorkgroupScore(workgroupId: number): number {\n return this.getScoreByWorkgroupId(workgroupId, this.node.id, this.component.id);\n }\n\n private getScoreByWorkgroupId(workgroupId: number, nodeId: string, componentId: string): number {\n const latestScoreAnnotation = this.annotationService.getLatestScoreAnnotation(\n nodeId,\n componentId,\n workgroupId\n );\n return latestScoreAnnotation\n ? this.annotationService.getScoreValueFromScoreAnnotation(latestScoreAnnotation)\n : null;\n }\n\n private getChangeInScore(initialScore: number, revisedScore: number): number {\n // returning -10000 ensures that this score appears as the lowest score\n return initialScore != -1 && revisedScore != -1 ? revisedScore - initialScore : -10000;\n }\n}\n", + "styleUrl": "./milestone-class-responses.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [ + "AbstractClassResponsesComponent" + ], + "templateData": "
    \n \n \n
    \n \n \n
    \n \n + Expand All\n \n \n - Collapse All\n \n
    \n
    \n
    \n \n
    \n \n Team\n \n arrow_drop_up\n \n \n \n Status\n \n arrow_drop_up\n \n \n \n Score\n \n arrow_drop_up\n \n \n 1\"\n class=\"table--list__thead__link flex justify-center items-center basis-[10%]\"\n (click)=\"sortWorkgroups('initialScore')\"\n aria-label=\"Sort by score on Step {{ firstNodePosition }}\"\n i18n-aria-label\n matTooltip=\"Sort by score on Step {{ firstNodePosition }}\"\n i18n-matTooltip\n matTooltipPosition=\"above\"\n >\n {{ firstNodePosition }}\n \n arrow_drop_up\n \n \n 1\"\n class=\"table--list__thead__link flex justify-center items-center basis-[10%]\"\n (click)=\"sortWorkgroups('score')\"\n aria-label=\"Sort by score on Step {{ lastNodePosition }}\"\n i18n-aria-label\n matTooltip=\"Sort by score on Step {{ lastNodePosition }}\"\n i18n-matTooltip\n matTooltipPosition=\"above\"\n >\n {{ lastNodePosition }}\n \n arrow_drop_up\n \n \n 1\"\n class=\"table--list__thead__link flex justify-center items-center basis-[10%]\"\n (click)=\"sortWorkgroups('changeInScore')\"\n aria-label=\"Sort by change in score\"\n i18n-aria-label\n matTooltip=\"Sort by change in score\"\n i18n-matTooltip\n matTooltipPosition=\"above\"\n >\n +/-\n \n arrow_drop_up\n \n \n
    \n
    \n
    \n \n \n \n \n
    \n
    \n
    \n" + }, + { + "name": "MilestoneDetailsComponent", + "id": "component-MilestoneDetailsComponent-f4d89f4173b99f12edee4b3bd0173fcc7741a39713b2f430a780133e3ab18e09fd8f7ef12ff1313fc2ed878d408d19c0596df4d5443d647ce41af877de178a2b", + "file": "src/assets/wise5/classroomMonitor/classroomMonitorComponents/milestones/milestone-details/milestone-details.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "milestone-details", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./milestone-details.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "milestone", + "deprecated": false, + "deprecationMessage": "", + "line": 37, + "type": "any", + "decorators": [] + } + ], + "outputsClass": [ + { + "name": "onVisitNodeGrading", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 38, + "type": "EventEmitter" + } + ], + "propertiesClass": [ + { + "name": "currentPeriod", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 35 + }, + { + "name": "description", + "deprecated": false, + "deprecationMessage": "", + "type": "SafeHtml", + "indexKey": "", + "optional": false, + "description": "", + "line": 36 + }, + { + "name": "recommendations", + "deprecated": false, + "deprecationMessage": "", + "type": "SafeHtml", + "indexKey": "", + "optional": false, + "description": "", + "line": 39 + }, + { + "name": "report", + "deprecated": false, + "deprecationMessage": "", + "type": "SafeHtml", + "indexKey": "", + "optional": false, + "description": "", + "line": 40 + }, + { + "name": "requiredNodeIds", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 41 + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 42 + } + ], + "methodsClass": [ + { + "name": "getAvatarColorForWorkgroupId", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getDisplayNamesByWorkgroupId", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 87, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getNodeNumberAndTitleByNodeId", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 101, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getNodeNumberByNodeId", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 105, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getNodeTitle", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 109, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getRequirements", + "args": [], + "optional": false, + "returnType": "string[]", + "typeParameters": [], + "line": 91, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 79, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 52, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "previewProject", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 139, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "processMilestone", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 64, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "saveMilestoneCurrentPeriodSelectedEvent", + "args": [ + { + "name": "currentPeriod", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 124, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "currentPeriod", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "saveTabSelectedEvent", + "args": [ + { + "name": "event", + "type": "MatTabChangeEvent", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 113, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "event", + "type": "MatTabChangeEvent", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "sortAchievementTimeDescending", + "args": [ + { + "name": "workgroup", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 145, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "workgroup", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "visitNodeGrading", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 151, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "SelectPeriodComponent", + "type": "component" + }, + { + "name": "NavItemProgressComponent", + "type": "component" + }, + { + "name": "MatTabGroup" + }, + { + "name": "MatTab" + }, + { + "name": "MilestoneClassResponsesComponent", + "type": "component" + }, + { + "name": "NgTemplateOutlet" + }, + { + "name": "MatList" + }, + { + "name": "MatListItem" + }, + { + "name": "MatIcon" + }, + { + "name": "DatePipe", + "type": "pipe" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { TeacherDataService } from '../../../../services/teacherDataService';\nimport { TeacherProjectService } from '../../../../services/teacherProjectService';\nimport { MatTabChangeEvent, MatTabGroup, MatTab } from '@angular/material/tabs';\nimport { ConfigService } from '../../../../services/configService';\nimport { Subscription } from 'rxjs';\nimport { MatDialog } from '@angular/material/dialog';\nimport { getAvatarColorForWorkgroupId } from '../../../../common/workgroup/workgroup';\nimport { SelectPeriodComponent } from '../../select-period/select-period.component';\nimport { NavItemProgressComponent } from '../../../../../../app/classroom-monitor/nav-item-progress/nav-item-progress.component';\nimport { MilestoneClassResponsesComponent } from '../milestone-class-responses/milestone-class-responses.component';\nimport { NgTemplateOutlet, DatePipe } from '@angular/common';\nimport { MatList, MatListItem } from '@angular/material/list';\nimport { MatIcon } from '@angular/material/icon';\n\n@Component({\n imports: [\n SelectPeriodComponent,\n NavItemProgressComponent,\n MatTabGroup,\n MatTab,\n MilestoneClassResponsesComponent,\n NgTemplateOutlet,\n MatList,\n MatListItem,\n MatIcon,\n DatePipe\n ],\n selector: 'milestone-details',\n styleUrl: './milestone-details.component.scss',\n templateUrl: './milestone-details.component.html'\n})\nexport class MilestoneDetailsComponent implements OnInit {\n currentPeriod: any;\n description: SafeHtml;\n @Input() milestone;\n @Output() onVisitNodeGrading = new EventEmitter();\n recommendations: SafeHtml;\n report: SafeHtml;\n requiredNodeIds: string[];\n subscriptions: Subscription = new Subscription();\n\n constructor(\n private configService: ConfigService,\n private dataService: TeacherDataService,\n private dialog: MatDialog,\n private projectService: TeacherProjectService,\n private sanitizer: DomSanitizer\n ) {}\n\n ngOnInit(): void {\n this.currentPeriod = this.dataService.getCurrentPeriod();\n this.processMilestone();\n this.subscriptions.add(\n this.dataService.currentPeriodChanged$.subscribe(({ currentPeriod }) => {\n this.currentPeriod = currentPeriod;\n this.processMilestone();\n this.saveMilestoneCurrentPeriodSelectedEvent(currentPeriod);\n })\n );\n }\n\n private processMilestone(): void {\n if (this.milestone.description) {\n this.description = this.sanitizer.bypassSecurityTrustHtml(this.milestone.description);\n }\n if (this.milestone.generatedRecommendations) {\n this.recommendations = this.sanitizer.bypassSecurityTrustHtml(\n this.milestone.generatedRecommendations\n );\n }\n if (this.milestone.generatedReport) {\n this.report = this.sanitizer.bypassSecurityTrustHtml(this.milestone.generatedReport);\n }\n this.requiredNodeIds = this.getRequirements();\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n getAvatarColorForWorkgroupId(workgroupId: number): string {\n return getAvatarColorForWorkgroupId(workgroupId);\n }\n\n getDisplayNamesByWorkgroupId(workgroupId: number): string {\n return this.configService.getDisplayNamesByWorkgroupId(workgroupId);\n }\n\n getRequirements(): string[] {\n const requirements = [];\n Object.entries(this.milestone.items).forEach(([key, value]) => {\n if ((value as any).checked) {\n requirements.push(key);\n }\n });\n return requirements;\n }\n\n getNodeNumberAndTitleByNodeId(nodeId: string): string {\n return `${this.getNodeNumberByNodeId(nodeId)}: ${this.getNodeTitle(nodeId)}`;\n }\n\n getNodeNumberByNodeId(nodeId: string): string {\n return this.projectService.nodeIdToNumber[nodeId];\n }\n\n getNodeTitle(nodeId: string): string {\n return this.projectService.getNodeTitle(nodeId);\n }\n\n saveTabSelectedEvent(event: MatTabChangeEvent): void {\n const name = `Milestone${event.tab.textLabel.replace(' ', '')}TabSelected`;\n const context = 'ClassroomMonitor',\n nodeId = null,\n componentId = null,\n componentType = null,\n category = 'Navigation',\n data = { milestoneId: this.milestone.id };\n this.dataService.saveEvent(context, nodeId, componentId, componentType, category, name, data);\n }\n\n private saveMilestoneCurrentPeriodSelectedEvent(currentPeriod: any): void {\n const context = 'ClassroomMonitor',\n nodeId = null,\n componentId = null,\n componentType = null,\n category = 'Navigation',\n data = {\n milestoneId: this.milestone.id,\n periodId: currentPeriod.periodId,\n periodName: currentPeriod.periodName\n },\n event = 'MilestonePeriodSelected';\n this.dataService.saveEvent(context, nodeId, componentId, componentType, category, event, data);\n }\n\n protected previewProject(): void {\n window.open(\n this.configService.getConfigParam('previewProjectURL') + `/${this.milestone.nodeId}`\n );\n }\n\n sortAchievementTimeDescending(workgroup: any[]): any[] {\n return workgroup.sort((a, b) => {\n return b.achievementTime - a.achievementTime;\n });\n }\n\n visitNodeGrading(nodeId: string): void {\n this.onVisitNodeGrading.emit(nodeId);\n }\n}\n", + "styleUrl": "./milestone-details.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "sanitizer", + "type": "DomSanitizer", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 42, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "sanitizer", + "type": "DomSanitizer", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "
    \n
    \n
    \n \n \n
    \n \n
    \n
    \n @if (milestone.description) {\n

    \n Description: \n \n

    \n }\n @if (requiredNodeIds.length) {\n

    \n Requirements: \n @for (nodeId of requiredNodeIds; track nodeId; let last = $last) {\n \n {{ getNodeNumberByNodeId(nodeId) }}: {{ getNodeTitle(nodeId) }}\n @if (!$last) {\n , \n }\n \n }\n

    \n }\n @if (milestone.type === 'milestoneReport') {\n

    \n Item Location: \n {{ getNodeNumberAndTitleByNodeId(milestone.nodeId) }}\n (Step Info)\n

    \n }\n
    \n @if (milestone.type === 'milestoneReport') {\n
    \n
    Class Report
    \n @if (!milestone.isReportAvailable) {\n
    \n

    \n This milestone includes automated reports that analyze student progress. Reports become\n available for each period once the following conditions are met:\n

    \n @if (milestone.satisfyConditional === 'any') {\n

    \n At least {{ milestone.satisfyMinNumWorkgroups }} team(s) or\n {{ milestone.satisfyMinPercentage }}% of the class have completed the milestone\n

    \n }\n @if (milestone.satisfyConditional === 'all') {\n

    \n At least {{ milestone.satisfyMinNumWorkgroups }} team(s) and\n {{ milestone.satisfyMinPercentage }}% of the class have completed the milestone\n

    \n }\n
    \n }\n @if (milestone.isReportAvailable) {\n
    \n }\n
    \n }\n
    \n @if (milestone.generatedRecommendations && milestone.isReportAvailable) {\n
    \n \n \n
    \n
    \n \n
    \n \n
    \n
    \n \n
    \n }\n @if (!milestone.generatedRecommendations && milestone.isReportAvailable) {\n
    \n
    Student Work
    \n \n
    \n }\n
    \n @if (!milestone.isReportAvailable) {\n
    \n
    \n Student Completion\n
    \n \n
    \n }\n \n \n \n Team\n \n Completed\n \n @for (workgroup of sortAchievementTimeDescending(milestone.workgroups); track workgroup) {\n \n \n \n {{\n getDisplayNamesByWorkgroupId(workgroup.workgroupId)\n }}\n \n \n \n @if (workgroup.achievementTime !== null) {\n \n {{ workgroup.achievementTime | date: 'mediumDate' }}\n \n }\n @if (workgroup.achievementTime === null) {\n Not Completed\n }\n \n \n }\n \n \n
    \n" + }, + { + "name": "MilestoneDetailsDialogComponent", + "id": "component-MilestoneDetailsDialogComponent-94df42449ba5c4d1005456f066c65c19069d99676ec1f7d8369ef72938885cb75d265006c782ec3284d4e2f83fb3c68c0be1e2246f4510b3f29edff43534b635", + "file": "src/assets/wise5/classroomMonitor/classroomMonitorComponents/milestones/milestone-details-dialog/milestone-details-dialog.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "milestone-details-dialog", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./milestone-details-dialog.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "milestone", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 32, + "decorators": [ + { + "name": "Inject", + "stringifiedArguments": "MAT_DIALOG_DATA" + } + ], + "modifierKind": [ + 171, + 125 + ] + } + ], + "methodsClass": [ + { + "name": "close", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 40, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 36, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "onVisitNodeGrading", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 45, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "saveMilestoneClosedEvent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 54, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "saveMilestoneEvent", + "args": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 58, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "saveMilestoneOpenedEvent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 50, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatDialogTitle" + }, + { + "name": "CdkScrollable" + }, + { + "name": "MatDialogContent" + }, + { + "name": "MilestoneDetailsComponent", + "type": "component" + }, + { + "name": "MatDialogActions" + }, + { + "name": "MatButton" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Inject, OnInit } from '@angular/core';\nimport {\n MatDialogRef,\n MAT_DIALOG_DATA,\n MatDialogTitle,\n MatDialogContent,\n MatDialogActions\n} from '@angular/material/dialog';\nimport { TeacherDataService } from '../../../../services/teacherDataService';\nimport { Router } from '@angular/router';\nimport { CdkScrollable } from '@angular/cdk/scrolling';\nimport { MilestoneDetailsComponent } from '../milestone-details/milestone-details.component';\nimport { MatButton } from '@angular/material/button';\n\n@Component({\n imports: [\n MatDialogTitle,\n CdkScrollable,\n MatDialogContent,\n MilestoneDetailsComponent,\n MatDialogActions,\n MatButton\n ],\n selector: 'milestone-details-dialog',\n styleUrl: './milestone-details-dialog.component.scss',\n templateUrl: './milestone-details-dialog.component.html'\n})\nexport class MilestoneDetailsDialogComponent implements OnInit {\n constructor(\n private dataService: TeacherDataService,\n private dialogRef: MatDialogRef,\n @Inject(MAT_DIALOG_DATA) public milestone: any,\n private router: Router\n ) {}\n\n ngOnInit(): void {\n this.saveMilestoneOpenedEvent();\n }\n\n protected close(): void {\n this.saveMilestoneClosedEvent();\n this.dialogRef.close();\n }\n\n protected onVisitNodeGrading(nodeId: string): void {\n this.dialogRef.close();\n this.router.navigate(['node', nodeId]);\n }\n\n private saveMilestoneOpenedEvent(): void {\n this.saveMilestoneEvent('MilestoneOpened');\n }\n\n private saveMilestoneClosedEvent(): void {\n this.saveMilestoneEvent('MilestoneClosed');\n }\n\n private saveMilestoneEvent(event: any): void {\n const context = 'ClassroomMonitor',\n nodeId = null,\n componentId = null,\n componentType = null,\n category = 'Navigation',\n data = { milestoneId: this.milestone.id },\n projectId = null;\n this.dataService.saveEvent(context, nodeId, componentId, componentType, category, event, data);\n }\n}\n", + "styleUrl": "./milestone-details-dialog.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialogRef", + "type": "MatDialogRef", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "milestone", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 28, + "jsdoctags": [ + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialogRef", + "type": "MatDialogRef", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "milestone", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "

    Milestone: {{ milestone.name }}

    \n\n \n \n\n\n \n\n" + }, + { + "name": "MilestoneReportButtonComponent", + "id": "component-MilestoneReportButtonComponent-47e4ea67d208dd4f1bfbda5169eb58a89647ff7404315f4f5aea644c1711651e5b8cf5ac0ab1e955d3650c25dd1f194ce1d60b8be5b8843065b8c0827086c2b6", + "file": "src/assets/wise5/classroomMonitor/classroomMonitorComponents/milestone-report-button/milestone-report-button.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "milestone-report-button", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./milestone-report-button.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "component", + "deprecated": false, + "deprecationMessage": "", + "line": 16, + "type": "any", + "decorators": [] + }, + { + "name": "node", + "deprecated": false, + "deprecationMessage": "", + "line": 17, + "type": "Node", + "decorators": [] + }, + { + "name": "periodId", + "deprecated": false, + "deprecationMessage": "", + "line": 18, + "type": "number", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "report", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "ngOnChanges", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "setMilestoneReport", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 32, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "showReport", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 36, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MilestoneService } from '../../../services/milestoneService';\nimport { Node } from '../../../common/Node';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MilestoneDetailsDialogComponent } from '../milestones/milestone-details-dialog/milestone-details-dialog.component';\n\n@Component({\n imports: [CommonModule, MatButtonModule, MatIconModule],\n selector: 'milestone-report-button',\n templateUrl: './milestone-report-button.component.html'\n})\nexport class MilestoneReportButtonComponent {\n @Input() component: any;\n @Input() node: Node;\n @Input() periodId: number;\n protected report: any;\n\n constructor(\n private dialog: MatDialog,\n private milestoneService: MilestoneService\n ) {}\n\n ngOnChanges(): void {\n if (this.node && this.component) {\n this.setMilestoneReport();\n }\n }\n\n private setMilestoneReport(): void {\n this.report = this.milestoneService.getMilestoneReport(this.node.id, this.component.id);\n }\n\n protected showReport(): void {\n this.dialog.open(MilestoneDetailsDialogComponent, {\n data: this.report,\n panelClass: 'dialog-lg'\n });\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "milestoneService", + "type": "MilestoneService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 19, + "jsdoctags": [ + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "milestoneService", + "type": "MilestoneService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "@if (report?.isReportAvailable) {\n \n}\n" + }, + { + "name": "MilestoneReportDataComponent", + "id": "component-MilestoneReportDataComponent-3a917e9fd9c730f52d73f1b00f91907091c32f66be4cd131977ffc28440a456cce3a3ca282ba33cab0b95debffd7e1fc3d121e1b7cefcd76a4b0cff8f130d1f8", + "file": "src/app/teacher/milestone/milestone-report-data/milestone-report-data.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "milestone-report-data", + "styleUrls": [], + "styles": [], + "template": "{{ output }}", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "calc", + "deprecated": false, + "deprecationMessage": "", + "line": 10, + "type": "string", + "decorators": [] + }, + { + "name": "componentId", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "line": 9, + "type": "string", + "decorators": [] + }, + { + "name": "data", + "deprecated": false, + "deprecationMessage": "", + "line": 13, + "type": "any", + "decorators": [] + }, + { + "name": "nodeId", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "line": 8, + "type": "string", + "decorators": [] + }, + { + "name": "scoreId", + "deprecated": false, + "deprecationMessage": "", + "line": 11, + "type": "string", + "decorators": [] + }, + { + "name": "scoreValues", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "line": 12, + "type": "any", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "output", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 15 + } + ], + "methodsClass": [ + { + "name": "getAverage", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 45, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getComponentData", + "args": [ + { + "name": "data", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "this.data" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "this.nodeId" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "this.componentId" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 59, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "data", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "this.data", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "this.nodeId", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "this.componentId", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getComponentDataByNodeIdAndComponentId", + "args": [ + { + "name": "data", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 71, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "data", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getCount", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 38, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getPercent", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 32, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getScoreValuesCount", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 49, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 19, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'milestone-report-data',\n template: `{{ output }}`\n})\nexport class MilestoneReportDataComponent {\n @Input() nodeId: string = '';\n @Input() componentId: string = '';\n @Input() calc: string;\n @Input() scoreId: string;\n @Input() scoreValues: any = [];\n @Input() data: any;\n\n output: string = '';\n\n constructor() {}\n\n ngOnInit() {\n this.data = JSON.parse(this.data.replace(/\\'/g, '\"'));\n if (this.calc === 'percent') {\n this.output = this.getPercent();\n }\n if (this.calc === 'count') {\n this.output = this.getCount();\n }\n if (this.calc === 'average') {\n this.output = this.getAverage();\n }\n }\n\n getPercent() {\n const count = this.getCount();\n const total = this.getComponentData().scoreCount;\n return `${Math.round((count / total) * 100)}%`;\n }\n\n getCount() {\n if (this.scoreValues && this.scoreValues.length) {\n return this.getScoreValuesCount();\n }\n return this.getComponentData().scoreCount;\n }\n\n getAverage() {\n return this.getComponentData().average;\n }\n\n getScoreValuesCount() {\n let count = 0;\n for (const [key, value] of Object.entries(this.getComponentData().counts)) {\n if (this.scoreValues.includes(Number(key))) {\n count += Number(value);\n }\n }\n return count;\n }\n\n getComponentData(\n data: any[] = this.data,\n nodeId: string = this.nodeId,\n componentId: string = this.componentId\n ): any {\n if (nodeId === '' && componentId === '') {\n return data[data.length - 1];\n } else {\n return this.getComponentDataByNodeIdAndComponentId(data, nodeId, componentId);\n }\n }\n\n getComponentDataByNodeIdAndComponentId(data: any[], nodeId: string, componentId: string): any {\n for (const componentData of data) {\n if (componentData.nodeId === nodeId && componentData.componentId === componentId) {\n return componentData;\n }\n }\n return null;\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [], + "line": 15 + }, + "extends": [] + }, + { + "name": "MilestoneReportGraphComponent", + "id": "component-MilestoneReportGraphComponent-a2d9dda3094c9ba66bdd87a8881218ae99b90e225e0208a96fa0f66c0b29c94b181174416589f0b62189316902ce6147b529e4d3fa764eb6998e05e12b481e15", + "file": "src/app/teacher/milestone/milestone-report-graph/milestone-report-graph.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "milestone-report-graph", + "styleUrls": [], + "styles": [], + "template": "", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "barColor", + "deprecated": false, + "deprecationMessage": "", + "line": 17, + "type": "string", + "decorators": [] + }, + { + "name": "data", + "deprecated": false, + "deprecationMessage": "", + "line": 20, + "type": "any", + "decorators": [] + }, + { + "name": "id", + "deprecated": false, + "deprecationMessage": "", + "line": 22, + "type": "string", + "decorators": [] + }, + { + "name": "locations", + "deprecated": false, + "deprecationMessage": "", + "line": 23, + "type": "any[]", + "decorators": [] + }, + { + "name": "name", + "deprecated": false, + "deprecationMessage": "", + "line": 24, + "type": "string", + "decorators": [] + }, + { + "name": "titleColor", + "deprecated": false, + "deprecationMessage": "", + "line": 26, + "type": "string", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "categories", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 18 + }, + { + "name": "chartConfig", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 19 + }, + { + "name": "DEFAULT_COLOR", + "defaultValue": "'rgb(194, 24, 91)'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 15 + }, + { + "name": "Highcharts", + "defaultValue": "Highcharts", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 21 + }, + { + "name": "series", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 25 + } + ], + "methodsClass": [ + { + "name": "calculateGraphDataAndCategories", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 97, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "getComponentSeriesData", + "args": [ + { + "name": "componentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 124, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getDataFromLocations", + "args": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "locations", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 118, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "locations", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getDataToGraph", + "args": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "locations", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 114, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "locations", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 30, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "onLoad", + "args": [ + { + "name": "chart", + "type": "Highcharts.Chart", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 142, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "chart", + "type": "Highcharts.Chart", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setConfig", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 39, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "HighchartsChartModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input, OnInit } from '@angular/core';\nimport * as Highcharts from 'highcharts';\nimport { rgbToHex } from '../../../../assets/wise5/common/color/color';\nimport { trimToLength } from '../../../../assets/wise5/common/string/string';\nimport { HighchartsChartModule } from 'highcharts-angular';\n\n@Component({\n imports: [HighchartsChartModule],\n selector: 'milestone-report-graph',\n styleUrl: './milestone-report-graph.component.scss',\n template:\n ''\n})\nexport class MilestoneReportGraphComponent implements OnInit {\n DEFAULT_COLOR = 'rgb(194, 24, 91)';\n\n @Input() barColor: string;\n categories: any[] = [];\n chartConfig: any;\n @Input() data: any;\n Highcharts: typeof Highcharts = Highcharts;\n @Input() id: string;\n @Input() locations: any[];\n @Input() name: string;\n series: any[];\n @Input() titleColor: string;\n\n constructor() {}\n\n ngOnInit(): void {\n this.data = JSON.parse(this.data.replace(/\\'/g, '\"'));\n if (this.name == null) {\n this.name = this.id;\n }\n this.calculateGraphDataAndCategories();\n this.setConfig();\n }\n\n private setConfig(): void {\n this.chartConfig = {\n chart: {\n type: 'column',\n height: 248,\n style: {\n fontFamily: 'Roboto,Helvetica Neue,sans-serif'\n }\n },\n title: {\n text: this.name,\n style: {\n fontSize: '14px',\n fontWeight: '500',\n color: this.titleColor ? this.titleColor : this.DEFAULT_COLOR\n }\n },\n plotOptions: {\n series: {\n dataLabels: {\n enabled: true,\n format: '{y}%'\n }\n },\n column: {\n dataLabels: {\n style: {\n fontSize: '10px'\n }\n }\n }\n },\n tooltip: {\n formatter: function () {\n return `${this.series.name}
    ${$localize`Teams`}: ${this.point.count}
    `;\n }\n },\n xAxis: {\n categories: this.categories\n },\n yAxis: {\n title: {\n text: ''\n },\n labels: {\n enabled: false\n }\n },\n exporting: {\n enabled: false\n },\n credits: {\n enabled: false\n },\n series: this.series\n };\n }\n\n private calculateGraphDataAndCategories(): void {\n const color = this.barColor ? this.barColor : this.DEFAULT_COLOR;\n const step = 100 / this.data.length / 100;\n let opacity = 0;\n const series = [];\n for (const componentData of this.getDataToGraph(this.data, this.locations)) {\n opacity += step;\n const singleSeries = {\n name: trimToLength(componentData.stepTitle, 26),\n color: rgbToHex(color, opacity),\n data: this.getComponentSeriesData(componentData)\n };\n series.push(singleSeries);\n }\n this.series = series;\n }\n\n private getDataToGraph(data: any, locations: any[]): any {\n return locations == null ? data : this.getDataFromLocations(data, locations);\n }\n\n private getDataFromLocations(data: any, locations: any[]): any[] {\n return locations.map((location) => {\n data[location - 1];\n });\n }\n\n private getComponentSeriesData(componentData: any): any {\n const scoreKeysSorted = Object.keys(componentData.counts).sort((a, b) => {\n return parseInt(a) - parseInt(b);\n });\n const seriesData = [];\n for (const scoreKey of scoreKeysSorted) {\n this.categories.push(scoreKey.toString());\n const scoreKeyCount = componentData.counts[scoreKey];\n const scoreKeyPercentage = Math.floor((100 * scoreKeyCount) / componentData.scoreCount);\n const scoreData = {\n y: scoreKeyPercentage,\n count: scoreKeyCount\n };\n seriesData.push(scoreData);\n }\n return seriesData;\n }\n\n protected onLoad(chart: Highcharts.Chart): void {\n setTimeout(() => {\n chart.reflow();\n }, 0);\n }\n}\n", + "styleUrl": "./milestone-report-graph.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [], + "line": 26 + }, + "extends": [], + "implements": [ + "OnInit" + ] + }, + { + "name": "MilestonesAuthoringComponent", + "id": "component-MilestonesAuthoringComponent-2ec7813f5026b369fdbf4fa44b28a755c89ab4e328b81f4ac2cbb36f5c78bdc4009eb34541425a7181936c303f910960017343661897ac279b0afae120110e43", + "file": "src/assets/wise5/authoringTool/milestones-authoring/milestones-authoring.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./milestones-authoring.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "availableSatisfyCriteria", + "defaultValue": "[{ value: 'isCompleted', text: 'Is Completed' }]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 37 + }, + { + "name": "availableSatisfyCriteriaFunctions", + "defaultValue": "[\n {\n value: 'percentOfScoresLessThan',\n text: $localize`Percent of Scores Less Than`\n },\n {\n value: 'percentOfScoresLessThanOrEqualTo',\n text: $localize`Percent of Scores Less Than or Equal To`\n },\n {\n value: 'percentOfScoresGreaterThan',\n text: $localize`Percent of Scores Greater Than`\n },\n {\n value: 'percentOfScoresGreaterThanOrEqualTo',\n text: $localize`Percent of Scores Greater Than or Equal To`\n },\n {\n value: 'percentOfScoresEqualTo',\n text: $localize`Percent of Scores Equal To`\n }\n ]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 38 + }, + { + "name": "customScoreKey", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 60 + }, + { + "name": "customScoreValues", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 61 + }, + { + "name": "idToExpanded", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 62 + }, + { + "name": "milestoneChanged", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 63 + }, + { + "name": "milestoneIdPrefix", + "defaultValue": "'milestone-'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 64 + }, + { + "name": "milestoneIds", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 65 + }, + { + "name": "milestoneSatisfyCriteriaIdPrefix", + "defaultValue": "'milestone-satisfy-criteria-'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 66 + }, + { + "name": "milestoneSatisfyCriteriaIds", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 67 + }, + { + "name": "nodeItems", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 68 + }, + { + "name": "project", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 69 + }, + { + "name": "reportIdPrefix", + "defaultValue": "'report-'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 70 + }, + { + "name": "reportIds", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 71 + }, + { + "name": "templateIdPrefix", + "defaultValue": "'template-'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 74 + }, + { + "name": "templateIds", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 72 + }, + { + "name": "templateSatisfyCriteriaIdPrefix", + "defaultValue": "'template-satisfy-criteria-'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 75 + }, + { + "name": "templateSatisfyCriteriaIds", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 73 + } + ], + "methodsClass": [ + { + "name": "addCustomScoreValues", + "args": [ + { + "name": "report", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "key", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "values", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 341, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "report", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "key", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "values", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addLocation", + "args": [ + { + "name": "report", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 323, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "report", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addMilestone", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 177, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addMilestoneSatisfyCriteria", + "args": [ + { + "name": "milestone", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 222, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "milestone", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addTemplate", + "args": [ + { + "name": "report", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 408, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "report", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addTemplateSatisfyCriteria", + "args": [ + { + "name": "template", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 458, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "template", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addToIdToExpanded", + "args": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 480, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "collapse", + "args": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 493, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "contentChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 502, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "copySatisfyCriteriaToMilestone", + "args": [ + { + "name": "milestone", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 245, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "milestone", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createLocation", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 316, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "createMilestone", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 150, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "createMilestoneSatisfyCriteria", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 200, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "createReport", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 282, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "createTemplate", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 387, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "createTemplateSatisfyCriteria", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 430, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "deleteCustomScoreValues", + "args": [ + { + "name": "report", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "key", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 380, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "report", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "key", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "deleteFromIdToExpanded", + "args": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 484, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "deleteLocation", + "args": [ + { + "name": "report", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 330, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "report", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "deleteMilestone", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 186, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "deleteMilestoneSatisfyCriteria", + "args": [ + { + "name": "milestone", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 230, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "milestone", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "deleteTemplate", + "args": [ + { + "name": "report", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 417, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "report", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "deleteTemplateSatisfyCriteria", + "args": [ + { + "name": "template", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 466, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "template", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "expand", + "args": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 488, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "generateUniqueId", + "args": [ + { + "name": "prefix", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "existingIds", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 308, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "prefix", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "existingIds", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getComponents", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 129, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getItemId", + "args": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 140, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getMilestoneIds", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 169, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "getMilestoneSatisfyCriteriaIds", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 212, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "getNodePositionAndTitle", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 125, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getNumberArrayFromCustomScoreValues", + "args": [ + { + "name": "valuesString", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number[]", + "typeParameters": [], + "line": 369, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "valuesString", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getOrderedNodeItems", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 96, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "getReportIds", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 300, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "getTemplateIds", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 398, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "getTemplateSatisfyCriteriaIds", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 446, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "initializeMilestones", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 109, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "isCRaterComponent", + "args": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 133, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 79, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "populateIdToExpanded", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 116, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "save", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 498, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "setNodeIdAndComponentIdToAllLocations", + "args": [ + { + "name": "milestone", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 271, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "milestone", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setNodeIdAndComponentIdToAllSatisfyCriteria", + "args": [ + { + "name": "milestone", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 258, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "milestone", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "validateCustomScoreValues", + "args": [ + { + "name": "key", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "values", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 353, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "key", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "values", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatInputModule", + "type": "module" + }, + { + "name": "MatSelectModule", + "type": "module" + }, + { + "name": "MatOptionModule", + "type": "module" + }, + { + "name": "MatSlideToggleModule", + "type": "module" + }, + { + "name": "TranslatableInputComponent", + "type": "component" + }, + { + "name": "TranslatableTextareaComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatOptionModule } from '@angular/material/core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { Subject, debounceTime } from 'rxjs';\nimport { generateRandomKey } from '../../common/string/string';\nimport { TeacherProjectService } from '../../services/teacherProjectService';\nimport { TranslatableInputComponent } from '../components/translatable-input/translatable-input.component';\nimport { TranslatableTextareaComponent } from '../components/translatable-textarea/translatable-textarea.component';\n\n@Component({\n imports: [\n CommonModule,\n FormsModule,\n MatButtonModule,\n MatIconModule,\n MatTooltipModule,\n MatFormFieldModule,\n MatInputModule,\n MatSelectModule,\n MatOptionModule,\n MatSlideToggleModule,\n TranslatableInputComponent,\n TranslatableTextareaComponent\n ],\n styleUrl: './milestones-authoring.component.scss',\n templateUrl: './milestones-authoring.component.html'\n})\nexport class MilestonesAuthoringComponent {\n availableSatisfyCriteria: any[] = [{ value: 'isCompleted', text: 'Is Completed' }];\n availableSatisfyCriteriaFunctions: any[] = [\n {\n value: 'percentOfScoresLessThan',\n text: $localize`Percent of Scores Less Than`\n },\n {\n value: 'percentOfScoresLessThanOrEqualTo',\n text: $localize`Percent of Scores Less Than or Equal To`\n },\n {\n value: 'percentOfScoresGreaterThan',\n text: $localize`Percent of Scores Greater Than`\n },\n {\n value: 'percentOfScoresGreaterThanOrEqualTo',\n text: $localize`Percent of Scores Greater Than or Equal To`\n },\n {\n value: 'percentOfScoresEqualTo',\n text: $localize`Percent of Scores Equal To`\n }\n ];\n customScoreKey: string;\n customScoreValues: string;\n idToExpanded: any = {};\n milestoneChanged: Subject = new Subject();\n milestoneIdPrefix: string = 'milestone-';\n milestoneIds: any;\n milestoneSatisfyCriteriaIdPrefix: string = 'milestone-satisfy-criteria-';\n milestoneSatisfyCriteriaIds: any;\n nodeItems: any[];\n project: any;\n reportIdPrefix: string = 'report-';\n reportIds: any;\n templateIds: any;\n templateSatisfyCriteriaIds: any;\n templateIdPrefix: string = 'template-';\n templateSatisfyCriteriaIdPrefix: string = 'template-satisfy-criteria-';\n\n constructor(private projectService: TeacherProjectService) {}\n\n ngOnInit(): void {\n this.project = this.projectService.project;\n this.nodeItems = this.getOrderedNodeItems();\n if (this.project.achievements == null) {\n this.initializeMilestones();\n }\n this.milestoneIds = this.getMilestoneIds();\n this.milestoneSatisfyCriteriaIds = this.getMilestoneSatisfyCriteriaIds();\n this.reportIds = this.getReportIds();\n this.templateIds = this.getTemplateIds();\n this.templateSatisfyCriteriaIds = this.getTemplateSatisfyCriteriaIds();\n this.populateIdToExpanded();\n this.milestoneChanged.pipe(debounceTime(1000)).subscribe(() => {\n this.save();\n });\n }\n\n private getOrderedNodeItems(): any[] {\n return Object.entries(this.projectService.idToOrder)\n .map((entry: any) => {\n return { key: entry[0], order: entry[1].order };\n })\n .filter((nodeItem: any) => {\n return this.projectService.isApplicationNode(nodeItem.key);\n })\n .sort((a: any, b: any) => {\n return a.order - b.order;\n });\n }\n\n private initializeMilestones(): void {\n this.project.achievements = {\n isEnabled: false,\n items: []\n };\n }\n\n private populateIdToExpanded(): void {\n for (const milestone of this.project.achievements.items) {\n this.idToExpanded[milestone.id] = false;\n for (const template of milestone.report.templates) {\n this.idToExpanded[template.id] = true;\n }\n }\n }\n\n protected getNodePositionAndTitle(nodeId: string): string {\n return this.projectService.getNodePositionAndTitle(nodeId);\n }\n\n protected getComponents(nodeId: string): any[] {\n return this.projectService.getComponents(nodeId);\n }\n\n protected isCRaterComponent(component: any): boolean {\n return (\n (component.type === 'OpenResponse' && component.enableCRater) ||\n component.type === 'DialogGuidance'\n );\n }\n\n protected getItemId(component: any): string {\n if (component.type === 'OpenResponse' && component.enableCRater) {\n return component.cRater.itemId;\n } else if (component.type === 'DialogGuidance') {\n return component.itemId;\n } else {\n return '';\n }\n }\n\n private createMilestone(): any {\n const item = {\n id: this.generateUniqueId(this.milestoneIdPrefix, this.milestoneIds),\n isEnabled: true,\n type: 'milestoneReport',\n name: '',\n description: '',\n icon: {\n image: ''\n },\n report: this.createReport(),\n satisfyCriteria: [],\n satisfyMinPercentage: 50,\n satisfyMinNumWorkgroups: 2,\n satisfyConditional: 'all'\n };\n return item;\n }\n\n private getMilestoneIds(): any {\n const milestoneIds = {};\n for (const milestone of this.project.achievements.items) {\n milestoneIds[milestone.id] = true;\n }\n return milestoneIds;\n }\n\n protected addMilestone(index: number): any {\n const milestone = this.createMilestone();\n this.project.achievements.items.splice(index, 0, milestone);\n this.milestoneIds[milestone.id] = true;\n this.addToIdToExpanded(milestone.id);\n this.save();\n return milestone;\n }\n\n protected deleteMilestone(index: number): any {\n const message = $localize`Are you sure you want to delete Milestone ${index + 1}?`;\n if (confirm(message)) {\n const deletedMilestones = this.project.achievements.items.splice(index, 1);\n const deletedMilestone = deletedMilestones[0];\n delete this.milestoneIds[deletedMilestone.id];\n this.deleteFromIdToExpanded(deletedMilestone.id);\n this.save();\n return deletedMilestone;\n } else {\n return null;\n }\n }\n\n private createMilestoneSatisfyCriteria(): any {\n return {\n id: this.generateUniqueId(\n this.milestoneSatisfyCriteriaIdPrefix,\n this.milestoneSatisfyCriteriaIds\n ),\n nodeId: '',\n componentId: '',\n name: ''\n };\n }\n\n private getMilestoneSatisfyCriteriaIds(): any {\n const milestoneSatisfyCriteriaIds = {};\n for (const milestone of this.project.achievements.items) {\n for (const milestoneSatisfyCriteria of milestone.satisfyCriteria) {\n milestoneSatisfyCriteriaIds[milestoneSatisfyCriteria.id] = true;\n }\n }\n return milestoneSatisfyCriteriaIds;\n }\n\n protected addMilestoneSatisfyCriteria(milestone: any, index: number): any {\n const milestoneSatisfyCriteria = this.createMilestoneSatisfyCriteria();\n milestone.satisfyCriteria.splice(index, 0, milestoneSatisfyCriteria);\n this.milestoneSatisfyCriteriaIds[milestoneSatisfyCriteria.id] = true;\n this.save();\n return milestoneSatisfyCriteria;\n }\n\n protected deleteMilestoneSatisfyCriteria(milestone: any, index: number): any {\n const message = $localize`Are you sure you want to delete Milestone Satisfy Criteria ${\n index + 1\n }?`;\n if (confirm(message)) {\n const deletedMilestoneSatisfyCriterias = milestone.satisfyCriteria.splice(index, 1);\n const deletedMilestoneSatisfyCriteria = deletedMilestoneSatisfyCriterias[0];\n delete this.milestoneSatisfyCriteriaIds[deletedMilestoneSatisfyCriteria.id];\n this.save();\n return deletedMilestoneSatisfyCriteria;\n } else {\n return null;\n }\n }\n\n protected copySatisfyCriteriaToMilestone(\n milestone: any,\n nodeId: string,\n componentId: string\n ): void {\n const message = $localize`Are you sure you want to copy the Node ID and Component ID to the rest of this Milestone?`;\n if (confirm(message)) {\n this.setNodeIdAndComponentIdToAllSatisfyCriteria(milestone, nodeId, componentId);\n this.setNodeIdAndComponentIdToAllLocations(milestone, nodeId, componentId);\n this.save();\n }\n }\n\n private setNodeIdAndComponentIdToAllSatisfyCriteria(\n milestone: any,\n nodeId: string,\n componentId: string\n ): void {\n for (const template of milestone.report.templates) {\n for (const satisfyCriteria of template.satisfyCriteria) {\n satisfyCriteria.nodeId = nodeId;\n satisfyCriteria.componentId = componentId;\n }\n }\n }\n\n private setNodeIdAndComponentIdToAllLocations(\n milestone: any,\n nodeId: string,\n componentId: string\n ): void {\n for (const location of milestone.report.locations) {\n location.nodeId = nodeId;\n location.componentId = componentId;\n }\n }\n\n private createReport(): any {\n const report = {\n id: this.generateUniqueId(this.reportIdPrefix, this.reportIds),\n title: '',\n isEnabled: true,\n audience: ['teacher'],\n templates: [],\n locations: [\n {\n nodeId: '',\n componentId: ''\n }\n ],\n customScoreValues: {}\n };\n return report;\n }\n\n private getReportIds(): any {\n const reportIds = {};\n for (const milestone of this.project.achievements.items) {\n reportIds[milestone.report.id] = true;\n }\n return reportIds;\n }\n\n private generateUniqueId(prefix: string, existingIds: any[]): string {\n let id: string;\n do {\n id = prefix + generateRandomKey();\n } while (existingIds[id] != null);\n return id;\n }\n\n private createLocation(): any {\n return {\n nodeId: '',\n componentId: ''\n };\n }\n\n protected addLocation(report: any, index: number): any {\n const location = this.createLocation();\n report.locations.splice(index, 0, location);\n this.save();\n return location;\n }\n\n protected deleteLocation(report: any, index: number): any {\n if (confirm($localize`Are you sure you want to delete this location?`)) {\n const deletedLocations = report.locations.splice(index, 1);\n const deletedLocation = deletedLocations[0];\n this.save();\n return deletedLocation;\n } else {\n return null;\n }\n }\n\n protected addCustomScoreValues(report: any, key: string, values: string): void {\n if (this.validateCustomScoreValues(key, values)) {\n if (report.customScoreValues == null) {\n report.customScoreValues = {};\n }\n report.customScoreValues[key] = this.getNumberArrayFromCustomScoreValues(values);\n this.customScoreKey = '';\n this.customScoreValues = '';\n this.save();\n }\n }\n\n private validateCustomScoreValues(key: string, values: string): boolean {\n let errorMessage = '';\n if (key === '') {\n errorMessage += $localize`Error: Key must not be empty` + '\\n';\n }\n if (values === '') {\n errorMessage += $localize`Error: Values must not be empty`;\n }\n if (errorMessage === '') {\n return true;\n } else {\n alert(errorMessage);\n return false;\n }\n }\n\n private getNumberArrayFromCustomScoreValues(valuesString: string): number[] {\n const numberArray = [];\n for (const value of valuesString.split(',')) {\n const numberValue = parseInt(value);\n if (!isNaN(numberValue)) {\n numberArray.push(numberValue);\n }\n }\n return numberArray;\n }\n\n protected deleteCustomScoreValues(report: any, key: string): void {\n if (confirm($localize`Are you sure you want to delete this custom score value?`)) {\n delete report.customScoreValues[key];\n this.save();\n }\n }\n\n private createTemplate(): any {\n return {\n id: this.generateUniqueId(this.templateIdPrefix, this.templateIds),\n description: '',\n recommendations: '',\n content: '',\n satisfyConditional: '',\n satisfyCriteria: []\n };\n }\n\n private getTemplateIds(): any {\n const templateIds = {};\n for (const milestone of this.project.achievements.items) {\n for (const template of milestone.report.templates) {\n templateIds[template.id] = true;\n }\n }\n return templateIds;\n }\n\n protected addTemplate(report: any, index: number): any {\n const template = this.createTemplate();\n report.templates.splice(index, 0, template);\n this.templateIds[template.id] = true;\n this.addToIdToExpanded(template.id);\n this.save();\n return template;\n }\n\n protected deleteTemplate(report: any, index: number): any {\n if (confirm($localize`Are you sure you want to delete Template ${index + 1}?`)) {\n const deletedTemplates = report.templates.splice(index, 1);\n const deletedTemplate = deletedTemplates[0];\n delete this.templateIds[deletedTemplate.id];\n this.deleteFromIdToExpanded(deletedTemplate.id);\n this.save();\n return deletedTemplate;\n } else {\n return null;\n }\n }\n\n private createTemplateSatisfyCriteria(): any {\n return {\n id: this.generateUniqueId(\n this.templateSatisfyCriteriaIdPrefix,\n this.templateSatisfyCriteriaIds\n ),\n nodeId: '',\n componentId: '',\n percentThreshold: 50,\n targetVariable: '',\n function: '',\n type: 'autoScore',\n value: 3\n };\n }\n\n private getTemplateSatisfyCriteriaIds(): any {\n const templateSatisfyCriteriaIds = {};\n for (const milestone of this.project.achievements.items) {\n for (const template of milestone.report.templates) {\n for (const satisfyCriteria of template.satisfyCriteria) {\n templateSatisfyCriteriaIds[satisfyCriteria.id] = true;\n }\n }\n }\n return templateSatisfyCriteriaIds;\n }\n\n protected addTemplateSatisfyCriteria(template: any, index: number): any {\n const satisfyCriteria = this.createTemplateSatisfyCriteria();\n template.satisfyCriteria.splice(index, 0, satisfyCriteria);\n this.templateSatisfyCriteriaIds[satisfyCriteria.id] = true;\n this.save();\n return satisfyCriteria;\n }\n\n protected deleteTemplateSatisfyCriteria(template: any, index: number): any {\n if (\n confirm($localize`Are you sure you want to delete Template Satisfy Criteria ${index + 1}?`)\n ) {\n const deletedSatisfyCriteria = template.satisfyCriteria.splice(index, 1);\n const deletedSatisfyCriterion = deletedSatisfyCriteria[0];\n delete this.templateSatisfyCriteriaIds[deletedSatisfyCriterion.id];\n this.save();\n return deletedSatisfyCriterion;\n } else {\n return null;\n }\n }\n\n private addToIdToExpanded(id: string): void {\n this.idToExpanded[id] = true;\n }\n\n private deleteFromIdToExpanded(id: string): void {\n delete this.idToExpanded[id];\n }\n\n protected expand(id: string): void {\n this.idToExpanded[id] = true;\n this.projectService.uiChanged();\n }\n\n protected collapse(id: string): void {\n this.idToExpanded[id] = false;\n this.projectService.uiChanged();\n }\n\n protected save(): void {\n this.projectService.saveProject();\n }\n\n protected contentChanged(): void {\n this.milestoneChanged.next();\n }\n}\n", + "styleUrl": "./milestones-authoring.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 75, + "jsdoctags": [ + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "
    \n

    Milestones Authoring

    \n
    \n
    \n \n Enable Milestones\n \n
    \n@if (project.achievements.isEnabled) {\n
    \n
    \n \n
    \n @for (item of project.achievements.items; track item; let milestoneIndex = $index) {\n
    \n
    \n
    \n @if (idToExpanded[item.id]) {\n \n keyboard_arrow_down\n \n }\n @if (!idToExpanded[item.id]) {\n \n keyboard_arrow_right\n \n }\n
    Milestone {{ milestoneIndex + 1 }}
    \n \n delete\n \n
    \n @if (idToExpanded[item.id]) {\n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n Enable Satisfy Criteria\n \n
    \n @if (item.isEnabled) {\n
    \n
    Satisfy Criteria
    \n
    \n \n Satisfy Minimum Percentage\n \n \n \n Satisfy Minimum Number Of Workgroups\n \n \n \n Satisfy Conditional\n \n Any\n All\n \n \n
    \n
    \n \n add\n Add Milestone Satisfy Criteria\n \n
    \n @for (\n satisfyCriteria of item.satisfyCriteria;\n track satisfyCriteria;\n let satisfyCriteriaIndex = $index\n ) {\n
    \n
    \n
    Milestone Satisfy Criteria
    \n \n delete\n \n
    \n
    \n \n Node ID\n \n @for (nodeItem of nodeItems; track nodeItem) {\n \n {{ getNodePositionAndTitle(nodeItem.key) }}\n \n }\n \n \n \n Component ID\n \n @for (\n component of getComponents(satisfyCriteria.nodeId);\n track component;\n let componentIndex = $index\n ) {\n \n {{ componentIndex + 1 }}. {{ component.type }}\n {{\n isCRaterComponent(component)\n ? '(' + getItemId(component) + ')'\n : ''\n }}\n \n }\n \n \n \n Name\n \n @for (\n availableSatisfyCriteria of availableSatisfyCriteria;\n track availableSatisfyCriteria\n ) {\n {{\n availableSatisfyCriteria.text\n }}\n }\n \n \n \n content_copy\n \n
    \n \n add\n Add Milestone Satisfy Criteria\n \n
    \n }\n
    \n }\n
    \n
    Report
    \n
    \n
    \n \n
    \n @for (\n location of item.report.locations;\n track location;\n let locationIndex = $index\n ) {\n
    \n \n
    Location {{ locationIndex + 1 }}
    \n \n Node ID\n \n @for (nodeItem of nodeItems; track nodeItem) {\n \n {{ getNodePositionAndTitle(nodeItem.key) }}\n \n }\n \n \n \n Component ID\n \n @for (\n component of getComponents(location.nodeId);\n track component;\n let componentIndex = $index\n ) {\n \n {{ componentIndex + 1 }}. {{ component.type }}\n {{\n isCRaterComponent(component)\n ? '(' + getItemId(component) + ')'\n : ''\n }}\n \n }\n \n \n \n delete\n \n
    \n
    \n \n add\n Add Report Location\n \n
    \n
    \n }\n
    \n
    Custom Score Values
    \n @for (\n customScoreValue of item.report.customScoreValues | keyvalue;\n track customScoreValue\n ) {\n
    \n
    {{ customScoreValue.key }}: {{ customScoreValue.value }}
    \n \n delete\n \n
    \n }\n
    \n \n Custom Score Key\n \n \n \n Custom Score Values\n \n \n \n add\n Add Custom Score Values\n \n
    \n
    \n
    \n \n
    \n @for (\n template of item.report.templates;\n track template;\n let templateIndex = $index\n ) {\n
    \n
    \n
    \n @if (idToExpanded[template.id]) {\n \n keyboard_arrow_down\n \n }\n @if (!idToExpanded[template.id]) {\n \n keyboard_arrow_right\n \n }\n
    Template {{ templateIndex + 1 }}
    \n \n delete\n \n
    \n @if (idToExpanded[template.id]) {\n
    \n
    \n \n Satisfy Conditional\n \n Any\n All\n \n \n
    \n
    \n \n add\n Add Template Satisfy Criteria\n \n
    \n @for (\n satisfyCriteria of template.satisfyCriteria;\n track satisfyCriteria;\n let satisfyCriteriaIndex = $index\n ) {\n
    \n
    \n
    \n
    \n Template Satisfy Criteria {{ satisfyCriteriaIndex + 1 }}\n
    \n \n delete\n \n
    \n
    \n \n Node ID\n \n @for (nodeItem of nodeItems; track nodeItem) {\n \n {{ getNodePositionAndTitle(nodeItem.key) }}\n \n }\n \n \n \n Component ID\n \n @for (\n component of getComponents(satisfyCriteria.nodeId);\n track component;\n let componentIndex = $index\n ) {\n \n {{ componentIndex + 1 }}. {{ component.type }}\n {{\n isCRaterComponent(component)\n ? '(' + getItemId(component) + ')'\n : ''\n }}\n \n }\n \n \n
    \n
    \n \n Function\n \n @for (\n availableSatisfyCriteriaFunction of availableSatisfyCriteriaFunctions;\n track availableSatisfyCriteriaFunction\n ) {\n \n {{ availableSatisfyCriteriaFunction.text }}\n \n }\n \n \n \n Percent Threshold\n \n \n
    \n
    \n \n Type\n \n \n \n Target Variable\n \n \n \n Value\n \n \n
    \n
    \n
    \n \n add\n Add Template Satisfy Criteria\n \n
    \n
    \n }\n
    \n \n
    \n
    \n \n
    \n Content Preview\n
    \n
    \n
    \n
    \n \n
    \n Recommendations Preview\n
    \n
    \n
    \n
    \n
    \n }\n
    \n
    \n \n add\n Add Template\n \n
    \n
    \n }\n
    \n
    \n
    \n }\n
    \n
    \n \n
    \n
    \n }\n \n}\n" + }, + { + "name": "MilestonesComponent", + "id": "component-MilestonesComponent-54c901f1864a26b6cdbeeda85b4d75622ba7ab28f7b3aa3a970184f6bdfed47d8418be048b63368fe0ce132a3d96da3a10248122824e4671cbaa0ddbd7b455ee", + "file": "src/app/classroom-monitor/milestones/milestones.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "milestones", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "milestones.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "milestones", + "deprecated": false, + "deprecationMessage": "", + "type": "Milestone[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 23, + "modifierKind": [ + 124 + ] + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 24, + "modifierKind": [ + 123 + ] + } + ], + "methodsClass": [ + { + "name": "loadProjectMilestones", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 45, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 41, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 34, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "showMilestoneDetails", + "args": [ + { + "name": "milestone", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 88, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "milestone", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "subscribeToAnnotationChanges", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 69, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "subscribeToNewStudentAchievements", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 52, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "subscribeToPeriodChanges", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 61, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "updateMilestoneStatus", + "args": [ + { + "name": "milestoneId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "milestoneId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatCard" + }, + { + "name": "MatCardContent" + }, + { + "name": "MatProgressSpinner" + }, + { + "name": "NgClass" + }, + { + "name": "MatIcon" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { Subscription } from 'rxjs';\nimport { MilestoneDetailsDialogComponent } from '../../../assets/wise5/classroomMonitor/classroomMonitorComponents/milestones/milestone-details-dialog/milestone-details-dialog.component';\nimport { AchievementService } from '../../../assets/wise5/services/achievementService';\nimport { AnnotationService } from '../../../assets/wise5/services/annotationService';\nimport { MilestoneService } from '../../../assets/wise5/services/milestoneService';\nimport { TeacherDataService } from '../../../assets/wise5/services/teacherDataService';\nimport { Milestone } from '../../domain/milestone';\nimport { Annotation } from '../../../assets/wise5/common/Annotation';\nimport { MatCard, MatCardContent } from '@angular/material/card';\nimport { MatProgressSpinner } from '@angular/material/progress-spinner';\nimport { NgClass } from '@angular/common';\nimport { MatIcon } from '@angular/material/icon';\n\n@Component({\n imports: [MatCard, MatCardContent, MatProgressSpinner, NgClass, MatIcon],\n selector: 'milestones',\n styleUrl: 'milestones.component.scss',\n templateUrl: 'milestones.component.html'\n})\nexport class MilestonesComponent {\n protected milestones: Milestone[];\n private subscriptions: Subscription = new Subscription();\n\n constructor(\n private achievementService: AchievementService,\n private annotationService: AnnotationService,\n private milestoneService: MilestoneService,\n private dialog: MatDialog,\n private dataService: TeacherDataService\n ) {}\n\n ngOnInit() {\n this.loadProjectMilestones();\n this.subscribeToNewStudentAchievements();\n this.subscribeToPeriodChanges();\n this.subscribeToAnnotationChanges();\n }\n\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n }\n\n private loadProjectMilestones(): void {\n this.milestones = this.milestoneService.getProjectMilestones();\n for (let milestone of this.milestones) {\n milestone = this.milestoneService.getProjectMilestoneStatus(milestone.id);\n }\n }\n\n private subscribeToNewStudentAchievements(): void {\n this.subscriptions.add(\n this.achievementService.newStudentAchievement$.subscribe((achievement: any) => {\n this.achievementService.addOrUpdateStudentAchievement(achievement);\n this.updateMilestoneStatus(achievement.achievementId);\n })\n );\n }\n\n private subscribeToPeriodChanges(): void {\n this.subscriptions.add(\n this.dataService.currentPeriodChanged$.subscribe(() => {\n this.milestones.forEach((milestone) => this.updateMilestoneStatus(milestone.id));\n })\n );\n }\n\n private subscribeToAnnotationChanges(): void {\n this.subscriptions.add(\n this.annotationService.annotationReceived$.subscribe((annotation: Annotation) => {\n this.milestones\n .filter(\n (milestone) =>\n milestone.nodeId === annotation.nodeId &&\n milestone.componentId === annotation.componentId\n )\n .forEach((milestone) => this.updateMilestoneStatus(milestone.id));\n })\n );\n }\n\n private updateMilestoneStatus(milestoneId: string): void {\n let milestone = this.milestones.find((milestone) => milestone.id === milestoneId);\n milestone = this.milestoneService.getProjectMilestoneStatus(milestoneId);\n }\n\n protected showMilestoneDetails(milestone: any): void {\n this.dialog.open(MilestoneDetailsDialogComponent, {\n data: milestone,\n panelClass: 'dialog-lg'\n });\n }\n}\n", + "styleUrl": "milestones.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "achievementService", + "type": "AchievementService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "milestoneService", + "type": "MilestoneService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 24, + "jsdoctags": [ + { + "name": "achievementService", + "type": "AchievementService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "milestoneService", + "type": "MilestoneService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "
    \n
    \n
    \n @for (milestone of milestones; track milestone) {\n \n \n
    {{ milestone.name }}
    \n
    \n \n \n @if (milestone.percentageCompleted < 100) {\n {{ milestone.percentageCompleted }}%\n }\n @if (milestone.percentageCompleted === 100) {\n check \n }\n
    \n
    \n

    \n {{ milestone.numberOfStudentsCompleted }}/{{ milestone.numberOfStudentsInRun }} teams\n completed\n

    \n @if (milestone.isReportAvailable) {\n

    ~ Report Available ~

    \n }\n \n \n }\n
    \n
    \n\n" + }, + { + "name": "MilestoneWorkgroupItemComponent", + "id": "component-MilestoneWorkgroupItemComponent-694814026a146a8dc06cec00fbc6262d3ead0e670e8f54dd8e0178b3cb210237dc081622b24ab6528242b4fd69da1894b3e5d32df5ed191941f944b1a0c6fb88", + "file": "src/assets/wise5/classroomMonitor/classroomMonitorComponents/milestones/milestone-workgroup-item/milestone-workgroup-item.component.ts", + "encapsulation": [ + "ViewEncapsulation.None" + ], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "milestone-workgroup-item", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./milestone-workgroup-item.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "line": 41, + "type": "string", + "decorators": [] + }, + { + "name": "expanded", + "deprecated": false, + "deprecationMessage": "", + "line": 44, + "type": "boolean", + "decorators": [] + }, + { + "name": "locations", + "deprecated": false, + "deprecationMessage": "", + "line": 56, + "type": "any[]", + "decorators": [] + }, + { + "name": "showScore", + "deprecated": false, + "deprecationMessage": "", + "line": 59, + "type": "boolean", + "decorators": [] + }, + { + "name": "workgroupData", + "deprecated": false, + "deprecationMessage": "", + "line": 65, + "type": "any", + "decorators": [] + }, + { + "name": "workgroupId", + "deprecated": false, + "deprecationMessage": "", + "line": 64, + "type": "number", + "decorators": [] + } + ], + "outputsClass": [ + { + "name": "onUpdateExpand", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 57, + "type": "EventEmitter" + } + ], + "propertiesClass": [ + { + "name": "changeInScore", + "deprecated": false, + "deprecationMessage": "", + "type": "number | \"-\"", + "indexKey": "", + "optional": false, + "description": "", + "line": 40 + }, + { + "name": "components", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 42 + }, + { + "name": "disabled", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 43 + }, + { + "name": "firstComponent", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 45 + }, + { + "name": "firstComponentId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 46 + }, + { + "name": "firstComponentMaxScore", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 48 + }, + { + "name": "firstNodeId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 47 + }, + { + "name": "hasAlert", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 49 + }, + { + "name": "hasNewAlert", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 50 + }, + { + "name": "initialScore", + "deprecated": false, + "deprecationMessage": "", + "type": "number | \"-\"", + "indexKey": "", + "optional": false, + "description": "", + "line": 51 + }, + { + "name": "lastComponent", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 52 + }, + { + "name": "lastComponentId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 53 + }, + { + "name": "lastComponentMaxScore", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 55 + }, + { + "name": "lastNodeId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 54 + }, + { + "name": "score", + "deprecated": false, + "deprecationMessage": "", + "type": "number | \"-\"", + "indexKey": "", + "optional": false, + "description": "", + "line": 58 + }, + { + "name": "status", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 60 + }, + { + "name": "statusClass", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 61 + }, + { + "name": "statusText", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 62 + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 63 + } + ], + "methodsClass": [ + { + "name": "getComponentTypeLabel", + "args": [ + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 142, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getNodePosition", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 146, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "initFirstLocation", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 89, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "initLastLocation", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 81, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "ngOnChanges", + "args": [ + { + "name": "changes", + "type": "SimpleChanges", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 122, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "changes", + "type": "SimpleChanges", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 138, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 72, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "setFirstComponentMaxScore", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 108, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "setLastComponentMaxScore", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 115, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "subscribeToProjectChanges", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 97, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "toggleExpand", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 178, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "update", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 150, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "NgClass" + }, + { + "name": "MatButton" + }, + { + "name": "WorkgroupInfoComponent", + "type": "component" + }, + { + "name": "WorkgroupNodeStatusComponent", + "type": "component" + }, + { + "name": "WorkgroupNodeScoreComponent", + "type": "component" + }, + { + "name": "MatListItem" + }, + { + "name": "WorkgroupComponentGradingComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "'use strict';\n\nimport {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n SimpleChanges,\n ViewEncapsulation\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { copy } from '../../../../common/object/object';\nimport { ComponentTypeService } from '../../../../services/componentTypeService';\nimport { TeacherProjectService } from '../../../../services/teacherProjectService';\nimport { NgClass } from '@angular/common';\nimport { MatButton } from '@angular/material/button';\nimport { WorkgroupInfoComponent } from '../../nodeGrading/workgroupInfo/workgroup-info.component';\nimport { WorkgroupNodeStatusComponent } from '../../../../../../app/classroom-monitor/workgroup-node-status/workgroup-node-status.component';\nimport { WorkgroupNodeScoreComponent } from '../../shared/workgroupNodeScore/workgroup-node-score.component';\nimport { MatListItem } from '@angular/material/list';\nimport { WorkgroupComponentGradingComponent } from '../../workgroup-component-grading/workgroup-component-grading.component';\n\n@Component({\n encapsulation: ViewEncapsulation.None,\n imports: [\n NgClass,\n MatButton,\n WorkgroupInfoComponent,\n WorkgroupNodeStatusComponent,\n WorkgroupNodeScoreComponent,\n MatListItem,\n WorkgroupComponentGradingComponent\n ],\n selector: 'milestone-workgroup-item',\n styleUrl: './milestone-workgroup-item.component.scss',\n templateUrl: './milestone-workgroup-item.component.html'\n})\nexport class MilestoneWorkgroupItemComponent implements OnInit {\n changeInScore: number | '-';\n @Input() componentId: string;\n components: any[] = [];\n disabled: boolean;\n @Input() expanded: boolean;\n firstComponent: any;\n firstComponentId: string;\n firstNodeId: string;\n firstComponentMaxScore: number;\n hasAlert: boolean;\n hasNewAlert: boolean;\n initialScore: number | '-';\n lastComponent: any;\n lastComponentId: string;\n lastNodeId: string;\n lastComponentMaxScore: number;\n @Input() locations: any[];\n @Output() onUpdateExpand: EventEmitter = new EventEmitter();\n score: number | '-';\n @Input() showScore: boolean;\n status: any;\n statusClass: any;\n statusText: string = '';\n subscriptions: Subscription = new Subscription();\n @Input() workgroupId: number;\n @Input() workgroupData: any;\n\n constructor(\n protected componentTypeService: ComponentTypeService,\n protected projectService: TeacherProjectService\n ) {}\n\n ngOnInit(): void {\n this.initLastLocation();\n if (this.locations.length > 1) {\n this.initFirstLocation();\n }\n this.subscribeToProjectChanges();\n this.update();\n }\n\n private initLastLocation(): void {\n const lastLocation = this.locations[this.locations.length - 1];\n this.lastNodeId = lastLocation.nodeId;\n this.lastComponentId = lastLocation.componentId;\n this.lastComponent = this.projectService.getComponent(this.lastNodeId, this.lastComponentId);\n this.setLastComponentMaxScore();\n }\n\n private initFirstLocation(): void {\n const firstLocation = this.locations[0];\n this.firstComponentId = firstLocation.componentId;\n this.firstNodeId = firstLocation.nodeId;\n this.firstComponent = this.projectService.getComponent(this.firstNodeId, this.firstComponentId);\n this.setFirstComponentMaxScore();\n }\n\n private subscribeToProjectChanges(): void {\n this.subscriptions.add(\n this.projectService.projectSaved$.subscribe(() => {\n this.setLastComponentMaxScore();\n if (this.locations.length > 1) {\n this.setFirstComponentMaxScore();\n }\n })\n );\n }\n\n private setFirstComponentMaxScore(): void {\n this.firstComponentMaxScore = this.projectService.getMaxScoreForComponent(\n this.firstNodeId,\n this.firstComponentId\n );\n }\n\n private setLastComponentMaxScore(): void {\n this.lastComponentMaxScore = this.projectService.getMaxScoreForComponent(\n this.lastNodeId,\n this.lastComponentId\n );\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.workgroupData) {\n const workgroupData = copy(changes.workgroupData.currentValue);\n this.hasAlert = workgroupData.hasAlert;\n this.hasNewAlert = workgroupData.hasNewAlert;\n this.status = workgroupData.completionStatus;\n this.score = workgroupData.score != null ? workgroupData.score : '-';\n this.initialScore = workgroupData.initialScore != null ? workgroupData.initialScore : '-';\n this.changeInScore =\n workgroupData.score != null && workgroupData.initialScore != null\n ? workgroupData.score - workgroupData.initialScore\n : '-';\n }\n this.update();\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n getComponentTypeLabel(componentType: string): string {\n return this.componentTypeService.getComponentTypeLabel(componentType);\n }\n\n getNodePosition(nodeId: string): string {\n return this.projectService.getNodePositionById(nodeId);\n }\n\n private update(): void {\n switch (this.status) {\n case -1:\n this.statusClass = ' ';\n this.statusText = $localize`Not Assigned`;\n break;\n case 2:\n this.statusClass = 'success';\n this.statusText = $localize`Completed`;\n break;\n case 1:\n this.statusClass = 'text';\n this.statusText = $localize`Partially Completed`;\n break;\n default:\n this.statusClass = 'text-secondary';\n if (this.componentId) {\n this.statusText = $localize`Not Completed`;\n } else {\n this.statusText = $localize`No Work`;\n }\n }\n if (this.hasNewAlert) {\n this.statusClass = 'warn';\n }\n this.disabled = this.status === -1;\n }\n\n toggleExpand(): void {\n if (this.showScore) {\n this.onUpdateExpand.emit({ workgroupId: this.workgroupId, value: !this.expanded });\n }\n }\n}\n", + "styleUrl": "./milestone-workgroup-item.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "componentTypeService", + "type": "ComponentTypeService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 65, + "jsdoctags": [ + { + "name": "componentTypeService", + "type": "ComponentTypeService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "\n \n
    \n
    \n \n
    \n @if (locations.length == 1) {\n
    \n \n
    \n }\n @if (showScore && locations.length > 1) {\n
    \n \n
    \n }\n @if (showScore) {\n 1 ? 'basis-[10%]' : 'basis-[20%]'\"\n >\n \n
    \n }\n @if (showScore && locations.length > 1) {\n
    \n 0, warn: changeInScore < 0 }\"\n >\n @if (changeInScore > 0) {\n +\n }\n {{ changeInScore }}\n \n
    \n }\n \n \n @if (expanded && !disabled) {\n \n
    \n @if (locations.length > 1) {\n \n
    \n

    \n Step {{ getNodePosition(firstNodeId) }} ({{\n getComponentTypeLabel(firstComponent.type)\n }}) \n \n

    \n \n
    \n
    \n }\n \n
    \n

    \n Step {{ getNodePosition(lastNodeId) }} ({{\n getComponentTypeLabel(lastComponent.type)\n }}) \n \n

    \n \n
    \n \n \n
    \n }\n\n" + }, + { + "name": "MobileMenuComponent", + "id": "component-MobileMenuComponent-a91be38247f002a559ab773b29726d411a9f54168cd0e8053475e315ac45648fb2a452ed467876bfb048fa0109dc37d9f5c08b463c07919e18bf20a7044889ee", + "file": "src/app/modules/mobile-menu/mobile-menu.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "app-mobile-menu", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./mobile-menu.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "signedIn", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "close", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 27, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "getUser", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 31, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 23, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatDividerModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "RouterModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, OnInit } from '@angular/core';\nimport { UserService } from '../../services/user.service';\nimport { UtilService } from '../../services/util.service';\nimport { RouterModule } from '@angular/router';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n imports: [MatButtonModule, MatDividerModule, MatIconModule, RouterModule],\n selector: 'app-mobile-menu',\n styleUrl: './mobile-menu.component.scss',\n templateUrl: './mobile-menu.component.html'\n})\nexport class MobileMenuComponent implements OnInit {\n protected signedIn: boolean;\n\n constructor(\n private userService: UserService,\n private utilService: UtilService\n ) {}\n\n ngOnInit(): void {\n this.getUser();\n }\n\n protected close(): void {\n this.utilService.showMobileMenu(false);\n }\n\n private getUser(): void {\n this.userService.getUser().subscribe((user) => {\n this.signedIn = user.roles?.length > 0;\n });\n }\n}\n", + "styleUrl": "./mobile-menu.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "userService", + "type": "UserService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "utilService", + "type": "UtilService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 16, + "jsdoctags": [ + { + "name": "userService", + "type": "UserService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "utilService", + "type": "UtilService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "\n" + }, + { + "name": "MoveUserConfirmDialogComponent", + "id": "component-MoveUserConfirmDialogComponent-226fe2337ad916253152cdebf4405ceb4edd79c66bf9896677563f52e34a26048dcb042c3d3b739d2f7abfb7e2ff3590e091e1e590868a70940042c50f0ba95f", + "file": "src/assets/wise5/classroomMonitor/classroomMonitorComponents/manageStudents/move-user-confirm-dialog/move-user-confirm-dialog.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./move-user-confirm-dialog.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "isMovingFromWorkgroup", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "decorators": [ + { + "name": "Inject", + "stringifiedArguments": "MAT_DIALOG_DATA" + } + ], + "modifierKind": [ + 171, + 125 + ] + } + ], + "methodsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatDialogModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { CommonModule } from '@angular/common';\nimport { Component, Inject } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n imports: [CommonModule, MatButtonModule, MatDialogModule, MatIconModule],\n templateUrl: './move-user-confirm-dialog.component.html'\n})\nexport class MoveUserConfirmDialogComponent {\n constructor(@Inject(MAT_DIALOG_DATA) public isMovingFromWorkgroup: boolean) {}\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "isMovingFromWorkgroup", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 11, + "jsdoctags": [ + { + "name": "isMovingFromWorkgroup", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "

    \n Move Student\n \n @if (isMovingFromWorkgroup) {\n warning\n }\n

    \n\n
    \n @if (isMovingFromWorkgroup) {\n

    \n Warning: Removing a student from a team will result in the student losing all the work they\n completed with that team.\n

    \n }\n

    The student will adopt the work of their new team.

    \n

    Are you sure you wish to proceed?

    \n
    \n
    \n\n \n \n\n" + }, + { + "name": "MultipleChoiceAuthoring", + "id": "component-MultipleChoiceAuthoring-76c71a41c3973b88076853ca9d5f11003d0cc7ed58d2a784412d65e486742e9a848ea1cbdd883f82d9906961a77f2e5b8b2b746554577d43ef10f46cdc150ce0", + "file": "src/assets/wise5/components/multipleChoice/multiple-choice-authoring/multiple-choice-authoring.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "multiple-choice-authoring.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "allowedConnectedComponentTypes", + "defaultValue": "['MultipleChoice']", + "deprecated": false, + "deprecationMessage": "", + "type": "[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 34, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "choiceTextChange", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 35, + "modifierKind": [ + 124 + ] + }, + { + "name": "feedbackTextChange", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 36, + "modifierKind": [ + 124 + ] + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "idToOrder", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "inputChange", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "promptChange", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + } + ], + "methodsClass": [ + { + "name": "addChoice", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 69, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "componentHasFeedback", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 60, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "deleteChoice", + "args": [ + { + "name": "choice", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 74, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "choice", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "feedbackChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 51, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "findChoiceIndex", + "args": [ + { + "name": "searchChoice", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 91, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "searchChoice", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "moveChoiceDown", + "args": [ + { + "name": "choice", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 86, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "choice", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "moveChoiceUp", + "args": [ + { + "name": "choice", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 81, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "choice", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 38, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "processSelectedAsset", + "args": [ + { + "name": "value", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 95, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "value", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "assetSelected", + "args": [ + { + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 100, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "componentChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 73, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "confirmAndRemove", + "args": [ + { + "name": "message", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "array", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 110, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "message", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "array", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "deleteStarterState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 81, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "getComponent", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 106, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "getComponents", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 102, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "isForThisComponent", + "args": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 77, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "moveObjectDown", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 122, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "moveObjectUp", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 117, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 65, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "promptChanged", + "args": [ + { + "name": "prompt", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 69, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "prompt", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "saveStarterState", + "args": [ + { + "name": "starterState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "starterState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "setShowSubmitButtonValue", + "args": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 85, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatCheckboxModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatRadioModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + }, + { + "name": "EditComponentPrompt", + "type": "component" + }, + { + "name": "TranslatableAssetChooserComponent", + "type": "component" + }, + { + "name": "TranslatableInputComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { Subject } from 'rxjs';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport { AbstractComponentAuthoring } from '../../../authoringTool/components/AbstractComponentAuthoring';\nimport { generateRandomKey } from '../../../common/string/string';\nimport { moveObjectDown, moveObjectUp } from '../../../common/array/array';\nimport { EditComponentPrompt } from '../../../../../app/authoring-tool/edit-component-prompt/edit-component-prompt.component';\nimport { TranslatableAssetChooserComponent } from '../../../authoringTool/components/translatable-asset-chooser/translatable-asset-chooser.component';\nimport { TranslatableInputComponent } from '../../../authoringTool/components/translatable-input/translatable-input.component';\nimport { Choice } from '../Choice';\n\n@Component({\n imports: [\n FormsModule,\n MatButtonModule,\n MatCheckboxModule,\n MatIconModule,\n MatRadioModule,\n MatTooltipModule,\n EditComponentPrompt,\n TranslatableAssetChooserComponent,\n TranslatableInputComponent\n ],\n styleUrl: 'multiple-choice-authoring.component.scss',\n templateUrl: 'multiple-choice-authoring.component.html'\n})\nexport class MultipleChoiceAuthoring extends AbstractComponentAuthoring {\n allowedConnectedComponentTypes = ['MultipleChoice'];\n protected choiceTextChange: Subject = new Subject();\n protected feedbackTextChange: Subject = new Subject();\n\n ngOnInit(): void {\n this.subscriptions.add(\n this.choiceTextChange.pipe(debounceTime(1000), distinctUntilChanged()).subscribe(() => {\n this.componentChanged();\n })\n );\n this.subscriptions.add(\n this.feedbackTextChange.pipe(debounceTime(1000), distinctUntilChanged()).subscribe(() => {\n this.componentChanged();\n })\n );\n }\n\n protected feedbackChanged(): void {\n let show = true;\n if (!this.componentHasFeedback()) {\n show = false;\n }\n this.setShowSubmitButtonValue(show);\n this.componentChanged();\n }\n\n private componentHasFeedback(): boolean {\n for (const choice of this.componentContent.choices) {\n if (choice.isCorrect || (choice.feedback != null && choice.feedback !== '')) {\n return true;\n }\n }\n return false;\n }\n\n protected addChoice(): void {\n this.componentContent.choices.push(new Choice(generateRandomKey(), '', false, ''));\n this.componentChanged();\n }\n\n protected deleteChoice(choice: any): void {\n if (confirm($localize`Are you sure you want to delete this choice?`)) {\n this.componentContent.choices.splice(this.findChoiceIndex(choice), 1);\n this.componentChanged();\n }\n }\n\n protected moveChoiceUp(choice: any): void {\n moveObjectUp(this.componentContent.choices, this.findChoiceIndex(choice));\n this.componentChanged();\n }\n\n protected moveChoiceDown(choice: any): void {\n moveObjectDown(this.componentContent.choices, this.findChoiceIndex(choice));\n this.componentChanged();\n }\n\n private findChoiceIndex(searchChoice: any): number {\n return this.componentContent.choices.findIndex((choice) => choice === searchChoice);\n }\n\n protected processSelectedAsset(value: string): string {\n return `\"${value}\"`;\n }\n}\n", + "styleUrl": "multiple-choice-authoring.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [ + "AbstractComponentAuthoring" + ], + "templateData": "\n

    \n \n \n Single Answer\n Multiple Answer\n \n

    \nChoices\n\n add\n\n@if (componentContent.choices == null || componentContent.choices.length === 0) {\n
    \n There are no choices. Click the \"Add Choice\" button to add a choice.\n
    \n}\n@for (choice of componentContent.choices; track choice.id; let last = $last; let first = $first) {\n
    \n
    \n \n \n
    \n \n Is Correct\n \n
    \n
    \n
    \n \n \n arrow_upward\n \n \n arrow_downward\n \n \n delete\n \n
    \n
    \n}\n" + }, + { + "name": "MultipleChoiceCheckboxStudentComponent", + "id": "component-MultipleChoiceCheckboxStudentComponent-e922af6ba60dabaf2c6d48d19980efbed277a49b1e64bf001b86392eb21d655a66c71a3d6730a5be8950151f45118f5eb5cff74730c53f1ed4a2c63473bb487e", + "file": "src/assets/wise5/components/multipleChoice/multiple-choice-checkbox-student/multiple-choice-checkbox-student.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "multiple-choice-checkbox-student", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./multiple-choice-checkbox-student.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "choices", + "deprecated": false, + "deprecationMessage": "", + "line": 12, + "type": "any[]", + "decorators": [] + }, + { + "name": "componentHasCorrectAnswer", + "deprecated": false, + "deprecationMessage": "", + "line": 16, + "type": "boolean", + "decorators": [] + }, + { + "name": "isDisabled", + "deprecated": false, + "deprecationMessage": "", + "line": 14, + "type": "boolean", + "decorators": [] + }, + { + "name": "showFeedback", + "deprecated": false, + "deprecationMessage": "", + "line": 15, + "type": "boolean", + "decorators": [] + }, + { + "name": "studentChoices", + "deprecated": false, + "deprecationMessage": "", + "line": 13, + "type": "string[]", + "decorators": [] + } + ], + "outputsClass": [ + { + "name": "updateStudentChoices", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 17, + "type": "EventEmitter" + } + ], + "propertiesClass": [], + "methodsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatCheckboxModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\n\n@Component({\n imports: [CommonModule, FormsModule, MatCheckboxModule],\n selector: 'multiple-choice-checkbox-student',\n templateUrl: './multiple-choice-checkbox-student.component.html'\n})\nexport class MultipleChoiceCheckboxStudentComponent {\n @Input() choices: any[];\n @Input() studentChoices: string[];\n @Input() isDisabled: boolean;\n @Input() showFeedback: boolean;\n @Input() componentHasCorrectAnswer: boolean;\n @Output() updateStudentChoices = new EventEmitter();\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [], + "templateData": "@for (choice of choices; track choice.id) {\n
    \n \n  \n @if (choice.showFeedback) {\n {{ choice.feedbackToShow }}\n }\n \n
    \n}\n" + }, + { + "name": "MultipleChoiceGradingComponent", + "id": "component-MultipleChoiceGradingComponent-2252cb4a8545efc5e8cb8c110a1021c0976f6d05bac96e90933b053e507ba618e6a888785e32301d1cc043fabd78d5c32d49fda8b2992686e6ace6819533ee7e", + "file": "src/assets/wise5/components/multipleChoice/multiple-choice-grading/multiple-choice-grading.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "multiple-choice-grading", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "multiple-choice-grading.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "line": 8, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "componentState", + "deprecated": false, + "deprecationMessage": "", + "line": 9, + "type": "any", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "isRevision", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "line": 10, + "type": "boolean", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 7, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "inheritance": { + "file": "ComponentShowWorkDirective" + } + } + ], + "methodsClass": [ + { + "name": "ngAfterViewInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 33, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 19, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentShowWorkDirective" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MultipleChoiceShowWorkComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { ComponentShowWorkDirective } from '../../component-show-work.directive';\nimport { MultipleChoiceShowWorkComponent } from '../multiple-choice-show-work/multiple-choice-show-work.component';\n\n@Component({\n imports: [MultipleChoiceShowWorkComponent],\n selector: 'multiple-choice-grading',\n templateUrl: 'multiple-choice-grading.component.html'\n})\nexport class MultipleChoiceGradingComponent extends ComponentShowWorkDirective {}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [ + "ComponentShowWorkDirective" + ], + "templateData": "\n" + }, + { + "name": "MultipleChoiceRadioStudentComponent", + "id": "component-MultipleChoiceRadioStudentComponent-84f65839c3954202eba80d6266d46702b6c6ad2796bd2304e93d0a14d125ec6076247864ea7e0be9102c38a45cd5f1562bdd3bed6136c15854cf436a4cfaf6bc", + "file": "src/assets/wise5/components/multipleChoice/multiple-choice-radio-student/multiple-choice-radio-student.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "multiple-choice-radio-student", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./multiple-choice-radio-student.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "choices", + "deprecated": false, + "deprecationMessage": "", + "line": 12, + "type": "any[]", + "decorators": [] + }, + { + "name": "componentHasCorrectAnswer", + "deprecated": false, + "deprecationMessage": "", + "line": 16, + "type": "boolean", + "decorators": [] + }, + { + "name": "isDisabled", + "deprecated": false, + "deprecationMessage": "", + "line": 14, + "type": "boolean", + "decorators": [] + }, + { + "name": "showFeedback", + "deprecated": false, + "deprecationMessage": "", + "line": 15, + "type": "boolean", + "decorators": [] + }, + { + "name": "studentChoices", + "deprecated": false, + "deprecationMessage": "", + "line": 13, + "type": "string", + "decorators": [] + } + ], + "outputsClass": [ + { + "name": "studentChoicesChange", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 17, + "type": "EventEmitter" + } + ], + "propertiesClass": [], + "methodsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatRadioModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { MatRadioModule } from '@angular/material/radio';\n\n@Component({\n imports: [CommonModule, FormsModule, MatRadioModule],\n selector: 'multiple-choice-radio-student',\n templateUrl: './multiple-choice-radio-student.component.html'\n})\nexport class MultipleChoiceRadioStudentComponent {\n @Input() choices: any[];\n @Input() studentChoices: string;\n @Input() isDisabled: boolean;\n @Input() showFeedback: boolean;\n @Input() componentHasCorrectAnswer: boolean;\n @Output() studentChoicesChange = new EventEmitter();\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [], + "templateData": "\n @for (choice of choices; track choice.id) {\n
    \n \n  \n @if (showFeedback && choice.showFeedback) {\n {{ choice.feedbackToShow }}\n }\n \n
    \n }\n
    \n" + }, + { + "name": "MultipleChoiceShowWorkComponent", + "id": "component-MultipleChoiceShowWorkComponent-3225cf2573f971f2b0e0e3e6a3aba43470e0614148bc19c1f15a403985c58bde901979be3400435d78df2c6450fd04a755b46a3c9d84d9c3300f83556eaabf12", + "file": "src/assets/wise5/components/multipleChoice/multiple-choice-show-work/multiple-choice-show-work.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "multiple-choice-show-work", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "multiple-choice-show-work.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "line": 8, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "componentState", + "deprecated": false, + "deprecationMessage": "", + "line": 9, + "type": "any", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "isRevision", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "line": 10, + "type": "boolean", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 7, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "choices", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 18 + }, + { + "name": "component", + "deprecated": false, + "deprecationMessage": "", + "type": "MultipleChoiceComponent", + "indexKey": "", + "optional": false, + "description": "", + "line": 19 + }, + { + "name": "hasCorrectAnswer", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 21 + }, + { + "name": "isStudentAnswerCorrect", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 22 + }, + { + "name": "showFeedback", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 20 + }, + { + "name": "studentChoiceId", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 17 + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "inheritance": { + "file": "ComponentShowWorkDirective" + } + } + ], + "methodsClass": [ + { + "name": "calculateHasCorrectAnswer", + "args": [ + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 74, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getChoiceIds", + "args": [ + { + "name": "choices", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string[]", + "typeParameters": [], + "line": 48, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "choices", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getChoicesIdsStudentChose", + "args": [ + { + "name": "studentChoices", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 66, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentChoices", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 24, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "processChoices", + "args": [ + { + "name": "choices", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentChoices", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 54, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "choices", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentChoices", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngAfterViewInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 33, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentShowWorkDirective" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatCheckboxModule", + "type": "module" + }, + { + "name": "MatRadioModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatRadioModule } from '@angular/material/radio';\n\nimport { copy } from '../../../common/object/object';\nimport { ComponentShowWorkDirective } from '../../component-show-work.directive';\nimport { MultipleChoiceComponent } from '../MultipleChoiceComponent';\n\n@Component({\n imports: [FormsModule, MatCheckboxModule, MatRadioModule],\n selector: 'multiple-choice-show-work',\n styleUrl: 'multiple-choice-show-work.component.scss',\n templateUrl: 'multiple-choice-show-work.component.html'\n})\nexport class MultipleChoiceShowWorkComponent extends ComponentShowWorkDirective {\n studentChoiceId: string = '';\n choices: any[] = [];\n component: MultipleChoiceComponent;\n showFeedback: boolean = false;\n hasCorrectAnswer: boolean = false;\n isStudentAnswerCorrect: boolean = false;\n\n ngOnInit(): void {\n super.ngOnInit();\n this.component = new MultipleChoiceComponent(this.componentContent, this.nodeId);\n if (this.component.isRadio()) {\n const studentChoiceIds = this.getChoiceIds(this.componentState.studentData.studentChoices);\n this.studentChoiceId = studentChoiceIds[0];\n }\n this.choices = this.processChoices(\n copy(this.componentContent.choices),\n this.componentState.studentData.studentChoices\n );\n this.showFeedback = this.componentContent.showFeedback;\n this.hasCorrectAnswer = this.calculateHasCorrectAnswer(this.componentContent);\n if (this.hasCorrectAnswer) {\n if (this.componentState.studentData.isCorrect == null) {\n // If the student clicks save it will not calculate isCorrect. We only calculate isCorrect\n // if the student clicks submit. Here we will calculate isCorrect for the teacher to see.\n this.isStudentAnswerCorrect = this.component.calculateIsCorrect(this.componentState);\n } else {\n this.isStudentAnswerCorrect = this.componentState.studentData.isCorrect;\n }\n }\n }\n\n getChoiceIds(choices: any[]): string[] {\n return choices.map((choice) => {\n return choice.id;\n });\n }\n\n processChoices(choices: any[], studentChoices: any[]): any[] {\n const studentChoiceIdsMap = this.getChoicesIdsStudentChose(studentChoices);\n for (const choice of choices) {\n if (studentChoiceIdsMap[choice.id]) {\n choice.isSelected = true;\n } else {\n choice.isSelected = false;\n }\n }\n return choices;\n }\n\n getChoicesIdsStudentChose(studentChoices: any[]): any {\n const studentChoiceIds = {};\n for (const studentChoice of studentChoices) {\n studentChoiceIds[studentChoice.id] = true;\n }\n return studentChoiceIds;\n }\n\n calculateHasCorrectAnswer(componentContent: any): boolean {\n for (const choice of componentContent.choices) {\n if (choice.isCorrect) {\n return true;\n }\n }\n return false;\n }\n}\n", + "styleUrl": "multiple-choice-show-work.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [ + "ComponentShowWorkDirective" + ], + "templateData": "@if (componentState) {\n @if (componentContent.choiceType == 'radio') {\n
    \n \n @for (choice of choices; track choice.id) {\n
    \n \n \n @if (\n componentState.isSubmit &&\n showFeedback &&\n choice.feedback !== '' &&\n choice.id === studentChoiceId\n ) {\n \n {{ choice.feedback }}\n \n }\n \n
    \n }\n
    \n
    \n }\n\n @if (componentContent.choiceType == 'checkbox') {\n
    \n @for (choice of choices; track choice.id) {\n
    \n \n \n @if (componentState.isSubmit && showFeedback && choice.isSelected) {\n \n {{ choice.feedback }}\n \n }\n \n
    \n }\n
    \n }\n\n @if (componentContent.maxSubmitCount != null) {\n
    \n You have used {{ componentState.studentData.submitCounter }} of\n {{ componentContent.maxSubmitCount }} attempt(s)\n
    \n }\n\n @if (hasCorrectAnswer) {\n @if (isStudentAnswerCorrect) {\n
    Correct
    \n } @else {\n
    Incorrect
    \n }\n }\n}\n" + }, + { + "name": "MultipleChoiceStudentComponent", + "id": "component-MultipleChoiceStudentComponent-eb71e58337bd7bf04b3b0a68b1af2bc4755ab9d282f90c03846846e76131bc34bcb4fe2b11aed63d18ed5ef137b918c63c52a4c00a0a7ecc6d30e7d9c57968c3", + "file": "src/assets/wise5/components/multipleChoice/multiple-choice-student/multiple-choice-student.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "multiple-choice-student", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "multiple-choice-student.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "component", + "deprecated": false, + "deprecationMessage": "", + "line": 24, + "type": "Component", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentState", + "deprecated": false, + "deprecationMessage": "", + "line": 25, + "type": "any", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isDisabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "line": 26, + "type": "boolean", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "mode", + "deprecated": false, + "deprecationMessage": "", + "line": 27, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 28, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "workgroupId", + "deprecated": false, + "deprecationMessage": "", + "line": 29, + "type": "number", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "outputsClass": [ + { + "name": "saveComponentStateEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 30, + "type": "EventEmitter", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "starterStateChangedEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 31, + "type": "EventEmitter", + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "propertiesClass": [ + { + "name": "choices", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 35 + }, + { + "name": "choiceType", + "deprecated": false, + "deprecationMessage": "", + "type": "\"radio\" | \"checkbox\"", + "indexKey": "", + "optional": false, + "description": "", + "line": 36, + "modifierKind": [ + 124 + ] + }, + { + "name": "component", + "deprecated": false, + "deprecationMessage": "", + "type": "MultipleChoiceComponent", + "indexKey": "", + "optional": false, + "description": "", + "line": 37 + }, + { + "name": "componentHasCorrectAnswer", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 38, + "modifierKind": [ + 124 + ] + }, + { + "name": "isCorrect", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 39 + }, + { + "name": "isLatestComponentStateSubmit", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 40, + "modifierKind": [ + 124 + ] + }, + { + "name": "originalComponentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "MultipleChoiceContent", + "indexKey": "", + "optional": false, + "description": "", + "line": 41, + "modifierKind": [ + 123 + ] + }, + { + "name": "showFeedback", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 42, + "modifierKind": [ + 124 + ] + }, + { + "name": "studentChoices", + "deprecated": false, + "deprecationMessage": "", + "type": "string | string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 43 + }, + { + "name": "annotationSavedToServerSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 53, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "attachments", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 33, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 34, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 35, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentType", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 36, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isDirty", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 45, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSaveButtonVisible", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 38, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSaveOrSubmitButtonVisible", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 41, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isShowAddToNotebookButton", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 39, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isStudentAttachmentEnabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 46, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmit", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 44, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmitButtonDisabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 42, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmitButtonVisible", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 40, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmitDirty", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 43, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "latestAnnotations", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 48, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "latestComponentState", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 50, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "nodeSubmitClickedSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 54, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "parentStudentWorkIds", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 49, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "prompt", + "deprecated": false, + "deprecationMessage": "", + "type": "SafeHtml", + "indexKey": "", + "optional": false, + "description": "", + "line": 37, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "requestComponentStateSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 52, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "showAddToNotebookButton", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 51, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "studentWorkSavedToServerSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 55, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "submitCounter", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 47, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 56, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "methodsClass": [ + { + "name": "addOrRemoveFromStudentChoices", + "args": [ + { + "name": "choiceId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 190, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "choiceId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "checkAnswer", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 248, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "componentStateHasStudentWork", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 97, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createComponentState", + "args": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 286, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCreate a new component state populated with the student data\ne.g. 'submit', 'save', 'change'\n", + "description": "

    Create a new component state populated with the student data\ne.g. 'submit', 'save', 'change'

    \n", + "jsdoctags": [ + { + "name": { + "pos": 9925, + "end": 9931, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "action" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 9919, + "end": 9924, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    the action that is triggering creating of this component state\ne.g. 'submit', 'save', 'change'

    \n" + }, + { + "tagName": { + "pos": 10038, + "end": 10044, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

    a promise that will return a component state

    \n" + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createMergedComponentState", + "args": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 370, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCreate a component state with the merged student responses\n", + "description": "

    Create a component state with the merged student responses

    \n", + "jsdoctags": [ + { + "name": { + "pos": 12578, + "end": 12593, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentStates" + }, + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 12572, + "end": 12577, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    an array of component states

    \n" + }, + { + "tagName": { + "pos": 12629, + "end": 12635, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

    a component state with the merged student responses

    \n" + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "displayFeedback", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 256, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "displayFeedbackOnChoice", + "args": [ + { + "name": "choice", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 260, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "choice", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getChoiceIdsFromStudentData", + "args": [ + { + "name": "studentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string[]", + "typeParameters": [], + "line": 171, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "studentData", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getOriginalChoiceText", + "args": [ + { + "name": "choiceId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 357, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "choiceId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getStudentChoiceObjects", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 331, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the choices the student has chosen as objects.\n", + "description": "

    Get the choices the student has chosen as objects.

    \n", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "tagName": { + "pos": 11456, + "end": 11462, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

    An array of choice objects. Each choice object contains id and choice text.

    \n" + } + ] + }, + { + "name": "getStudentChosenCheckboxChoice", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 348, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "getStudentChosenRadioChoice", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 337, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "handleConnectedComponents", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 104, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasCorrectChoices", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 361, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "hideAllFeedback", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 244, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "isChecked", + "args": [ + { + "name": "choiceId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 163, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "choiceId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isStudentChoiceValueCorrect", + "args": [ + { + "name": "choice", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 267, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "choice", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 68, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "processConnectedComponentState", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 385, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "saveButtonClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 199, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsCheckedOnStudentChoices", + "args": [ + { + "name": "studentChoices", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 148, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "studentChoices", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setStudentWork", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 119, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "showFeedbackForChoiceIds", + "args": [ + { + "name": "choiceIds", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 154, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "choiceIds", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "studentDataChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 274, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "submit", + "args": [ + { + "name": "submitTriggeredBy", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 210, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nA submit was triggered by the component submit button or node submit button\ne.g. 'componentSubmitButton' or 'nodeSubmitButton'\n", + "description": "

    A submit was triggered by the component submit button or node submit button\ne.g. 'componentSubmitButton' or 'nodeSubmitButton'

    \n", + "jsdoctags": [ + { + "name": { + "pos": 7596, + "end": 7613, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "submitTriggeredBy" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 7590, + "end": 7595, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    what triggered the submit\ne.g. 'componentSubmitButton' or 'nodeSubmitButton'

    \n" + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "updateStudentChoices", + "args": [ + { + "name": "updatedChoiceId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 185, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "updatedChoiceId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addDefaultFeedback", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 688, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "attachStudentAsset", + "args": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 232, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "broadcastDoneRenderingComponent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 325, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "canSubmit", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 488, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "clearLatestComponentState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 555, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "confirmSubmit", + "args": [ + { + "name": "numberOfSubmitsLeft", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 468, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "numberOfSubmitsLeft", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "connectedComponentStudentDataSaved", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 796, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nThis function is called when a connected component of this component saves student data.\nThis was added to handle a race condition when a step has a connected component on a previous\nstep but the connected component student work on the previous step was not being imported\nbecause it wasn't being saved in time.\nHere is an example of what was happening\n- Student generates work on step 1 but does not click the save button\n- Student goes to step 2 which triggers a promise to save the student work on step 1\n- Step 2 is loaded and checks if there is any work it needs to import from step 1\n- The work in step 1 has not saved yet so step 2 does not import any work and loads without\n importing any work\n- The work from step 1 is then saved\nHere is the additional process that this function performs to fix this problem\n- Step 2 listens for when work is saved on step 1\n- When the work for step 1 is saved, step 2 checks to see if it needs to import that work\n", + "description": "

    This function is called when a connected component of this component saves student data.\nThis was added to handle a race condition when a step has a connected component on a previous\nstep but the connected component student work on the previous step was not being imported\nbecause it wasn't being saved in time.\nHere is an example of what was happening

    \n
      \n
    • Student generates work on step 1 but does not click the save button
    • \n
    • Student goes to step 2 which triggers a promise to save the student work on step 1
    • \n
    • Step 2 is loaded and checks if there is any work it needs to import from step 1
    • \n
    • The work in step 1 has not saved yet so step 2 does not import any work and loads without\nimporting any work
    • \n
    • The work from step 1 is then saved\nHere is the additional process that this function performs to fix this problem
    • \n
    • Step 2 listens for when work is saved on step 1
    • \n
    • When the work for step 1 is saved, step 2 checks to see if it needs to import that work
    • \n
    \n", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "copyAndAttachStudentAsset", + "args": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 218, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "copyPublicNotebookItem", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 632, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "copyPublicNotebookItemButtonClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 747, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createAutoCommentAnnotation", + "args": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 725, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createAutoScoreAnnotation", + "args": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 714, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createComponentStateAdditionalProcessing", + "args": [ + { + "name": "promise", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 598, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "promise", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createComponentStateAndBroadcast", + "args": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 559, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createDefaultFeedbackAnnotation", + "args": [ + { + "name": "feedbackText", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 706, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "feedbackText", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createNewComponentState", + "args": [], + "optional": false, + "returnType": "Partial", + "typeParameters": [], + "line": 818, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "disableAllInput", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 492, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "disableComponentIfNecessary", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 332, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "disableSubmitButton", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 496, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "doAttachStudentAsset", + "args": [ + { + "name": "studentAssetRequest", + "type": "StudentAssetRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 212, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "studentAssetRequest", + "type": "StudentAssetRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 541, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentStudentDataChanged", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 572, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentSubmitDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 548, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentSubmitTriggered", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 512, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "generateImageFromComponentState", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 615, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nRender the component state and then generate an image from it.\n", + "description": "

    Render the component state and then generate an image from it.

    \n", + "jsdoctags": [ + { + "name": { + "pos": 18804, + "end": 18818, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 18798, + "end": 18803, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    The component state to render.

    \n" + }, + { + "tagName": { + "pos": 18856, + "end": 18862, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

    A promise that will return an image.

    \n" + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "generateStarterState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 216, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getAction", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 321, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getClientSaveTime", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 684, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getComponentStatePromise", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 309, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getComponentStateWrapper", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "ComponentStateWrapper", + "typeParameters": [], + "line": 301, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getDefaultFeedback", + "args": [ + { + "name": "submitCount", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 702, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "submitCount", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getElementById", + "args": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getFirstResult", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 758, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "getFirstResult", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getIsDirty", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 277, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getMaxScore", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 680, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getMaxSubmitCount", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 460, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getNumberOfSubmitsLeft", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 456, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "handleConnectedComponentsPostProcess", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 385, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "handleStudentWorkSavedToServer", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 263, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "handleStudentWorkSavedToServerAdditionalProcessing", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 287, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasAnySubmissions", + "args": [ + { + "name": "componentStates", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 344, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentStates", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasDefaultFeedback", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 695, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasMaxScore", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 676, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasMaxSubmitCount", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 437, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasMaxSubmitCountAndUsedAllSubmits", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 452, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasSubmitMessage", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 504, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasSubmitsLeft", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 500, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasUsedAllSubmits", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 441, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "importWorkAsBackground", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 658, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "importWorkByStudentWorkId", + "args": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 170, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "incrementSubmitCounter", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 389, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isAddToNotebookEnabled", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 624, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isForThisComponent", + "args": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 192, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isFromConnectedComponent", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 766, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isHandleConnectedComponentAfterConnectedComponentStudentDataSaved", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 802, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isLockAfterSubmit", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 348, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isNotebookEnabled", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 643, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isPreviewMode", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 109, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSameComponent", + "args": [ + { + "name": "component", + "type": "Component", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 188, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "component", + "type": "Component", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isStudentNoteClippingEnabled", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 647, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isWorkFromClassmate", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 196, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "lockIfNecessary", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 281, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 97, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "performSubmit", + "args": [ + { + "name": "submitTriggeredBy", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 472, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "submitTriggeredBy", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "processLatestStudentWork", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 580, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "registerNotebookItemChosenListener", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 736, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "removeAttachment", + "args": [ + { + "name": "attachment", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 245, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "attachment", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "saveForAuthoringPreviewMode", + "args": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 404, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setBackgroundImage", + "args": [ + { + "name": "image", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 674, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "image", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setComponentStateAsBackgroundImage", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 668, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 537, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsDirtyAndBroadcast", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 527, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsSubmit", + "args": [ + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 464, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsSubmitDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 508, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsSubmitDirtyAndBroadcast", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 532, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setParentStudentWorkIdToCurrentStudentWork", + "args": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 180, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setSubmitCounter", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 811, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "shouldCreateComponentState", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 317, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "showStudentAssets", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 651, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "submitButtonClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 412, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToAnnotationSavedToServer", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 123, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToAttachStudentAsset", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 200, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToNodeSubmitClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 137, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToNotebookItemChosen", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 159, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToNotifyConnectedComponents", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 147, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToRequestComponentState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 289, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToStudentWorkSavedToServer", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 252, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToSubscriptions", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 113, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "tryDisableComponent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 445, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "ComponentAnnotationsComponent", + "type": "component" + }, + { + "name": "ComponentHeaderComponent", + "type": "component" + }, + { + "name": "ComponentSaveSubmitButtonsComponent", + "type": "component" + }, + { + "name": "MultipleChoiceRadioStudentComponent", + "type": "component" + }, + { + "name": "MultipleChoiceCheckboxStudentComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { AnnotationService } from '../../../services/annotationService';\nimport { ConfigService } from '../../../services/configService';\nimport { NodeService } from '../../../services/nodeService';\nimport { NotebookService } from '../../../services/notebookService';\nimport { StudentAssetService } from '../../../services/studentAssetService';\nimport { StudentDataService } from '../../../services/studentDataService';\nimport { ComponentStudent } from '../../component-student.component';\nimport { ComponentService } from '../../componentService';\nimport { MultipleChoiceComponent } from '../MultipleChoiceComponent';\nimport { MultipleChoiceService } from '../multipleChoiceService';\nimport { MultipleChoiceContent } from '../MultipleChoiceContent';\nimport { hasConnectedComponent } from '../../../common/ComponentContent';\nimport { copy } from '../../../common/object/object';\nimport { ComponentAnnotationsComponent } from '../../../directives/componentAnnotations/component-annotations.component';\nimport { ComponentHeaderComponent } from '../../../directives/component-header/component-header.component';\nimport { ComponentSaveSubmitButtonsComponent } from '../../../directives/component-save-submit-buttons/component-save-submit-buttons.component';\nimport { MultipleChoiceRadioStudentComponent } from '../multiple-choice-radio-student/multiple-choice-radio-student.component';\nimport { MultipleChoiceCheckboxStudentComponent } from '../multiple-choice-checkbox-student/multiple-choice-checkbox-student.component';\n\n@Component({\n imports: [\n ComponentAnnotationsComponent,\n ComponentHeaderComponent,\n ComponentSaveSubmitButtonsComponent,\n MultipleChoiceRadioStudentComponent,\n MultipleChoiceCheckboxStudentComponent\n ],\n selector: 'multiple-choice-student',\n styleUrl: 'multiple-choice-student.component.scss',\n templateUrl: 'multiple-choice-student.component.html'\n})\nexport class MultipleChoiceStudentComponent extends ComponentStudent {\n choices: any[];\n protected choiceType: 'radio' | 'checkbox';\n component: MultipleChoiceComponent;\n protected componentHasCorrectAnswer: boolean;\n isCorrect: boolean;\n protected isLatestComponentStateSubmit: boolean;\n private originalComponentContent: MultipleChoiceContent;\n protected showFeedback: boolean;\n studentChoices: string | string[];\n\n constructor(\n protected annotationService: AnnotationService,\n protected componentService: ComponentService,\n protected configService: ConfigService,\n protected dataService: StudentDataService,\n protected dialog: MatDialog,\n private multipleChoiceService: MultipleChoiceService,\n protected nodeService: NodeService,\n protected notebookService: NotebookService,\n protected studentAssetService: StudentAssetService\n ) {\n super(\n annotationService,\n componentService,\n configService,\n dialog,\n nodeService,\n notebookService,\n studentAssetService,\n dataService\n );\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n this.originalComponentContent = copy(this.component.content);\n this.studentChoices = this.component.isRadio() ? '' : [];\n this.isCorrect = null;\n this.choices = this.component.getChoices();\n this.componentHasCorrectAnswer = this.hasCorrectChoices();\n this.showFeedback = this.component.content.showFeedback;\n this.choiceType = this.component.getChoiceType();\n\n if (hasConnectedComponent(this.componentContent, 'showWork')) {\n this.handleConnectedComponents();\n } else if (this.componentStateHasStudentWork(this.componentState, this.componentContent)) {\n this.setStudentWork(this.componentState);\n } else if (this.component.hasConnectedComponent()) {\n this.handleConnectedComponents();\n }\n\n this.isLatestComponentStateSubmit = this.componentState != null && this.componentState.isSubmit;\n\n if (this.hasMaxSubmitCount() && !this.hasSubmitsLeft()) {\n this.isDisabled = true;\n this.isSubmitButtonDisabled = true;\n }\n\n this.disableComponentIfNecessary();\n this.broadcastDoneRenderingComponent();\n }\n\n componentStateHasStudentWork(componentState: any, componentContent: any): boolean {\n return this.multipleChoiceService.componentStateHasStudentWork(\n componentState,\n componentContent\n );\n }\n\n handleConnectedComponents(): void {\n for (const connectedComponent of this.componentContent.connectedComponents) {\n const componentState = this.dataService.getLatestComponentStateByNodeIdAndComponentId(\n connectedComponent.nodeId,\n connectedComponent.componentId\n );\n if (componentState != null) {\n this.processConnectedComponentState(componentState);\n }\n if (connectedComponent.type === 'showWork') {\n this.isDisabled = true;\n }\n }\n }\n\n setStudentWork(componentState: any): void {\n if (componentState != null) {\n const studentData = componentState.studentData;\n const choiceIds = this.getChoiceIdsFromStudentData(studentData);\n\n if (this.component.isRadio()) {\n this.studentChoices = choiceIds[0];\n } else if (this.component.isCheckbox()) {\n this.studentChoices = choiceIds;\n this.setIsCheckedOnStudentChoices(this.studentChoices);\n }\n\n if (studentData.isCorrect != null) {\n this.isCorrect = studentData.isCorrect;\n }\n\n if (this.showFeedback && componentState.isSubmit) {\n this.showFeedbackForChoiceIds(choiceIds);\n }\n\n const submitCounter = studentData.submitCounter;\n if (submitCounter != null) {\n this.submitCounter = submitCounter;\n }\n\n this.processLatestStudentWork();\n }\n }\n\n private setIsCheckedOnStudentChoices(studentChoices: string[]): void {\n for (const choice of this.choices) {\n choice.isChecked = studentChoices.includes(choice.id);\n }\n }\n\n private showFeedbackForChoiceIds(choiceIds: string[]): void {\n for (const choice of this.choices) {\n if (choiceIds.includes(choice.id)) {\n choice.showFeedback = true;\n choice.feedbackToShow = choice.feedback;\n }\n }\n }\n\n private isChecked(choiceId: string): boolean {\n const studentChoices = this.studentChoices;\n if (studentChoices == null) return false;\n return this.component.isRadio()\n ? studentChoices === choiceId\n : (studentChoices as string[]).indexOf(choiceId) != -1;\n }\n\n private getChoiceIdsFromStudentData(studentData: any): string[] {\n const choiceIds = [];\n if (studentData != null && studentData.studentChoices != null) {\n const studentChoices = studentData.studentChoices;\n for (const studentDataChoice of studentChoices) {\n if (studentDataChoice != null) {\n const studentDataChoiceId = studentDataChoice.id;\n choiceIds.push(studentDataChoiceId);\n }\n }\n }\n return choiceIds;\n }\n\n protected updateStudentChoices(updatedChoiceId: string): void {\n this.addOrRemoveFromStudentChoices(updatedChoiceId);\n this.studentDataChanged();\n }\n\n addOrRemoveFromStudentChoices(choiceId: string): void {\n const index = this.studentChoices.indexOf(choiceId);\n if (index == -1) {\n (this.studentChoices as string[]).push(choiceId);\n } else {\n (this.studentChoices as string[]).splice(index, 1);\n }\n }\n\n saveButtonClicked(): void {\n this.isCorrect = null;\n this.hideAllFeedback();\n super.saveButtonClicked();\n }\n\n /**\n * A submit was triggered by the component submit button or node submit button\n * @param submitTriggeredBy what triggered the submit\n * e.g. 'componentSubmitButton' or 'nodeSubmitButton'\n */\n submit(submitTriggeredBy: string): void {\n if (this.isSubmitDirty) {\n let performSubmit = true;\n if (this.hasMaxSubmitCountAndUsedAllSubmits()) {\n performSubmit = false;\n }\n\n if (performSubmit) {\n this.isSubmit = true;\n this.isCorrect = null;\n this.hideAllFeedback();\n this.incrementSubmitCounter();\n if (this.hasMaxSubmitCountAndUsedAllSubmits()) {\n this.disableAllInput();\n this.disableSubmitButton();\n }\n\n if (submitTriggeredBy == null || submitTriggeredBy === 'componentSubmitButton') {\n this.dataService.broadcastComponentSubmitTriggered({\n nodeId: this.component.nodeId,\n componentId: this.component.id\n });\n if (this.isPreviewMode()) {\n this.saveForAuthoringPreviewMode('submit');\n }\n }\n } else {\n // the student has cancelled the submit so if a component state is created, it will just be\n // a regular save and not submit\n this.isSubmit = false;\n }\n }\n }\n\n private hideAllFeedback(): void {\n this.choices.forEach((choice) => (choice.showFeedback = false));\n }\n\n private checkAnswer(): void {\n if (this.component.isRadio()) {\n this.isCorrect = this.choices.some((choice) => choice.isCorrect && this.isChecked(choice.id));\n } else {\n this.isCorrect = this.choices.every((choice) => this.isStudentChoiceValueCorrect(choice));\n }\n }\n\n private displayFeedback(): void {\n this.choices.forEach((choice) => this.displayFeedbackOnChoice(choice));\n }\n\n private displayFeedbackOnChoice(choice: any): void {\n if (this.showFeedback && this.isChecked(choice.id)) {\n choice.showFeedback = true;\n choice.feedbackToShow = choice.feedback;\n }\n }\n\n private isStudentChoiceValueCorrect(choice: any): boolean {\n return (\n (choice.isCorrect && this.isChecked(choice.id)) ||\n (!choice.isCorrect && !this.isChecked(choice.id))\n );\n }\n\n studentDataChanged(): void {\n this.isCorrect = null;\n this.isLatestComponentStateSubmit = false;\n super.studentDataChanged();\n }\n\n /**\n * Create a new component state populated with the student data\n * @param action the action that is triggering creating of this component state\n * e.g. 'submit', 'save', 'change'\n * @return a promise that will return a component state\n */\n createComponentState(action: string): Promise {\n const componentState: any = this.createNewComponentState();\n const studentData: any = {\n studentChoices: this.getStudentChoiceObjects()\n };\n if (action === 'submit') {\n if (this.componentHasCorrectAnswer) {\n this.checkAnswer();\n }\n this.displayFeedback();\n if (this.isCorrect != null) {\n studentData.isCorrect = this.isCorrect;\n }\n if (this.isSubmit) {\n componentState.isSubmit = this.isSubmit;\n this.isSubmit = false;\n this.isLatestComponentStateSubmit = true;\n if (this.hasDefaultFeedback()) {\n this.addDefaultFeedback(componentState);\n }\n }\n } else if (action === 'save') {\n this.isLatestComponentStateSubmit = false;\n }\n\n studentData.submitCounter = this.submitCounter;\n componentState.studentData = studentData;\n componentState.componentType = 'MultipleChoice';\n componentState.nodeId = this.component.nodeId;\n componentState.componentId = this.component.id;\n\n const promise = new Promise((resolve, reject) => {\n this.createComponentStateAdditionalProcessing(\n { resolve: resolve, reject: reject },\n componentState,\n action\n );\n });\n return promise;\n }\n\n /**\n * Get the choices the student has chosen as objects.\n * @return An array of choice objects. Each choice object contains id and choice text.\n */\n private getStudentChoiceObjects(): any[] {\n return this.component.isRadio()\n ? this.getStudentChosenRadioChoice()\n : this.getStudentChosenCheckboxChoice();\n }\n\n private getStudentChosenRadioChoice(): any[] {\n return this.studentChoices != ''\n ? [\n {\n id: this.studentChoices,\n text: this.getOriginalChoiceText(this.studentChoices as string)\n }\n ]\n : [];\n }\n\n private getStudentChosenCheckboxChoice(): any[] {\n return (this.studentChoices as string[]).map((studentChoiceId) => {\n return {\n id: studentChoiceId,\n text: this.getOriginalChoiceText(studentChoiceId)\n };\n });\n }\n\n private getOriginalChoiceText(choiceId: string): string {\n return this.originalComponentContent.choices.find((choice) => choice.id === choiceId).text;\n }\n\n private hasCorrectChoices(): boolean {\n return this.choices.some((choice) => choice.isCorrect);\n }\n\n /**\n * Create a component state with the merged student responses\n * @param componentStates an array of component states\n * @return a component state with the merged student responses\n */\n createMergedComponentState(componentStates: any[]): any[] {\n let mergedStudentChoices = [];\n for (const componentState of componentStates) {\n const studentChoices = componentState.studentData.studentChoices;\n if (studentChoices != null && studentChoices.length > 0) {\n mergedStudentChoices = mergedStudentChoices.concat(studentChoices);\n }\n }\n const mergedComponentState: any = this.createNewComponentState();\n mergedComponentState.studentData = {\n studentChoices: mergedStudentChoices\n };\n return mergedComponentState;\n }\n\n processConnectedComponentState(componentState: any): void {\n this.setStudentWork(componentState);\n this.studentDataChanged();\n }\n}\n", + "styleUrl": "multiple-choice-student.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentService", + "type": "ComponentService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "multipleChoiceService", + "type": "MultipleChoiceService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "notebookService", + "type": "NotebookService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentAssetService", + "type": "StudentAssetService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 43, + "jsdoctags": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentService", + "type": "ComponentService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "multipleChoiceService", + "type": "MultipleChoiceService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "notebookService", + "type": "NotebookService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentAssetService", + "type": "StudentAssetService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "ComponentStudent" + ], + "templateData": "
    \n \n\n @if (choiceType === 'radio') {\n \n } @else if (choiceType === 'checkbox') {\n \n }\n\n @if (componentHasCorrectAnswer && componentContent.maxSubmitCount != null) {\n
    \n You have used {{ submitCounter }} of {{ componentContent.maxSubmitCount }}\n {{ componentContent.maxSubmitCount === 1 ? 'attempt' : 'attempts' }}\n
    \n }\n\n @if (!isLatestComponentStateSubmit || !componentHasCorrectAnswer || !showFeedback) {\n

    \n }\n\n @if (\n componentHasCorrectAnswer && isLatestComponentStateSubmit && showFeedback && isCorrect != null\n ) {\n @if (isCorrect) {\n
    Correct
    \n } @else {\n
    Incorrect
    \n }\n }\n
    \n\n@if (isSaveOrSubmitButtonVisible) {\n \n}\n\n@if (mode === 'student') {\n \n}\n" + }, + { + "name": "NavigationComponent", + "id": "component-NavigationComponent-0cb470c50bb4a0484990db300c49f889df5221ecf350b7c84226c869a0058de5eb27fee67b18292fd2802460ec4c55156332f693a07be30419e2101d6acc2c9d", + "file": "src/assets/wise5/themes/default/navigation/navigation.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "navigation", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./navigation.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "navItemIsExpanded", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "literal type", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 124 + ] + }, + { + "name": "navItemIsExpandedSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "modifierKind": [ + 123 + ] + }, + { + "name": "rootNode", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 33, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 24, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "NavItemComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, OnInit } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { StudentDataService } from '../../../services/studentDataService';\nimport { VLEProjectService } from '../../../vle/vleProjectService';\nimport { CommonModule } from '@angular/common';\nimport { NavItemComponent } from '../../../vle/nav-item/nav-item.component';\n\n@Component({\n imports: [CommonModule, NavItemComponent],\n selector: 'navigation',\n styleUrl: './navigation.component.scss',\n templateUrl: './navigation.component.html'\n})\nexport class NavigationComponent implements OnInit {\n protected navItemIsExpanded: { [nodeId: string]: boolean } = {};\n private navItemIsExpandedSubscription: Subscription;\n protected rootNode: any;\n\n constructor(\n private dataService: StudentDataService,\n private projectService: VLEProjectService\n ) {}\n\n ngOnInit(): void {\n this.rootNode = this.projectService.getProjectRootNode();\n this.navItemIsExpandedSubscription = this.dataService.navItemIsExpanded$.subscribe(\n ({ nodeId, isExpanded }) => {\n this.navItemIsExpanded[nodeId] = isExpanded;\n }\n );\n }\n\n ngOnDestroy(): void {\n this.navItemIsExpandedSubscription.unsubscribe();\n }\n}\n", + "styleUrl": "./navigation.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "dataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "VLEProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 17, + "jsdoctags": [ + { + "name": "dataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "VLEProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "
    \n
    Unit Plan
    \n
    \n @for (id of rootNode.ids; track id) {\n \n }\n
    \n
    \n" + }, + { + "name": "NavItemComponent", + "id": "component-NavItemComponent-8feea2dd8dd9bb9ce3174ce5bdb8bbb3bc49605cfdb92418f7a627ad068943a4ad4e6ca76f056b2f139a86effb80d2ea1f2739cea5477996ecb29542b02e9459", + "file": "src/assets/wise5/vle/nav-item/nav-item.component.ts", + "encapsulation": [ + "ViewEncapsulation.None" + ], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "nav-item", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "nav-item.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 38, + "type": "string", + "decorators": [] + }, + { + "name": "showPosition", + "deprecated": false, + "deprecationMessage": "", + "line": 41, + "type": "any", + "decorators": [] + }, + { + "name": "type", + "deprecated": false, + "deprecationMessage": "", + "line": 43, + "type": "string", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "currentNode", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 32, + "modifierKind": [ + 123 + ] + }, + { + "name": "expanded", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 33, + "modifierKind": [ + 124 + ] + }, + { + "name": "isCurrentNode", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 34, + "modifierKind": [ + 123 + ] + }, + { + "name": "isGroup", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 35, + "modifierKind": [ + 124 + ] + }, + { + "name": "isPrevStep", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 36, + "modifierKind": [ + 124 + ] + }, + { + "name": "item", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 37, + "modifierKind": [ + 124 + ] + }, + { + "name": "nodeStatus", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 39, + "modifierKind": [ + 124 + ] + }, + { + "name": "nodeTitle", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 40, + "modifierKind": [ + 124 + ] + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 42, + "modifierKind": [ + 123 + ] + } + ], + "methodsClass": [ + { + "name": "itemClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 133, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 120, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 51, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "setExpanded", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 124, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "setNodeTitle", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 114, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "zoomToElement", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 129, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "MatCardModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatListModule", + "type": "module" + }, + { + "name": "MatProgressBarModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + }, + { + "name": "NodeIconComponent", + "type": "component" + }, + { + "name": "NodeStatusIconComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { ProjectService } from '../../services/projectService';\nimport { StudentDataService } from '../../services/studentDataService';\nimport { NodeService } from '../../services/nodeService';\nimport { CommonModule } from '@angular/common';\nimport { MatCardModule } from '@angular/material/card';\nimport { NodeIconComponent } from '../node-icon/node-icon.component';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { NodeStatusIconComponent } from '../../themes/default/themeComponents/nodeStatusIcon/node-status-icon.component';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatListModule } from '@angular/material/list';\n\n@Component({\n encapsulation: ViewEncapsulation.None,\n imports: [\n CommonModule,\n MatCardModule,\n MatIconModule,\n MatListModule,\n MatProgressBarModule,\n MatTooltipModule,\n NodeIconComponent,\n NodeStatusIconComponent\n ],\n selector: 'nav-item',\n styleUrl: 'nav-item.component.scss',\n templateUrl: 'nav-item.component.html'\n})\nexport class NavItemComponent {\n private currentNode: any;\n protected expanded: boolean;\n private isCurrentNode: boolean;\n protected isGroup: boolean;\n protected isPrevStep: boolean;\n protected item: any;\n @Input() nodeId: string;\n protected nodeStatus: any;\n protected nodeTitle: string;\n @Input() showPosition: any;\n private subscriptions: Subscription = new Subscription();\n @Input() type: string;\n\n constructor(\n private dataService: StudentDataService,\n private nodeService: NodeService,\n private projectService: ProjectService\n ) {}\n\n ngOnInit(): void {\n this.item = this.projectService.idToNode[this.nodeId];\n this.isGroup = this.projectService.isGroupNode(this.nodeId);\n this.nodeStatus = this.dataService.nodeStatuses[this.nodeId];\n this.setNodeTitle();\n this.currentNode = this.dataService.currentNode;\n this.isCurrentNode = this.currentNode.id === this.nodeId;\n if (this.isGroup && this.isCurrentNode) {\n this.setExpanded();\n }\n this.subscriptions.add(this.projectService.projectParsed$.subscribe(() => this.setNodeTitle()));\n this.subscriptions.add(\n this.dataService.navItemIsExpanded$.subscribe(({ nodeId, isExpanded }) => {\n if (nodeId === this.nodeId) {\n this.expanded = isExpanded;\n }\n })\n );\n this.subscriptions.add(\n this.dataService.currentNodeChanged$.subscribe(\n ({ previousNode: oldNode, currentNode: newNode }) => {\n this.currentNode = newNode;\n this.isCurrentNode = this.nodeId === newNode.id;\n let isPrev = false;\n if (this.projectService.isApplicationNode(newNode.id)) {\n return;\n }\n if (oldNode) {\n isPrev = this.nodeId === oldNode.id;\n if (this.dataService.previousStep) {\n this.isPrevStep = this.nodeId === this.dataService.previousStep.id;\n }\n }\n if (this.isGroup) {\n let prevNodeisGroup = !oldNode || this.projectService.isGroupNode(oldNode.id);\n let prevNodeIsDescendant = this.projectService.isNodeDescendentOfGroup(\n oldNode,\n this.item\n );\n if (this.isCurrentNode) {\n this.setExpanded();\n if (prevNodeisGroup || !prevNodeIsDescendant) {\n this.zoomToElement();\n }\n } else {\n if (!prevNodeisGroup) {\n if (prevNodeIsDescendant) {\n this.expanded = true;\n } else {\n this.expanded = false;\n }\n }\n }\n } else {\n if (isPrev && this.projectService.isNodeDescendentOfGroup(this.item, newNode)) {\n this.zoomToElement();\n }\n }\n }\n )\n );\n }\n\n private setNodeTitle(): void {\n this.nodeTitle = this.showPosition\n ? this.projectService.getNodePositionAndTitle(this.nodeId)\n : this.projectService.getNodeTitle(this.nodeId);\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n private setExpanded(): void {\n this.expanded = true;\n this.dataService.setNavItemExpanded(this.nodeId, this.expanded);\n }\n\n private zoomToElement(): void {\n // TODO: implement me\n }\n\n protected itemClicked(): void {\n if (this.isGroup) {\n this.expanded = !this.expanded;\n if (this.expanded) {\n if (this.isCurrentNode) {\n this.zoomToElement();\n } else {\n this.nodeService.setCurrentNode(this.nodeId);\n }\n }\n this.dataService.setNavItemExpanded(this.nodeId, this.expanded);\n } else {\n this.nodeService.setCurrentNode(this.nodeId);\n }\n }\n}\n", + "styleUrl": "nav-item.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "dataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 43, + "jsdoctags": [ + { + "name": "dataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "@if (nodeStatus.isVisible) {\n @switch (type) {\n @case ('card') {\n \n \n \n \n {{ nodeTitle }}\n \n \n @if (isGroup && expanded) {\n remove \n }\n \n @if (isGroup && expanded) {\n \n \n @for (childId of item.ids; track childId) {\n \n \n }\n \n \n }\n \n @if (isGroup) {\n \n }\n @if (isGroup) {\n \n {{ nodeStatus.progress.completedItems }}/{{ nodeStatus.progress.totalItems }} items\n \n }\n \n
    \n \n \n @if (!nodeStatus.isVisitable) {\n \n lock\n \n }\n
    \n
    \n
    \n }\n @case ('list') {\n \n \n \n {{ nodeTitle }}\n \n \n \n @if (!nodeStatus.isVisitable) {\n \n lock\n \n }\n \n \n \n }\n }\n}\n" + }, + { + "name": "NavItemComponent", + "id": "component-NavItemComponent-5be57884f0f668dc38643edab61aa53a5e07e9e1eeec09e22d70f78c26beffc3642a72e4f31e02066b0de13217f478af9c3c2e29feab0ad46e823ed42aee0520-1", + "file": "src/assets/wise5/classroomMonitor/classroomMonitorComponents/nodeProgress/nav-item/nav-item.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "nav-item", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./nav-item.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 60, + "type": "string", + "decorators": [] + }, + { + "name": "type", + "deprecated": false, + "deprecationMessage": "", + "line": 67, + "type": "string", + "decorators": [] + } + ], + "outputsClass": [ + { + "name": "onExpandedEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 62, + "type": "EventEmitter" + } + ], + "propertiesClass": [ + { + "name": "alertIconClass", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 44, + "modifierKind": [ + 124 + ] + }, + { + "name": "alertIconLabel", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 45, + "modifierKind": [ + 124 + ] + }, + { + "name": "alertIconName", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 46, + "modifierKind": [ + 124 + ] + }, + { + "name": "alertNotifications", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 47, + "modifierKind": [ + 123 + ] + }, + { + "name": "currentNode", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 48, + "modifierKind": [ + 123 + ] + }, + { + "name": "currentPeriod", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 49, + "modifierKind": [ + 124 + ] + }, + { + "name": "currentWorkgroup", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 50, + "modifierKind": [ + 123 + ] + }, + { + "name": "expanded", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 51, + "modifierKind": [ + 124 + ] + }, + { + "name": "hasRubrics", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 52, + "modifierKind": [ + 124 + ] + }, + { + "name": "icon", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 53, + "modifierKind": [ + 124 + ] + }, + { + "name": "isCurrentNode", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 54, + "modifierKind": [ + 123 + ] + }, + { + "name": "isGroup", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 55, + "modifierKind": [ + 124 + ] + }, + { + "name": "item", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 56, + "modifierKind": [ + 124 + ] + }, + { + "name": "maxScore", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 57, + "modifierKind": [ + 124 + ] + }, + { + "name": "newAlert", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 58, + "modifierKind": [ + 124 + ] + }, + { + "name": "nodeHasWork", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 59, + "modifierKind": [ + 124 + ] + }, + { + "name": "nodeTitle", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 61, + "modifierKind": [ + 124 + ] + }, + { + "name": "rubricIconClass", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 63, + "modifierKind": [ + 124 + ] + }, + { + "name": "rubricIconLabel", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 64, + "modifierKind": [ + 124 + ] + }, + { + "name": "rubricIconName", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 65, + "modifierKind": [ + 124 + ] + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 66, + "modifierKind": [ + 123 + ] + } + ], + "methodsClass": [ + { + "name": "addTeacherRemovalConstraint", + "args": [ + { + "name": "node", + "type": "Node", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 273, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "node", + "type": "Node", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getAlertNotifications", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 364, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "getNodeAverageScore", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 352, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getNodeCompletion", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 343, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getNodeLockedText", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 383, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "getPeriodLabel", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 377, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "groupItemClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 193, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "hasNewAlert", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 373, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "isLocked", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 204, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isLockedForAll", + "args": [ + { + "name": "constraints", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 213, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "constraints", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isLockedForPeriod", + "args": [ + { + "name": "constraints", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 222, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "constraints", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isShowingAllPeriods", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 319, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "itemClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 184, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "lockNode", + "args": [ + { + "name": "node", + "type": "Node", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 265, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "node", + "type": "Node", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "lockNodeForAllPeriods", + "args": [ + { + "name": "node", + "type": "Node", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 311, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "node", + "type": "Node", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 109, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 80, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "removeTeacherRemovalConstraint", + "args": [ + { + "name": "node", + "type": "Node", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 300, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "node", + "type": "Node", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "sendNodeToAllPeriods", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 331, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "sendNodeToClass", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 323, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "sendNodeToPeriod", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 339, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "showToggleLockNodeConfirmation", + "args": [ + { + "name": "isLocked", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 249, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "isLocked", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "subscribeCurrentNodeChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 130, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "subscribeCurrentPeriodChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 121, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "subscribeStudentStatusReceived", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 113, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "toggleLockNode", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 235, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "unlockNode", + "args": [ + { + "name": "node", + "type": "Node", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 257, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "node", + "type": "Node", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "unlockNodeForAllPeriods", + "args": [ + { + "name": "node", + "type": "Node", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 294, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "node", + "type": "Node", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "zoomToElement", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 178, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "AlertStatusCornerComponent", + "type": "component" + }, + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatCardModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatListModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + }, + { + "name": "NavItemProgressComponent", + "type": "component" + }, + { + "name": "NavItemScoreComponent", + "type": "component" + }, + { + "name": "NodeIconComponent", + "type": "component" + }, + { + "name": "StatusIconComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatListModule } from '@angular/material/list';\nimport { MatButtonModule } from '@angular/material/button';\nimport { Subscription } from 'rxjs';\nimport { AnnotationService } from '../../../../services/annotationService';\nimport { ClassroomStatusService } from '../../../../services/classroomStatusService';\nimport { NotificationService } from '../../../../services/notificationService';\nimport { TeacherDataService } from '../../../../services/teacherDataService';\nimport { TeacherProjectService } from '../../../../services/teacherProjectService';\nimport { TeacherWebSocketService } from '../../../../services/teacherWebSocketService';\nimport { NodeService } from '../../../../services/nodeService';\nimport { generateRandomKey } from '../../../../common/string/string';\nimport { Node } from '../../../../common/Node';\nimport { AlertStatusCornerComponent } from '../../../../../../app/classroom-monitor/alert-status-corner/alert-status-corner.component';\nimport { NavItemProgressComponent } from '../../../../../../app/classroom-monitor/nav-item-progress/nav-item-progress.component';\nimport { StatusIconComponent } from '../../../../../../app/classroom-monitor/status-icon/status-icon.component';\nimport { NodeIconComponent } from '../../../../vle/node-icon/node-icon.component';\nimport { NavItemScoreComponent } from '../navItemScore/nav-item-score.component';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n imports: [\n AlertStatusCornerComponent,\n CommonModule,\n MatButtonModule,\n MatCardModule,\n MatIconModule,\n MatListModule,\n MatTooltipModule,\n NavItemProgressComponent,\n NavItemScoreComponent,\n NodeIconComponent,\n StatusIconComponent\n ],\n selector: 'nav-item',\n styleUrl: './nav-item.component.scss',\n templateUrl: './nav-item.component.html'\n})\nexport class NavItemComponent implements OnInit {\n protected alertIconClass: string;\n protected alertIconLabel: string;\n protected alertIconName: string;\n private alertNotifications: any;\n private currentNode: any;\n protected currentPeriod: any;\n private currentWorkgroup: any;\n protected expanded: boolean = false;\n protected hasRubrics: boolean;\n protected icon: any;\n private isCurrentNode: boolean;\n protected isGroup: boolean;\n protected item: any;\n protected maxScore: number;\n protected newAlert: boolean = false;\n protected nodeHasWork: boolean;\n @Input() nodeId: string;\n protected nodeTitle: string;\n @Output() onExpandedEvent: EventEmitter = new EventEmitter();\n protected rubricIconClass: string;\n protected rubricIconLabel: string;\n protected rubricIconName: string;\n private subscriptions: Subscription = new Subscription();\n @Input() type: string;\n\n constructor(\n private annotationService: AnnotationService,\n private classroomStatusService: ClassroomStatusService,\n private dataService: TeacherDataService,\n private nodeService: NodeService,\n private notificationService: NotificationService,\n private projectService: TeacherProjectService,\n private snackBar: MatSnackBar,\n private webSocketService: TeacherWebSocketService\n ) {}\n\n ngOnInit(): void {\n this.item = this.projectService.idToNode[this.nodeId];\n this.isGroup = this.projectService.isGroupNode(this.nodeId);\n this.nodeHasWork = this.projectService.nodeHasWork(this.nodeId);\n this.nodeTitle = this.projectService.nodeIdToNumber[this.nodeId] + ': ' + this.item.title;\n this.currentNode = this.dataService.currentNode;\n this.isCurrentNode = this.currentNode.id === this.nodeId;\n if (this.isCurrentNode) {\n this.expanded = true;\n this.onExpandedEvent.emit({ nodeId: this.nodeId, expanded: this.expanded });\n this.zoomToElement();\n }\n this.currentPeriod = this.dataService.getCurrentPeriod();\n this.currentWorkgroup = this.dataService.getCurrentWorkgroup();\n this.maxScore = this.projectService.getMaxScoreForNode(this.nodeId);\n this.icon = this.projectService.getNode(this.nodeId).getIcon();\n this.getAlertNotifications();\n this.hasRubrics = this.projectService.getNode(this.nodeId).getNumRubrics() > 0;\n this.alertIconLabel = $localize`Has new alert(s)`;\n this.alertIconClass = 'warn';\n this.alertIconName = 'notifications';\n this.rubricIconLabel = $localize`Step has rubrics/teaching tips`;\n this.rubricIconClass = 'info';\n this.rubricIconName = 'info';\n this.subscribeCurrentNodeChanged();\n this.subscribeStudentStatusReceived();\n this.subscribeCurrentPeriodChanged();\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n private subscribeStudentStatusReceived(): void {\n this.subscriptions.add(\n this.classroomStatusService.studentStatusReceived$.subscribe(() => {\n this.getAlertNotifications();\n })\n );\n }\n\n private subscribeCurrentPeriodChanged(): void {\n this.subscriptions.add(\n this.dataService.currentPeriodChanged$.subscribe(({ currentPeriod }) => {\n this.currentPeriod = currentPeriod;\n this.getAlertNotifications();\n })\n );\n }\n\n private subscribeCurrentNodeChanged(): void {\n this.subscriptions.add(\n this.dataService.currentNodeChanged$.subscribe((previousAndCurrentNode) => {\n const oldNode = previousAndCurrentNode.previousNode;\n const newNode = previousAndCurrentNode.currentNode;\n this.currentNode = newNode;\n this.isCurrentNode = this.nodeId === newNode.id;\n let isPrev = false;\n if (this.projectService.isApplicationNode(newNode.id)) {\n return;\n }\n if (oldNode) {\n isPrev = this.nodeId === oldNode.id;\n if (isPrev && !this.isGroup) {\n this.zoomToElement();\n }\n }\n\n if (this.isGroup) {\n const prevNodeIsGroup = !oldNode || this.projectService.isGroupNode(oldNode.id);\n const prevNodeIsDescendant = this.projectService.isNodeDescendentOfGroup(\n oldNode,\n this.item\n );\n if (this.isCurrentNode) {\n this.expanded = true;\n if (prevNodeIsGroup || !prevNodeIsDescendant) {\n this.zoomToElement();\n }\n } else {\n this.expanded = false;\n if (!prevNodeIsGroup) {\n if (prevNodeIsDescendant) {\n this.expanded = true;\n } else {\n this.expanded = false;\n }\n }\n }\n } else {\n if (isPrev && this.projectService.isNodeDescendentOfGroup(this.item, newNode)) {\n this.zoomToElement();\n }\n }\n })\n );\n }\n\n private zoomToElement(): void {\n setTimeout(() => {\n document.getElementById(`nav-item-${this.nodeId}`).scrollIntoView({ behavior: 'smooth' });\n }, 500);\n }\n\n itemClicked(): void {\n if (this.isGroup) {\n this.groupItemClicked();\n this.onExpandedEvent.emit({ nodeId: this.nodeId, expanded: this.expanded });\n } else {\n this.nodeService.setCurrentNode(this.nodeId);\n }\n }\n\n private groupItemClicked(): void {\n this.expanded = !this.expanded;\n if (this.expanded) {\n if (this.isCurrentNode) {\n this.zoomToElement();\n } else {\n this.nodeService.setCurrentNode(this.nodeId);\n }\n }\n }\n\n isLocked(): boolean {\n const constraints = this.projectService.getNodeById(this.nodeId).constraints ?? [];\n return (\n (this.isShowingAllPeriods() && this.isLockedForAll(constraints)) ||\n (!this.isShowingAllPeriods() &&\n this.isLockedForPeriod(constraints, this.dataService.getCurrentPeriod().periodId))\n );\n }\n\n private isLockedForAll(constraints: any): boolean {\n for (const period of this.dataService.getPeriods()) {\n if (period.periodId !== -1 && !this.isLockedForPeriod(constraints, period.periodId)) {\n return false;\n }\n }\n return true;\n }\n\n private isLockedForPeriod(constraints: any, periodId: number): boolean {\n for (const constraint of constraints) {\n if (\n constraint.action === 'makeThisNodeNotVisitable' &&\n constraint.targetId === this.nodeId &&\n constraint.removalCriteria[0].params.periodId === periodId\n ) {\n return true;\n }\n }\n return false;\n }\n\n protected toggleLockNode(): void {\n const node = this.projectService.getNodeById(this.nodeId);\n const isLocked = this.isLocked();\n if (isLocked) {\n this.unlockNode(node);\n } else {\n this.lockNode(node);\n }\n this.projectService.saveProject().then(() => {\n this.sendNodeToClass(node);\n this.showToggleLockNodeConfirmation(!isLocked);\n });\n }\n\n private showToggleLockNodeConfirmation(isLocked: boolean): void {\n this.snackBar.open(\n isLocked\n ? $localize`${this.nodeTitle} has been locked for ${this.getPeriodLabel()}.`\n : $localize`${this.nodeTitle} has been unlocked for ${this.getPeriodLabel()}.`\n );\n }\n\n private unlockNode(node: Node): void {\n if (this.isShowingAllPeriods()) {\n this.unlockNodeForAllPeriods(node);\n } else {\n this.removeTeacherRemovalConstraint(node, this.dataService.getCurrentPeriod().periodId);\n }\n }\n\n private lockNode(node: Node): void {\n if (this.isShowingAllPeriods()) {\n this.lockNodeForAllPeriods(node);\n } else {\n this.addTeacherRemovalConstraint(node, this.dataService.getCurrentPeriod().periodId);\n }\n }\n\n private addTeacherRemovalConstraint(node: Node, periodId: number): void {\n const lockConstraint = {\n id: generateRandomKey(),\n action: 'makeThisNodeNotVisitable',\n targetId: node.id,\n removalConditional: 'any',\n removalCriteria: [\n {\n name: 'teacherRemoval',\n params: {\n periodId: periodId\n }\n }\n ]\n };\n if (node.constraints == null) {\n node.constraints = [];\n }\n node.constraints.push(lockConstraint);\n }\n\n private unlockNodeForAllPeriods(node: Node): void {\n for (const period of this.dataService.getPeriods()) {\n this.removeTeacherRemovalConstraint(node, period.periodId);\n }\n }\n\n private removeTeacherRemovalConstraint(node: Node, periodId: number) {\n node.constraints = node.constraints.filter((constraint) => {\n return !(\n constraint.action === 'makeThisNodeNotVisitable' &&\n constraint.targetId === node.id &&\n constraint.removalCriteria[0].name === 'teacherRemoval' &&\n constraint.removalCriteria[0].params.periodId === periodId\n );\n });\n }\n\n private lockNodeForAllPeriods(node: Node): void {\n for (const period of this.dataService.getPeriods()) {\n if (period.periodId !== -1 && !this.isLockedForPeriod(node.constraints, period.periodId)) {\n this.addTeacherRemovalConstraint(node, period.periodId);\n }\n }\n }\n\n private isShowingAllPeriods(): boolean {\n return this.dataService.getCurrentPeriod().periodId === -1;\n }\n\n private sendNodeToClass(node: any): void {\n if (this.isShowingAllPeriods()) {\n this.sendNodeToAllPeriods(node);\n } else {\n this.sendNodeToPeriod(node, this.currentPeriod.periodId);\n }\n }\n\n private sendNodeToAllPeriods(node: any): void {\n for (const period of this.dataService.getPeriods()) {\n if (period.periodId !== -1) {\n this.sendNodeToPeriod(node, period.periodId);\n }\n }\n }\n\n private sendNodeToPeriod(node: any, periodId: number): void {\n this.webSocketService.sendNodeToClass(periodId, node);\n }\n\n getNodeCompletion(): number {\n return this.classroomStatusService.getNodeCompletion(\n this.nodeId,\n this.currentPeriod.periodId,\n null,\n true\n ).completionPct;\n }\n\n getNodeAverageScore(): any {\n const workgroupId = this.currentWorkgroup ? this.currentWorkgroup.workgroupId : null;\n if (workgroupId) {\n return this.annotationService.getTotalNodeScoreForWorkgroup(workgroupId, this.nodeId);\n } else {\n return this.classroomStatusService.getNodeAverageScore(\n this.nodeId,\n this.currentPeriod.periodId\n );\n }\n }\n\n private getAlertNotifications(): void {\n this.alertNotifications = this.notificationService.getAlertNotifications({\n nodeId: this.nodeId,\n periodId: this.currentPeriod.periodId,\n toWorkgroupId: this.currentWorkgroup ? this.currentWorkgroup.workgroupId : null\n });\n this.newAlert = this.hasNewAlert();\n }\n\n private hasNewAlert(): boolean {\n return this.alertNotifications.some((alert) => !alert.timeDismissed);\n }\n\n private getPeriodLabel(): string {\n return this.isShowingAllPeriods()\n ? $localize`All Periods`\n : $localize`Period: ${this.currentPeriod.periodName}`;\n }\n\n protected getNodeLockedText(): string {\n return this.isLocked()\n ? $localize`Unlock for ${this.getPeriodLabel()}`\n : $localize`Lock for ${this.getPeriodLabel()}`;\n }\n}\n", + "styleUrl": "./nav-item.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "classroomStatusService", + "type": "ClassroomStatusService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "notificationService", + "type": "NotificationService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "snackBar", + "type": "MatSnackBar", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "webSocketService", + "type": "TeacherWebSocketService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 67, + "jsdoctags": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "classroomStatusService", + "type": "ClassroomStatusService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "notificationService", + "type": "NotificationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "snackBar", + "type": "MatSnackBar", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "webSocketService", + "type": "TeacherWebSocketService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ], + "isDuplicate": true, + "duplicateId": 1, + "duplicateName": "NavItemComponent-1", + "templateData": "@if (nodeHasWork || isGroup) {\n
    \n @switch (type) {\n @case ('card') {\n \n \n \n \n {{ nodeTitle }}\n \n \n @if (isGroup && expanded) {\n remove \n }\n @if (newAlert) {\n \n }\n \n @if (isGroup && expanded) {\n \n \n @for (childId of item.ids; track childId) {\n \n }\n \n \n }\n \n \n \n \n \n {{ isLocked() ? 'lock' : 'lock_open' }}\n \n \n \n \n }\n @case ('list') {\n \n \n \n {{ nodeTitle }} \n \n @if (newAlert) {\n \n }\n @if (hasRubrics) {\n \n }\n \n \n \n \n \n }\n }\n}\n" + }, + { + "name": "NavItemProgressComponent", + "id": "component-NavItemProgressComponent-c98462184cffadee5b84820fe33d103f07c67266c513c7d9fecd17005d49069a1adea2c167a68b230f646cadcf614f7ef933878dce09fdee6eaf4269dd8f19cf", + "file": "src/app/classroom-monitor/nav-item-progress/nav-item-progress.component.ts", + "encapsulation": [ + "ViewEncapsulation.None" + ], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "nav-item-progress", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "nav-item-progress.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "nodeCompletion", + "deprecated": false, + "deprecationMessage": "", + "line": 12, + "type": "string", + "decorators": [] + }, + { + "name": "period", + "deprecated": false, + "deprecationMessage": "", + "line": 13, + "type": "any", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [], + "methodsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatProgressBarModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@Component({\n encapsulation: ViewEncapsulation.None,\n imports: [MatProgressBarModule, MatTooltipModule],\n selector: 'nav-item-progress',\n templateUrl: 'nav-item-progress.component.html'\n})\nexport class NavItemProgressComponent {\n @Input() nodeCompletion: string;\n @Input() period: any;\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [], + "templateData": "\n \n @if (period.periodId === -1) {\n \n } @else {\n \n }\n \n \n" + }, + { + "name": "NavItemScoreComponent", + "id": "component-NavItemScoreComponent-a148760643620c7015ce8cea85b294d3cbee64fec275130114daac37654d270d19e81d164a4dbf7b5a39fc28583c77e20753915aede537e4bd9445de9d05177c", + "file": "src/assets/wise5/classroomMonitor/classroomMonitorComponents/nodeProgress/navItemScore/nav-item-score.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "nav-item-score", + "styleUrls": [], + "styles": [], + "template": "@if (showScore) {\n \n grade \n {{ averageScoreDisplay }}\n \n}\n", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "averageScore", + "deprecated": false, + "deprecationMessage": "", + "line": 18, + "type": "number | string", + "decorators": [] + }, + { + "name": "maxScore", + "deprecated": false, + "deprecationMessage": "", + "line": 20, + "type": "number", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "averageScoreDisplay", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "modifierKind": [ + 124 + ] + }, + { + "name": "showScore", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 21, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "formatAverageScore", + "args": [ + { + "name": "averageScore", + "type": "number | string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number | string", + "typeParameters": [], + "line": 41, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "averageScore", + "type": "number | string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getAverageScoreDisplay", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 34, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "ngOnChanges", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 25, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatIconModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Inject, Input, LOCALE_ID } from '@angular/core';\nimport { formatNumber } from '@angular/common';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n imports: [MatIconModule],\n selector: 'nav-item-score',\n template: `\n @if (showScore) {\n \n grade \n {{ averageScoreDisplay }}\n \n }\n `\n})\nexport class NavItemScoreComponent {\n @Input() averageScore: number | string;\n protected averageScoreDisplay: string = '';\n @Input() maxScore: number;\n protected showScore: boolean;\n\n constructor(@Inject(LOCALE_ID) private locale: string) {}\n\n ngOnChanges(): void {\n if (typeof this.maxScore === 'number' || typeof this.averageScore === 'number') {\n this.showScore = true;\n this.averageScoreDisplay = this.getAverageScoreDisplay();\n } else {\n this.showScore = false;\n }\n }\n\n private getAverageScoreDisplay(): string {\n const averageScore = this.formatAverageScore(this.averageScore);\n return typeof this.maxScore === 'number'\n ? `${averageScore}/${this.maxScore}`\n : `${averageScore}/0`;\n }\n\n private formatAverageScore(averageScore: number | string): number | string {\n if (typeof averageScore === 'number') {\n if (averageScore % 1 !== 0) {\n averageScore = formatNumber(averageScore, this.locale, '1.1-1').toString();\n }\n } else {\n averageScore = '-';\n }\n return averageScore;\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "locale", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 21, + "jsdoctags": [ + { + "name": "locale", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [] + }, + { + "name": "NewPasswordAndConfirmComponent", + "id": "component-NewPasswordAndConfirmComponent-c2aef6b061495e3ab370d808d00ded806dbbd701465d6fcbd08d64aecccea83513ef457fab26831963d37e710fbe121e73779c261cfc163bef2947e18533dd76", + "file": "src/app/password/new-password-and-confirm/new-password-and-confirm.component.ts", + "encapsulation": [ + "ViewEncapsulation.None" + ], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "new-password-and-confirm", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./new-password-and-confirm.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "confirmPasswordLabel", + "defaultValue": "$localize`Confirm New Password`", + "deprecated": false, + "deprecationMessage": "", + "line": 27, + "type": "string", + "decorators": [] + }, + { + "name": "formGroup", + "deprecated": false, + "deprecationMessage": "", + "line": 28, + "type": "FormGroup", + "decorators": [] + }, + { + "name": "passwordLabel", + "defaultValue": "$localize`New Password`", + "deprecated": false, + "deprecationMessage": "", + "line": 32, + "type": "string", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "CONFIRM_NEW_PASSWORD_FORM_CONTROL_NAME", + "defaultValue": "'confirmNewPassword'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 20, + "modifierKind": [ + 126, + 148 + ] + }, + { + "name": "confirmNewPasswordFormControl", + "deprecated": false, + "deprecationMessage": "", + "type": "FormControl", + "indexKey": "", + "optional": false, + "description": "", + "line": 24, + "modifierKind": [ + 124 + ] + }, + { + "name": "confirmNewPasswordFormControlName", + "defaultValue": "NewPasswordAndConfirmComponent.CONFIRM_NEW_PASSWORD_FORM_CONTROL_NAME", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 25, + "modifierKind": [ + 124 + ] + }, + { + "name": "NEW_PASSWORD_FORM_CONTROL_NAME", + "defaultValue": "'newPassword'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 21, + "modifierKind": [ + 126, + 148 + ] + }, + { + "name": "newPasswordFormControl", + "deprecated": false, + "deprecationMessage": "", + "type": "FormControl", + "indexKey": "", + "optional": false, + "description": "", + "line": 29, + "modifierKind": [ + 124 + ] + }, + { + "name": "newPasswordFormControlName", + "defaultValue": "NewPasswordAndConfirmComponent.NEW_PASSWORD_FORM_CONTROL_NAME", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 30, + "modifierKind": [ + 124 + ] + }, + { + "name": "PASSWORD_MIN_LENGTH", + "defaultValue": "8", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 22 + }, + { + "name": "passwordRequirements", + "defaultValue": "[\n { errorFieldName: 'missingLetter', text: $localize`include a letter` },\n { errorFieldName: 'missingNumber', text: $localize`include a number` },\n { errorFieldName: 'tooShort', text: $localize`be at least 8 characters long` }\n ]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 33, + "modifierKind": [ + 124 + ] + }, + { + "name": "passwordStrength", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 38, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "createPasswordStrengthValidator", + "args": [], + "optional": false, + "returnType": "ValidatorFn", + "typeParameters": [], + "line": 54, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 40, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "onNewPasswordBlur", + "args": [ + { + "name": "menuTrigger", + "type": "MatMenuTrigger", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 99, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "menuTrigger", + "type": "MatMenuTrigger", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "onNewPasswordFocus", + "args": [ + { + "name": "menuTrigger", + "type": "MatMenuTrigger", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 89, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "menuTrigger", + "type": "MatMenuTrigger", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "passwordMatchValidator", + "args": [ + { + "name": "formGroup", + "type": "FormGroup", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "ValidationErrors", + "typeParameters": [], + "line": 71, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "formGroup", + "type": "FormGroup", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "passwordStrengthChange", + "args": [ + { + "name": "value", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 85, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "value", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input, OnInit, ViewEncapsulation } from '@angular/core';\nimport {\n AbstractControl,\n FormControl,\n FormGroup,\n ValidationErrors,\n ValidatorFn,\n Validators\n} from '@angular/forms';\nimport { MatMenuTrigger } from '@angular/material/menu';\n\n@Component({\n encapsulation: ViewEncapsulation.None,\n selector: 'new-password-and-confirm',\n standalone: false,\n styleUrl: './new-password-and-confirm.component.scss',\n templateUrl: './new-password-and-confirm.component.html'\n})\nexport class NewPasswordAndConfirmComponent implements OnInit {\n static readonly CONFIRM_NEW_PASSWORD_FORM_CONTROL_NAME: string = 'confirmNewPassword';\n static readonly NEW_PASSWORD_FORM_CONTROL_NAME: string = 'newPassword';\n PASSWORD_MIN_LENGTH: number = 8;\n\n protected confirmNewPasswordFormControl: FormControl;\n protected confirmNewPasswordFormControlName: string =\n NewPasswordAndConfirmComponent.CONFIRM_NEW_PASSWORD_FORM_CONTROL_NAME;\n @Input() confirmPasswordLabel: string = $localize`Confirm New Password`;\n @Input() formGroup: FormGroup;\n protected newPasswordFormControl: FormControl;\n protected newPasswordFormControlName: string =\n NewPasswordAndConfirmComponent.NEW_PASSWORD_FORM_CONTROL_NAME;\n @Input() passwordLabel: string = $localize`New Password`;\n protected passwordRequirements: any[] = [\n { errorFieldName: 'missingLetter', text: $localize`include a letter` },\n { errorFieldName: 'missingNumber', text: $localize`include a number` },\n { errorFieldName: 'tooShort', text: $localize`be at least 8 characters long` }\n ];\n protected passwordStrength: number = 0;\n\n ngOnInit(): void {\n this.newPasswordFormControl = new FormControl('', [\n Validators.required,\n this.createPasswordStrengthValidator()\n ]);\n this.formGroup.addControl(this.newPasswordFormControlName, this.newPasswordFormControl);\n this.confirmNewPasswordFormControl = new FormControl('', [Validators.required]);\n this.formGroup.addControl(\n this.confirmNewPasswordFormControlName,\n this.confirmNewPasswordFormControl\n );\n this.formGroup.addValidators(this.passwordMatchValidator);\n }\n\n private createPasswordStrengthValidator(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const value = control.value ? control.value : '';\n const hasLetter = /[a-zA-Z]+/.test(value);\n const hasNumber = /[0-9]+/.test(value);\n const appropriateLength = value.length >= this.PASSWORD_MIN_LENGTH;\n const passwordValid = hasLetter && hasNumber && appropriateLength;\n return !passwordValid\n ? {\n missingLetter: !hasLetter,\n missingNumber: !hasNumber,\n tooShort: !appropriateLength\n }\n : null;\n };\n }\n\n private passwordMatchValidator(formGroup: FormGroup): ValidationErrors {\n const password = formGroup.get(\n NewPasswordAndConfirmComponent.NEW_PASSWORD_FORM_CONTROL_NAME\n ).value;\n const confirmPassword = formGroup.get(\n NewPasswordAndConfirmComponent.CONFIRM_NEW_PASSWORD_FORM_CONTROL_NAME\n ).value;\n const error = password === confirmPassword ? null : { passwordDoesNotMatch: true };\n formGroup.controls[\n NewPasswordAndConfirmComponent.CONFIRM_NEW_PASSWORD_FORM_CONTROL_NAME\n ].setErrors(error);\n return error;\n }\n\n protected passwordStrengthChange(value: number): void {\n this.passwordStrength = value ? value : 0;\n }\n\n onNewPasswordFocus(menuTrigger: MatMenuTrigger): void {\n // This setTimeout is required because sometimes when the user clicks on the input, it will\n // trigger a blur and then a focus which can lead to the menu not opening. This makes sure that\n // if a blur and a focus occur right after each other, the openMenu() will be called after the\n // blur is complete.\n setTimeout(() => {\n menuTrigger.openMenu();\n });\n }\n\n onNewPasswordBlur(menuTrigger: MatMenuTrigger): void {\n menuTrigger.closeMenu();\n }\n}\n", + "styleUrl": "./new-password-and-confirm.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "\n
    \n \n {{ passwordLabel }}\n \n @if (newPasswordFormControl.hasError('required')) {\n Password required \n }\n \n \n \n
    \n @if (!newPasswordFormControl.pristine) {\n
    Password Strength:
    \n @switch (passwordStrength) {\n @case (0) {\n
    Very Weak
    \n }\n @case (1) {\n
    Weak
    \n }\n @case (2) {\n
    Good
    \n }\n @case (3) {\n
    Strong
    \n }\n @case (4) {\n
    Very Strong
    \n }\n }\n }\n
    \n
    \n
    Your password needs to:
    \n @for (req of passwordRequirements; track req.text) {\n \n }\n
    \n
    \n
    \n

    \n \n {{ confirmPasswordLabel }}\n \n @if (confirmNewPasswordFormControl.hasError('passwordDoesNotMatch')) {\n \n Password does not match\n \n }\n \n

    \n
    \n" + }, + { + "name": "NewsComponent", + "id": "component-NewsComponent-06bad9a0c62d373a8fbdc255c94cf3d4c04a26b339f8b833f6ca34400256929fb872af60576b59f62387de1135fc53ec2febbd10b523bdc770f1b6b29f098a00", + "file": "src/app/news/news.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "app-news", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./news.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "allNewsItems", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 12 + }, + { + "name": "showAll", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 13 + } + ], + "methodsClass": [ + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 20, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, OnInit } from '@angular/core';\nimport { NewsService } from '../services/news.service';\nimport { News } from '../domain/news';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@Component({\n selector: 'app-news',\n templateUrl: './news.component.html',\n standalone: false\n})\nexport class NewsComponent implements OnInit {\n allNewsItems: any = [];\n showAll: boolean = false;\n\n constructor(\n private newsService: NewsService,\n protected sanitizer: DomSanitizer\n ) {}\n\n ngOnInit() {\n this.newsService.getAllNews().subscribe((allNewsItems: News[]) => {\n this.allNewsItems = allNewsItems;\n });\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "newsService", + "type": "NewsService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "sanitizer", + "type": "DomSanitizer", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 13, + "jsdoctags": [ + { + "name": "newsService", + "type": "NewsService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "sanitizer", + "type": "DomSanitizer", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "
    \n
    \n
    \n

    \n rss_feedWhat's New?\n

    \n
    \n
    \n
    \n \n @for (newsItem of allNewsItems; track newsItem; let i = $index) {\n @if (i < 10 || showAll) {\n \n \n {{ newsItem.date | date: 'mediumDate' }}\n \n \n \n \n

    {{ newsItem.title }}

    \n
    \n \n \n \n \n }\n }\n \n @if (allNewsItems.length > 10 && !showAll) {\n
    \n Show More\n
    \n }\n
    \n \n
    \n\n" + }, + { + "name": "NodeAdvancedAuthoringComponent", + "id": "component-NodeAdvancedAuthoringComponent-99fa0be261fa094f7fec9e2810d7dc0db260884d351e4d15d35bb3dc83aeaa4653af21fbe124ca95af147f8390dfffa384ec8fd43a06a7c1a60590205f834794", + "file": "src/assets/wise5/authoringTool/node/advanced/node-advanced-authoring/node-advanced-authoring.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./node-advanced-authoring.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "isGroupNode", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + }, + { + "name": "RouterModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, OnInit } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { TeacherProjectService } from '../../../../services/teacherProjectService';\nimport { ActivatedRoute } from '@angular/router';\n\n@Component({\n imports: [MatButtonModule, MatIconModule, MatTooltipModule, RouterModule],\n styleUrl: './node-advanced-authoring.component.scss',\n templateUrl: './node-advanced-authoring.component.html'\n})\nexport class NodeAdvancedAuthoringComponent implements OnInit {\n protected isGroupNode: boolean;\n\n constructor(\n private projectService: TeacherProjectService,\n private route: ActivatedRoute\n ) {}\n\n ngOnInit(): void {\n this.route.parent.parent.params.subscribe(\n (params) => (this.isGroupNode = this.projectService.getNode(params.nodeId).isGroup())\n );\n }\n}\n", + "styleUrl": "./node-advanced-authoring.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 15, + "jsdoctags": [ + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "
    \n \n arrow_back\n \n @if (!isGroupNode) {\n \n settings\n \n }\n @if (!isGroupNode) {\n \n message\n \n }\n @if (!isGroupNode) {\n \n trending_up\n \n }\n @if (!isGroupNode) {\n \n block\n \n }\n \n code\n \n
    \n\n" + }, + { + "name": "NodeAdvancedConstraintAuthoringComponent", + "id": "component-NodeAdvancedConstraintAuthoringComponent-47a6b4bb0be25ea7b7d4098498580fc6460ff47ed96179cee34744ddfdea7f8b2250cdffee0e95116612f630c5c3f4c80355adc3a4b3d80c7c1c8aa31f35cbde", + "file": "src/assets/wise5/authoringTool/node/advanced/constraint/node-advanced-constraint-authoring.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "node-advanced-constraint-authoring.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "content", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 7, + "inheritance": { + "file": "ConstraintsAuthoringComponent" + } + } + ], + "methodsClass": [ + { + "name": "addConstraint", + "args": [], + "optional": false, + "returnType": "Constraint", + "typeParameters": [], + "line": 46, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ConstraintsAuthoringComponent" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 36, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "deleteConstraint", + "args": [ + { + "name": "constraintIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 44, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "constraintIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ConstraintsAuthoringComponent" + } + }, + { + "name": "getNewNodeConstraintId", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 29, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ConstraintsAuthoringComponent" + } + }, + { + "name": "saveProject", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 51, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ConstraintsAuthoringComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + }, + { + "name": "NodeConstraintAuthoringComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { TeacherProjectService } from '../../../../services/teacherProjectService';\nimport { scrollToElement, temporarilyHighlightElement } from '../../../../common/dom/dom';\nimport { ConstraintsAuthoringComponent } from '../../../constraint/constraints-authoring/constraints-authoring.component';\nimport { ActivatedRoute } from '@angular/router';\nimport { Constraint } from '../../../../../../app/domain/constraint';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { NodeConstraintAuthoringComponent } from '../../../constraint/node-constraint-authoring/node-constraint-authoring.component';\n\n@Component({\n imports: [\n CommonModule,\n FormsModule,\n MatButtonModule,\n MatFormFieldModule,\n MatIconModule,\n MatTooltipModule,\n NodeConstraintAuthoringComponent\n ],\n styleUrl: 'node-advanced-constraint-authoring.component.scss',\n templateUrl: 'node-advanced-constraint-authoring.component.html'\n})\nexport class NodeAdvancedConstraintAuthoringComponent extends ConstraintsAuthoringComponent {\n constructor(\n protected projectService: TeacherProjectService,\n private route: ActivatedRoute\n ) {\n super(projectService);\n }\n\n ngOnInit(): void {\n this.route.parent.parent.parent.params.subscribe((params) => {\n const node = this.projectService.getNodeById(params.nodeId);\n if (node.constraints == null) {\n node.constraints = [];\n }\n this.content = node;\n });\n }\n\n protected addConstraint(): Constraint {\n const constraint = super.addConstraint();\n constraint.targetId = this.content.id;\n setTimeout(() => {\n scrollToElement('bottom');\n temporarilyHighlightElement(constraint.id);\n });\n return constraint;\n }\n}\n", + "styleUrl": "node-advanced-constraint-authoring.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 28, + "jsdoctags": [ + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "ConstraintsAuthoringComponent" + ], + "templateData": "\n
    \n Add Constraint\n \n add\n \n
    \n
    \n
    \n \n @for (constraint of content.constraints; track constraint; let constraintIndex = $index) {\n
    \n
    \n Constraint {{ constraintIndex + 1 }}\n \n delete\n \n
    \n
    \n \n
    \n }\n @if (content.constraints.length > 0) {\n \n }\n
    \n\n" + }, + { + "name": "NodeAdvancedGeneralAuthoringComponent", + "id": "component-NodeAdvancedGeneralAuthoringComponent-1729b8e56caecd355c47c406386c6dcfdbd8f865b086486ad052fdfce99dfce26640ec6011dbb8b25921b628e772640fd261ffdf6ed9fa61675739c1b304efed", + "file": "src/assets/wise5/authoringTool/node/advanced/general/node-advanced-general-authoring.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "template": "\n Show Save Button\n\n
    \n\n Show Submit Button\n\n", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "node", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 20, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 27, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "saveProject", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 33, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatCheckboxModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, OnInit } from '@angular/core';\nimport { TeacherProjectService } from '../../../../services/teacherProjectService';\nimport { ActivatedRoute } from '@angular/router';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n imports: [FormsModule, MatCheckboxModule],\n template: `\n \n Show Save Button\n \n
    \n \n Show Submit Button\n \n `\n})\nexport class NodeAdvancedGeneralAuthoringComponent implements OnInit {\n protected node: any;\n\n constructor(\n private projectService: TeacherProjectService,\n private route: ActivatedRoute\n ) {}\n\n ngOnInit(): void {\n this.route.parent.parent.parent.params.subscribe(\n (params) => (this.node = this.projectService.getNodeById(params.nodeId))\n );\n }\n\n protected saveProject(): void {\n this.projectService.saveProject();\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 20, + "jsdoctags": [ + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ] + }, + { + "name": "NodeAdvancedJsonAuthoringComponent", + "id": "component-NodeAdvancedJsonAuthoringComponent-b9faa726ca1c3c080abac4e09dab10b0beca6af61fc63a39d67b0da1ee0d7bd024bcf1fed0938e58cfe339bebe67c260cfd9f5e1a272c27589e6cdcebd28c6f1", + "file": "src/assets/wise5/authoringTool/node/advanced/json/node-advanced-json-authoring.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "template": " Edit Step JSON\n \n ", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "node", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 26, + "modifierKind": [ + 124 + ] + }, + { + "name": "nodeContentChanged", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 28, + "modifierKind": [ + 124 + ] + }, + { + "name": "nodeContentChangedSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 29, + "modifierKind": [ + 124 + ] + }, + { + "name": "nodeContentJSONString", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 27, + "modifierKind": [ + 124 + ] + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 30, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 53, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 38, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "saveJSON", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 57, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CdkTextareaAutosize" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatInputModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { TeacherProjectService } from '../../../../services/teacherProjectService';\nimport { NotificationService } from '../../../../services/notificationService';\nimport { Component, OnInit } from '@angular/core';\nimport { Subject, Subscription } from 'rxjs';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport { ActivatedRoute } from '@angular/router';\nimport { FormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { CdkTextareaAutosize } from '@angular/cdk/text-field';\n\n@Component({\n imports: [CdkTextareaAutosize, FormsModule, MatFormFieldModule, MatInputModule],\n template: `\n Edit Step JSON\n \n `\n})\nexport class NodeAdvancedJsonAuthoringComponent implements OnInit {\n protected node: any;\n protected nodeContentJSONString: string;\n protected nodeContentChanged: Subject = new Subject();\n protected nodeContentChangedSubscription: Subscription;\n protected nodeId: string;\n\n constructor(\n private notificationService: NotificationService,\n private projectService: TeacherProjectService,\n private route: ActivatedRoute\n ) {}\n\n ngOnInit(): void {\n this.route.parent.parent.parent.params.subscribe((params) => {\n this.nodeId = params.nodeId;\n this.node = this.projectService.getNodeById(this.nodeId);\n this.nodeContentJSONString = JSON.stringify(this.node, null, 4);\n this.notificationService.showJSONValidMessage();\n this.nodeContentChangedSubscription = this.nodeContentChanged\n .pipe(debounceTime(1000), distinctUntilChanged())\n .subscribe((newText) => {\n this.nodeContentJSONString = newText;\n this.saveJSON();\n });\n });\n }\n\n ngOnDestroy(): void {\n this.nodeContentChangedSubscription.unsubscribe();\n }\n\n protected saveJSON(): void {\n try {\n const updatedNode = JSON.parse(this.nodeContentJSONString);\n this.node = updatedNode;\n this.projectService.setNode(this.nodeId, updatedNode);\n this.projectService.saveProject().then(() => {\n this.projectService.refreshProject();\n });\n this.notificationService.showJSONValidMessage();\n } catch (e) {\n this.notificationService.showJSONInvalidMessage();\n }\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "notificationService", + "type": "NotificationService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 30, + "jsdoctags": [ + { + "name": "notificationService", + "type": "NotificationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ] + }, + { + "name": "NodeAdvancedPathAuthoringComponent", + "id": "component-NodeAdvancedPathAuthoringComponent-722782a944b821e2047da80632ed5d380c1e1c0025489a4fdc2561e7d673400d20188b18accbeb2641bf6a198bd80ae01cabf4348838fa83e1dbe8438b0d4da0", + "file": "src/assets/wise5/authoringTool/node/advanced/path/node-advanced-path-authoring.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "node-advanced-path-authoring.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "canChangePathOptions", + "defaultValue": "[\n { value: true, text: $localize`True` },\n { value: false, text: $localize`False` }\n ]", + "deprecated": false, + "deprecationMessage": "", + "type": "[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 27, + "modifierKind": [ + 124 + ] + }, + { + "name": "howToChooseAmongAvailablePathsOptions", + "defaultValue": "[\n { value: 'random', text: $localize`Random` },\n { value: 'workgroupId', text: $localize`Workgroup ID` },\n { value: 'firstAvailable', text: $localize`First Available` },\n { value: 'lastAvailable', text: $localize`Last Available` },\n { value: 'tag', text: $localize`Tag` }\n ]", + "deprecated": false, + "deprecationMessage": "", + "type": "[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 31, + "modifierKind": [ + 124 + ] + }, + { + "name": "items", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 38, + "modifierKind": [ + 124 + ] + }, + { + "name": "node", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 39 + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 40, + "modifierKind": [ + 124 + ] + }, + { + "name": "nodeIds", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 41, + "modifierKind": [ + 124 + ] + }, + { + "name": "transitionCriterias", + "defaultValue": "[\n {\n value: 'score',\n text: $localize`Get a specific score on a component`,\n params: [\n { value: 'nodeId', text: $localize`Node ID` },\n { value: 'componentId', text: $localize`Component ID` },\n { value: 'scores', text: $localize`Scores(s)` },\n { value: 'scoreId', text: $localize`Score ID (Optional)` }\n ]\n },\n {\n value: 'choiceChosen',\n text: $localize`Choose a specific choice on a component`,\n params: [\n { value: 'nodeId', text: $localize`Node ID` },\n { value: 'componentId', text: $localize`Component ID` },\n { value: 'choiceIds', text: $localize`Choices` }\n ]\n },\n {\n value: 'tag',\n text: $localize`Have Tag Assigned To Workgroup`,\n params: [{ value: 'tag', text: $localize`Tag` }]\n }\n ]", + "deprecated": false, + "deprecationMessage": "", + "type": "[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 42, + "modifierKind": [ + 124 + ] + }, + { + "name": "whenToChoosePathOptions", + "defaultValue": "[\n { value: 'enterNode', text: $localize`Enter Node` },\n { value: 'exitNode', text: $localize`Exit Node` },\n { value: 'scoreChanged', text: $localize`Score Changed` },\n { value: 'studentDataChanged', text: $localize`Student Data Changed` }\n ]", + "deprecated": false, + "deprecationMessage": "", + "type": "[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 68, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "addNewTransition", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 87, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "addNewTransitionCriteria", + "args": [ + { + "name": "transition", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 133, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "transition", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addNewTransitionsIfNeeded", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 127, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "deleteTransition", + "args": [ + { + "name": "transition", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 219, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "transition", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "deleteTransitionCriteria", + "args": [ + { + "name": "transition", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "transitionCriteriaIndex", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 152, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "transition", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "transitionCriteriaIndex", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getChoices", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 232, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getChoiceTypeByNodeIdAndComponentId", + "args": [ + { + "name": "nodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 236, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getComponents", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 257, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getNodePositionById", + "args": [ + { + "name": "nodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 249, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getNodeTitle", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 245, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getTransitionCriteriaParamsByName", + "args": [ + { + "name": "name", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 162, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "name", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isABranchNode", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 108, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "isGroupNode", + "args": [ + { + "name": "nodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 253, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 80, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "saveProject", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 228, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "scoreIdChanged", + "args": [ + { + "name": "transitionCriteria", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 266, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "transitionCriteria", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "scoresChanged", + "args": [ + { + "name": "value", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "params", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 261, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "value", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "params", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setDefaultBranchNodeTransitionLogic", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 112, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "transitionCriteriaComponentIdChanged", + "args": [ + { + "name": "transitionCriteria", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 199, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "transitionCriteria", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "transitionCriteriaNameChanged", + "args": [ + { + "name": "transitionCriteria", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 171, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "transitionCriteria", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "transitionCriteriaNodeIdChanged", + "args": [ + { + "name": "transitionCriteria", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 188, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "transitionCriteria", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "transitionToNodeIdChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 214, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatInputModule", + "type": "module" + }, + { + "name": "MatSelectModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, OnInit } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MultipleChoiceContent } from '../../../../components/multipleChoice/MultipleChoiceContent';\nimport { TeacherProjectService } from '../../../../services/teacherProjectService';\nimport { ActivatedRoute } from '@angular/router';\n\n@Component({\n imports: [\n FormsModule,\n MatButtonModule,\n MatFormFieldModule,\n MatIconModule,\n MatInputModule,\n MatSelectModule,\n MatTooltipModule\n ],\n styleUrl: 'node-advanced-path-authoring.component.scss',\n templateUrl: 'node-advanced-path-authoring.component.html'\n})\nexport class NodeAdvancedPathAuthoringComponent implements OnInit {\n protected canChangePathOptions = [\n { value: true, text: $localize`True` },\n { value: false, text: $localize`False` }\n ];\n protected howToChooseAmongAvailablePathsOptions = [\n { value: 'random', text: $localize`Random` },\n { value: 'workgroupId', text: $localize`Workgroup ID` },\n { value: 'firstAvailable', text: $localize`First Available` },\n { value: 'lastAvailable', text: $localize`Last Available` },\n { value: 'tag', text: $localize`Tag` }\n ];\n protected items: any[];\n node: any;\n protected nodeId: string;\n protected nodeIds: string[];\n protected transitionCriterias = [\n {\n value: 'score',\n text: $localize`Get a specific score on a component`,\n params: [\n { value: 'nodeId', text: $localize`Node ID` },\n { value: 'componentId', text: $localize`Component ID` },\n { value: 'scores', text: $localize`Scores(s)` },\n { value: 'scoreId', text: $localize`Score ID (Optional)` }\n ]\n },\n {\n value: 'choiceChosen',\n text: $localize`Choose a specific choice on a component`,\n params: [\n { value: 'nodeId', text: $localize`Node ID` },\n { value: 'componentId', text: $localize`Component ID` },\n { value: 'choiceIds', text: $localize`Choices` }\n ]\n },\n {\n value: 'tag',\n text: $localize`Have Tag Assigned To Workgroup`,\n params: [{ value: 'tag', text: $localize`Tag` }]\n }\n ];\n protected whenToChoosePathOptions = [\n { value: 'enterNode', text: $localize`Enter Node` },\n { value: 'exitNode', text: $localize`Exit Node` },\n { value: 'scoreChanged', text: $localize`Score Changed` },\n { value: 'studentDataChanged', text: $localize`Student Data Changed` }\n ];\n\n constructor(\n private projectService: TeacherProjectService,\n private route: ActivatedRoute\n ) {}\n\n ngOnInit() {\n this.route.parent.parent.parent.params.subscribe((params) => {\n this.node = this.projectService.getNodeById(params.nodeId);\n this.nodeIds = this.projectService.getFlattenedProjectAsNodeIds(true);\n });\n }\n\n addNewTransition(): void {\n this.addNewTransitionsIfNeeded();\n const nodeTransitions = this.node.transitionLogic.transitions;\n if (nodeTransitions.length > 0) {\n const lastNodeTransition = nodeTransitions[nodeTransitions.length - 1];\n const newTransition = {\n to: lastNodeTransition.to\n };\n nodeTransitions.push(newTransition);\n } else {\n const newTransition = {\n to: this.nodeId\n };\n nodeTransitions.push(newTransition);\n }\n if (this.isABranchNode()) {\n this.setDefaultBranchNodeTransitionLogic();\n }\n this.saveProject();\n }\n\n protected isABranchNode(): boolean {\n return this.node.transitionLogic.transitions.length > 1;\n }\n\n protected setDefaultBranchNodeTransitionLogic(): void {\n if (this.node.transitionLogic.howToChooseAmongAvailablePaths == null) {\n this.node.transitionLogic.howToChooseAmongAvailablePaths = 'workgroupId';\n }\n if (this.node.transitionLogic.whenToChoosePath == null) {\n this.node.transitionLogic.whenToChoosePath = 'enterNode';\n }\n if (this.node.transitionLogic.canChangePath == null) {\n this.node.transitionLogic.canChangePath = false;\n }\n if (this.node.transitionLogic.maxPathsVisitable == null) {\n this.node.transitionLogic.maxPathsVisitable = 1;\n }\n }\n\n protected addNewTransitionsIfNeeded(): void {\n if (this.node.transitionLogic.transitions == null) {\n this.node.transitionLogic.transitions = [];\n }\n }\n\n addNewTransitionCriteria(transition): void {\n for (const nodeTransition of this.node.transitionLogic.transitions) {\n if (nodeTransition == transition) {\n if (nodeTransition.criteria == null) {\n nodeTransition.criteria = [];\n }\n const newTransitionCriteria = {\n name: '',\n params: {\n nodeId: '',\n componentId: ''\n }\n };\n nodeTransition.criteria.push(newTransitionCriteria);\n }\n }\n this.saveProject();\n }\n\n deleteTransitionCriteria(transition, transitionCriteriaIndex): void {\n if (confirm($localize`Are you sure you want to delete this requirement?`)) {\n const transitionCriterias = transition.criteria;\n if (transitionCriterias != null) {\n transitionCriterias.splice(transitionCriteriaIndex, 1);\n }\n this.projectService.saveProject();\n }\n }\n\n protected getTransitionCriteriaParamsByName(name): any[] {\n for (const singleTransitionCriteria of this.transitionCriterias) {\n if (singleTransitionCriteria.value === name) {\n return singleTransitionCriteria.params;\n }\n }\n return [];\n }\n\n protected transitionCriteriaNameChanged(transitionCriteria): void {\n let nodeId = null;\n let componentId = null;\n if (transitionCriteria.params != null) {\n nodeId = transitionCriteria.params.nodeId;\n componentId = transitionCriteria.params.componentId;\n }\n transitionCriteria.params = {};\n if (nodeId != null) {\n transitionCriteria.params.nodeId = nodeId;\n }\n if (componentId != null) {\n transitionCriteria.params.componentId = componentId;\n }\n this.saveProject();\n }\n\n protected transitionCriteriaNodeIdChanged(transitionCriteria): void {\n if (transitionCriteria != null && transitionCriteria.params != null) {\n let nodeId = transitionCriteria.params.nodeId;\n transitionCriteria.params = {};\n if (nodeId != null) {\n transitionCriteria.params.nodeId = nodeId;\n }\n }\n this.saveProject();\n }\n\n protected transitionCriteriaComponentIdChanged(transitionCriteria): void {\n if (transitionCriteria != null && transitionCriteria.params != null) {\n let nodeId = transitionCriteria.params.nodeId;\n let componentId = transitionCriteria.params.componentId;\n transitionCriteria.params = {};\n if (nodeId != null) {\n transitionCriteria.params.nodeId = nodeId;\n }\n if (componentId != null) {\n transitionCriteria.params.componentId = componentId;\n }\n }\n this.saveProject();\n }\n\n protected transitionToNodeIdChanged(): void {\n this.projectService.calculateNodeNumbers();\n this.saveProject();\n }\n\n deleteTransition(transition: any): void {\n const stepTitle = this.projectService.getNodePositionAndTitle(transition.to);\n const answer = confirm($localize`Are you sure you want to delete this path to \"${stepTitle}\"?`);\n if (answer) {\n this.projectService.getNode(this.node.id).deleteTransition(transition);\n this.saveProject();\n }\n }\n\n protected saveProject(): any {\n return this.projectService.saveProject();\n }\n\n protected getChoices(nodeId: string, componentId: string): any[] {\n return this.projectService.getChoices(nodeId, componentId);\n }\n\n protected getChoiceTypeByNodeIdAndComponentId(nodeId, componentId) {\n let choiceType = null;\n let component = this.projectService.getComponent(nodeId, componentId) as MultipleChoiceContent;\n if (component != null && component.choiceType != null) {\n choiceType = component.choiceType;\n }\n return choiceType;\n }\n\n protected getNodeTitle(nodeId: string): string {\n return this.projectService.getNodeTitle(nodeId);\n }\n\n protected getNodePositionById(nodeId) {\n return this.projectService.getNodePositionById(nodeId);\n }\n\n protected isGroupNode(nodeId) {\n return this.projectService.isGroupNode(nodeId);\n }\n\n protected getComponents(nodeId: string): any[] {\n return this.projectService.getComponents(nodeId);\n }\n\n protected scoresChanged(value: any, params: any): void {\n params.scores = value.split(',');\n this.saveProject();\n }\n\n protected scoreIdChanged(transitionCriteria: any): void {\n if (transitionCriteria.params.scoreId === '') {\n delete transitionCriteria.params.scoreId;\n }\n this.saveProject();\n }\n}\n", + "styleUrl": "node-advanced-path-authoring.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 73, + "jsdoctags": [ + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "
    \n Paths\n \n add\n \n
    \n@if (node.transitionLogic == null || node.transitionLogic.transitions === 0) {\n
    There are no paths out of this step
    \n}\n@for (\n transition of node.transitionLogic.transitions;\n track transition;\n let transitionIndex = $index\n) {\n
    \n
    \n Path {{ transitionIndex + 1 }}\n \n delete\n \n
    \n
    \n \n Which step this path leads to\n \n @for (nodeId of nodeIds; track nodeId) {\n \n \n {{ getNodePositionById(nodeId) }}: {{ getNodeTitle(nodeId) }} ({{\n nodeId\n }})\n \n \n }\n \n \n
    \n
    \n
    \n Requirements\n \n add\n \n
    \n @if (transition.criteria == null || transition.criteria.length === 0) {\n
    There are no requirements for this transition
    \n }\n @for (\n transitionCriteria of transition.criteria;\n track transitionCriteria;\n let criteriaIndex = $index\n ) {\n
    \n
    \n \n The student needs to\n \n @for (\n availableTransitionCriteriaName of transitionCriterias;\n track availableTransitionCriteriaName\n ) {\n \n \n {{ availableTransitionCriteriaName.text }}\n \n \n }\n \n \n
    \n
    \n \n delete\n \n
    \n
    \n @for (param of getTransitionCriteriaParamsByName(transitionCriteria.name); track param) {\n
    \n @if (param.value === 'nodeId') {\n \n {{ param.text }}\n \n @for (nodeId of nodeIds; track nodeId) {\n \n \n {{ getNodePositionById(nodeId) }}: {{ getNodeTitle(nodeId) }} ({{\n nodeId\n }})\n \n \n }\n \n \n }\n @if (param.value === 'componentId') {\n \n {{ param.text }}\n \n @for (\n component of getComponents(transitionCriteria.params.nodeId);\n track component;\n let componentIndex = $index\n ) {\n \n \n {{ componentIndex + 1 }}. {{ component.type }} ({{\n component.id\n }})\n \n \n }\n \n \n }\n @if (param.value === 'scores') {\n \n {{ param.text }}\n \n \n }\n @if (param.value === 'scoreId') {\n \n {{ param.text }}\n \n \n }\n @if (\n param.value === 'choiceIds' &&\n getChoiceTypeByNodeIdAndComponentId(\n transitionCriteria.params.nodeId,\n transitionCriteria.params.componentId\n ) === 'radio'\n ) {\n \n The student needs to choose this choice\n \n @for (\n choice of getChoices(\n transitionCriteria.params.nodeId,\n transitionCriteria.params.componentId\n );\n track choice\n ) {\n \n {{ choice.text }}\n \n }\n \n \n }\n @if (\n param.value === 'choiceIds' &&\n getChoiceTypeByNodeIdAndComponentId(\n transitionCriteria.params.nodeId,\n transitionCriteria.params.componentId\n ) === 'checkbox'\n ) {\n \n The student needs to choose these choices\n \n @for (\n choice of getChoices(\n transitionCriteria.params.nodeId,\n transitionCriteria.params.componentId\n );\n track choice\n ) {\n \n {{ choice.text }}\n \n }\n \n \n }\n @if (param.value === 'tag') {\n \n Tag\n \n \n }\n
    \n }\n
    \n }\n
    \n
    \n}\n@if (node.transitionLogic.transitions.length > 1) {\n
    \n \n How to choose among available paths\n \n @for (\n howToChooseAmongAvailablePathsOption of howToChooseAmongAvailablePathsOptions;\n track howToChooseAmongAvailablePathsOption\n ) {\n \n \n {{ howToChooseAmongAvailablePathsOption.text }}\n \n \n }\n \n \n \n When to choose path\n \n @for (whenToChoosePathOption of whenToChoosePathOptions; track whenToChoosePathOption) {\n \n \n {{ whenToChoosePathOption.text }}\n \n \n }\n \n \n \n Can change path\n \n @for (canChangePathOption of canChangePathOptions; track canChangePathOption) {\n \n \n {{ canChangePathOption.text }}\n \n \n }\n \n \n
    \n \n Max paths visitable\n \n \n
    \n
    \n}\n" + }, + { + "name": "NodeAuthoringComponent", + "id": "component-NodeAuthoringComponent-9d5bb738a96072f6557fb521a8663d3763ed2914f700900f180838d44be6a2de6bd78d7f648dc33d26dd9f9f2ee7c6fa32faefa51917c4a9fa66ecdc6daf8f4f", + "file": "src/assets/wise5/authoringTool/node/node-authoring/node-authoring.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./node-authoring.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 59, + "type": "string", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "components", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "ComponentContent[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 54 + }, + { + "name": "editingComponentId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 55, + "modifierKind": [ + 124 + ] + }, + { + "name": "isGroupNode", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 56, + "modifierKind": [ + 124 + ] + }, + { + "name": "node", + "deprecated": false, + "deprecationMessage": "", + "type": "Node", + "indexKey": "", + "optional": false, + "description": "", + "line": 57, + "modifierKind": [ + 124 + ] + }, + { + "name": "nodeJson", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 58, + "modifierKind": [ + 123 + ] + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 60, + "modifierKind": [ + 123 + ] + } + ], + "methodsClass": [ + { + "name": "authoringViewNodeChanged", + "args": [ + { + "name": "parseProject", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 151, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nThe node has changed in the authoring view\nsignificant changes such as branch paths\n", + "description": "

    The node has changed in the authoring view\nsignificant changes such as branch paths

    \n", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": { + "pos": 5811, + "end": 5823, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "parseProject" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "pos": 5805, + "end": 5810, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    whether to parse the whole project to recalculate\nsignificant changes such as branch paths

    \n" + } + ] + }, + { + "name": "checkIfNeedToShowNodeSaveOrNodeSubmitButtons", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 180, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "deleteComponent", + "args": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "component", + "type": "ComponentContent", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 158, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "component", + "type": "ComponentContent", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "deleteComponentsOnServer", + "args": [ + { + "name": "components", + "type": "ComponentContent[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 173, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "components", + "type": "ComponentContent[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "dropComponent", + "args": [ + { + "name": "event", + "type": "CdkDragDrop", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 236, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "event", + "type": "CdkDragDrop", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "editComponent", + "args": [ + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 252, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getComponentTypeLabel", + "args": [ + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 224, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "hasComponentsWithWork", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 193, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "hideAllComponentSaveButtons", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 137, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "highlightComponents", + "args": [ + { + "name": "components", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 211, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nTemporarily highlight the specified components\n", + "description": "

    Temporarily highlight the specified components

    \n", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": { + "pos": 7751, + "end": 7761, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "components" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]", + "tagName": { + "pos": 7745, + "end": 7750, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    an array of components to highlight

    \n" + } + ] + }, + { + "name": "isElementInViewport", + "args": [ + { + "name": "element", + "type": "HTMLElement", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 199, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "element", + "type": "HTMLElement", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "moveComponent", + "args": [ + { + "name": "previousIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "scroll", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 240, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "previousIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "scroll", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 94, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 71, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "setShowSaveButtonForAllComponents", + "args": [ + { + "name": "node", + "type": "Node", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "showSaveButton", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 228, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "node", + "type": "Node", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "showSaveButton", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setup", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 79, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "subscribeToCurrentNodeChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 127, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "subscribeToNodeChanges", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 119, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "subscribeToShowSubmitButtonValueChanges", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 98, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "AddComponentComponent", + "type": "component" + }, + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "ComponentAuthoringComponent", + "type": "component" + }, + { + "name": "CopyComponentButtonComponent", + "type": "component" + }, + { + "name": "DragDropModule", + "type": "module" + }, + { + "name": "EditComponentAdvancedButtonComponent", + "type": "component" + }, + { + "name": "EditNodeTitleComponent", + "type": "component" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatCardModule", + "type": "module" + }, + { + "name": "MatCheckboxModule", + "type": "module" + }, + { + "name": "MatDividerModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatInputModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + }, + { + "name": "RouterModule", + "type": "module" + }, + { + "name": "TeacherNodeIconComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input, OnInit } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { TeacherDataService } from '../../../services/teacherDataService';\nimport { TeacherProjectService } from '../../../services/teacherProjectService';\nimport { ComponentTypeService } from '../../../services/componentTypeService';\nimport { ComponentServiceLookupService } from '../../../services/componentServiceLookupService';\nimport { Node } from '../../../common/Node';\nimport { ComponentContent } from '../../../common/ComponentContent';\nimport { scrollToTopOfPage, temporarilyHighlightElement } from '../../../common/dom/dom';\nimport { CdkDragDrop, DragDropModule, moveItemInArray } from '@angular/cdk/drag-drop';\nimport { TeacherNodeService } from '../../../services/teacherNodeService';\nimport { DeleteTranslationsService } from '../../../services/deleteTranslationsService';\nimport { AddComponentComponent } from '../add-component/add-component.component';\nimport { CopyComponentButtonComponent } from '../copy-component-button/copy-component-button.component';\nimport { EditNodeTitleComponent } from '../edit-node-title/edit-node-title.component';\nimport { FormsModule } from '@angular/forms';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { TeacherNodeIconComponent } from '../../teacher-node-icon/teacher-node-icon.component';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport { CommonModule } from '@angular/common';\nimport { ComponentAuthoringComponent } from '../../components/component-authoring.component';\nimport { RouterModule } from '@angular/router';\nimport { EditComponentAdvancedButtonComponent } from '../../components/edit-component-advanced-button/edit-component-advanced-button.component';\n\n@Component({\n imports: [\n AddComponentComponent,\n CommonModule,\n ComponentAuthoringComponent,\n CopyComponentButtonComponent,\n DragDropModule,\n EditComponentAdvancedButtonComponent,\n EditNodeTitleComponent,\n FormsModule,\n MatButtonModule,\n MatCardModule,\n MatCheckboxModule,\n MatDividerModule,\n MatIconModule,\n MatInputModule,\n MatTooltipModule,\n RouterModule,\n TeacherNodeIconComponent\n ],\n styleUrl: './node-authoring.component.scss',\n templateUrl: './node-authoring.component.html'\n})\nexport class NodeAuthoringComponent implements OnInit {\n components: ComponentContent[] = [];\n protected editingComponentId: string;\n protected isGroupNode: boolean;\n protected node: Node;\n private nodeJson: any;\n @Input() nodeId?: string;\n private subscriptions: Subscription = new Subscription();\n\n constructor(\n private componentServiceLookupService: ComponentServiceLookupService,\n private componentTypeService: ComponentTypeService,\n private nodeService: TeacherNodeService,\n private projectService: TeacherProjectService,\n private dataService: TeacherDataService,\n private deleteTranslationsService: DeleteTranslationsService\n ) {}\n\n ngOnInit(): void {\n this.setup(this.nodeId);\n this.dataService.setCurrentNodeByNodeId(this.nodeId);\n this.subscribeToShowSubmitButtonValueChanges();\n this.subscribeToNodeChanges();\n this.subscribeToCurrentNodeChanged();\n }\n\n private setup(nodeId: string): void {\n this.nodeId = nodeId;\n this.node = this.projectService.getNode(this.nodeId);\n this.isGroupNode = this.projectService.isGroupNode(this.nodeId);\n this.nodeJson = this.projectService.getNodeById(this.nodeId);\n this.components = this.projectService.getComponents(this.nodeId);\n this.editingComponentId = null;\n\n if (history.state.newComponents && history.state.newComponents.length > 0) {\n this.highlightComponents(history.state.newComponents);\n } else {\n scrollToTopOfPage();\n }\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n private subscribeToShowSubmitButtonValueChanges(): void {\n this.subscriptions.add(\n this.nodeService.componentShowSubmitButtonValueChanged$.subscribe(({ showSubmitButton }) => {\n if (showSubmitButton) {\n this.nodeJson.showSaveButton = false;\n this.nodeJson.showSubmitButton = false;\n this.setShowSaveButtonForAllComponents(this.nodeJson, true);\n } else {\n if (this.projectService.doesAnyComponentInNodeShowSubmitButton(this.nodeJson.id)) {\n this.setShowSaveButtonForAllComponents(this.nodeJson, true);\n } else {\n this.nodeJson.showSaveButton = true;\n this.nodeJson.showSubmitButton = false;\n this.setShowSaveButtonForAllComponents(this.nodeJson, false);\n }\n }\n this.authoringViewNodeChanged();\n })\n );\n }\n\n private subscribeToNodeChanges(): void {\n this.subscriptions.add(\n this.projectService.nodeChanged$.subscribe((doParseProject) => {\n this.authoringViewNodeChanged(doParseProject);\n })\n );\n }\n\n private subscribeToCurrentNodeChanged(): void {\n this.subscriptions.add(\n this.dataService.currentNodeChanged$.subscribe(({ currentNode }) => {\n if (currentNode != null) {\n this.setup(currentNode.id);\n }\n })\n );\n }\n\n protected hideAllComponentSaveButtons(): void {\n for (const component of this.components) {\n const service = this.componentServiceLookupService.getService(component.type);\n if (service.componentUsesSaveButton()) {\n component.showSaveButton = false;\n }\n }\n }\n\n /**\n * The node has changed in the authoring view\n * @param parseProject whether to parse the whole project to recalculate\n * significant changes such as branch paths\n */\n protected authoringViewNodeChanged(parseProject = false): any {\n if (parseProject) {\n this.projectService.parseProject();\n }\n return this.projectService.saveProject();\n }\n\n protected deleteComponent(\n event: any,\n componentNumber: number,\n component: ComponentContent\n ): void {\n event.stopPropagation();\n if (\n confirm(\n $localize`Are you sure you want to delete this component?\\n\\n${componentNumber}. ${component.type}`\n )\n ) {\n this.deleteComponentsOnServer([this.node.deleteComponent(component.id)]);\n }\n }\n\n private deleteComponentsOnServer(components: ComponentContent[]): void {\n this.checkIfNeedToShowNodeSaveOrNodeSubmitButtons();\n this.projectService.saveProject().then(() => {\n this.deleteTranslationsService.tryDeleteComponents(components);\n });\n }\n\n private checkIfNeedToShowNodeSaveOrNodeSubmitButtons(): void {\n if (!this.projectService.doesAnyComponentInNodeShowSubmitButton(this.nodeId)) {\n if (this.hasComponentsWithWork()) {\n this.nodeJson.showSaveButton = true;\n this.nodeJson.showSubmitButton = false;\n this.hideAllComponentSaveButtons();\n } else {\n this.nodeJson.showSaveButton = false;\n this.nodeJson.showSubmitButton = false;\n }\n }\n }\n\n private hasComponentsWithWork(): boolean {\n return this.node.components.some((component) =>\n this.componentServiceLookupService.getService(component.type).componentHasWork(component)\n );\n }\n\n private isElementInViewport(element: HTMLElement): boolean {\n const rect = element.getBoundingClientRect();\n return (\n rect.top >= -100 &&\n rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) + 100\n );\n }\n\n /**\n * Temporarily highlight the specified components\n * @param components an array of components to highlight\n */\n protected highlightComponents(components: any = []): void {\n // wait for the UI to update and then highlight the first component\n setTimeout(() => {\n if (components.length > 0) {\n const element = document.getElementById(components[0].id);\n if (!this.isElementInViewport(element)) {\n element.scrollIntoView();\n }\n components.forEach((component) => temporarilyHighlightElement(component.id));\n }\n }, 100);\n }\n\n protected getComponentTypeLabel(componentType: string): string {\n return this.componentTypeService.getComponentTypeLabel(componentType);\n }\n\n private setShowSaveButtonForAllComponents(node: Node, showSaveButton: boolean): void {\n node.components\n .filter((component) =>\n this.componentServiceLookupService.getService(component.type).componentUsesSaveButton()\n )\n .forEach((component) => (component.showSaveButton = showSaveButton));\n }\n\n protected dropComponent(event: CdkDragDrop): void {\n this.moveComponent(event.previousIndex, event.currentIndex);\n }\n\n protected moveComponent(\n previousIndex: number,\n currentIndex: number,\n scroll: boolean = false\n ): void {\n moveItemInArray(this.components, previousIndex, currentIndex);\n if (scroll) {\n this.highlightComponents([this.components[currentIndex]]);\n }\n this.projectService.saveProject();\n }\n\n protected editComponent(componentId: string): void {\n this.editingComponentId = componentId;\n }\n}\n", + "styleUrl": "./node-authoring.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "componentServiceLookupService", + "type": "ComponentServiceLookupService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentTypeService", + "type": "ComponentTypeService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeService", + "type": "TeacherNodeService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "deleteTranslationsService", + "type": "DeleteTranslationsService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 60, + "jsdoctags": [ + { + "name": "componentServiceLookupService", + "type": "ComponentServiceLookupService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentTypeService", + "type": "ComponentTypeService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeService", + "type": "TeacherNodeService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "deleteTranslationsService", + "type": "DeleteTranslationsService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "
    \n \n \n \n build\n \n
    \n@if (components.length === 0 && !isGroupNode) {\n

    This step does not have any components.

    \n \n}\n\n @if (components.length > 0) {\n \n }\n @for (component of components; track component.id; let i = $index; let last = $last) {\n
    \n
    \n \n \n
    \n @if (components.length > 1) {\n drag_indicator\n }\n {{ i + 1 }}. {{ getComponentTypeLabel(component.type) }}\n
    \n \n
    \n @if (component.id === editingComponentId) {\n \n }\n \n \n delete\n \n
    \n
    \n \n
    \n \n
    \n \n
    \n @if (i > 0) {\n \n arrow_upward\n \n }\n @if (!last) {\n \n arrow_downward\n \n }\n
    \n \n {{ i + 1 }}. {{ getComponentTypeLabel(component.type) }}\n \n
    \n \n \n }\n\n" + }, + { + "name": "NodeAuthoringParentComponent", + "id": "component-NodeAuthoringParentComponent-6b7c5dcd10ef8a0804e0bc9446cf8a35fb7ca22b8f895c749f4c35799e923c46d18e8a1b26aee2efa90c11d7008ee4c7a141bffc0b5be1c63e46cd3b26d448ef", + "file": "src/assets/wise5/authoringTool/node/node-authoring-parent/node-authoring-parent.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "template": "", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [], + "methodsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "RouterModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { RouterModule } from '@angular/router';\n\n@Component({\n imports: [RouterModule],\n template: ''\n})\nexport class NodeAuthoringParentComponent {}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [] + }, + { + "name": "NodeClassResponsesComponent", + "id": "component-NodeClassResponsesComponent-614c151149561e8d6314257b7e5dadc939f062dd395aad5b260b24dd2531dce1b95ec4e6b269a1367c4da1ef4a90408cbd198f3eaa5b878684571e38232b9953", + "file": "src/assets/wise5/classroomMonitor/classroomMonitorComponents/nodeGrading/node-class-responses/node-class-responses.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "node-class-responses", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./node-class-responses.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "components", + "deprecated": false, + "deprecationMessage": "", + "line": 36, + "type": "ComponentContent[]", + "decorators": [] + }, + { + "name": "node", + "deprecated": false, + "deprecationMessage": "", + "line": 38, + "type": "Node", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "maxScore", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 37, + "modifierKind": [ + 124 + ] + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 39, + "modifierKind": [ + 123 + ] + }, + { + "name": "allWorkgroupsExpanded", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractClassResponsesComponent" + } + }, + { + "name": "component", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractClassResponsesComponent" + } + }, + { + "name": "node", + "deprecated": false, + "deprecationMessage": "", + "type": "Node", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractClassResponsesComponent" + } + }, + { + "name": "sortBy", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractClassResponsesComponent" + } + }, + { + "name": "sortedWorkgroups", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractClassResponsesComponent" + } + }, + { + "name": "workgroupExpanded", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "Record", + "indexKey": "", + "optional": false, + "description": "", + "line": 20, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractClassResponsesComponent" + } + }, + { + "name": "workgroupInView", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "Record", + "indexKey": "", + "optional": false, + "description": "", + "line": 21, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "AbstractClassResponsesComponent" + } + }, + { + "name": "workgroups", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractClassResponsesComponent" + } + }, + { + "name": "workgroupsById", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "Record", + "indexKey": "", + "optional": false, + "description": "", + "line": 22, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractClassResponsesComponent" + } + } + ], + "methodsClass": [ + { + "name": "getComponentStates", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 120, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractClassResponsesComponent" + } + }, + { + "name": "getWorkgroupScore", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 90, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractClassResponsesComponent" + } + }, + { + "name": "hasWork", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 94, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractClassResponsesComponent" + } + }, + { + "name": "isCompleted", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeStatus", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 98, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeStatus", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractClassResponsesComponent" + } + }, + { + "name": "isComponentCompleted", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "component", + "type": "ComponentContent", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 102, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "component", + "type": "ComponentContent", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnChanges", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 64, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 71, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 60, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "setMaxScore", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 75, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "setWorkgroupsById", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractClassResponsesComponent" + } + }, + { + "name": "collapseAll", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 173, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractClassResponsesComponent" + } + }, + { + "name": "createCompletionStatus", + "args": [ + { + "name": "nodeStatus", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "CompletionStatus", + "typeParameters": [], + "line": 81, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeStatus", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractClassResponsesComponent" + } + }, + { + "name": "createSortFunction", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 132, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "AbstractClassResponsesComponent" + } + }, + { + "name": "expandAll", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 178, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractClassResponsesComponent" + } + }, + { + "name": "getCompletionStatus", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "CompletionStatus", + "typeParameters": [], + "line": 74, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractClassResponsesComponent" + } + }, + { + "name": "getLatestAnnotationTimeByWorkgroupId", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 111, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractClassResponsesComponent" + } + }, + { + "name": "getLatestWorkTimeByWorkgroupId", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 101, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractClassResponsesComponent" + } + }, + { + "name": "isAnnotationForWorkgroup", + "args": [ + { + "name": "annotation", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 120, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "annotation", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractClassResponsesComponent" + } + }, + { + "name": "isWorkgroupShown", + "args": [ + { + "name": "workgroup", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 169, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "workgroup", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractClassResponsesComponent" + } + }, + { + "name": "onIntersection", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "intersectionObserverEntries", + "type": "IntersectionObserverEntry[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 150, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "intersectionObserverEntries", + "type": "IntersectionObserverEntry[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractClassResponsesComponent" + } + }, + { + "name": "onUpdateExpand", + "args": [ + { + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 162, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractClassResponsesComponent" + } + }, + { + "name": "retrieveStudentData", + "args": [ + { + "name": "node", + "type": "Node", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 33, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "node", + "type": "Node", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractClassResponsesComponent" + } + }, + { + "name": "sortWorkgroups", + "args": [ + { + "name": "sortBy", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 127, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "sortBy", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractClassResponsesComponent" + } + }, + { + "name": "updateWorkgroup", + "args": [ + { + "name": "workgroup", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 57, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "workgroup", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractClassResponsesComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "IntersectionObserverModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatListModule", + "type": "module" + }, + { + "name": "NodeWorkgroupItemComponent", + "type": "component" + }, + { + "name": "WorkgroupSelectAutocompleteComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input } from '@angular/core';\nimport { MatListModule } from '@angular/material/list';\nimport { WorkgroupSelectAutocompleteComponent } from '../../../../../../app/classroom-monitor/workgroup-select/workgroup-select-autocomplete/workgroup-select-autocomplete.component';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { IntersectionObserverModule } from '@ng-web-apis/intersection-observer';\nimport { CommonModule } from '@angular/common';\nimport { AbstractClassResponsesComponent } from '../../AbstractClassResponsesComponent';\nimport { Node } from '../../../../common/Node';\nimport { ComponentContent } from '../../../../common/ComponentContent';\nimport { NodeWorkgroupItemComponent } from '../node-workgroup-item/node-workgroup-item.component';\nimport { AnnotationService } from '../../../../services/annotationService';\nimport { ClassroomStatusService } from '../../../../services/classroomStatusService';\nimport { ComponentServiceLookupService } from '../../../../services/componentServiceLookupService';\nimport { ConfigService } from '../../../../services/configService';\nimport { TeacherDataService } from '../../../../services/teacherDataService';\nimport { NotificationService } from '../../../../services/notificationService';\nimport { TeacherProjectService } from '../../../../services/teacherProjectService';\nimport { Subscription } from 'rxjs';\n\n@Component({\n imports: [\n CommonModule,\n IntersectionObserverModule,\n MatButtonModule,\n MatIconModule,\n MatListModule,\n NodeWorkgroupItemComponent,\n WorkgroupSelectAutocompleteComponent\n ],\n selector: 'node-class-responses',\n styleUrl: './node-class-responses.component.scss',\n templateUrl: './node-class-responses.component.html'\n})\nexport class NodeClassResponsesComponent extends AbstractClassResponsesComponent {\n @Input() components: ComponentContent[];\n protected maxScore: number;\n @Input() node: Node;\n private subscriptions: Subscription = new Subscription();\n\n constructor(\n protected annotationService: AnnotationService,\n protected classroomStatusService: ClassroomStatusService,\n private componentServiceLookupService: ComponentServiceLookupService,\n protected configService: ConfigService,\n protected dataService: TeacherDataService,\n protected notificationService: NotificationService,\n protected projectService: TeacherProjectService\n ) {\n super(\n annotationService,\n classroomStatusService,\n configService,\n dataService,\n notificationService,\n projectService\n );\n }\n\n ngOnInit(): void {\n this.subscriptions.add(this.projectService.projectSaved$.subscribe(() => this.setMaxScore()));\n }\n\n ngOnChanges(): void {\n if (this.node && this.components) {\n this.retrieveStudentData(this.node);\n this.setMaxScore();\n }\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n private setMaxScore(): void {\n this.maxScore = this.components\n .map(\n (component) => this.projectService.getMaxScoreForComponent(this.node.id, component.id) ?? 0\n )\n .reduce((accumulator, currentValue) => accumulator + currentValue, 0);\n }\n\n protected setWorkgroupsById(): void {\n this.workgroups.forEach((workgroup) => {\n this.workgroupsById[workgroup.workgroupId] = workgroup;\n this.updateWorkgroup(workgroup);\n });\n }\n\n protected getWorkgroupScore(workgroupId: number): number {\n return this.annotationService.getTotalNodeScore(workgroupId, this.node, this.components);\n }\n\n protected hasWork(): boolean {\n return this.projectService.nodeHasWork(this.node.id);\n }\n\n protected isCompleted(workgroupId: number, nodeStatus: any): boolean {\n return this.components.every((component) => this.isComponentCompleted(workgroupId, component));\n }\n\n private isComponentCompleted(workgroupId: number, component: ComponentContent): boolean {\n const service = this.componentServiceLookupService.getService(component.type);\n const workgroupComponentStates = this.dataService.getComponentStatesByWorkgroupIdAndComponentId(\n workgroupId,\n component.id\n );\n return ['OpenResponse', 'Discussion'].includes(component.type)\n ? service.isCompletedV2(this.node, component, {\n componentStates: workgroupComponentStates\n })\n : service.isCompleted(\n component,\n workgroupComponentStates,\n this.dataService.getEventsByNodeId(this.node.id),\n this.node\n );\n }\n\n protected getComponentStates(): any[] {\n return this.dataService\n .getComponentStatesByNodeId(this.node.id)\n .filter((componentState) =>\n this.components.some((component) => component.id === componentState.componentId)\n );\n }\n}\n", + "styleUrl": "./node-class-responses.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "classroomStatusService", + "type": "ClassroomStatusService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentServiceLookupService", + "type": "ComponentServiceLookupService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "notificationService", + "type": "NotificationService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 39, + "jsdoctags": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "classroomStatusService", + "type": "ClassroomStatusService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentServiceLookupService", + "type": "ComponentServiceLookupService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "notificationService", + "type": "NotificationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "AbstractClassResponsesComponent" + ], + "templateData": "\n \n
    \n \n \n \n + Expand all\n \n \n - Collapse all\n \n
    \n
    \n \n
    \n \n Team\n @if (sortBy === 'workgroupId' || sortBy === '-workgroupId') {\n \n arrow_drop_up\n \n }\n \n \n Status\n @if (sortBy === 'completionStatus' || sortBy === '-completionStatus') {\n \n arrow_drop_up\n \n }\n \n \n Score\n @if (sortBy === 'score' || sortBy === '-score') {\n \n arrow_drop_up\n \n }\n \n
    \n
    \n
    \n @for (workgroup of sortedWorkgroups; track workgroup.workgroupId) {\n @if (isWorkgroupShown(workgroup)) {\n \n }\n }\n
    \n
    \n" + }, + { + "name": "NodeComponent", + "id": "component-NodeComponent-0a8d4746a2b5d85b3339303242d577ad6094a584f8f8e76d22231a893cebcee0153c1744ede2ad7db7b16ef3265bdc30513d1930b8671279ff72bf17c541f84d", + "file": "src/assets/wise5/vle/node/node.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "node", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./node.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "node", + "deprecated": false, + "deprecationMessage": "", + "line": 51, + "type": "Node", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "autoSaveInterval", + "defaultValue": "60000", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 39, + "modifierKind": [ + 123 + ] + }, + { + "name": "autoSaveIntervalId", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 40, + "modifierKind": [ + 123 + ] + }, + { + "name": "components", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 41, + "modifierKind": [ + 124 + ] + }, + { + "name": "componentToVisible", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "object", + "indexKey": "", + "optional": false, + "description": "", + "line": 42, + "modifierKind": [ + 124 + ] + }, + { + "name": "dirtyComponentIds", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 43, + "modifierKind": [ + 124 + ] + }, + { + "name": "dirtySubmitComponentIds", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 44, + "modifierKind": [ + 124 + ] + }, + { + "name": "disabled", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 45, + "modifierKind": [ + 124 + ] + }, + { + "name": "isBranchNode", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 46, + "modifierKind": [ + 124 + ] + }, + { + "name": "isLastNode", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 47, + "modifierKind": [ + 124 + ] + }, + { + "name": "isSurvey", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 48, + "modifierKind": [ + 124 + ] + }, + { + "name": "latestComponentState", + "deprecated": false, + "deprecationMessage": "", + "type": "ComponentState", + "indexKey": "", + "optional": false, + "description": "", + "line": 49, + "modifierKind": [ + 124 + ] + }, + { + "name": "nextNodeId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 50, + "modifierKind": [ + 124 + ] + }, + { + "name": "nodeStatus", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 52, + "modifierKind": [ + 124 + ] + }, + { + "name": "showRubric", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 53, + "modifierKind": [ + 124 + ] + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 54, + "modifierKind": [ + 123 + ] + }, + { + "name": "workComponents", + "defaultValue": "[\n 'Animation',\n 'AudioOscillator',\n 'ConceptMap',\n 'DialogGuidance',\n 'Discussion',\n 'Draw',\n 'Embedded',\n 'Graph',\n 'Label',\n 'Match',\n 'MultipleChoice',\n 'OpenResponse',\n 'PeerChat',\n 'Summary',\n 'Table'\n ]", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 55, + "modifierKind": [ + 123 + ] + }, + { + "name": "workgroupId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 72, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "clearLatestComponentState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 235, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "createAndSaveComponentData", + "args": [ + { + "name": "isAutoSave", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + }, + { + "name": "isSubmit", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 261, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nObtain the componentStates and annotations from the children and save them\nto the server\nthat triggered the save\nthat needs saving\n", + "description": "

    Obtain the componentStates and annotations from the children and save them\nto the server\nthat triggered the save\nthat needs saving

    \n", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": { + "pos": 8705, + "end": 8715, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "isAutoSave" + }, + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 8699, + "end": 8704, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    whether the component states were auto saved

    \n" + }, + { + "name": { + "pos": 8773, + "end": 8784, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentId" + }, + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "pos": 8767, + "end": 8772, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    (optional) the component id of the component\nthat triggered the save

    \n" + }, + { + "name": { + "pos": 8871, + "end": 8879, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "isSubmit" + }, + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "pos": 8865, + "end": 8870, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    (optional) whether this is a submit or not

    \n" + }, + { + "tagName": { + "pos": 8929, + "end": 8936, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

    a promise that will save all the component states for the step\nthat needs saving

    \n" + } + ] + }, + { + "name": "createComponentStates", + "args": [ + { + "name": "isAutoSave", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 329, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nLoop through this node's components and get/create component states\n", + "description": "

    Loop through this node's components and get/create component states

    \n", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": { + "pos": 11463, + "end": 11473, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "isAutoSave" + }, + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "pos": 11457, + "end": 11462, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    whether the component states were auto saved

    \n" + }, + { + "name": { + "pos": 11531, + "end": 11542, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 11525, + "end": 11530, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    (optional) the component id of the component that triggered the save

    \n" + }, + { + "name": { + "pos": 11624, + "end": 11632, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "isSubmit" + }, + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "pos": 11618, + "end": 11623, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    (optional) whether this is a submission or not

    \n" + }, + { + "tagName": { + "pos": 11686, + "end": 11693, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

    an array of promises that will return component states

    \n" + } + ] + }, + { + "name": "createComponentStatesResponseHandler", + "args": [ + { + "name": "isAutoSave", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + }, + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + } + ], + "optional": false, + "returnType": "(componentStates: any) => any", + "typeParameters": [], + "line": 271, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "isAutoSave", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + }, + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getAnnotationsFromComponentStates", + "args": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 310, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getComponents", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 226, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "getComponentStateByComponentId", + "args": [ + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 456, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getComponentStatePromise", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isAutoSave", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + }, + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 369, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "isAutoSave", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + }, + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getComponentStatePromises", + "args": [ + { + "name": "components", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isAutoSave", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + }, + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 354, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "components", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "isAutoSave", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + }, + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getComponentsToSave", + "args": [ + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 341, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "initializeNode", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 174, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "injectAdditionalComponentStateFields", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isAutoSave", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + }, + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 412, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "isAutoSave", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + }, + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnChanges", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 85, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 212, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 90, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "notifyConnectedParts", + "args": [ + { + "name": "changedComponentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 429, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nNotify any connected components that the student data has changed\n", + "description": "

    Notify any connected components that the student data has changed

    \n", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "changedComponentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": { + "pos": 14940, + "end": 14954, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 14934, + "end": 14939, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    the new component state

    \n" + } + ] + }, + { + "name": "registerExitListener", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 463, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "resolveComponentStatePromise", + "args": [ + { + "name": "resolve", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentStatePromise", + "type": "Promise", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isAutoSave", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + }, + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 396, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "resolve", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentStatePromise", + "type": "Promise", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "isAutoSave", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + }, + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "save", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 217, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "saveComponentState", + "args": [ + { + "name": "$event", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 471, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "$event", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setIsLastNode", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 448, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "startAutoSaveInterval", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 239, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "stopAutoSaveInterval", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 247, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "submit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 221, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "updateComponentVisibility", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 205, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "ComponentComponent", + "type": "component" + }, + { + "name": "ComponentStateInfoComponent", + "type": "component" + }, + { + "name": "HelpIconComponent", + "type": "component" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatDividerModule", + "type": "module" + }, + { + "name": "SubmitSurveyComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input, OnInit } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { filter, take } from 'rxjs/operators';\nimport { ComponentState } from '../../../../app/domain/componentState';\nimport { Node } from '../../common/Node';\nimport { ComponentService } from '../../components/componentService';\nimport { ComponentStateWrapper } from '../../components/ComponentStateWrapper';\nimport { ConfigService } from '../../services/configService';\nimport { ConstraintService } from '../../services/constraintService';\nimport { NodeStatusService } from '../../services/nodeStatusService';\nimport { SessionService } from '../../services/sessionService';\nimport { StudentDataService } from '../../services/studentDataService';\nimport { VLEProjectService } from '../vleProjectService';\nimport { copy } from '../../common/object/object';\nimport { CommonModule } from '@angular/common';\nimport { ComponentComponent } from '../../components/component/component.component';\nimport { MatButtonModule } from '@angular/material/button';\nimport { ComponentStateInfoComponent } from '../../common/component-state-info/component-state-info.component';\nimport { HelpIconComponent } from '../../themes/default/themeComponents/helpIcon/help-icon.component';\nimport { StudentNodeService } from '../../services/studentNodeService';\nimport { SubmitSurveyComponent } from '../submit-survey/submit-survey.component';\nimport { MatDividerModule } from '@angular/material/divider';\n\n@Component({\n imports: [\n CommonModule,\n ComponentComponent,\n ComponentStateInfoComponent,\n HelpIconComponent,\n MatButtonModule,\n MatDividerModule,\n SubmitSurveyComponent\n ],\n selector: 'node',\n styleUrl: './node.component.scss',\n templateUrl: './node.component.html'\n})\nexport class NodeComponent implements OnInit {\n private autoSaveInterval: number = 60000; // in milliseconds;\n private autoSaveIntervalId: any;\n protected components: any[];\n protected componentToVisible = {};\n protected dirtyComponentIds: any = [];\n protected dirtySubmitComponentIds: any = [];\n protected disabled: boolean;\n protected isBranchNode: boolean = false;\n protected isLastNode: boolean = false;\n protected isSurvey: boolean;\n protected latestComponentState: ComponentState;\n protected nextNodeId: string;\n @Input() node: Node;\n protected nodeStatus: any;\n protected showRubric: boolean;\n private subscriptions: Subscription = new Subscription();\n private workComponents: string[] = [\n 'Animation',\n 'AudioOscillator',\n 'ConceptMap',\n 'DialogGuidance',\n 'Discussion',\n 'Draw',\n 'Embedded',\n 'Graph',\n 'Label',\n 'Match',\n 'MultipleChoice',\n 'OpenResponse',\n 'PeerChat',\n 'Summary',\n 'Table'\n ];\n protected workgroupId: number;\n\n constructor(\n private componentService: ComponentService,\n private configService: ConfigService,\n private constraintService: ConstraintService,\n private nodeService: StudentNodeService,\n private nodeStatusService: NodeStatusService,\n private projectService: VLEProjectService,\n private sessionService: SessionService,\n private studentDataService: StudentDataService\n ) {}\n\n ngOnChanges(): void {\n // copy is needed to trigger change detection for current node.components array\n this.components = copy(this.getComponents());\n }\n\n ngOnInit(): void {\n this.workgroupId = this.configService.getWorkgroupId();\n this.disabled = !this.configService.isRunActive();\n this.setIsLastNode();\n this.isSurvey = this.configService.getConfigParam('isSurvey');\n\n this.initializeNode();\n this.startAutoSaveInterval();\n this.registerExitListener();\n\n this.subscriptions.add(\n this.studentDataService.componentSaveTriggered$.subscribe(({ nodeId, componentId }) => {\n if (nodeId == this.node.id && this.node.hasComponent(componentId)) {\n this.createAndSaveComponentData(false, componentId);\n }\n })\n );\n\n this.subscriptions.add(\n this.studentDataService.componentSubmitTriggered$.subscribe(({ nodeId, componentId }) => {\n if (nodeId == this.node.id && this.node.hasComponent(componentId)) {\n this.createAndSaveComponentData(false, componentId, true);\n }\n })\n );\n\n this.subscriptions.add(\n this.studentDataService.componentStudentData$.subscribe((componentStudentData: any) => {\n const componentId = componentStudentData.componentId;\n const componentState = componentStudentData.componentState;\n if (componentState.nodeId == null) {\n if (componentStudentData.nodeId != null) {\n componentState.nodeId = componentStudentData.nodeId;\n }\n }\n if (componentState.componentId == null) {\n if (componentStudentData.componentId != null) {\n componentState.componentId = componentStudentData.componentId;\n }\n }\n this.notifyConnectedParts(componentId, componentState);\n })\n );\n\n this.subscriptions.add(\n this.studentDataService.componentDirty$.subscribe(({ componentId, isDirty }) => {\n const index = this.dirtyComponentIds.indexOf(componentId);\n if (isDirty && index === -1) {\n this.dirtyComponentIds.push(componentId);\n } else if (!isDirty && index > -1) {\n this.dirtyComponentIds.splice(index, 1);\n }\n })\n );\n\n this.subscriptions.add(\n this.studentDataService.componentSubmitDirty$.subscribe(({ componentId, isDirty }) => {\n const index = this.dirtySubmitComponentIds.indexOf(componentId);\n if (isDirty && index === -1) {\n this.dirtySubmitComponentIds.push(componentId);\n } else if (!isDirty && index > -1) {\n this.dirtySubmitComponentIds.splice(index, 1);\n }\n })\n );\n\n this.subscriptions.add(\n this.studentDataService.currentNodeChanged$.subscribe(({ currentNode }) => {\n this.node = this.projectService.getNode(currentNode.id);\n if (this.node.isEvaluateTransitionLogicOn('exitNode')) {\n this.nodeService.evaluateTransitionLogic();\n }\n this.setIsLastNode();\n this.initializeNode();\n })\n );\n\n this.subscriptions.add(\n this.studentDataService.nodeStatusesChanged$.subscribe(() => {\n this.updateComponentVisibility();\n })\n );\n }\n\n private initializeNode(): void {\n this.clearLatestComponentState();\n this.components = this.getComponents();\n this.nodeStatus = this.nodeStatusService.getNodeStatusByNodeId(this.node.id);\n this.dirtyComponentIds = [];\n this.dirtySubmitComponentIds = [];\n this.updateComponentVisibility();\n\n if (this.node.isEvaluateTransitionLogicOn('enterNode')) {\n this.nodeService.evaluateTransitionLogic();\n }\n\n const latestComponentState =\n this.studentDataService.getLatestComponentStateByNodeIdAndComponentId(this.node.id);\n if (latestComponentState) {\n this.latestComponentState = latestComponentState;\n }\n\n if (this.configService.isPreview()) {\n this.showRubric = this.node.rubric != null && this.node.rubric != '';\n }\n\n const nodeContent = this.projectService.getNodeById(this.node.id);\n const script = nodeContent.script;\n if (script != null) {\n this.projectService.retrieveScript(script).then((script: string) => {\n new Function(script).call(this);\n });\n }\n }\n\n private updateComponentVisibility(): void {\n this.components.forEach((component) => {\n const constraintResult = this.constraintService.evaluate(component.constraints);\n this.componentToVisible[component.id] = constraintResult.isVisible;\n });\n }\n\n ngOnDestroy() {\n this.stopAutoSaveInterval();\n this.subscriptions.unsubscribe();\n }\n\n protected save(): void {\n this.createAndSaveComponentData(false);\n }\n\n protected submit(): void {\n this.nodeService.broadcastNodeSubmitClicked({ nodeId: this.node.id });\n this.createAndSaveComponentData(false, null, true);\n }\n\n private getComponents(): any[] {\n return this.node.components.map((component) => {\n if (this.disabled) {\n component.isDisabled = true;\n }\n return component;\n });\n }\n\n private clearLatestComponentState(): void {\n this.latestComponentState = null;\n }\n\n private startAutoSaveInterval(): void {\n this.autoSaveIntervalId = setInterval(() => {\n if (this.dirtyComponentIds.length) {\n this.createAndSaveComponentData(true);\n }\n }, this.autoSaveInterval);\n }\n\n private stopAutoSaveInterval(): void {\n clearInterval(this.autoSaveIntervalId);\n }\n\n /**\n * Obtain the componentStates and annotations from the children and save them\n * to the server\n * @param isAutoSave whether the component states were auto saved\n * @param componentId (optional) the component id of the component\n * that triggered the save\n * @param isSubmit (optional) whether this is a submit or not\n * @returns a promise that will save all the component states for the step\n * that needs saving\n */\n private createAndSaveComponentData(\n isAutoSave: boolean,\n componentId = null,\n isSubmit = null\n ): Promise {\n return this.createComponentStates(isAutoSave, componentId, isSubmit).then(\n this.createComponentStatesResponseHandler(isAutoSave, componentId, isSubmit)\n );\n }\n\n private createComponentStatesResponseHandler(\n isAutoSave: boolean,\n componentId: string = null,\n isSubmit: boolean = null\n ) {\n return (componentStates) => {\n const componentAnnotations = this.getAnnotationsFromComponentStates(componentStates);\n componentStates.forEach((componentState: any) => {\n this.injectAdditionalComponentStateFields(componentState, isAutoSave, isSubmit);\n this.notifyConnectedParts(componentId, componentState);\n });\n return this.studentDataService\n .saveToServer(componentStates, [], componentAnnotations)\n .then((savedStudentDataResponse) => {\n if (savedStudentDataResponse) {\n if (this.node.isEvaluateTransitionLogicOn('studentDataChanged')) {\n this.nodeService.evaluateTransitionLogic();\n }\n if (\n this.node.isEvaluateTransitionLogicOn('scoreChanged') &&\n componentAnnotations.some((annotation) => annotation.type === 'autoScore')\n ) {\n this.nodeService.evaluateTransitionLogic();\n }\n const studentWorkList = savedStudentDataResponse.studentWorkList;\n if (!componentId && studentWorkList && studentWorkList.length) {\n const latestComponentState = studentWorkList[studentWorkList.length - 1];\n if (latestComponentState.nodeId === this.node.id) {\n this.latestComponentState = latestComponentState;\n }\n } else {\n this.clearLatestComponentState();\n }\n }\n return savedStudentDataResponse;\n });\n };\n }\n\n private getAnnotationsFromComponentStates(componentStates: any[]): any[] {\n const componentAnnotations = [];\n for (const componentState of componentStates) {\n const annotations = componentState.annotations;\n if (annotations != null) {\n componentAnnotations.push(...annotations);\n }\n delete componentState.annotations;\n }\n return componentAnnotations;\n }\n\n /**\n * Loop through this node's components and get/create component states\n * @param isAutoSave whether the component states were auto saved\n * @param componentId (optional) the component id of the component that triggered the save\n * @param isSubmit (optional) whether this is a submission or not\n * @returns an array of promises that will return component states\n */\n private createComponentStates(\n isAutoSave: boolean = false,\n componentId: string,\n isSubmit: boolean = false\n ): any {\n const components = this.getComponentsToSave(componentId);\n const componentStatePromises = this.getComponentStatePromises(components, isAutoSave, isSubmit);\n return Promise.all(componentStatePromises).then((componentStatesFromComponents: any[]) => {\n return componentStatesFromComponents.filter((componentState: any) => componentState != null);\n });\n }\n\n private getComponentsToSave(componentId: string): any[] {\n if (componentId) {\n return [this.node.getComponent(componentId)];\n } else {\n const nodeStatus = this.studentDataService.getNodeStatusByNodeId(this.node.id);\n return this.getComponents().filter(\n (component) =>\n this.workComponents.includes(component.type) &&\n nodeStatus.componentStatuses[component.id].isVisible\n );\n }\n }\n\n private getComponentStatePromises(\n components: any[],\n isAutoSave: boolean = false,\n isSubmit: boolean = false\n ): any[] {\n const componentStatePromises = [];\n for (const component of components) {\n componentStatePromises.push(\n this.getComponentStatePromise(this.node.id, component.id, isAutoSave, isSubmit)\n );\n this.componentService.requestComponentState(this.node.id, component.id, isSubmit);\n }\n return componentStatePromises;\n }\n\n private getComponentStatePromise(\n nodeId: string,\n componentId: string,\n isAutoSave: boolean = false,\n isSubmit: boolean = false\n ): Promise {\n return new Promise((resolve) => {\n this.componentService.sendComponentStateSource$\n .pipe(\n filter(\n (data: ComponentStateWrapper) =>\n data.nodeId === nodeId && data.componentId === componentId\n ),\n take(1)\n )\n .toPromise()\n .then((componentStateWrapper: ComponentStateWrapper) => {\n this.resolveComponentStatePromise(\n resolve,\n componentStateWrapper.componentStatePromise,\n isAutoSave,\n isSubmit\n );\n });\n });\n }\n\n private resolveComponentStatePromise(\n resolve: any,\n componentStatePromise: Promise,\n isAutoSave: boolean = false,\n isSubmit: boolean = false\n ): void {\n componentStatePromise.then((componentState: any) => {\n if (componentState == null) {\n resolve(null);\n } else {\n this.injectAdditionalComponentStateFields(componentState, isAutoSave, isSubmit);\n resolve(componentState);\n }\n });\n }\n\n private injectAdditionalComponentStateFields(\n componentState: any,\n isAutoSave: boolean = false,\n isSubmit: boolean = false\n ): any {\n componentState.runId = this.configService.getRunId();\n componentState.periodId = this.configService.getPeriodId();\n componentState.workgroupId = this.workgroupId;\n componentState.isAutoSave = isAutoSave === true;\n componentState.isSubmit ??= isSubmit;\n }\n\n /**\n * Notify any connected components that the student data has changed\n * @param componentId the component id that has changed\n * @param componentState the new component state\n */\n private notifyConnectedParts(changedComponentId: string, componentState: any): void {\n for (const component of this.getComponents()) {\n if (component.connectedComponents != null) {\n for (const connectedComponent of component.connectedComponents) {\n if (\n connectedComponent.nodeId === componentState.nodeId &&\n connectedComponent.componentId === componentState.componentId\n ) {\n this.componentService.notifyConnectedComponentSubscribers(\n this.node.id,\n component.id,\n componentState\n );\n }\n }\n }\n }\n }\n\n private setIsLastNode(): void {\n this.nextNodeId = null;\n this.nodeService.getNextNodeId(this.node.id).then((nextId) => {\n this.nextNodeId = nextId;\n });\n this.isBranchNode = this.node.transitionLogic.transitions.length > 1;\n }\n\n protected getComponentStateByComponentId(componentId: string): any {\n return this.studentDataService.getLatestComponentStateByNodeIdAndComponentId(\n this.node.id,\n componentId\n );\n }\n\n private registerExitListener(): void {\n this.subscriptions.add(\n this.sessionService.exit$.subscribe(() => {\n this.stopAutoSaveInterval();\n })\n );\n }\n\n protected saveComponentState($event: any): Promise {\n return Promise.all([$event.componentStatePromise]).then(\n this.createComponentStatesResponseHandler(true)\n );\n }\n}\n", + "styleUrl": "./node.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "componentService", + "type": "ComponentService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "constraintService", + "type": "ConstraintService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeService", + "type": "StudentNodeService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeStatusService", + "type": "NodeStatusService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "VLEProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "sessionService", + "type": "SessionService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentDataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 72, + "jsdoctags": [ + { + "name": "componentService", + "type": "ComponentService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "constraintService", + "type": "ConstraintService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeService", + "type": "StudentNodeService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeStatusService", + "type": "NodeStatusService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "VLEProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "sessionService", + "type": "SessionService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentDataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "
    \n \n @if (showRubric) {\n
    \n \n
    \n }\n @for (component of components; track component) {\n \n @if (componentToVisible[component.id]) {\n \n }\n
    \n }\n
    \n @if (node.showSaveButton) {\n \n Save\n \n }\n @if (node.showSubmitButton) {\n \n Submit\n \n }\n @if (latestComponentState && (node.showSaveButton || node.showSubmitButton)) {\n \n }\n
    \n @if (isSurvey && !isBranchNode && !nextNodeId) {\n
    \n \n \n
    \n }\n \n\n" + }, + { + "name": "NodeConstraintAuthoringComponent", + "id": "component-NodeConstraintAuthoringComponent-0091016594c9bae4ddc4ef2f8bae8dda951a65f3e204c82080481187c161bee745d631cb34c6330c4c4f4040daae53c8ffba8e1ad89113f57863e609e98b49d1", + "file": "src/assets/wise5/authoringTool/constraint/node-constraint-authoring/node-constraint-authoring.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "node-constraint-authoring", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "../constraint-authoring/constraint-authoring.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "constraint", + "deprecated": false, + "deprecationMessage": "", + "line": 8, + "type": "any", + "decorators": [], + "inheritance": { + "file": "ConstraintAuthoringComponent" + } + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "constraintActions", + "defaultValue": "[\n new ConstraintAction('', $localize`Please Choose an Action`),\n new ConstraintAction(\n 'makeAllNodesAfterThisNotVisitable',\n $localize`Make all nodes after this not visitable`\n ),\n new ConstraintAction(\n 'makeAllNodesAfterThisNotVisible',\n $localize`Make all nodes after this not visible`\n ),\n new ConstraintAction(\n 'makeAllOtherNodesNotVisitable',\n $localize`Make all other nodes not visitable`\n ),\n new ConstraintAction(\n 'makeAllOtherNodesNotVisible',\n $localize`Make all other nodes not visible`\n ),\n new ConstraintAction('makeThisNodeNotVisitable', $localize`Make this node not visitable`),\n new ConstraintAction('makeThisNodeNotVisible', $localize`Make this node not visible`)\n ]", + "deprecated": false, + "deprecationMessage": "", + "type": "[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 29, + "inheritance": { + "file": "ConstraintAuthoringComponent" + } + }, + { + "name": "node", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "inheritance": { + "file": "ConstraintAuthoringComponent" + } + }, + { + "name": "removalConditionals", + "defaultValue": "[\n { value: 'all', text: $localize`All` },\n { value: 'any', text: $localize`Any` }\n ]", + "deprecated": false, + "deprecationMessage": "", + "type": "[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "inheritance": { + "file": "ConstraintAuthoringComponent" + } + } + ], + "methodsClass": [ + { + "name": "addRemovalCriteria", + "args": [ + { + "name": "constraint", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 39, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "constraint", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ConstraintAuthoringComponent" + } + }, + { + "name": "automaticallySetActionIfPossible", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ConstraintAuthoringComponent" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 21, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ConstraintAuthoringComponent" + } + }, + { + "name": "saveProject", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 47, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ConstraintAuthoringComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "EditConstraintRemovalCriteriaComponent", + "type": "component" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatSelectModule", + "type": "module" + }, + { + "name": "RequiredErrorLabelComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSelectModule } from '@angular/material/select';\nimport { ConstraintAction } from '../../../../../app/domain/constraintAction';\nimport { RequiredErrorLabelComponent } from '../../node/advanced/required-error-label/required-error-label.component';\nimport { ConstraintAuthoringComponent } from '../constraint-authoring/constraint-authoring.component';\nimport { EditConstraintRemovalCriteriaComponent } from '../edit-constraint-removal-criteria/edit-constraint-removal-criteria.component';\n\n@Component({\n imports: [\n CommonModule,\n EditConstraintRemovalCriteriaComponent,\n FormsModule,\n MatButtonModule,\n MatFormFieldModule,\n MatIconModule,\n MatSelectModule,\n RequiredErrorLabelComponent\n ],\n selector: 'node-constraint-authoring',\n styleUrl: '../constraint-authoring/constraint-authoring.component.scss',\n templateUrl: '../constraint-authoring/constraint-authoring.component.html'\n})\nexport class NodeConstraintAuthoringComponent extends ConstraintAuthoringComponent {\n constraintActions = [\n new ConstraintAction('', $localize`Please Choose an Action`),\n new ConstraintAction(\n 'makeAllNodesAfterThisNotVisitable',\n $localize`Make all nodes after this not visitable`\n ),\n new ConstraintAction(\n 'makeAllNodesAfterThisNotVisible',\n $localize`Make all nodes after this not visible`\n ),\n new ConstraintAction(\n 'makeAllOtherNodesNotVisitable',\n $localize`Make all other nodes not visitable`\n ),\n new ConstraintAction(\n 'makeAllOtherNodesNotVisible',\n $localize`Make all other nodes not visible`\n ),\n new ConstraintAction('makeThisNodeNotVisitable', $localize`Make this node not visitable`),\n new ConstraintAction('makeThisNodeNotVisible', $localize`Make this node not visible`)\n ];\n}\n", + "styleUrl": "../constraint-authoring/constraint-authoring.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [ + "ConstraintAuthoringComponent" + ], + "templateData": "
    \n \n Action\n \n @for (action of constraintActions; track action; let actionIndex = $index) {\n \n {{ action.text }}\n \n }\n \n \n @if (constraint.action === '') {\n \n }\n
    \n \n Removal Conditional\n \n @for (availableRemovalConditional of removalConditionals; track availableRemovalConditional) {\n \n {{ availableRemovalConditional.text }}\n \n }\n \n \n
    \n@for (criteria of constraint.removalCriteria; track criteria; let criteriaIndex = $index) {\n
    \n \n
    \n}\n
    \n Add Removal Criteria\n \n add\n \n
    \n" + }, + { + "name": "NodeGradingComponent", + "id": "component-NodeGradingComponent-47b9cd4409fd9cff0fbcba3b67b186009f427be1880b262c54de266cbad76fa611d947fea6f92315fb9edd228e268e6e1dca372b5b951d27e97bb0fb1474262b", + "file": "src/assets/wise5/classroomMonitor/classroomMonitorComponents/nodeGrading/node-grading/node-grading.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [ + "\n .content-head-label {\n font-size: 50%;\n }\n\n .component-select {\n padding: 6px 12px;\n }\n\n .mat-body-1 {\n margin: 0;\n }\n " + ], + "templateUrl": [ + "./node-grading.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 53, + "type": "string", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "components", + "deprecated": false, + "deprecationMessage": "", + "type": "ComponentContent[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 47, + "modifierKind": [ + 124 + ] + }, + { + "name": "hasWork", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 48, + "modifierKind": [ + 124 + ] + }, + { + "name": "node", + "deprecated": false, + "deprecationMessage": "", + "type": "Node", + "indexKey": "", + "optional": false, + "description": "", + "line": 49, + "modifierKind": [ + 124 + ] + }, + { + "name": "nodeAverageScore", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 50, + "modifierKind": [ + 124 + ] + }, + { + "name": "nodeCompletionPercent", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 51, + "modifierKind": [ + 124 + ] + }, + { + "name": "nodeMaxScore", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 52, + "modifierKind": [ + 124 + ] + }, + { + "name": "numRubrics", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 54, + "modifierKind": [ + 124 + ] + }, + { + "name": "periodId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 55, + "modifierKind": [ + 124 + ] + }, + { + "name": "selectedComponent", + "defaultValue": "new FormControl()", + "deprecated": false, + "deprecationMessage": "", + "type": "FormControl", + "indexKey": "", + "optional": false, + "description": "", + "line": 56, + "modifierKind": [ + 124 + ] + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 57, + "modifierKind": [ + 123 + ] + }, + { + "name": "summariesVisible", + "defaultValue": "true", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 58, + "modifierKind": [ + 124 + ] + }, + { + "name": "visibleComponents", + "deprecated": false, + "deprecationMessage": "", + "type": "ComponentContent[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 59, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "getComponentTypeLabel", + "args": [ + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 139, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnChanges", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 87, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 69, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "previewProject", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 135, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "setFields", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 91, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "setNodeAverageScore", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 117, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "setNodeCompletionPercent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 124, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "setPeriod", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 111, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "setVisibleComponents", + "args": [ + { + "name": "visibleComponents", + "type": "ComponentContent[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 131, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "visibleComponents", + "type": "ComponentContent[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "toggleSummaries", + "args": [ + { + "name": "event", + "type": "Event", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 143, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "event", + "type": "Event", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "ComponentSummaryComponent", + "type": "component" + }, + { + "name": "FilterComponentsComponent", + "type": "component" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatTabsModule", + "type": "module" + }, + { + "name": "NodeClassResponsesComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input, OnInit, OnDestroy, OnChanges } from '@angular/core';\nimport { TeacherProjectService } from '../../../../services/teacherProjectService';\nimport { ClassroomStatusService } from '../../../../services/classroomStatusService';\nimport { TeacherDataService } from '../../../../services/teacherDataService';\nimport { CommonModule } from '@angular/common';\nimport { MatIconModule } from '@angular/material/icon';\nimport { Node } from '../../../../common/Node';\nimport { Subscription } from 'rxjs';\nimport { MatButtonModule } from '@angular/material/button';\nimport { FilterComponentsComponent } from '../filter-components/filter-components.component';\nimport { ComponentContent } from '../../../../common/ComponentContent';\nimport { NodeClassResponsesComponent } from '../node-class-responses/node-class-responses.component';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { ComponentTypeService } from '../../../../services/componentTypeService';\nimport { ComponentSummaryComponent } from '../../component-summary/component-summary.component';\nimport { FormControl } from '@angular/forms';\nimport { AnnotationService } from '../../../../services/annotationService';\n\n@Component({\n imports: [\n CommonModule,\n ComponentSummaryComponent,\n FilterComponentsComponent,\n MatButtonModule,\n MatIconModule,\n MatTabsModule,\n NodeClassResponsesComponent\n ],\n styles: [\n `\n .content-head-label {\n font-size: 50%;\n }\n\n .component-select {\n padding: 6px 12px;\n }\n\n .mat-body-1 {\n margin: 0;\n }\n `\n ],\n templateUrl: './node-grading.component.html'\n})\nexport class NodeGradingComponent implements OnInit, OnDestroy, OnChanges {\n protected components: ComponentContent[];\n protected hasWork: boolean;\n protected node: Node;\n protected nodeAverageScore: number;\n protected nodeCompletionPercent: number;\n protected nodeMaxScore: number;\n @Input() nodeId: string;\n protected numRubrics: number;\n protected periodId: number;\n protected selectedComponent: FormControl = new FormControl();\n private subscriptions: Subscription = new Subscription();\n protected summariesVisible: boolean = true;\n protected visibleComponents: ComponentContent[];\n\n constructor(\n private annotationService: AnnotationService,\n private classroomStatusService: ClassroomStatusService,\n private componentTypeService: ComponentTypeService,\n private dataService: TeacherDataService,\n private projectService: TeacherProjectService\n ) {}\n\n ngOnInit(): void {\n this.setFields();\n this.subscriptions.add(\n this.dataService.currentPeriodChanged$.subscribe(() => this.setPeriod())\n );\n this.subscriptions.add(\n this.annotationService.annotationReceived$.subscribe(() => this.setPeriod())\n );\n this.subscriptions.add(this.projectService.projectSaved$.subscribe(() => this.setFields()));\n this.subscriptions.add(\n this.dataService.currentNodeChanged$.subscribe(() => this.selectedComponent.setValue(0))\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n ngOnChanges(): void {\n this.setFields();\n }\n\n private setFields(): void {\n this.hasWork = this.projectService.nodeHasWork(this.nodeId);\n this.node = this.projectService.getNode(this.nodeId);\n this.nodeAverageScore = this.classroomStatusService.getNodeAverageScore(\n this.nodeId,\n this.dataService.getCurrentPeriodId()\n );\n this.nodeMaxScore = this.projectService.getMaxScoreForNode(this.nodeId);\n this.components = this.projectService\n .getComponents(this.nodeId)\n .filter((component) => this.projectService.componentHasWork(component))\n .map((component, index) => {\n component['displayIndex'] = index + 1;\n return component;\n });\n this.visibleComponents = this.components;\n this.numRubrics = this.node.getNumRubrics();\n this.setPeriod();\n }\n\n private setPeriod(): void {\n this.periodId = this.dataService.getCurrentPeriodId();\n this.setNodeAverageScore();\n this.setNodeCompletionPercent();\n }\n\n private setNodeAverageScore(): void {\n this.nodeAverageScore = this.classroomStatusService.getNodeAverageScore(\n this.nodeId,\n this.periodId\n );\n }\n\n private setNodeCompletionPercent(): void {\n this.nodeCompletionPercent = this.classroomStatusService.getNodeCompletion(\n this.nodeId,\n this.periodId\n ).completionPct;\n }\n\n protected setVisibleComponents(visibleComponents: ComponentContent[]): void {\n this.visibleComponents = visibleComponents;\n }\n\n protected previewProject(): void {\n window.open(this.dataService.getPreviewUrl());\n }\n\n protected getComponentTypeLabel(componentType: string): string {\n return this.componentTypeService.getComponentTypeLabel(componentType);\n }\n\n protected toggleSummaries(event: Event): void {\n event.preventDefault();\n this.summariesVisible = !this.summariesVisible;\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "\n .content-head-label {\n font-size: 50%;\n }\n\n .component-select {\n padding: 6px 12px;\n }\n\n .mat-body-1 {\n margin: 0;\n }\n \n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "classroomStatusService", + "type": "ClassroomStatusService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentTypeService", + "type": "ComponentTypeService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 59, + "jsdoctags": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "classroomStatusService", + "type": "ClassroomStatusService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentTypeService", + "type": "ComponentTypeService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit", + "OnDestroy", + "OnChanges" + ], + "templateData": "
    \n
    \n
    \n
    \n

    \n {{ nodeCompletionPercent }}% Step Completion\n

    \n @if (hasWork && nodeAverageScore != null) {\n

    \n {{ nodeAverageScore }}/{{ nodeMaxScore ?? '0' }}\n Mean Step Score\n

    \n }\n
    \n
    \n \n
    \n
    \n
    \n

    Question Summaries

    \n @if (summariesVisible) {\n Hide\n } @else {\n Show\n }\n
    \n @if (summariesVisible) {\n
    \n \n @for (component of components; track component; let i = $index) {\n \n \n \n \n \n }\n \n
    \n }\n
    \n
    \n

    Class Responses

    \n \n
    \n \n
    \n
    \n" + }, + { + "name": "NodeIconAndTitleComponent", + "id": "component-NodeIconAndTitleComponent-b1da37bcb3e43df86d1a2e226e0cd7bb0d7b92a4eadfb0e2922d4233ccca3774404b381ece36e5da22bcf5f77d947a509beac603972cd7e285ea9a5786718405", + "file": "src/assets/wise5/authoringTool/choose-node-location/node-icon-and-title/node-icon-and-title.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "node-icon-and-title", + "styleUrls": [], + "styles": [ + ".step-number,.step-title {color:rgba(0,0,0,.87)}" + ], + "templateUrl": [ + "./node-icon-and-title.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 13, + "type": "string", + "decorators": [] + }, + { + "name": "showPosition", + "deprecated": false, + "deprecationMessage": "", + "line": 14, + "type": "boolean", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [], + "methodsClass": [ + { + "name": "getNodePosition", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 21, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getNodeTitle", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 25, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "translateNodeTitle", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 31, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "NodeIconComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input } from '@angular/core';\nimport { TeacherProjectService } from '../../../services/teacherProjectService';\nimport { NodeIconComponent } from '../../../vle/node-icon/node-icon.component';\nimport { TeacherProjectTranslationService } from '../../../services/teacherProjectTranslationService';\n\n@Component({\n imports: [NodeIconComponent],\n selector: 'node-icon-and-title',\n styles: ['.step-number,.step-title {color:rgba(0,0,0,.87)}'],\n templateUrl: './node-icon-and-title.component.html'\n})\nexport class NodeIconAndTitleComponent {\n @Input() protected nodeId: string;\n @Input() protected showPosition: boolean;\n\n constructor(\n private projectService: TeacherProjectService,\n private projectTranslationService: TeacherProjectTranslationService\n ) {}\n\n protected getNodePosition(nodeId: string): string {\n return this.projectService.getNodePositionById(nodeId);\n }\n\n protected getNodeTitle(nodeId: string): string {\n return this.projectService.isDefaultLocale()\n ? this.projectService.getNodeTitle(nodeId)\n : this.translateNodeTitle(nodeId);\n }\n\n private translateNodeTitle(nodeId: string): string {\n const node = this.projectService.getNode(nodeId);\n const translatedTitle =\n this.projectTranslationService.currentTranslations()[node['title.i18n']?.id]?.value;\n return translatedTitle ? translatedTitle : node['title'];\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": ".step-number,.step-title {color:rgba(0,0,0,.87)}\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectTranslationService", + "type": "TeacherProjectTranslationService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 14, + "jsdoctags": [ + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectTranslationService", + "type": "TeacherProjectTranslationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "
    \n  \n @if (showPosition) {\n {{ getNodePosition(nodeId) }}: \n }\n {{ getNodeTitle(nodeId) }}\n
    \n" + }, + { + "name": "NodeIconChooserDialogComponent", + "id": "component-NodeIconChooserDialogComponent-508db0df3144860af26bdad86e8e75afb890fb963d917994d43ec7e3aa76fec6d94f776a5d0add72305ba13886d9f93812103e6a3b058c411a1e9fb2b3f76865", + "file": "src/assets/wise5/common/node-icon-chooser-dialog/node-icon-chooser-dialog.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "node-icon-chooser-dialog", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "node-icon-chooser-dialog.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "colors", + "defaultValue": "[\n '#66BB6A',\n '#009688',\n '#00B0FF',\n '#1565C0',\n '#673AB7',\n '#AB47BC',\n '#E91E63',\n '#D50000',\n '#F57C00',\n '#FBC02D',\n '#795548',\n '#757575'\n ]", + "deprecated": false, + "deprecationMessage": "", + "type": "[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 35, + "modifierKind": [ + 124 + ] + }, + { + "name": "dialogRef", + "deprecated": false, + "deprecationMessage": "", + "type": "MatDialogRef", + "indexKey": "", + "optional": false, + "description": "", + "line": 130, + "modifierKind": [ + 125 + ] + }, + { + "name": "fontNames", + "defaultValue": "[\n 'access_time',\n 'alarm',\n 'announcement',\n 'article',\n 'assignment',\n 'assignment_turned_in',\n 'bolt',\n 'book',\n 'bookmark',\n 'build',\n 'chrome_reader_mode',\n 'compare',\n 'create',\n 'dashboard',\n 'description',\n 'developer_board',\n 'domain',\n 'explore',\n 'extension',\n 'fact_check',\n 'favorite',\n 'flash_on',\n 'help',\n 'image',\n 'info',\n 'insert_chart',\n 'gamepad',\n 'lightbulb',\n 'live_tv',\n 'message',\n 'movie',\n 'note_add',\n 'pageview',\n 'palette',\n 'photo_camera',\n 'place',\n 'question_answer',\n 'search',\n 'school',\n 'slideshow',\n 'star',\n 'thumbs_up_down',\n 'trending_up',\n 'verified',\n 'verified_user',\n 'view_list'\n ]", + "deprecated": false, + "deprecationMessage": "", + "type": "[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 50, + "modifierKind": [ + 124 + ] + }, + { + "name": "kiIcons", + "defaultValue": "[\n {\n imgAlt: $localize`Knowledge Integration elicit ideas`,\n imgLabel: $localize`Elicit Ideas`,\n imgSrc: 'assets/img/icons/ki-color-elicit.svg'\n },\n {\n imgAlt: $localize`Knowledge Integration discover ideas`,\n imgLabel: $localize`Discover Ideas`,\n imgSrc: 'assets/img/icons/ki-color-add.svg'\n },\n {\n imgAlt: $localize`Knowledge Integration distinguish ideas`,\n imgLabel: $localize`Distinguish Ideas`,\n imgSrc: 'assets/img/icons/ki-color-distinguish.svg'\n },\n {\n imgAlt: $localize`Knowledge Integration connect ideas and reflect`,\n imgLabel: $localize`Connect Ideas & Reflect`,\n imgSrc: 'assets/img/icons/ki-color-connect.svg'\n },\n {\n imgAlt: $localize`Knowledge Integration cycle`,\n imgLabel: $localize`KI Cycle`,\n imgSrc: 'assets/img/icons/ki-color-cycle.svg'\n }\n ]", + "deprecated": false, + "deprecationMessage": "", + "type": "KIIcon[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 98, + "modifierKind": [ + 124 + ] + }, + { + "name": "newNodeIcon", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 125, + "modifierKind": [ + 124 + ] + }, + { + "name": "node", + "deprecated": false, + "deprecationMessage": "", + "type": "Node", + "indexKey": "", + "optional": false, + "description": "", + "line": 126, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "chooseFontColor", + "args": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 139, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "chooseFontName", + "args": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 146, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "chooseKIIcon", + "args": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 153, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 134, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "save", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 160, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatChipsModule", + "type": "module" + }, + { + "name": "MatDialogModule", + "type": "module" + }, + { + "name": "MatDividerModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + }, + { + "name": "RouterModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Inject } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';\nimport { TeacherProjectService } from '../../services/teacherProjectService';\nimport { Node } from '../Node';\nimport { CommonModule } from '@angular/common';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatButtonModule } from '@angular/material/button';\nimport { RouterModule } from '@angular/router';\n\ninterface KIIcon {\n imgAlt: string;\n imgLabel: string;\n imgSrc: string;\n}\n\n@Component({\n imports: [\n CommonModule,\n MatButtonModule,\n MatChipsModule,\n MatDialogModule,\n MatDividerModule,\n MatIconModule,\n MatTooltipModule,\n RouterModule\n ],\n selector: 'node-icon-chooser-dialog',\n styleUrl: 'node-icon-chooser-dialog.component.scss',\n templateUrl: 'node-icon-chooser-dialog.component.html'\n})\nexport class NodeIconChooserDialogComponent {\n protected colors = [\n '#66BB6A',\n '#009688',\n '#00B0FF',\n '#1565C0',\n '#673AB7',\n '#AB47BC',\n '#E91E63',\n '#D50000',\n '#F57C00',\n '#FBC02D',\n '#795548',\n '#757575'\n ];\n\n protected fontNames = [\n 'access_time',\n 'alarm',\n 'announcement',\n 'article',\n 'assignment',\n 'assignment_turned_in',\n 'bolt',\n 'book',\n 'bookmark',\n 'build',\n 'chrome_reader_mode',\n 'compare',\n 'create',\n 'dashboard',\n 'description',\n 'developer_board',\n 'domain',\n 'explore',\n 'extension',\n 'fact_check',\n 'favorite',\n 'flash_on',\n 'help',\n 'image',\n 'info',\n 'insert_chart',\n 'gamepad',\n 'lightbulb',\n 'live_tv',\n 'message',\n 'movie',\n 'note_add',\n 'pageview',\n 'palette',\n 'photo_camera',\n 'place',\n 'question_answer',\n 'search',\n 'school',\n 'slideshow',\n 'star',\n 'thumbs_up_down',\n 'trending_up',\n 'verified',\n 'verified_user',\n 'view_list'\n ];\n protected kiIcons: KIIcon[] = [\n {\n imgAlt: $localize`Knowledge Integration elicit ideas`,\n imgLabel: $localize`Elicit Ideas`,\n imgSrc: 'assets/img/icons/ki-color-elicit.svg'\n },\n {\n imgAlt: $localize`Knowledge Integration discover ideas`,\n imgLabel: $localize`Discover Ideas`,\n imgSrc: 'assets/img/icons/ki-color-add.svg'\n },\n {\n imgAlt: $localize`Knowledge Integration distinguish ideas`,\n imgLabel: $localize`Distinguish Ideas`,\n imgSrc: 'assets/img/icons/ki-color-distinguish.svg'\n },\n {\n imgAlt: $localize`Knowledge Integration connect ideas and reflect`,\n imgLabel: $localize`Connect Ideas & Reflect`,\n imgSrc: 'assets/img/icons/ki-color-connect.svg'\n },\n {\n imgAlt: $localize`Knowledge Integration cycle`,\n imgLabel: $localize`KI Cycle`,\n imgSrc: 'assets/img/icons/ki-color-cycle.svg'\n }\n ];\n protected newNodeIcon: any;\n protected node: Node;\n\n constructor(\n @Inject(MAT_DIALOG_DATA) protected data: any,\n public dialogRef: MatDialogRef,\n private projectService: TeacherProjectService\n ) {}\n\n ngOnInit() {\n this.node = this.data.node;\n this.newNodeIcon = Object.assign({}, this.node.getIcon());\n }\n\n chooseFontColor(event: any): void {\n if (event.selected) {\n this.newNodeIcon.type = 'font';\n this.newNodeIcon.color = event.source.value;\n }\n }\n\n chooseFontName(event: any): void {\n if (event.selected) {\n this.newNodeIcon.type = 'font';\n this.newNodeIcon.fontName = event.source.value;\n }\n }\n\n chooseKIIcon(event: any): void {\n if (event.selected) {\n this.newNodeIcon.type = 'img';\n Object.assign(this.newNodeIcon, event.source.value);\n }\n }\n\n save(): void {\n const nodeContent = this.projectService.getNodeById(this.node.id);\n nodeContent.icon = Object.assign(this.node.getIcon(), this.newNodeIcon);\n this.projectService.saveProject();\n this.dialogRef.close();\n }\n}\n", + "styleUrl": "node-icon-chooser-dialog.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialogRef", + "type": "MatDialogRef", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 126, + "jsdoctags": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialogRef", + "type": "MatDialogRef", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "

    \n @if (newNodeIcon.type === 'font') {\n \n {{ newNodeIcon.fontName }}\n \n } @else if (newNodeIcon.type === 'img') {\n \n }\n Choose an Icon\n

    \n\n

    \n Use a Knowledge Integration (KI) icon:\n \n info\n \n

    \n \n @for (kiIcon of kiIcons; track kiIcon.imgSrc) {\n \n {{\n kiIcon.imgLabel\n }}\n \n }\n \n \n
    \n
    \n

    Or choose your own icon:

    \n \n @for (fontName of fontNames; track fontName) {\n \n {{ fontName }}\n \n }\n \n
    \n
    \n

    Color:

    \n \n @for (color of colors; track color) {\n \n }\n \n
    \n
    \n
    \n\n \n \n\n" + }, + { + "name": "NodeIconComponent", + "id": "component-NodeIconComponent-cc82315471d807ba1e73216802fa844fe641a32c243d861c974232630a2c5758a833ef660b6ecb792aeb30bb11a151f58015bf4113a8f9be4f86a6b46bccc831", + "file": "src/assets/wise5/vle/node-icon/node-icon.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "node-icon", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "node-icon.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "canEdit", + "deprecated": false, + "deprecationMessage": "", + "line": 17, + "type": "boolean", + "decorators": [] + }, + { + "name": "customClass", + "deprecated": false, + "deprecationMessage": "", + "line": 18, + "type": "string", + "decorators": [] + }, + { + "name": "icon", + "deprecated": false, + "deprecationMessage": "", + "line": 19, + "type": "any", + "decorators": [] + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 22, + "type": "string", + "decorators": [] + }, + { + "name": "size", + "deprecated": false, + "deprecationMessage": "", + "line": 23, + "type": "number", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "isGroup", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 20, + "modifierKind": [ + 124 + ] + }, + { + "name": "node", + "deprecated": false, + "deprecationMessage": "", + "type": "Node", + "indexKey": "", + "optional": false, + "description": "", + "line": 21, + "modifierKind": [ + 124 + ] + }, + { + "name": "sizeClass", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 24, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "isFont", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 39, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "isImage", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 43, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "ngOnChanges", + "args": [ + { + "name": "changes", + "type": "SimpleChanges", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 28, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "changes", + "type": "SimpleChanges", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "'use strict';\n\nimport { ProjectService } from '../../services/projectService';\nimport { Component, Input, SimpleChanges } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { Node } from '../../common/Node';\nimport { CommonModule } from '@angular/common';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n imports: [CommonModule, MatIconModule],\n selector: 'node-icon',\n styleUrl: 'node-icon.component.scss',\n templateUrl: 'node-icon.component.html'\n})\nexport class NodeIconComponent {\n @Input() canEdit: boolean;\n @Input() customClass: string;\n @Input() icon: any;\n protected isGroup: boolean;\n protected node: Node;\n @Input() nodeId: string;\n @Input() size: number;\n protected sizeClass: string;\n\n constructor(protected dialog: MatDialog, protected projectService: ProjectService) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n this.node = this.projectService.getNode(this.nodeId);\n this.isGroup = this.node.isGroup();\n if (changes.icon == null) {\n this.icon = this.projectService.getNode(this.nodeId).getIcon();\n }\n if (this.size) {\n this.sizeClass = `mat-${this.size}`;\n }\n }\n\n protected isFont(): boolean {\n return this.icon.type === 'font';\n }\n\n protected isImage(): boolean {\n return this.icon.type === 'img';\n }\n}\n", + "styleUrl": "node-icon.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 24, + "jsdoctags": [ + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "\n @if (isImage()) {\n \n }\n @if (isFont()) {\n \n {{ icon.fontName }}\n \n }\n\n\n@if (canEdit) {\n \n
    \n \n
    \n \n}\n@if (!canEdit) {\n \n}\n" + }, + { + "name": "NodeNavigationComponent", + "id": "component-NodeNavigationComponent-fefe4bdfe83745d24e059ed7582ae7d9200ad519bf54bcd3a71b3e2fef55f522e165f72d14e8abc0ca58dd886d2ca197f2cc7eab93c7a59c5fabb311691bb8c8", + "file": "src/assets/wise5/directives/node-navigation/node-navigation.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "node-navigation", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./node-navigation.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "hasNextNode", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "modifierKind": [ + 124 + ] + }, + { + "name": "hasPrevNode", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "modifierKind": [ + 124 + ] + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 123 + ] + } + ], + "methodsClass": [ + { + "name": "checkPreviousAndNextNodes", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 36, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "goToNextNode", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 48, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "goToPrevNode", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 44, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatButtonModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, OnInit } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { NodeService } from '../../services/nodeService';\nimport { StudentDataService } from '../../services/studentDataService';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n imports: [MatButtonModule],\n selector: 'node-navigation',\n templateUrl: './node-navigation.component.html'\n})\nexport class NodeNavigationComponent implements OnInit {\n protected hasNextNode: boolean;\n protected hasPrevNode: boolean;\n private subscriptions: Subscription = new Subscription();\n\n constructor(\n private dataService: StudentDataService,\n private nodeService: NodeService\n ) {}\n\n ngOnInit(): void {\n this.checkPreviousAndNextNodes();\n this.subscriptions.add(\n this.dataService.currentNodeChanged$.subscribe(() => {\n this.checkPreviousAndNextNodes();\n })\n );\n this.subscriptions.add(\n this.dataService.nodeStatusesChanged$.subscribe(() => {\n this.checkPreviousAndNextNodes();\n })\n );\n }\n\n private checkPreviousAndNextNodes(): void {\n this.hasPrevNode = this.nodeService.getPrevNodeId() != null;\n this.hasNextNode = false;\n this.nodeService.getNextNodeId().then((nodeId: string) => {\n this.hasNextNode = nodeId != null;\n });\n }\n\n protected goToPrevNode(): void {\n this.nodeService.goToPrevNode();\n }\n\n protected goToNextNode(): void {\n this.nodeService.goToNextNode();\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "dataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 15, + "jsdoctags": [ + { + "name": "dataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "
    \n @if (hasPrevNode) {\n \n }\n \n @if (hasNextNode) {\n \n }\n
    \n" + }, + { + "name": "NodeProgressViewComponent", + "id": "component-NodeProgressViewComponent-3176a28bfa128872c1706d5092ddc379cc02ca3b4846492eeaca333d516e7eff8121dae978c37bedf7e5a29275c89606eb752dae7dc2b0f7880e6ee87d2ca1ff", + "file": "src/assets/wise5/classroomMonitor/classroomMonitorComponents/nodeProgress/node-progress-view/node-progress-view.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "node-progress-view", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./node-progress-view.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 21, + "type": "string", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "nodeIdToExpanded", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 22 + }, + { + "name": "rootNode", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 23, + "modifierKind": [ + 124 + ] + }, + { + "name": "showRubricButton", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 24, + "modifierKind": [ + 124 + ] + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 25, + "modifierKind": [ + 123 + ] + } + ], + "methodsClass": [ + { + "name": "childExpandedEvent", + "args": [ + { + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 115, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "collapseAll", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 120, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "isApplicationNode", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 95, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isGroupNode", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 91, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isShowingNodeGradingView", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 76, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "ngAfterViewChecked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 48, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 72, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 36, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectHasRubric", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 99, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "saveNodeProgressViewDisplayedEvent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 80, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "showRubric", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 104, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "subscribeToCurrentNodeChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 52, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatButton" + }, + { + "name": "MatIcon" + }, + { + "name": "NavItemComponent", + "type": "component" + }, + { + "name": "NgClass" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { ChangeDetectorRef, Component, Input, OnInit } from '@angular/core';\nimport { TeacherProjectService } from '../../../../services/teacherProjectService';\nimport { TeacherDataService } from '../../../../services/teacherDataService';\nimport { Subscription } from 'rxjs';\nimport { MatDialog } from '@angular/material/dialog';\nimport { DialogWithOpenInNewWindowComponent } from '../../../../directives/dialog-with-open-in-new-window/dialog-with-open-in-new-window.component';\nimport { Router } from '@angular/router';\nimport { ConfigService } from '../../../../services/configService';\nimport { MatButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\nimport { NavItemComponent } from '../nav-item/nav-item.component';\nimport { NgClass } from '@angular/common';\n\n@Component({\n imports: [MatButton, MatIcon, NavItemComponent, NgClass],\n selector: 'node-progress-view',\n styleUrl: './node-progress-view.component.scss',\n templateUrl: './node-progress-view.component.html'\n})\nexport class NodeProgressViewComponent implements OnInit {\n @Input() protected nodeId: string;\n nodeIdToExpanded: any = {};\n protected rootNode: any;\n protected showRubricButton: boolean;\n private subscriptions: Subscription = new Subscription();\n\n constructor(\n private changeDetectorRef: ChangeDetectorRef,\n private configService: ConfigService,\n private dialog: MatDialog,\n private projectService: TeacherProjectService,\n private router: Router,\n private dataService: TeacherDataService\n ) {}\n\n ngOnInit(): void {\n this.nodeId = this.nodeId || this.projectService.rootNode.id;\n this.dataService.setCurrentNodeByNodeId(this.nodeId);\n const startNodeId = this.projectService.getStartNodeId();\n this.rootNode = this.projectService.getRootNode(startNodeId);\n this.showRubricButton = this.projectHasRubric();\n this.subscribeToCurrentNodeChanged();\n if (!this.isShowingNodeGradingView()) {\n this.saveNodeProgressViewDisplayedEvent();\n }\n }\n\n ngAfterViewChecked(): void {\n this.changeDetectorRef.detectChanges();\n }\n\n private subscribeToCurrentNodeChanged(): void {\n this.subscriptions.add(\n this.dataService.currentNodeChanged$.subscribe(({ currentNode }) => {\n this.nodeId = currentNode.id;\n this.dataService.setCurrentNode(currentNode);\n if (this.nodeId === 'group0') {\n this.collapseAll();\n } else {\n this.nodeIdToExpanded[this.nodeId] = true;\n }\n this.router.navigate([\n '/teacher/manage/unit',\n this.configService.getRunId(),\n this.isApplicationNode(this.nodeId) ? 'node' : 'group',\n this.nodeId\n ]);\n })\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n private isShowingNodeGradingView(): boolean {\n return this.isApplicationNode(this.nodeId);\n }\n\n private saveNodeProgressViewDisplayedEvent(): void {\n const context = 'ClassroomMonitor',\n nodeId = this.nodeId,\n componentId = null,\n componentType = null,\n category = 'Navigation',\n event = 'nodeProgressViewDisplayed',\n data = { nodeId: this.nodeId };\n this.dataService.saveEvent(context, nodeId, componentId, componentType, category, event, data);\n }\n\n protected isGroupNode(nodeId: string): boolean {\n return this.projectService.isGroupNode(nodeId);\n }\n\n protected isApplicationNode(nodeId: string): boolean {\n return this.projectService.isApplicationNode(nodeId);\n }\n\n private projectHasRubric(): boolean {\n const projectRubric = this.projectService.getProjectRubric();\n return projectRubric != null && projectRubric != '';\n }\n\n showRubric(): void {\n this.dialog.open(DialogWithOpenInNewWindowComponent, {\n data: {\n content: this.projectService.replaceAssetPaths(this.projectService.getProjectRubric()),\n scroll: true,\n title: this.projectService.getProjectTitle()\n },\n panelClass: 'dialog-lg'\n });\n }\n\n childExpandedEvent({ nodeId, expanded }): void {\n this.collapseAll();\n this.nodeIdToExpanded[nodeId] = expanded;\n }\n\n protected collapseAll(): void {\n for (const key of Object.keys(this.nodeIdToExpanded)) {\n this.nodeIdToExpanded[key] = false;\n }\n }\n}\n", + "styleUrl": "./node-progress-view.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "changeDetectorRef", + "type": "ChangeDetectorRef", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 25, + "jsdoctags": [ + { + "name": "changeDetectorRef", + "type": "ChangeDetectorRef", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "@if (isGroupNode(nodeId)) {\n
    \n
    \n @if (showRubricButton) {\n
    \n \n
    \n }\n
    \n
    \n @for (id of rootNode.ids; track id) {\n \n }\n
    \n
    \n
    \n
    \n}\n" + }, + { + "name": "NodeStatusIconComponent", + "id": "component-NodeStatusIconComponent-54bc790a11bf02632b4bc2299693a3cf7d8b735524c78b1bc2757ae026ee1c6eeec40231a15f2a76b9bb9302eb15479126c97a933c642faf29544e9fbc3a9f23", + "file": "src/assets/wise5/themes/default/themeComponents/nodeStatusIcon/node-status-icon.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "node-status-icon", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "node-status-icon.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 13, + "type": "string", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "nodeStatus", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "ngOnChanges", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 18, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input } from '@angular/core';\nimport { NodeStatusService } from '../../../../services/nodeStatusService';\nimport { CommonModule } from '@angular/common';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n imports: [CommonModule, MatIconModule],\n selector: 'node-status-icon',\n styleUrl: 'node-status-icon.component.scss',\n templateUrl: 'node-status-icon.component.html'\n})\nexport class NodeStatusIconComponent {\n @Input() nodeId: string;\n protected nodeStatus: any;\n\n constructor(private nodeStatusService: NodeStatusService) {}\n\n ngOnChanges(): void {\n this.nodeStatus = this.nodeStatusService.getNodeStatusByNodeId(this.nodeId);\n }\n}\n", + "styleUrl": "node-status-icon.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "nodeStatusService", + "type": "NodeStatusService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 14, + "jsdoctags": [ + { + "name": "nodeStatusService", + "type": "NodeStatusService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "@if (nodeStatus.isCompleted || nodeStatus.isWarn) {\n \n {{ nodeStatus.isWarn ? 'error' : 'check_circle' }}\n \n}\n@if (nodeStatus.isWarn) {\n Completed with warning\n} @else {\n @if (nodeStatus.isCompleted && nodeStatus.isSuccess) {\n Completed with success\n } @else {\n @if (nodeStatus.isCompleted) {\n Completed\n }\n }\n}\n" + }, + { + "name": "NodeWithMoveAfterButtonComponent", + "id": "component-NodeWithMoveAfterButtonComponent-99be206161d54a763596b6a604da4f91c6a315787f6f37fe0157feae27245c9e27521b60fa7cc402feb7052ebc8691008adfb51bf6e531051d0967c694939390", + "file": "src/assets/wise5/authoringTool/choose-node-location/node-with-move-after-button/node-with-move-after-button.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "node-with-move-after-button", + "styleUrls": [], + "styles": [], + "template": "
    \n \n \n
    \n", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "disabled", + "deprecated": false, + "deprecationMessage": "", + "line": 16, + "type": "boolean", + "decorators": [] + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 18, + "type": "string", + "decorators": [] + } + ], + "outputsClass": [ + { + "name": "insertEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 17, + "type": "EventEmitter" + } + ], + "propertiesClass": [], + "methodsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "InsertNodeAfterButtonComponent", + "type": "component" + }, + { + "name": "NodeIconAndTitleComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { NodeIconAndTitleComponent } from '../node-icon-and-title/node-icon-and-title.component';\nimport { InsertNodeAfterButtonComponent } from '../insert-node-after-button/insert-node-after-button.component';\n\n@Component({\n imports: [InsertNodeAfterButtonComponent, NodeIconAndTitleComponent],\n selector: 'node-with-move-after-button',\n template: `\n
    \n \n \n
    \n `\n})\nexport class NodeWithMoveAfterButtonComponent {\n @Input() protected disabled: boolean;\n @Output() protected insertEvent = new EventEmitter();\n @Input() protected nodeId: string;\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [] + }, + { + "name": "NodeWorkgroupItemComponent", + "id": "component-NodeWorkgroupItemComponent-289c4d36dadc2efa64e04de2e43f1a6daab8c038d7482dcff37069a31cb9eee28e12a3c3eb91075991ec22068cb42237ec421dc665c2c87254380a09164d65b5", + "file": "src/assets/wise5/classroomMonitor/classroomMonitorComponents/nodeGrading/node-workgroup-item/node-workgroup-item.component.ts", + "encapsulation": [ + "ViewEncapsulation.None" + ], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "node-workgroup-item", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./node-workgroup-item.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "components", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "line": 44, + "type": "ComponentContent[]", + "decorators": [] + }, + { + "name": "expanded", + "deprecated": false, + "deprecationMessage": "", + "line": 46, + "type": "boolean", + "decorators": [] + }, + { + "name": "maxScore", + "deprecated": false, + "deprecationMessage": "", + "line": 49, + "type": "number", + "decorators": [] + }, + { + "name": "node", + "deprecated": false, + "deprecationMessage": "", + "line": 51, + "type": "Node", + "decorators": [] + }, + { + "name": "workgroup", + "deprecated": false, + "deprecationMessage": "", + "line": 58, + "type": "any", + "decorators": [] + } + ], + "outputsClass": [ + { + "name": "onUpdateExpand", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 52, + "type": "EventEmitter" + } + ], + "propertiesClass": [ + { + "name": "componentIdToHasWork", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "literal type", + "indexKey": "", + "optional": false, + "description": "", + "line": 42, + "modifierKind": [ + 123 + ] + }, + { + "name": "componentIdToIsVisible", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "literal type", + "indexKey": "", + "optional": false, + "description": "", + "line": 43, + "modifierKind": [ + 124 + ] + }, + { + "name": "disabled", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 45, + "modifierKind": [ + 124 + ] + }, + { + "name": "hasAlert", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 47, + "modifierKind": [ + 124 + ] + }, + { + "name": "hasNewAlert", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 48, + "modifierKind": [ + 124 + ] + }, + { + "name": "nodeHasWork", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 50, + "modifierKind": [ + 123 + ] + }, + { + "name": "score", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 53, + "modifierKind": [ + 124 + ] + }, + { + "name": "status", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 54, + "modifierKind": [ + 123 + ] + }, + { + "name": "statusClass", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 55, + "modifierKind": [ + 124 + ] + }, + { + "name": "statusText", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 56, + "modifierKind": [ + 124 + ] + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 57, + "modifierKind": [ + 123 + ] + } + ], + "methodsClass": [ + { + "name": "getComponentTypeLabel", + "args": [ + { + "name": "componentType", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 122, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "componentType", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnChanges", + "args": [ + { + "name": "changes", + "type": "SimpleChanges", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 102, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "changes", + "type": "SimpleChanges", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 118, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 66, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "subscribeToAnnotations", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 72, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "toggleExpand", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 158, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "updateNode", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 93, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "updateStatus", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 126, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatListModule", + "type": "module" + }, + { + "name": "WorkgroupInfoComponent", + "type": "component" + }, + { + "name": "WorkgroupNodeStatusComponent", + "type": "component" + }, + { + "name": "WorkgroupNodeScoreComponent", + "type": "component" + }, + { + "name": "ComponentNewWorkBadgeComponent", + "type": "component" + }, + { + "name": "WorkgroupComponentGradingComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import {\n Component,\n EventEmitter,\n Input,\n Output,\n SimpleChanges,\n ViewEncapsulation\n} from '@angular/core';\nimport { calculateComponentVisibility } from '../../shared/grading-helpers/grading-helpers';\nimport { ComponentTypeService } from '../../../../services/componentTypeService';\nimport { TeacherProjectService } from '../../../../services/teacherProjectService';\nimport { WorkgroupComponentGradingComponent } from '../../workgroup-component-grading/workgroup-component-grading.component';\nimport { ComponentNewWorkBadgeComponent } from '../../../../../../app/classroom-monitor/component-new-work-badge/component-new-work-badge.component';\nimport { WorkgroupNodeScoreComponent } from '../../shared/workgroupNodeScore/workgroup-node-score.component';\nimport { WorkgroupNodeStatusComponent } from '../../../../../../app/classroom-monitor/workgroup-node-status/workgroup-node-status.component';\nimport { WorkgroupInfoComponent } from '../workgroupInfo/workgroup-info.component';\nimport { MatListModule } from '@angular/material/list';\nimport { MatButtonModule } from '@angular/material/button';\nimport { CommonModule } from '@angular/common';\nimport { Node } from '../../../../common/Node';\nimport { ComponentContent } from '../../../../common/ComponentContent';\nimport { filter, Subscription } from 'rxjs';\nimport { AnnotationService } from '../../../../services/annotationService';\n\n@Component({\n encapsulation: ViewEncapsulation.None,\n imports: [\n CommonModule,\n MatButtonModule,\n MatListModule,\n WorkgroupInfoComponent,\n WorkgroupNodeStatusComponent,\n WorkgroupNodeScoreComponent,\n ComponentNewWorkBadgeComponent,\n WorkgroupComponentGradingComponent\n ],\n selector: 'node-workgroup-item',\n styleUrl: './node-workgroup-item.component.scss',\n templateUrl: './node-workgroup-item.component.html'\n})\nexport class NodeWorkgroupItemComponent {\n private componentIdToHasWork: { [componentId: string]: boolean } = {};\n protected componentIdToIsVisible: { [componentId: string]: boolean } = {};\n @Input() components: ComponentContent[] = [];\n protected disabled: boolean;\n @Input() expanded: boolean;\n protected hasAlert: boolean;\n protected hasNewAlert: boolean;\n @Input() maxScore: number;\n private nodeHasWork: boolean;\n @Input() node: Node;\n @Output() onUpdateExpand: EventEmitter = new EventEmitter();\n protected score: any;\n private status: any;\n protected statusClass: string;\n protected statusText: string = '';\n private subscriptions: Subscription = new Subscription();\n @Input() workgroup: any;\n\n constructor(\n private annotationService: AnnotationService,\n private componentTypeService: ComponentTypeService,\n private projectService: TeacherProjectService\n ) {}\n\n ngOnInit(): void {\n this.updateNode();\n this.updateStatus();\n this.subscribeToAnnotations();\n }\n\n private subscribeToAnnotations(): void {\n this.subscriptions.add(\n this.annotationService.annotationReceived$\n .pipe(\n filter(\n (annotation) =>\n annotation.nodeId === this.node.id &&\n annotation.toWorkgroupId === this.workgroup.workgroupId\n )\n )\n .subscribe(\n () =>\n (this.score = this.annotationService.getTotalNodeScore(\n this.workgroup.workgroupId,\n this.node,\n this.components\n ))\n )\n );\n }\n\n private updateNode(): void {\n this.nodeHasWork = this.projectService.nodeHasWork(this.node.id);\n this.componentIdToHasWork = this.projectService.calculateComponentIdToHasWork(this.components);\n this.componentIdToIsVisible = calculateComponentVisibility(\n this.componentIdToHasWork,\n this.workgroup.nodeStatus.componentStatuses\n );\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.workgroup) {\n const workgroup = changes.workgroup.currentValue;\n this.hasAlert = workgroup.hasAlert;\n this.hasNewAlert = workgroup.hasNewAlert;\n this.status = workgroup.completionStatus;\n this.score = workgroup.score != null ? workgroup.score : '-';\n this.workgroup = workgroup;\n this.updateNode();\n this.updateStatus();\n }\n if (changes.nodeId) {\n this.updateNode();\n }\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n protected getComponentTypeLabel(componentType): string {\n return this.componentTypeService.getComponentTypeLabel(componentType);\n }\n\n private updateStatus(): void {\n switch (this.status) {\n case -1:\n this.statusClass = ' ';\n this.statusText = $localize`Not Assigned`;\n break;\n case 2:\n this.statusClass = 'success';\n if (this.nodeHasWork) {\n this.statusText = $localize`Completed`;\n } else {\n this.statusText = $localize`Visited`;\n }\n break;\n case 1:\n this.statusClass = 'text';\n this.statusText = $localize`Partially Completed`;\n break;\n default:\n this.statusClass = 'text-secondary';\n if (this.nodeHasWork) {\n this.statusText = $localize`No Work`;\n } else {\n this.statusText = $localize`Not Visited`;\n }\n }\n if (this.hasNewAlert) {\n this.statusClass = 'warn';\n }\n this.disabled = this.status === -1;\n }\n\n protected toggleExpand(): void {\n this.onUpdateExpand.emit({ workgroupId: this.workgroup.workgroupId, value: !this.expanded });\n }\n}\n", + "styleUrl": "./node-workgroup-item.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentTypeService", + "type": "ComponentTypeService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 58, + "jsdoctags": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentTypeService", + "type": "ComponentTypeService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "\n \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n @if (expanded && !disabled) {\n \n
    \n @for (component of components; track component.id; let i = $index) {\n @if (componentIdToIsVisible[component.id]) {\n \n
    \n

    \n {{ component.displayIndex + '. ' + getComponentTypeLabel(component.type) }} \n \n

    \n \n
    \n
    \n }\n }\n \n
    \n }\n\n" + }, + { + "name": "NotebookAuthoringComponent", + "id": "component-NotebookAuthoringComponent-9b8e68548bd4f48b7d116cd1546f62da0c78d328c4180ba8074da7aae12199cfc5467faf92e7fa3ebae50799321f0fa2a7e43eb74541e47b1a0f577e869e5d70", + "file": "src/assets/wise5/authoringTool/notebook-authoring/notebook-authoring.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./notebook-authoring.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "notebookChanged", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 36, + "modifierKind": [ + 124 + ] + }, + { + "name": "project", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 37, + "modifierKind": [ + 124 + ] + }, + { + "name": "reportIdToAuthoringNote", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 38, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "contentChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 108, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "getAuthoringReportNote", + "args": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 104, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getReportNote", + "args": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 94, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "initializeNoteAuthoring", + "args": [ + { + "name": "note", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 76, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "note", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "initializeNotesAuthoring", + "args": [ + { + "name": "notes", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 70, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "notes", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "initializeTeacherNotesAuthoring", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 66, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 45, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "reportStarterTextChanged", + "args": [ + { + "name": "reportId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 87, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "reportId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "reportStarterTextDisabled", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 116, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "save", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 112, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "setReportIdToAuthoringNote", + "args": [ + { + "name": "reportId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "authoringReportNote", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "reportId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "authoringReportNote", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CdkTextareaAutosize" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatCheckboxModule", + "type": "module" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatInputModule", + "type": "module" + }, + { + "name": "MatSlideToggleModule", + "type": "module" + }, + { + "name": "TranslatableInputComponent", + "type": "component" + }, + { + "name": "TranslatableRichTextEditorComponent", + "type": "component" + }, + { + "name": "TranslatableTextareaComponent", + "type": "component" + }, + { + "name": "WiseAuthoringTinymceEditorComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { insertWiseLinks, replaceWiseLinks } from '../../common/wise-link/wise-link';\nimport { ConfigService } from '../../services/configService';\nimport { TeacherProjectService } from '../../services/teacherProjectService';\nimport { Subject, debounceTime } from 'rxjs';\nimport { copy } from '../../common/object/object';\nimport { newProjectTemplate } from '../new-project-template';\nimport { TranslatableInputComponent } from '../components/translatable-input/translatable-input.component';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { FormsModule } from '@angular/forms';\nimport { TranslatableTextareaComponent } from '../components/translatable-textarea/translatable-textarea.component';\nimport { TranslatableRichTextEditorComponent } from '../components/translatable-rich-text-editor/translatable-rich-text-editor.component';\nimport { MatInputModule } from '@angular/material/input';\nimport { CdkTextareaAutosize } from '@angular/cdk/text-field';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { WiseAuthoringTinymceEditorComponent } from '../../directives/wise-tinymce-editor/wise-authoring-tinymce-editor.component';\n\n@Component({\n imports: [\n CdkTextareaAutosize,\n FormsModule,\n MatCheckboxModule,\n MatFormFieldModule,\n MatInputModule,\n MatSlideToggleModule,\n TranslatableInputComponent,\n TranslatableRichTextEditorComponent,\n TranslatableTextareaComponent,\n WiseAuthoringTinymceEditorComponent\n ],\n styleUrl: './notebook-authoring.component.scss',\n templateUrl: './notebook-authoring.component.html'\n})\nexport class NotebookAuthoringComponent {\n protected notebookChanged: Subject = new Subject();\n protected project: any;\n protected reportIdToAuthoringNote: any;\n\n constructor(\n private configService: ConfigService,\n private projectService: TeacherProjectService\n ) {}\n\n ngOnInit(): void {\n this.project = this.projectService.project;\n this.reportIdToAuthoringNote = {};\n\n if (this.project.notebook == null) {\n const projectTemplate = copy(newProjectTemplate);\n this.project.notebook = projectTemplate.notebook;\n }\n\n if (this.project.teacherNotebook == null) {\n const projectTemplate = copy(newProjectTemplate);\n projectTemplate.teacherNotebook.enabled = false;\n this.project.teacherNotebook = projectTemplate.teacherNotebook;\n }\n\n this.initializeTeacherNotesAuthoring();\n this.notebookChanged.pipe(debounceTime(1000)).subscribe(() => {\n this.save();\n });\n }\n\n private initializeTeacherNotesAuthoring(): void {\n this.initializeNotesAuthoring(this.project.teacherNotebook.itemTypes.report.notes);\n }\n\n private initializeNotesAuthoring(notes: any[]): void {\n for (const note of notes) {\n this.initializeNoteAuthoring(note);\n }\n }\n\n private initializeNoteAuthoring(note: any): void {\n const authoringReportNote = {\n html: replaceWiseLinks(this.projectService.replaceAssetPaths(note.content))\n };\n this.setReportIdToAuthoringNote(note.reportId, authoringReportNote);\n }\n\n private setReportIdToAuthoringNote(reportId: string, authoringReportNote: any): void {\n this.reportIdToAuthoringNote[reportId] = authoringReportNote;\n }\n\n protected reportStarterTextChanged(reportId: string): void {\n const note = this.getReportNote(reportId);\n const authoringNote = this.getAuthoringReportNote(reportId);\n note.content = insertWiseLinks(this.configService.removeAbsoluteAssetPaths(authoringNote.html));\n this.save();\n }\n\n private getReportNote(id: string): any {\n const teacherNotes = this.project.teacherNotebook.itemTypes.report.notes;\n for (const note of teacherNotes) {\n if (note.reportId === id) {\n return note;\n }\n }\n return null;\n }\n\n private getAuthoringReportNote(id: string): any {\n return this.reportIdToAuthoringNote[id];\n }\n\n protected contentChanged(): void {\n this.notebookChanged.next();\n }\n\n private save(): void {\n this.projectService.saveProject();\n }\n\n protected reportStarterTextDisabled(): boolean {\n return !this.projectService.isDefaultLocale();\n }\n}\n", + "styleUrl": "./notebook-authoring.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 38, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "
    \n

    Notebook Settings

    \n
    \n
    \n \n Student Notebook\n \n
    \n@if (project.notebook.enabled) {\n
    \n
    \n \n
    \n
    \n \n Enable Note\n \n
    \n @if (project.notebook.itemTypes.note.enabled) {\n
    \n
    \n \n \n \n
    \n \n Enable Add Note Button\n \n
    \n \n Require students to write text on every note\n \n
    \n \n Enable Clipping\n \n
    \n \n Enable Student Uploads\n \n
    \n }\n \n Enable Report\n \n @if (project.notebook.itemTypes.report.enabled) {\n
    \n
    \n \n \n \n
    \n @for (reportNote of project.notebook.itemTypes.report.notes; track reportNote) {\n
    \n
    \n \n
    \n
    \n \n Max Score\n \n \n
    \n \n \n Starter Text\n \n
    \n }\n
    \n }\n
    \n}\n
    \n \n Teacher Notebook\n \n
    \n@if (project.teacherNotebook.enabled) {\n
    \n
    \n \n Notebook Label\n \n \n
    \n \n Enable Report\n \n @if (project.teacherNotebook.itemTypes.report.enabled) {\n
    \n
    \n \n Label (Singular)\n \n \n \n Label (Plural)\n \n \n \n Label (Link)\n \n \n
    \n @for (reportNote of project.teacherNotebook.itemTypes.report.notes; track reportNote) {\n
    \n \n Title\n \n \n
    \n \n Description\n \n \n
    \n \n Prompt\n \n \n
    \n Starter Text\n \n
    \n }\n
    \n }\n
    \n}\n" + }, + { + "name": "NotebookGradingComponent", + "id": "component-NotebookGradingComponent-4440d7492f96ad26e762b049ed7d28ad1b3f705edb9781a1fd47c79a38bbf7085a50b43dfaf7a6bf42d8ab5410ce67c313f2e46528615cf2b0480a46a214b9a3", + "file": "src/assets/wise5/classroomMonitor/notebook-grading/notebook-grading.component.ts", + "encapsulation": [ + "ViewEncapsulation.None" + ], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "notebook-grading", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./notebook-grading.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "canViewStudentNames", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 31 + }, + { + "name": "colspan", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 32 + }, + { + "name": "isExpandAll", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 33 + }, + { + "name": "notebookConfig", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 34 + }, + { + "name": "notesEnabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 35 + }, + { + "name": "reportEnabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 36 + }, + { + "name": "reportTitle", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 37 + }, + { + "name": "showAllNotes", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 38 + }, + { + "name": "showAllReports", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 39 + }, + { + "name": "sort", + "defaultValue": "'team'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 40 + }, + { + "name": "sortedWorkgroups", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 41 + }, + { + "name": "teacherWorkgroupId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 42 + }, + { + "name": "workgroupInViewById", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 44 + }, + { + "name": "workgroups", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 43 + }, + { + "name": "workVisibilityById", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 45 + } + ], + "methodsClass": [ + { + "name": "collapseAll", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 209, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "createSortDisplayNames", + "args": [ + { + "name": "direction", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 118, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "direction", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createSortNumNotes", + "args": [ + { + "name": "direction", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 134, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "direction", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createSortReportSaveTime", + "args": [ + { + "name": "direction", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 150, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "direction", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "expandAll", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 199, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getColspan", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 171, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "getNotebookConfigForWorkgroup", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 220, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getServerSaveTime", + "args": [ + { + "name": "workgroup", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 167, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "workgroup", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getWorkgroupNotes", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 185, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isWorkgroupShown", + "args": [ + { + "name": "workgroup", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 231, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "workgroup", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 53, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "onIntersection", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "intersectionObserverEntries", + "type": "IntersectionObserverEntry[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 244, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "intersectionObserverEntries", + "type": "IntersectionObserverEntry[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "onUpdateExpand", + "args": [ + { + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 216, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setSort", + "args": [ + { + "name": "value", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 235, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "value", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setWorkgroupsById", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 192, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "sortTeamAscending", + "args": [ + { + "name": "workgroupA", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "workgroupB", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 110, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "workgroupA", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "workgroupB", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "sortTeamDescending", + "args": [ + { + "name": "workgroupA", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "workgroupB", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 114, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "workgroupA", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "workgroupB", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "sortWorkgroups", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 77, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatList" + }, + { + "name": "MatListItem" + }, + { + "name": "WorkgroupSelectAutocompleteComponent", + "type": "component" + }, + { + "name": "MatButton" + }, + { + "name": "MatIcon" + }, + { + "name": "NgClass" + }, + { + "name": "IntersectionObserverModule", + "type": "module" + }, + { + "name": "NotebookWorkgroupGradingComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, OnInit, ViewEncapsulation } from '@angular/core';\nimport { copy } from '../../common/object/object';\nimport { ConfigService } from '../../services/configService';\nimport { NotebookService } from '../../services/notebookService';\nimport { TeacherDataService } from '../../services/teacherDataService';\nimport { MatList, MatListItem } from '@angular/material/list';\nimport { WorkgroupSelectAutocompleteComponent } from '../../../../app/classroom-monitor/workgroup-select/workgroup-select-autocomplete/workgroup-select-autocomplete.component';\nimport { MatButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\nimport { NgClass } from '@angular/common';\nimport { IntersectionObserverModule } from '@ng-web-apis/intersection-observer';\nimport { NotebookWorkgroupGradingComponent } from '../classroomMonitorComponents/notebook/notebook-workgroup-grading/notebook-workgroup-grading.component';\n\n@Component({\n encapsulation: ViewEncapsulation.None,\n imports: [\n MatList,\n MatListItem,\n WorkgroupSelectAutocompleteComponent,\n MatButton,\n MatIcon,\n NgClass,\n IntersectionObserverModule,\n NotebookWorkgroupGradingComponent\n ],\n selector: 'notebook-grading',\n styleUrl: './notebook-grading.component.scss',\n templateUrl: './notebook-grading.component.html'\n})\nexport class NotebookGradingComponent implements OnInit {\n canViewStudentNames: boolean;\n colspan: number;\n isExpandAll: boolean = false;\n notebookConfig: any;\n notesEnabled: boolean = false;\n reportEnabled: boolean = false;\n reportTitle: string = '';\n showAllNotes: boolean = false;\n showAllReports: boolean = false;\n sort: string = 'team';\n sortedWorkgroups: any[] = [];\n teacherWorkgroupId: number;\n workgroups: any[];\n workgroupInViewById: any = {};\n workVisibilityById: any = {};\n\n constructor(\n private configService: ConfigService,\n private notebookService: NotebookService,\n private dataService: TeacherDataService\n ) {}\n\n ngOnInit(): void {\n this.teacherWorkgroupId = this.configService.getWorkgroupId();\n this.workgroups = copy(this.configService.getClassmateUserInfos());\n this.notebookConfig = this.notebookService.getStudentNotebookConfig();\n this.notesEnabled = this.notebookConfig.itemTypes.note.enabled;\n this.reportEnabled = this.notebookConfig.itemTypes.report.enabled;\n this.reportTitle = this.notebookConfig.itemTypes.report.notes[0].title;\n this.colspan = this.getColspan();\n for (const workgroup of this.workgroups) {\n if (this.notesEnabled) {\n workgroup.notes = this.getWorkgroupNotes(workgroup.workgroupId);\n }\n if (this.reportEnabled) {\n const reportId = this.notebookConfig.itemTypes.report.notes[0].reportId;\n workgroup.report = this.notebookService.getLatestNotebookReportItemByReportId(\n reportId,\n workgroup.workgroupId\n );\n }\n }\n this.setWorkgroupsById();\n this.sortWorkgroups();\n }\n\n sortWorkgroups(): void {\n this.sortedWorkgroups = [];\n for (const workgroup of this.workgroups) {\n this.sortedWorkgroups.push(workgroup);\n }\n switch (this.sort) {\n case 'team':\n this.sortedWorkgroups.sort(this.sortTeamAscending);\n break;\n case '-team':\n this.sortedWorkgroups.sort(this.sortTeamDescending);\n break;\n case 'student':\n this.sortedWorkgroups.sort(this.createSortDisplayNames('asc'));\n break;\n case '-student':\n this.sortedWorkgroups.sort(this.createSortDisplayNames('desc'));\n break;\n case 'notes':\n this.sortedWorkgroups.sort(this.createSortNumNotes('asc'));\n break;\n case '-notes':\n this.sortedWorkgroups.sort(this.createSortNumNotes('desc'));\n break;\n case 'status':\n this.sortedWorkgroups.sort(this.createSortReportSaveTime('asc'));\n break;\n case '-status':\n this.sortedWorkgroups.sort(this.createSortReportSaveTime('desc'));\n break;\n }\n }\n\n private sortTeamAscending(workgroupA: any, workgroupB: any): number {\n return workgroupA.workgroupId - workgroupB.workgroupId;\n }\n\n private sortTeamDescending(workgroupA: any, workgroupB: any): number {\n return workgroupB.workgroupId - workgroupA.workgroupId;\n }\n\n private createSortDisplayNames(direction: string): any {\n return (workgroupA: any, workgroupB: any): number => {\n const aDisplayNames = workgroupA.displayNames;\n const bDisplayNames = workgroupB.displayNames;\n if (aDisplayNames === bDisplayNames) {\n return workgroupA.workgroupId - workgroupB.workgroupId;\n } else {\n if (direction === 'asc') {\n return aDisplayNames.toLowerCase().localeCompare(bDisplayNames.toLowerCase());\n } else {\n return bDisplayNames.toLowerCase().localeCompare(aDisplayNames.toLowerCase());\n }\n }\n };\n }\n\n private createSortNumNotes(direction: string): any {\n return (workgroupA: any, workgroupB: any): number => {\n const aNumNotes = workgroupA.notes.length;\n const bNumNotes = workgroupB.notes.length;\n if (aNumNotes === bNumNotes) {\n return workgroupA.workgroupId - workgroupB.workgroupId;\n } else {\n if (direction === 'asc') {\n return aNumNotes - bNumNotes;\n } else {\n return bNumNotes - aNumNotes;\n }\n }\n };\n }\n\n private createSortReportSaveTime(direction: string): any {\n const getServerSaveTime = this.getServerSaveTime;\n return (workgroupA: any, workgroupB: any) => {\n const aServerSaveTime = getServerSaveTime(workgroupA);\n const bServerSaveTime = getServerSaveTime(workgroupB);\n if (aServerSaveTime === bServerSaveTime) {\n return workgroupA.workgroupId - workgroupB.workgroupId;\n } else {\n if (direction === 'asc') {\n return aServerSaveTime - bServerSaveTime;\n } else {\n return bServerSaveTime - aServerSaveTime;\n }\n }\n };\n }\n\n private getServerSaveTime(workgroup: any): number {\n return workgroup.report?.serverSaveTime ? workgroup.report.serverSaveTime : 0;\n }\n\n private getColspan(): number {\n let colspan = 4;\n if (this.notesEnabled) {\n if (this.reportEnabled) {\n // TODO: set to 5 when notebook grading is fixed\n // colspan = 5;\n colspan = 4;\n } else {\n colspan = 3;\n }\n }\n return colspan;\n }\n\n private getWorkgroupNotes(workgroupId: number): any[] {\n const notes = this.notebookService.getPrivateNotebookItems(workgroupId);\n return notes.filter((note) => {\n return note.type !== 'report';\n });\n }\n\n private setWorkgroupsById(): void {\n for (const workgroup of this.workgroups) {\n this.workVisibilityById[workgroup.workgroupId] = false;\n this.workgroupInViewById[workgroup.workgroupId] = false;\n }\n }\n\n expandAll(): void {\n for (const workgroup of this.workgroups) {\n const workgroupId = workgroup.workgroupId;\n if (this.workgroupInViewById[workgroupId]) {\n this.workVisibilityById[workgroupId] = true;\n }\n }\n this.isExpandAll = true;\n }\n\n collapseAll(): void {\n for (const workgroup of this.workgroups) {\n this.workVisibilityById[workgroup.workgroupId] = false;\n }\n this.isExpandAll = false;\n }\n\n onUpdateExpand({ workgroupId, isExpanded }): void {\n this.workVisibilityById[workgroupId] = isExpanded;\n }\n\n getNotebookConfigForWorkgroup(workgroupId: number): any {\n if (\n this.configService.isRunOwner(workgroupId) ||\n this.configService.isRunSharedTeacher(workgroupId)\n ) {\n return this.notebookService.getTeacherNotebookConfig();\n } else {\n return this.notebookService.getStudentNotebookConfig();\n }\n }\n\n isWorkgroupShown(workgroup: number): boolean {\n return this.dataService.isWorkgroupShown(workgroup);\n }\n\n setSort(value: string): void {\n if (this.sort === value) {\n this.sort = `-${value}`;\n } else {\n this.sort = value;\n }\n this.sortWorkgroups();\n }\n\n onIntersection(\n workgroupId: number,\n intersectionObserverEntries: IntersectionObserverEntry[]\n ): void {\n for (const entry of intersectionObserverEntries) {\n this.workgroupInViewById[workgroupId] = entry.isIntersecting;\n if (this.isExpandAll && entry.isIntersecting) {\n this.workVisibilityById[workgroupId] = true;\n }\n }\n }\n}\n", + "styleUrl": "./notebook-grading.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "notebookService", + "type": "NotebookService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 45, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "notebookService", + "type": "NotebookService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "
    \n
    \n \n \n
    \n \n \n
    \n \n + Expand All\n \n \n - Collapse All\n \n
    \n
    \n
    \n \n
    \n \n Team\n @if (sort === 'team' || sort === '-team') {\n \n arrow_drop_up\n \n }\n \n \n Names\n @if (sort === 'student' || sort === '-student') {\n \n arrow_drop_up\n \n }\n \n @if (notesEnabled) {\n \n Notes\n @if (sort === 'notes' || sort === '-notes') {\n \n arrow_drop_up\n \n }\n \n }\n @if (reportEnabled) {\n \n {{ reportTitle }}\n @if (sort === 'status' || sort === '-status') {\n \n arrow_drop_up\n \n }\n \n }\n
    \n
    \n
    \n @for (workgroup of sortedWorkgroups; track workgroup) {\n @if (isWorkgroupShown(workgroup)) {\n \n \n }\n }\n
    \n
    \n
    \n
    \n" + }, + { + "name": "NotebookItemComponent", + "id": "component-NotebookItemComponent-8fa696ecf6e3231923857da06a4ebc0a160ec181b2f6cda8b07f461fc382441b2fa32b6694189993a673b28ea4320a80443f8e94a1ab5d241b163fa3bf1091af", + "file": "src/app/notebook/notebook-item/notebook-item.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "notebook-item", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "notebook-item.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "config", + "deprecated": false, + "deprecationMessage": "", + "line": 31, + "type": "any", + "decorators": [] + }, + { + "name": "group", + "deprecated": false, + "deprecationMessage": "", + "line": 32, + "type": "string", + "decorators": [] + }, + { + "name": "isChooseMode", + "deprecated": false, + "deprecationMessage": "", + "line": 33, + "type": "boolean", + "decorators": [] + }, + { + "name": "itemId", + "deprecated": false, + "deprecationMessage": "", + "line": 35, + "type": "string", + "decorators": [] + }, + { + "name": "note", + "deprecated": false, + "deprecationMessage": "", + "line": 37, + "type": "any", + "decorators": [] + } + ], + "outputsClass": [ + { + "name": "onSelect", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 39, + "type": "EventEmitter" + } + ], + "propertiesClass": [ + { + "name": "canDelete", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 28, + "modifierKind": [ + 124 + ] + }, + { + "name": "canRevive", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 29, + "modifierKind": [ + 124 + ] + }, + { + "name": "color", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 30, + "modifierKind": [ + 124 + ] + }, + { + "name": "item", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 34, + "modifierKind": [ + 124 + ] + }, + { + "name": "label", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 36, + "modifierKind": [ + 124 + ] + }, + { + "name": "notebookUpdatedSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 38, + "modifierKind": [ + 123 + ] + }, + { + "name": "type", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 40, + "modifierKind": [ + 123 + ] + } + ], + "methodsClass": [ + { + "name": "canDeleteNotebookItem", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 123, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "canReviveNotebookItem", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 127, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "delete", + "args": [ + { + "name": "event", + "type": "Event", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "event", + "type": "Event", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getItemNodePosition", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 79, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "isMyNotebookItem", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 131, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "ngOnChanges", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 71, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 75, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 49, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "revive", + "args": [ + { + "name": "event", + "type": "Event", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 100, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "event", + "type": "Event", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "select", + "args": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 117, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatCardModule", + "type": "module" + }, + { + "name": "MatDialogModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { MatDialog, MatDialogModule } from '@angular/material/dialog';\nimport { Subscription } from 'rxjs';\nimport { DialogWithConfirmComponent } from '../../../assets/wise5/directives/dialog-with-confirm/dialog-with-confirm.component';\nimport { ConfigService } from '../../../assets/wise5/services/configService';\nimport { NotebookService } from '../../../assets/wise5/services/notebookService';\nimport { ProjectService } from '../../../assets/wise5/services/projectService';\nimport { MatCardModule } from '@angular/material/card';\nimport { CommonModule } from '@angular/common';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n imports: [\n CommonModule,\n MatButtonModule,\n MatCardModule,\n MatDialogModule,\n MatIconModule,\n MatTooltipModule\n ],\n selector: 'notebook-item',\n styleUrl: 'notebook-item.component.scss',\n templateUrl: 'notebook-item.component.html'\n})\nexport class NotebookItemComponent {\n protected canDelete: boolean;\n protected canRevive: boolean;\n protected color: string;\n @Input() config: any;\n @Input() group: string;\n @Input() isChooseMode: boolean;\n protected item: any;\n @Input() itemId: string;\n protected label: any;\n @Input() note: any;\n private notebookUpdatedSubscription: Subscription;\n @Output() onSelect: EventEmitter = new EventEmitter();\n private type: string;\n\n constructor(\n private configService: ConfigService,\n private dialog: MatDialog,\n private notebookService: NotebookService,\n private projectService: ProjectService\n ) {}\n\n ngOnInit(): void {\n this.item = this.note;\n this.type = this.item ? this.item.type : null;\n this.label = this.config.itemTypes[this.type].label;\n if (this.group === 'public') {\n this.color = 'orange';\n } else {\n this.color = this.label.color;\n }\n this.canDelete = this.canDeleteNotebookItem();\n this.canRevive = this.canReviveNotebookItem();\n\n this.notebookUpdatedSubscription = this.notebookService.notebookUpdated$.subscribe(\n ({ notebook }) => {\n if (notebook.items[this.itemId]) {\n const items = notebook.items[this.itemId];\n this.item = items[items.length - 1];\n }\n }\n );\n }\n\n ngOnChanges(): void {\n this.label = this.config.itemTypes[this.type]?.label;\n }\n\n ngOnDestroy(): void {\n this.notebookUpdatedSubscription.unsubscribe();\n }\n\n protected getItemNodePosition(): string {\n return this.item == null ? '' : this.projectService.getNodePositionById(this.item.nodeId);\n }\n\n protected delete(event: Event): void {\n event.stopPropagation();\n this.dialog\n .open(DialogWithConfirmComponent, {\n data: {\n content: $localize`Are you sure you want to delete this ${this.label.singular}:singular term for note in unit:?`,\n title: $localize`Delete ${this.label.singular}:singular term for note in unit:`\n }\n })\n .afterClosed()\n .subscribe((doDelete: boolean) => {\n if (doDelete) {\n this.notebookService.deleteNote(this.item);\n }\n });\n }\n\n protected revive(event: Event): void {\n event.stopPropagation();\n this.dialog\n .open(DialogWithConfirmComponent, {\n data: {\n content: $localize`Are you sure you want to revive this ${this.label.singular}:singular term for note in unit:?`,\n title: $localize`Revive ${this.label.singular}:singular term for note in unit:`\n }\n })\n .afterClosed()\n .subscribe((doRevive: boolean) => {\n if (doRevive) {\n this.notebookService.reviveNote(this.item);\n }\n });\n }\n\n protected select(event: any): void {\n if (this.onSelect) {\n this.onSelect.emit({ event: event, note: this.item });\n }\n }\n\n private canDeleteNotebookItem(): boolean {\n return this.isMyNotebookItem() && this.item.serverDeleteTime == null && !this.isChooseMode;\n }\n\n private canReviveNotebookItem(): boolean {\n return this.item.serverDeleteTime != null && !this.isChooseMode;\n }\n\n private isMyNotebookItem(): boolean {\n return this.item.workgroupId === this.configService.getWorkgroupId();\n }\n}\n", + "styleUrl": "notebook-item.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "notebookService", + "type": "NotebookService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 40, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "notebookService", + "type": "NotebookService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "\n \n @if (item.content.attachments.length > 0) {\n \n }\n @if (item.content.text) {\n
    \n {{ item.content.text }}\n
    \n }\n \n \n \n place{{ getItemNodePosition() }}\n \n \n @if (canDelete) {\n \n delete\n \n }\n @if (canRevive) {\n \n undo\n \n }\n \n\n" + }, + { + "name": "NotebookLauncherComponent", + "id": "component-NotebookLauncherComponent-74d992f5d146f4a4e8a6308fb88499af4cb3ce38185c342dd6ed061782c4e80197f57304153ab8cae685ca2fc7366b5fd5d8e4574bdfff5005f403ac6998ca9e", + "file": "src/app/notebook/notebook-launcher/notebook-launcher.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "notebook-launcher", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "notebook-launcher.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "notebookConfig", + "deprecated": false, + "deprecationMessage": "", + "line": 16, + "type": "any", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "label", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 124 + ] + }, + { + "name": "subscription", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "modifierKind": [ + 123 + ] + } + ], + "methodsClass": [ + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 21, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "setLabel", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 30, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "showNotes", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 34, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input } from '@angular/core';\nimport { NotebookService } from '../../../assets/wise5/services/notebookService';\nimport { ProjectService } from '../../../assets/wise5/services/projectService';\nimport { Subscription } from 'rxjs';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@Component({\n imports: [MatButtonModule, MatIconModule, MatTooltipModule],\n selector: 'notebook-launcher',\n templateUrl: 'notebook-launcher.component.html'\n})\nexport class NotebookLauncherComponent {\n protected label: string = '';\n @Input() notebookConfig: any;\n private subscription: Subscription = new Subscription();\n\n constructor(private notebookService: NotebookService, private projectService: ProjectService) {}\n\n ngOnInit(): void {\n this.setLabel();\n this.subscription.add(this.projectService.projectParsed$.subscribe(() => this.setLabel()));\n }\n\n ngOnDestroy(): void {\n this.subscription.unsubscribe();\n }\n\n private setLabel(): void {\n this.label = this.notebookConfig.itemTypes.note.label.link;\n }\n\n protected showNotes(): void {\n this.notebookService.setNotesVisible(true);\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "notebookService", + "type": "NotebookService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 17, + "jsdoctags": [ + { + "name": "notebookService", + "type": "NotebookService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "\n {{ notebookConfig.icon }}\n\n" + }, + { + "name": "NotebookNotesComponent", + "id": "component-NotebookNotesComponent-7dcf0522fcba6b3f8cad22a8e20460a8618c933f35f0b33735146ad523a06b1625b5e9c58f1dd4d190e10bbf97495a1bfc9f301d04823bef3c308d5fc4ede761", + "file": "src/app/notebook/notebook-notes/notebook-notes.component.ts", + "encapsulation": [ + "ViewEncapsulation.None" + ], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "notebook-notes", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "notebook-notes.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "viewOnly", + "deprecated": false, + "deprecationMessage": "", + "line": 43, + "type": "boolean", + "decorators": [] + }, + { + "name": "config", + "deprecated": false, + "deprecationMessage": "", + "line": 8, + "type": "any", + "decorators": [], + "inheritance": { + "file": "NotebookParentComponent" + } + }, + { + "name": "mode", + "deprecated": false, + "deprecationMessage": "", + "line": 9, + "type": "string", + "decorators": [], + "inheritance": { + "file": "NotebookParentComponent" + } + }, + { + "name": "workgroupId", + "deprecated": false, + "deprecationMessage": "", + "line": 10, + "type": "number", + "decorators": [], + "inheritance": { + "file": "NotebookParentComponent" + } + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "groupNameToGroup", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "object", + "indexKey": "", + "optional": false, + "description": "", + "line": 35, + "modifierKind": [ + 123 + ] + }, + { + "name": "groups", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 34, + "modifierKind": [ + 124 + ] + }, + { + "name": "hasPrivateNotes", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 36, + "modifierKind": [ + 124 + ] + }, + { + "name": "insertArgs", + "defaultValue": "{\n insertMode: false\n }", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 37, + "modifierKind": [ + 124 + ] + }, + { + "name": "label", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 40, + "modifierKind": [ + 124 + ] + }, + { + "name": "selectedTabIndex", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 41, + "modifierKind": [ + 124 + ] + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 42, + "modifierKind": [ + 123 + ] + }, + { + "name": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "type": "ConfigService", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "NotebookParentComponent" + } + }, + { + "name": "notebook", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "inheritance": { + "file": "NotebookParentComponent" + } + }, + { + "name": "NotebookService", + "deprecated": false, + "deprecationMessage": "", + "type": "NotebookService", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "NotebookParentComponent" + } + } + ], + "methodsClass": [ + { + "name": "addNote", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 211, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "addPersonalGroupToGroups", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 117, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "addSpacesToGroups", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 135, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "close", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 225, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "isHasPrivateNotes", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 113, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 105, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 54, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "NotebookParentComponent" + } + }, + { + "name": "removeNotebookNote", + "args": [ + { + "name": "group", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "localNotebookItemId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 200, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "group", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "localNotebookItemId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "select", + "args": [ + { + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 215, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setLabel", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 109, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "updateNotebookNote", + "args": [ + { + "name": "group", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "localNotebookItemId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "notebookItem", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 180, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "group", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "localNotebookItemId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "notebookItem", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "updatePrivateNotebookNote", + "args": [ + { + "name": "notebookItem", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 150, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "notebookItem", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "updatePublicNotebookNote", + "args": [ + { + "name": "notebookItem", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 166, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "notebookItem", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isStudentNotebook", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 36, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "NotebookParentComponent" + } + }, + { + "name": "setConfig", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 28, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "NotebookParentComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatDividerModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatTabsModule", + "type": "module" + }, + { + "name": "MatToolbarModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + }, + { + "name": "NotebookItemComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { ConfigService } from '../../../assets/wise5/services/configService';\nimport { NotebookService } from '../../../assets/wise5/services/notebookService';\nimport { ProjectService } from '../../../assets/wise5/services/projectService';\nimport { StudentDataService } from '../../../assets/wise5/services/studentDataService';\nimport { NotebookParentComponent } from '../notebook-parent/notebook-parent.component';\nimport { CommonModule } from '@angular/common';\nimport { NotebookItemComponent } from '../notebook-item/notebook-item.component';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n imports: [\n CommonModule,\n MatButtonModule,\n MatDividerModule,\n MatIconModule,\n MatTabsModule,\n MatToolbarModule,\n MatTooltipModule,\n NotebookItemComponent\n ],\n selector: 'notebook-notes',\n styleUrl: 'notebook-notes.component.scss',\n templateUrl: 'notebook-notes.component.html',\n encapsulation: ViewEncapsulation.None\n})\nexport class NotebookNotesComponent extends NotebookParentComponent {\n protected groups = [];\n private groupNameToGroup = {};\n protected hasPrivateNotes: boolean = false;\n protected insertArgs: any = {\n insertMode: false\n };\n protected label: any;\n protected selectedTabIndex = 0;\n private subscriptions: Subscription = new Subscription();\n @Input() viewOnly: boolean;\n\n constructor(\n configService: ConfigService,\n private dataService: StudentDataService,\n NotebookService: NotebookService,\n private projectService: ProjectService\n ) {\n super(configService, NotebookService);\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n this.setLabel();\n this.addPersonalGroupToGroups();\n this.addSpacesToGroups();\n this.hasPrivateNotes = this.isHasPrivateNotes();\n\n this.subscriptions.add(\n this.NotebookService.notebookUpdated$.subscribe(({ notebookItem }) => {\n if (\n (notebookItem.groups == null || notebookItem.groups.length === 0) &&\n notebookItem.type === 'note'\n ) {\n this.updatePrivateNotebookNote(notebookItem);\n }\n if (notebookItem.groups != null && notebookItem.groups.includes('public')) {\n this.updatePublicNotebookNote(notebookItem);\n }\n this.hasPrivateNotes = this.isHasPrivateNotes();\n })\n );\n\n this.subscriptions.add(\n this.NotebookService.insertMode$.subscribe((args) => {\n this.insertArgs = args;\n if (args.visibleSpace) {\n this.selectedTabIndex = args.visibleSpace === 'public' ? 1 : 0;\n }\n })\n );\n\n this.subscriptions.add(\n this.NotebookService.publicNotebookItemsRetrieved$.subscribe(() => {\n for (const group of this.groups) {\n if (group.name !== 'private') {\n group.items = this.NotebookService.publicNotebookItems[group.name];\n }\n }\n })\n );\n\n this.subscriptions.add(\n this.projectService.projectParsed$.subscribe(() => {\n this.setConfig();\n this.setLabel();\n })\n );\n\n this.NotebookService.retrievePublicNotebookItems('public');\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n private setLabel(): void {\n this.label = this.config.itemTypes.note.label;\n }\n\n isHasPrivateNotes(): boolean {\n return this.groupNameToGroup['private'].items.some((note) => note.serverDeleteTime == null);\n }\n\n addPersonalGroupToGroups(): void {\n const personalGroup = {\n title: $localize`Personal`,\n name: 'private',\n isEditAllowed: true,\n items: []\n };\n this.groupNameToGroup['private'] = personalGroup;\n for (const [personalItemKey, personalItemValue] of Object.entries(this.notebook.items)) {\n const personalItems = personalItemValue as any;\n const item = personalItems[personalItems.length - 1];\n if (item.type === 'note') {\n personalGroup.items.push(item);\n }\n }\n this.groups.push(personalGroup);\n }\n\n private addSpacesToGroups(): void {\n for (const space of this.projectService.getSpaces()) {\n if (space.isShowInNotebook) {\n const spaceGroup = {\n title: space.name,\n name: space.id,\n isEditAllowed: true,\n items: []\n };\n this.groupNameToGroup[space.id] = spaceGroup;\n this.groups.push(spaceGroup);\n }\n }\n }\n\n private updatePrivateNotebookNote(notebookItem: any): void {\n this.updateNotebookNote(\n this.groupNameToGroup['private'],\n notebookItem.localNotebookItemId,\n notebookItem.workgroupId,\n notebookItem\n );\n if (this.groupNameToGroup['public'] != null) {\n this.removeNotebookNote(\n this.groupNameToGroup['public'],\n notebookItem.localNotebookItemId,\n notebookItem.workgroupId\n );\n }\n }\n\n private updatePublicNotebookNote(notebookItem: any): void {\n this.updateNotebookNote(\n this.groupNameToGroup['public'],\n notebookItem.localNotebookItemId,\n notebookItem.workgroupId,\n notebookItem\n );\n this.removeNotebookNote(\n this.groupNameToGroup['private'],\n notebookItem.localNotebookItemId,\n notebookItem.workgroupId\n );\n }\n\n private updateNotebookNote(\n group: any,\n localNotebookItemId: string,\n workgroupId: number,\n notebookItem: any\n ): void {\n let added = false;\n let items = group.items;\n for (let i = 0; i < items.length; i++) {\n let item = items[i];\n if (item.localNotebookItemId == localNotebookItemId && item.workgroupId == workgroupId) {\n items[i] = notebookItem;\n added = true;\n }\n }\n if (!added) {\n items.push(notebookItem);\n }\n }\n\n private removeNotebookNote(group: any, localNotebookItemId: string, workgroupId: number): void {\n let items = group.items;\n for (let i = 0; i < items.length; i++) {\n let item = items[i];\n if (item.localNotebookItemId == localNotebookItemId && item.workgroupId == workgroupId) {\n items.splice(i, 1);\n i--;\n }\n }\n }\n\n protected addNote(): void {\n this.NotebookService.addNote(this.dataService.getCurrentNodeId());\n }\n\n protected select({ event, note }: any): void {\n if (this.insertArgs.insertMode) {\n this.insertArgs.notebookItem = note;\n this.NotebookService.broadcastNotebookItemChosen(this.insertArgs);\n } else {\n const isEditMode = !this.viewOnly;\n this.NotebookService.editNote(this.dataService.getCurrentNodeId(), note, isEditMode);\n }\n }\n\n protected close(): void {\n this.NotebookService.closeNotes();\n }\n}\n", + "styleUrl": "notebook-notes.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "NotebookService", + "type": "NotebookService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 43, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "NotebookService", + "type": "NotebookService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "NotebookParentComponent" + ], + "templateData": "\n
    \n @if (!hasPrivateNotes) {\n

    You haven't created any {{ label.plural }} yet.

    \n }\n @for (note of group.items; track note) {\n @if (note.serverDeleteTime == null) {\n \n }\n }\n
    \n
    \n\n\n
    \n \n
    \n
    \n\n\n \n @for (group of groups; track group) {\n \n
    \n \n
    \n
    \n }\n \n
    \n\n
    \n @if (mode !== 'classroomMonitor') {\n \n @if (insertArgs.insertMode) {\n

    Select item to insert

    \n } @else {\n

    {{ label.link }}

    \n }\n \n \n close\n \n
    \n \n
    \n 1 ? multipleGroups : oneGroup\" />\n
    \n @if (config.itemTypes.note.enableAddNote) {\n \n add\n \n }\n }\n @if (mode === 'classroomMonitor') {\n
    \n @for (group of groups; track group) {\n
    \n @if (groups.length > 1) {\n

    \n {{ group.title }}\n

    \n }\n @if (group.name === 'private' && !hasPrivateNotes) {\n

    Team hasn't created any {{ label.plural }} yet.

    \n }\n
    \n @for (note of group.items; track note) {\n @if (note.serverDeleteTime == null && this.workgroupId === note.workgroupId) {\n \n }\n }\n
    \n
    \n }\n
    \n }\n
    \n" + }, + { + "name": "NotebookReportComponent", + "id": "component-NotebookReportComponent-9bbb6f2a789dffa9faa9c7828c1d580b0a91d39cc81ba68596297214b994e5c3b2753f77d323d8e96b84c4a5e14d344c5f93f60a9f27cafde381f2ec400fa6ae", + "file": "src/app/notebook/notebook-report/notebook-report.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "notebook-report", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "notebook-report.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "config", + "deprecated": false, + "deprecationMessage": "", + "line": 8, + "type": "any", + "decorators": [], + "inheritance": { + "file": "NotebookParentComponent" + } + }, + { + "name": "mode", + "deprecated": false, + "deprecationMessage": "", + "line": 9, + "type": "string", + "decorators": [], + "inheritance": { + "file": "NotebookParentComponent" + } + }, + { + "name": "workgroupId", + "deprecated": false, + "deprecationMessage": "", + "line": 10, + "type": "number", + "decorators": [], + "inheritance": { + "file": "NotebookParentComponent" + } + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "autoSaveIntervalId", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 36, + "modifierKind": [ + 123 + ] + }, + { + "name": "autoSaveIntervalMS", + "defaultValue": "30000", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 35, + "modifierKind": [ + 123 + ] + }, + { + "name": "collapsed", + "defaultValue": "true", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 37, + "modifierKind": [ + 124 + ] + }, + { + "name": "dirty", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 38, + "modifierKind": [ + 124 + ] + }, + { + "name": "full", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 39, + "modifierKind": [ + 124 + ] + }, + { + "name": "hasReport", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 41, + "modifierKind": [ + 124 + ] + }, + { + "name": "isAddNoteButtonAvailable", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 40, + "modifierKind": [ + 124 + ] + }, + { + "name": "reportId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 42, + "modifierKind": [ + 124 + ] + }, + { + "name": "reportItem", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 43, + "modifierKind": [ + 124 + ] + }, + { + "name": "reportItemContent", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 44, + "modifierKind": [ + 124 + ] + }, + { + "name": "saveTime", + "defaultValue": "null", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 45, + "modifierKind": [ + 124 + ] + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 46, + "modifierKind": [ + 123 + ] + }, + { + "name": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "type": "ConfigService", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "NotebookParentComponent" + } + }, + { + "name": "notebook", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "inheritance": { + "file": "NotebookParentComponent" + } + }, + { + "name": "NotebookService", + "deprecated": false, + "deprecationMessage": "", + "type": "NotebookService", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "NotebookParentComponent" + } + } + ], + "methodsClass": [ + { + "name": "addNotebookItemContent", + "args": [ + { + "name": "$event", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 150, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "$event", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "changed", + "args": [ + { + "name": "value", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 155, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "value", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "fullscreen", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 140, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 103, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 63, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "NotebookParentComponent" + } + }, + { + "name": "saveNotebookReportItem", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 172, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "setReportItem", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 107, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "startAutoSaveInterval", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 163, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "toggleCollapse", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 128, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "isStudentNotebook", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 36, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "NotebookParentComponent" + } + }, + { + "name": "setConfig", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 28, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "NotebookParentComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatCardModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + }, + { + "name": "SaveTimeMessageComponent", + "type": "component" + }, + { + "name": "WiseTinymceEditorComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { Subscription } from 'rxjs';\nimport { SaveTimeMessageComponent } from '../../../assets/wise5/common/save-time-message/save-time-message.component';\nimport {\n insertWiseLinks,\n replaceWiseLinks\n} from '../../../assets/wise5/common/wise-link/wise-link';\nimport { WiseTinymceEditorComponent } from '../../../assets/wise5/directives/wise-tinymce-editor/wise-tinymce-editor.component';\nimport { ConfigService } from '../../../assets/wise5/services/configService';\nimport { NotebookService } from '../../../assets/wise5/services/notebookService';\nimport { ProjectService } from '../../../assets/wise5/services/projectService';\nimport { NotebookParentComponent } from '../notebook-parent/notebook-parent.component';\nimport { BreakpointObserver } from '@angular/cdk/layout';\n\n@Component({\n imports: [\n CommonModule,\n MatButtonModule,\n MatCardModule,\n MatIconModule,\n MatTooltipModule,\n SaveTimeMessageComponent,\n WiseTinymceEditorComponent\n ],\n selector: 'notebook-report',\n styleUrl: 'notebook-report.component.scss',\n templateUrl: 'notebook-report.component.html'\n})\nexport class NotebookReportComponent extends NotebookParentComponent {\n private autoSaveIntervalMS: number = 30000;\n private autoSaveIntervalId: any;\n protected collapsed: boolean = true;\n protected dirty: boolean = false;\n protected full: boolean = false;\n protected isAddNoteButtonAvailable: boolean;\n protected hasReport: boolean = false;\n protected reportId: number;\n protected reportItem: any;\n protected reportItemContent: any;\n protected saveTime: number = null;\n private subscriptions: Subscription = new Subscription();\n\n constructor(\n private breakpointObserver: BreakpointObserver,\n configService: ConfigService,\n notebookService: NotebookService,\n private projectService: ProjectService\n ) {\n super(configService, notebookService);\n this.breakpointObserver.observe(['(max-width: 40rem)']).subscribe((result) => {\n if (!this.collapsed) {\n this.collapsed = true;\n this.fullscreen();\n }\n });\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n this.reportId = this.config.itemTypes.report.notes[0].reportId;\n this.setReportItem();\n if (this.reportItem == null) {\n return;\n }\n if (this.mode !== 'classroomMonitor') {\n this.reportItem.id = null; // set the id to null so it can be inserted as initial version, as opposed to updated. this is true for both new and just-loaded reports.\n }\n this.startAutoSaveInterval();\n this.isAddNoteButtonAvailable = this.config.itemTypes.note.enabled;\n\n this.subscriptions.add(\n this.NotebookService.showReportAnnotations$.subscribe(() => {\n if (this.collapsed) {\n this.toggleCollapse();\n }\n const $notebookReportContent = $('.notebook-report__content');\n setTimeout(() => {\n $notebookReportContent.animate(\n {\n scrollTop: $notebookReportContent.prop('scrollHeight')\n },\n 500\n );\n }, 500);\n })\n );\n\n this.subscriptions.add(\n this.projectService.projectParsed$.subscribe(() => {\n if (this.saveTime == null) {\n this.setConfig();\n this.setReportItem();\n }\n })\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n private setReportItem(): void {\n this.reportItem = this.NotebookService.getLatestNotebookReportItemByReportId(\n this.reportId,\n this.workgroupId\n );\n if (this.reportItem) {\n this.hasReport = true;\n const clientSaveTime = this.ConfigService.convertToClientTimestamp(\n this.reportItem.serverSaveTime\n );\n this.saveTime = clientSaveTime;\n } else {\n this.reportItem = this.NotebookService.getTemplateReportItemByReportId(this.reportId);\n }\n if (this.reportItem != null) {\n this.reportItemContent = this.projectService.injectAssetPaths(\n replaceWiseLinks(this.reportItem.content.content)\n );\n }\n }\n\n protected toggleCollapse(): void {\n if (this.collapsed && this.breakpointObserver.isMatched('(max-width: 40rem)')) {\n this.fullscreen();\n return;\n }\n if (this.full) {\n this.full = false;\n this.NotebookService.setReportFullScreen(false);\n }\n this.collapsed = !this.collapsed;\n }\n\n protected fullscreen(): void {\n if (this.collapsed) {\n this.full = true;\n this.collapsed = false;\n } else {\n this.full = !this.full;\n }\n this.NotebookService.setReportFullScreen(this.full);\n }\n\n protected addNotebookItemContent($event: any): void {\n this.NotebookService.setInsertMode({ insertMode: true, requester: 'report' });\n this.NotebookService.setNotesVisible(true);\n }\n\n protected changed(value: string): void {\n this.dirty = true;\n this.reportItem.content.content = this.ConfigService.removeAbsoluteAssetPaths(\n insertWiseLinks(value)\n );\n this.saveTime = null;\n }\n\n private startAutoSaveInterval(): void {\n clearInterval(this.autoSaveIntervalId);\n this.autoSaveIntervalId = setInterval(() => {\n if (this.dirty) {\n this.saveNotebookReportItem();\n }\n }, this.autoSaveIntervalMS);\n }\n\n protected saveNotebookReportItem(): void {\n this.NotebookService.saveNotebookItem(\n this.reportItem.id,\n this.reportItem.nodeId,\n this.reportItem.localNotebookItemId,\n this.reportItem.type,\n this.reportItem.title,\n this.reportItem.content,\n this.reportItem.groups,\n Date.parse(new Date().toString())\n ).then((result: any) => {\n if (result) {\n this.dirty = false;\n // set the reportNotebookItemId to the newly-incremented id so that future saves during this\n // visit will be an update instead of an insert.\n this.reportItem.id = result.id;\n this.saveTime = this.ConfigService.convertToClientTimestamp(result.serverSaveTime);\n }\n });\n }\n}\n", + "styleUrl": "notebook-report.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "breakpointObserver", + "type": "BreakpointObserver", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "notebookService", + "type": "NotebookService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 46, + "jsdoctags": [ + { + "name": "breakpointObserver", + "type": "BreakpointObserver", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "notebookService", + "type": "NotebookService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "NotebookParentComponent" + ], + "templateData": "@if (mode !== 'classroomMonitor') {\n \n \n \n assignment \n \n {{ reportItem.content.title }}\n \n \n \n \n @if (!full || collapsed) {\n fullscreen \n }\n @if (full && !collapsed) {\n fullscreen_exit \n }\n \n @if (!collapsed) {\n \n arrow_drop_down \n \n } @else {\n \n arrow_drop_up \n \n }\n \n \n \n \n \n
    \n \n Save\n \n @if (saveTime) {\n \n }\n
    \n \n @if (reportItem.content.prompt) {\n info\n }\n
    \n
    \n \n} @else {\n
    \n @if (hasReport) {\n
    \n
    \n
    \n } @else {\n

    Team hasn't worked on {{ config.itemTypes.report.notes[0].title }} yet.

    \n }\n
    \n}\n" + }, + { + "name": "NotebookWorkgroupGradingComponent", + "id": "component-NotebookWorkgroupGradingComponent-14efe7f07b0f0abe93e80c810601e7af077ab50f14e5d4f338e57f69773e8a6fcf4da900af4e1ee6e69110feafda2d7b2482df98687178f4c361cb6a8987283e", + "file": "src/assets/wise5/classroomMonitor/classroomMonitorComponents/notebook/notebook-workgroup-grading/notebook-workgroup-grading.component.ts", + "encapsulation": [ + "ViewEncapsulation.None" + ], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "notebook-workgroup-grading", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./notebook-workgroup-grading.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "expand", + "deprecated": false, + "deprecationMessage": "", + "line": 27, + "type": "boolean", + "decorators": [] + }, + { + "name": "notebookConfig", + "deprecated": false, + "deprecationMessage": "", + "line": 30, + "type": "any", + "decorators": [] + }, + { + "name": "notesEnabled", + "deprecated": false, + "deprecationMessage": "", + "line": 31, + "type": "boolean", + "decorators": [] + }, + { + "name": "reportEnabled", + "deprecated": false, + "deprecationMessage": "", + "line": 33, + "type": "boolean", + "decorators": [] + }, + { + "name": "reportTitle", + "deprecated": false, + "deprecationMessage": "", + "line": 35, + "type": "string", + "decorators": [] + }, + { + "name": "workgroup", + "deprecated": false, + "deprecationMessage": "", + "line": 36, + "type": "any", + "decorators": [] + } + ], + "outputsClass": [ + { + "name": "onUpdateExpand", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 32, + "type": "EventEmitter" + } + ], + "propertiesClass": [ + { + "name": "maxScore", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 28 + }, + { + "name": "notebook", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 29 + }, + { + "name": "reportHasWork", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 34 + } + ], + "methodsClass": [ + { + "name": "getNumActiveNotes", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 57, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnChanges", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 48, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 40, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "toggleExpand", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 52, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatButton" + }, + { + "name": "NgClass" + }, + { + "name": "MatListItem" + }, + { + "name": "MatTabGroup" + }, + { + "name": "MatTab" + }, + { + "name": "NotebookNotesComponent", + "type": "component" + }, + { + "name": "NotebookReportComponent", + "type": "component" + }, + { + "name": "DatePipe", + "type": "pipe" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, EventEmitter, Input, OnInit, Output, ViewEncapsulation } from '@angular/core';\nimport { NotebookService } from '../../../../services/notebookService';\nimport { MatButton } from '@angular/material/button';\nimport { NgClass, DatePipe } from '@angular/common';\nimport { MatListItem } from '@angular/material/list';\nimport { MatTabGroup, MatTab } from '@angular/material/tabs';\nimport { NotebookNotesComponent } from '../../../../../../app/notebook/notebook-notes/notebook-notes.component';\nimport { NotebookReportComponent } from '../../../../../../app/notebook/notebook-report/notebook-report.component';\n\n@Component({\n encapsulation: ViewEncapsulation.None,\n imports: [\n MatButton,\n NgClass,\n MatListItem,\n MatTabGroup,\n MatTab,\n NotebookNotesComponent,\n NotebookReportComponent,\n DatePipe\n ],\n selector: 'notebook-workgroup-grading',\n styleUrl: './notebook-workgroup-grading.component.scss',\n templateUrl: './notebook-workgroup-grading.component.html'\n})\nexport class NotebookWorkgroupGradingComponent implements OnInit {\n @Input() expand: boolean;\n maxScore: number;\n notebook: any;\n @Input() notebookConfig: any;\n @Input() notesEnabled: boolean;\n @Output() onUpdateExpand: EventEmitter = new EventEmitter();\n @Input() reportEnabled: boolean;\n reportHasWork: boolean;\n @Input() reportTitle: string;\n @Input() workgroup: any;\n\n constructor(private notebookService: NotebookService) {}\n\n ngOnInit(): void {\n if (this.reportEnabled) {\n const reportId = this.notebookConfig.itemTypes.report.notes[0].reportId;\n this.maxScore = this.notebookService.getMaxScoreByReportId(reportId);\n }\n this.notebook = this.notebookService.getNotebookByWorkgroup(this.workgroup.workgroupId);\n }\n\n ngOnChanges(): void {\n this.reportHasWork = this.workgroup.report ? true : false;\n }\n\n toggleExpand(): void {\n const expand = !this.expand;\n this.onUpdateExpand.emit({ workgroupId: this.workgroup.workgroupId, isExpanded: expand });\n }\n\n getNumActiveNotes(): number {\n return this.workgroup.notes.filter((note) => {\n return note.serverDeleteTime == null;\n }).length;\n }\n}\n", + "styleUrl": "./notebook-workgroup-grading.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "notebookService", + "type": "NotebookService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 36, + "jsdoctags": [ + { + "name": "notebookService", + "type": "NotebookService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "
    \n
    \n \n
    \n
    \n {{ workgroup.workgroupId }}\n
    \n
    \n {{ workgroup.displayNames }}\n
    \n @if (notesEnabled) {\n
    \n \n {{ getNumActiveNotes() }}\n \n
    \n }\n @if (reportEnabled) {\n
    \n @if (reportHasWork) {\n \n Latest Work: {{ workgroup.report.serverSaveTime | date: 'mediumDate' }}\n \n }\n @if (!reportHasWork) {\n No Work \n }\n
    \n }\n
    \n \n
    \n @if (expand) {\n \n \n @if (notesEnabled) {\n \n \n \n }\n @if (reportEnabled) {\n \n \n \n }\n \n \n }\n
    \n" + }, + { + "name": "NotificationsDialogComponent", + "id": "component-NotificationsDialogComponent-1b6bca986bf3c7ee59258b996b0a1d7e954c4173333ff93f8753917ec3165a151ed504c16c5976bdaa80b2aa9ec6f87a59998b9727e55d516734da22d396d723", + "file": "src/assets/wise5/vle/notifications-dialog/notifications-dialog.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./notifications-dialog.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "dialog", + "deprecated": false, + "deprecationMessage": "", + "type": "MatDialog", + "indexKey": "", + "optional": false, + "description": "", + "line": 33, + "modifierKind": [ + 125 + ] + }, + { + "name": "dialogRef", + "deprecated": false, + "deprecationMessage": "", + "type": "MatDialogRef", + "indexKey": "", + "optional": false, + "description": "", + "line": 34, + "modifierKind": [ + 125 + ] + }, + { + "name": "newNotifications", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 28 + }, + { + "name": "notifications", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 29, + "modifierKind": [ + 124 + ] + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 30, + "modifierKind": [ + 123 + ] + } + ], + "methodsClass": [ + { + "name": "canDismissWithoutCode", + "args": [ + { + "name": "notification", + "type": "Notification", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 115, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "notification", + "type": "Notification", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "dismissAll", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 103, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dismissNotification", + "args": [ + { + "name": "notification", + "type": "Notification", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "showDismissCode", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "true" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 82, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "notification", + "type": "Notification", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "showDismissCode", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "true", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "dismissNotificationAggregate", + "args": [ + { + "name": "notificationAggregate", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "showDismissCode", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "true" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 95, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "notificationAggregate", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "showDismissCode", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "true", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "dismissNotificationAggregateAndVisitNode", + "args": [ + { + "name": "notificationAggregate", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 58, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "notificationAggregate", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getNodePositionAndTitle", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 111, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "hasNewNotifications", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 54, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 50, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 41, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatDialogModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatListModule", + "type": "module" + }, + { + "name": "MatToolbarModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, OnInit } from '@angular/core';\nimport { MatDialog, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { Subscription } from 'rxjs';\nimport { Notification } from '../../../../app/domain/notification';\nimport { NotebookService } from '../../services/notebookService';\nimport { NotificationService } from '../../services/notificationService';\nimport { ProjectService } from '../../services/projectService';\nimport { NodeService } from '../../services/nodeService';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatListModule } from '@angular/material/list';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@Component({\n imports: [\n MatButtonModule,\n MatDialogModule,\n MatIconModule,\n MatListModule,\n MatToolbarModule,\n MatTooltipModule\n ],\n styleUrl: './notifications-dialog.component.scss',\n templateUrl: './notifications-dialog.component.html'\n})\nexport class NotificationsDialogComponent implements OnInit {\n newNotifications: any;\n protected notifications: any;\n private subscriptions: Subscription = new Subscription();\n\n constructor(\n public dialog: MatDialog,\n public dialogRef: MatDialogRef,\n private nodeService: NodeService,\n private notebookService: NotebookService,\n private notificationService: NotificationService,\n private projectService: ProjectService\n ) {}\n\n ngOnInit(): void {\n this.subscriptions.add(\n this.notificationService.notificationChanged$.subscribe(() => {\n this.newNotifications = this.notificationService.getNewNotifications();\n })\n );\n this.newNotifications = this.notificationService.getNewNotifications();\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n protected hasNewNotifications(): boolean {\n return this.newNotifications.length > 0;\n }\n\n dismissNotificationAggregateAndVisitNode(notificationAggregate: any): void {\n if (notificationAggregate != null && notificationAggregate.notifications != null) {\n for (const notification of notificationAggregate.notifications) {\n if (notification.data == null || notification.data.dismissCode == null) {\n // only dismiss notifications that don't require a dismiss code,\n // but still allow them to move to the node\n this.dismissNotification(notification);\n }\n }\n }\n\n let goToNodeId = notificationAggregate.nodeId;\n let notebookItemId = notificationAggregate.notebookItemId;\n if (goToNodeId != null) {\n this.nodeService.setCurrentNode(goToNodeId);\n this.dialogRef.close();\n } else if (notebookItemId != null) {\n // assume notification with notebookItemId is for the report for now,\n // as we don't currently support annotations on notes\n this.notebookService.broadcastShowReportAnnotations();\n this.dialogRef.close();\n }\n }\n\n private dismissNotification(notification: Notification, showDismissCode: boolean = true): any {\n if (this.canDismissWithoutCode(notification)) {\n this.notificationService.dismissNotification(notification);\n } else if (showDismissCode) {\n // ask user to input dismiss code before dismissing it\n let args = {\n notification: notification\n };\n this.notificationService.broadcastViewCurrentAmbientNotification(args);\n this.dialogRef.close();\n }\n }\n\n dismissNotificationAggregate(notificationAggregate: any, showDismissCode: boolean = true): void {\n if (notificationAggregate != null && notificationAggregate.notifications != null) {\n for (const notification of notificationAggregate.notifications) {\n this.dismissNotification(notification, showDismissCode);\n }\n }\n }\n\n dismissAll(): void {\n if (confirm($localize`Are you sure you want to dismiss all your alerts?`)) {\n for (const notificationAggregate of this.newNotifications) {\n this.dismissNotificationAggregate(notificationAggregate, false);\n }\n }\n }\n\n protected getNodePositionAndTitle(nodeId: string): string {\n return this.projectService.getNodePositionAndTitle(nodeId);\n }\n\n private canDismissWithoutCode(notification: Notification): boolean {\n return notification.data == null || notification.data.dismissCode == null;\n }\n}\n", + "styleUrl": "./notifications-dialog.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialogRef", + "type": "MatDialogRef", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "notebookService", + "type": "NotebookService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "notificationService", + "type": "NotificationService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 30, + "jsdoctags": [ + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialogRef", + "type": "MatDialogRef", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "notebookService", + "type": "NotebookService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "notificationService", + "type": "NotificationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "

    \n notifications\n Alerts\n \n @if (newNotifications.length > 0) {\n \n clear_all\n \n }\n

    \n\n @if (!hasNewNotifications()) {\n

    \n Hi there! You currently have no alerts.\n

    \n } @else {\n \n @for (\n notificationAggregate of newNotifications;\n track notificationAggregate;\n let last = $last\n ) {\n \n
    \n
    \n
    \n \n {{ notificationAggregate.message }}\n \n
    \n
    \n @if (notificationAggregate.nodeId != null) {\n {{ getNodePositionAndTitle(notificationAggregate.nodeId) }}\n }\n @if (notificationAggregate.notebookItemId != null) {\n {{ reportItem.title }}\n }\n
    \n
    \n \n \n clear\n \n
    \n
    \n @if (!last) {\n \n }\n }\n
    \n }\n
    \n\n \n\n" + }, + { + "name": "NotificationsMenuComponent", + "id": "component-NotificationsMenuComponent-0b1e12e83331be6c6d6559d7304627df89a65d0a1ac3601bef4a6119de324727b227d824b0eb9031f5a0c4ed79a13cc7d5268b76bd670cc344f87b092ad613a0", + "file": "src/assets/wise5/classroomMonitor/classroomMonitorComponents/shared/notifications-menu/notifications-menu.component.ts", + "encapsulation": [ + "ViewEncapsulation.None" + ], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "notifications-menu", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./notifications-menu.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "newNotifications", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "line": 30, + "type": "Notification[]", + "decorators": [] + }, + { + "name": "state", + "deprecated": false, + "deprecationMessage": "", + "line": 31, + "type": "any", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [], + "methodsClass": [ + { + "name": "confirmDismissAllNotifications", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 45, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "dismissAllNotifications", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 61, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "dismissNotification", + "args": [ + { + "name": "notification", + "type": "Notification", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 67, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "notification", + "type": "Notification", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getNodePositionAndTitle", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 41, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "visitNode", + "args": [ + { + "name": "notification", + "type": "Notification", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 71, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "notification", + "type": "Notification", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatDividerModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatListModule", + "type": "module" + }, + { + "name": "MatToolbarModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { NotificationService } from '../../../../services/notificationService';\nimport { TeacherProjectService } from '../../../../services/teacherProjectService';\nimport { DialogWithConfirmComponent } from '../../../../../../assets/wise5/directives/dialog-with-confirm/dialog-with-confirm.component';\nimport { Notification } from '../../../../../../app/domain/notification';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatListModule } from '@angular/material/list';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { ActivatedRoute, Router } from '@angular/router';\n\n@Component({\n encapsulation: ViewEncapsulation.None,\n imports: [\n MatButtonModule,\n MatDividerModule,\n MatIconModule,\n MatListModule,\n MatToolbarModule,\n MatTooltipModule\n ],\n selector: 'notifications-menu',\n styleUrl: './notifications-menu.component.scss',\n templateUrl: './notifications-menu.component.html'\n})\nexport class NotificationsMenuComponent {\n @Input() newNotifications: Notification[] = [];\n @Input() state: any;\n\n constructor(\n private dialog: MatDialog,\n private notificationService: NotificationService,\n private projectService: TeacherProjectService,\n private route: ActivatedRoute,\n private router: Router\n ) {}\n\n protected getNodePositionAndTitle(nodeId: string): string {\n return this.projectService.getNodePositionAndTitle(nodeId);\n }\n\n protected confirmDismissAllNotifications(): void {\n this.dialog\n .open(DialogWithConfirmComponent, {\n data: {\n content: $localize`Are you sure you want to clear all your alerts?`,\n title: $localize`Clear all alerts`\n }\n })\n .afterClosed()\n .subscribe((result) => {\n if (result) {\n this.dismissAllNotifications();\n }\n });\n }\n\n private dismissAllNotifications(): void {\n this.newNotifications.map((newNotification: Notification) => {\n this.dismissNotification(newNotification);\n });\n }\n\n protected dismissNotification(notification: Notification): void {\n this.notificationService.dismissNotification(notification);\n }\n\n protected visitNode(notification: Notification): void {\n this.router.navigate(['node', notification.nodeId], {\n relativeTo: this.route\n });\n }\n}\n", + "styleUrl": "./notifications-menu.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "notificationService", + "type": "NotificationService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 31, + "jsdoctags": [ + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "notificationService", + "type": "NotificationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "
    \n \n \n notifications\n  \n Alerts\n \n @if (newNotifications.length > 0) {\n \n clear_all\n \n }\n \n
    \n @if (newNotifications.length === 0) {\n

    You have no new alerts at this time.

    \n } @else {\n \n @for (notification of newNotifications; track notification.id) {\n \n
    \n
    \n
    \n {{ notification.message }}\n
    \n
    \n {{ getNodePositionAndTitle(notification.nodeId) }}\n
    \n
    \n \n \n clear\n \n
    \n
    \n \n }\n
    \n }\n
    \n
    \n" + }, + { + "name": "OfficialDetailsComponent", + "id": "component-OfficialDetailsComponent-4f02b886e7da7a1d0b61471f6da82fbec302838dbac5be1de35a73fcdac96ffaea03fbeb71abb15e41e40a6324e0ee04b84ff316e70a1539d26466df28c3357f", + "file": "src/app/modules/library/public-unit-type-selector/public-unit-type-selector.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./official-library-details.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "dialogRef", + "deprecated": false, + "deprecationMessage": "", + "type": "MatDialogRef", + "indexKey": "", + "optional": false, + "description": "", + "line": 59, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "DetailsComponent" + } + } + ], + "methodsClass": [ + { + "name": "close", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 61, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "DetailsComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatDialogTitle" + }, + { + "name": "MatDialogContent" + }, + { + "name": "MatDialogActions" + }, + { + "name": "RouterLink" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Directive, EventEmitter, Output } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { ProjectFilterValues } from '../../../domain/projectFilterValues';\nimport { MatButtonModule } from '@angular/material/button';\nimport {\n MatDialogTitle,\n MatDialogContent,\n MatDialogActions,\n MatDialogRef,\n MatDialog\n} from '@angular/material/dialog';\nimport { RouterLink } from '@angular/router';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n imports: [FormsModule, MatCheckboxModule, MatIconModule],\n selector: 'public-unit-type-selector',\n styles: [\n `\n a {\n cursor: pointer;\n }\n `\n ],\n templateUrl: './public-unit-type-selector.component.html'\n})\nexport class PublicUnitTypeSelectorComponent {\n protected communityBuilt: boolean;\n @Output() publicUnitTypeUpdatedEvent: EventEmitter =\n new EventEmitter();\n protected wiseTested: boolean;\n\n constructor(\n private dialog: MatDialog,\n private filterValues: ProjectFilterValues\n ) {}\n\n protected updatePublicUnitType(): void {\n this.filterValues.publicUnitTypeValue = [];\n if (this.wiseTested) {\n this.filterValues.publicUnitTypeValue.push('wiseTested');\n }\n if (this.communityBuilt) {\n this.filterValues.publicUnitTypeValue.push('communityBuilt');\n }\n this.publicUnitTypeUpdatedEvent.emit();\n }\n\n protected showInfo(type: 'community' | 'official'): void {\n this.dialog.open(type === 'community' ? CommunityDetailsComponent : OfficialDetailsComponent, {\n panelClass: 'dialog-sm'\n });\n }\n}\n\n@Directive()\nabstract class DetailsComponent {\n constructor(public dialogRef: MatDialogRef) {}\n\n protected close(): void {\n this.dialogRef.close();\n }\n}\n\n@Component({\n imports: [MatButtonModule, MatDialogTitle, MatDialogContent, MatDialogActions, RouterLink],\n templateUrl: './official-library-details.html'\n})\nclass OfficialDetailsComponent extends DetailsComponent {}\n\n@Component({\n imports: [MatButtonModule, MatDialogTitle, MatDialogContent, MatDialogActions, RouterLink],\n templateUrl: './community-library-details.html'\n})\nclass CommunityDetailsComponent extends DetailsComponent {}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [ + "DetailsComponent" + ], + "templateData": "

    WISE Tested

    \n
    \n
    \n

    \"WISE Tested\" units are curricula developed by the WISE team.

    \n

    \n Each of the units in this collection has been designed and iteratively refined through a\n partnership of university-based education researchers and science teachers. They have all been\n implemeneted and tested in real classrooms and have shown proven learning gains.\n

    \n

    \n Learn more about our design process and\n check out our research and publications.\n

    \n
    \n
    \n
    \n \n
    \n" + }, + { + "name": "OfficialLibraryComponent", + "id": "component-OfficialLibraryComponent-7481ad534fe8fbeec8e3b4cd99f7f51ea84e76fd951c13452301584896a55749310918f323b4ce2ac394cba4b971e85f3393a021d06a19f5030f32412f185ee2", + "file": "src/app/modules/library/official-library/official-library.component.ts", + "encapsulation": [ + "ViewEncapsulation.None" + ], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "app-official-library", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./official-library.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "isSplitScreen", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "line": 19, + "type": "boolean", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "expandedGroups", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "object", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "modifierKind": [ + 124 + ] + }, + { + "name": "libraryGroups", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "LibraryGroup[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 20, + "modifierKind": [ + 124 + ] + }, + { + "name": "filteredProjects", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "LibraryProject[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "LibraryComponent" + } + }, + { + "name": "highIndex", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "LibraryComponent" + } + }, + { + "name": "lowIndex", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "LibraryComponent" + } + }, + { + "name": "pageIndex", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "LibraryComponent" + } + }, + { + "name": "pageSize", + "defaultValue": "12", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "LibraryComponent" + } + }, + { + "name": "pageSizeOptions", + "defaultValue": "[12, 24, 48, 96]", + "deprecated": false, + "deprecationMessage": "", + "type": "number[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "LibraryComponent" + } + }, + { + "name": "paginators", + "deprecated": false, + "deprecationMessage": "", + "type": "QueryList", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "decorators": [ + { + "name": "ViewChildren", + "stringifiedArguments": "MatPaginator" + } + ], + "modifierKind": [ + 171 + ], + "inheritance": { + "file": "LibraryComponent" + } + }, + { + "name": "projects", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "LibraryProject[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "LibraryComponent" + } + }, + { + "name": "showFilters", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "LibraryComponent" + } + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "LibraryComponent" + } + } + ], + "methodsClass": [ + { + "name": "getNumVisiblePersonalOrPublicProjects", + "args": [], + "optional": false, + "returnType": "BehaviorSubject", + "typeParameters": [], + "line": 37, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "LibraryComponent" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "LibraryComponent" + } + }, + { + "name": "countVisibleProjects", + "args": [ + { + "name": "projects", + "type": "LibraryProject[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "projects", + "type": "LibraryProject[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "LibraryComponent" + } + }, + { + "name": "emitNumberOfProjectsVisible", + "args": [ + { + "name": "numProjectsVisible", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 73, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "numProjectsVisible", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "LibraryComponent" + } + }, + { + "name": "filterUpdated", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 60, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "LibraryComponent" + } + }, + { + "name": "isOnPage", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 56, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "LibraryComponent" + } + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 30, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "LibraryComponent" + } + }, + { + "name": "pageChange", + "args": [ + { + "name": "event", + "type": "PageEvent", + "deprecated": false, + "deprecationMessage": "", + "optional": true + }, + { + "name": "scroll", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "optional": true + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 35, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "event", + "type": "PageEvent", + "deprecated": false, + "deprecationMessage": "", + "optional": true, + "tagName": { + "text": "param" + } + }, + { + "name": "scroll", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "optional": true, + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "LibraryComponent" + } + }, + { + "name": "setPageBounds", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 51, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "LibraryComponent" + } + }, + { + "name": "setPagination", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 44, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "LibraryComponent" + } + }, + { + "name": "sortUnits", + "args": [ + { + "name": "a", + "type": "LibraryProject", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "b", + "type": "LibraryProject", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 89, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "a", + "type": "LibraryProject", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "b", + "type": "LibraryProject", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "LibraryComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "MatExpansionModule", + "type": "module" + }, + { + "name": "LibraryGroupThumbsComponent", + "type": "component" + }, + { + "name": "LibraryProjectComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { BehaviorSubject } from 'rxjs';\nimport { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { LibraryGroupThumbsComponent } from '../library-group-thumbs/library-group-thumbs.component';\nimport { LibraryProjectComponent } from '../library-project/library-project.component';\nimport { LibraryGroup } from '../libraryGroup';\nimport { LibraryComponent } from '../library/library.component';\n\n@Component({\n encapsulation: ViewEncapsulation.None,\n imports: [CommonModule, MatExpansionModule, LibraryGroupThumbsComponent, LibraryProjectComponent],\n selector: 'app-official-library',\n styleUrl: './official-library.component.scss',\n templateUrl: './official-library.component.html'\n})\nexport class OfficialLibraryComponent extends LibraryComponent {\n protected expandedGroups: object = {};\n @Input() isSplitScreen: boolean = false;\n protected libraryGroups: LibraryGroup[] = [];\n\n ngOnInit() {\n super.ngOnInit();\n this.subscriptions.add(\n this.libraryService.libraryGroupsSource$.subscribe((libraryGroups) => {\n this.libraryGroups = libraryGroups;\n })\n );\n this.subscriptions.add(\n this.libraryService.officialLibraryProjectsSource$.subscribe((libraryProjects) => {\n this.projects = libraryProjects;\n this.filterUpdated();\n })\n );\n }\n\n protected getNumVisiblePersonalOrPublicProjects(): BehaviorSubject {\n return this.libraryService.numberOfPublicProjectsVisible;\n }\n}\n", + "styleUrl": "./official-library.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [ + "LibraryComponent" + ], + "templateData": "\n @for (group of libraryGroups; track group; let i = $index) {\n @if (group.type === 'group') {\n 0\"\n [disabled]=\"countVisibleProjects(group.children) < 1\"\n >\n \n
    \n
    {{ group.name }}
    \n
    \n {{ countVisibleProjects(group.children) }} unit(s)\n
    \n
    \n \n
    \n
    \n @for (project of group.children; track project) {\n @if (project.visible) {\n
    \n \n
    \n }\n }\n
    \n \n }\n }\n
    \n" + }, + { + "name": "OpenResponseAuthoringComponent", + "id": "component-OpenResponseAuthoringComponent-179f0df30993489fa7803cdc44be4c496bd63bcdd312019f66dbfc98548b43b1b0019319ea5d3122c861098745f8848f4c1a6d52e7b1b2535ff6d421a1790408", + "file": "src/assets/wise5/components/openResponse/open-response-authoring/open-response-authoring.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "open-response-authoring.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "allowedConnectedComponentTypes", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "idToOrder", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "inputChange", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "promptChange", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + } + ], + "methodsClass": [ + { + "name": "assetSelected", + "args": [ + { + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 100, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "componentChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 73, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "confirmAndRemove", + "args": [ + { + "name": "message", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "array", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 110, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "message", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "array", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "deleteStarterState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 81, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "getComponent", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 106, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "getComponents", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 102, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "isForThisComponent", + "args": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 77, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "moveObjectDown", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 122, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "moveObjectUp", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 117, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 65, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 28, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "promptChanged", + "args": [ + { + "name": "prompt", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 69, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "prompt", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "saveStarterState", + "args": [ + { + "name": "starterState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "starterState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "setShowSubmitButtonValue", + "args": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 85, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "EditComponentPrompt", + "type": "component" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { AbstractComponentAuthoring } from '../../../authoringTool/components/AbstractComponentAuthoring';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatIconModule } from '@angular/material/icon';\nimport { EditComponentPrompt } from '../../../../../app/authoring-tool/edit-component-prompt/edit-component-prompt.component';\n\n@Component({\n imports: [EditComponentPrompt, MatIconModule, MatTooltipModule],\n templateUrl: 'open-response-authoring.component.html'\n})\nexport class OpenResponseAuthoringComponent extends AbstractComponentAuthoring {}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [ + "AbstractComponentAuthoring" + ], + "templateData": "
    \n @if (!componentContent.showPreviousWork) {\n
    \n announcement\n \n
    \n }\n
    \n" + }, + { + "name": "OpenResponseShowWorkComponent", + "id": "component-OpenResponseShowWorkComponent-36da4a7f188b241421534c8b832a27345ba5e5b9fea80687b11762e06d0f983b5f55d65eff4e73d651e1ad435b7249a585b8a13a6b4aa4d3b8b1486264674940", + "file": "src/assets/wise5/components/openResponse/open-response-show-work/open-response-show-work.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "open-response-show-work", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "open-response-show-work.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "line": 8, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "componentState", + "deprecated": false, + "deprecationMessage": "", + "line": 9, + "type": "any", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "isRevision", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "line": 10, + "type": "boolean", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 7, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "audioAttachments", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "modifierKind": [ + 124 + ] + }, + { + "name": "otherAttachments", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "modifierKind": [ + 124 + ] + }, + { + "name": "studentResponse", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "modifierKind": [ + 124 + ] + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "inheritance": { + "file": "ComponentShowWorkDirective" + } + } + ], + "methodsClass": [ + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 15, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "processAttachments", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "ngAfterViewInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 33, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentShowWorkDirective" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { ComponentShowWorkDirective } from '../../component-show-work.directive';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n imports: [CommonModule],\n selector: 'open-response-show-work',\n templateUrl: 'open-response-show-work.component.html'\n})\nexport class OpenResponseShowWorkComponent extends ComponentShowWorkDirective {\n protected audioAttachments: any[] = [];\n protected otherAttachments: any[] = [];\n protected studentResponse: string = '';\n\n ngOnInit(): void {\n if (this.componentState != null && this.componentState !== '') {\n this.studentResponse = this.componentState.studentData.response;\n this.processAttachments();\n }\n }\n\n private processAttachments(): void {\n this.componentState.studentData.attachments.forEach((attachment: any) => {\n if (attachment.type === 'audio') {\n this.audioAttachments.push(attachment);\n } else {\n this.otherAttachments.push(attachment);\n }\n });\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [ + "ComponentShowWorkDirective" + ], + "templateData": "
    \n@for (audioAttachment of audioAttachments; track audioAttachment) {\n
    \n \n
    \n}\n@for (otherAttachment of otherAttachments; track otherAttachment) {\n
    \n \n
    \n}\n" + }, + { + "name": "OpenResponseStudent", + "id": "component-OpenResponseStudent-4fc2a8b40fa2f697af782c92f491a49e123c3079f3f5d4f03fff9e5e394c8e42e86df2f2ab245351d7b8d08bc1cd06b673a9329f062e8765bf1043687e92eba3", + "file": "src/assets/wise5/components/openResponse/open-response-student/open-response-student.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "open-response-student", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "open-response-student.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "component", + "deprecated": false, + "deprecationMessage": "", + "line": 24, + "type": "Component", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentState", + "deprecated": false, + "deprecationMessage": "", + "line": 25, + "type": "any", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isDisabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "line": 26, + "type": "boolean", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "mode", + "deprecated": false, + "deprecationMessage": "", + "line": 27, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 28, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "workgroupId", + "deprecated": false, + "deprecationMessage": "", + "line": 29, + "type": "number", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "outputsClass": [ + { + "name": "saveComponentStateEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 30, + "type": "EventEmitter", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "starterStateChangedEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 31, + "type": "EventEmitter", + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "propertiesClass": [ + { + "name": "audioAttachments", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 58 + }, + { + "name": "cRaterTimeout", + "defaultValue": "40000", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 59 + }, + { + "name": "isPublicSpaceExist", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 60 + }, + { + "name": "isStudentAudioRecordingEnabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 61 + }, + { + "name": "speechToTextEnabled", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 62, + "modifierKind": [ + 124 + ] + }, + { + "name": "studentResponse", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 63 + }, + { + "name": "annotationSavedToServerSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 53, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "attachments", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 33, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 34, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 35, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentType", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 36, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isDirty", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 45, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSaveButtonVisible", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 38, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSaveOrSubmitButtonVisible", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 41, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isShowAddToNotebookButton", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 39, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isStudentAttachmentEnabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 46, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmit", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 44, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmitButtonDisabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 42, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmitButtonVisible", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 40, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmitDirty", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 43, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "latestAnnotations", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 48, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "latestComponentState", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 50, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "nodeSubmitClickedSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 54, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "parentStudentWorkIds", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 49, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "prompt", + "deprecated": false, + "deprecationMessage": "", + "type": "SafeHtml", + "indexKey": "", + "optional": false, + "description": "", + "line": 37, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "requestComponentStateSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 52, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "showAddToNotebookButton", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 51, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "studentWorkSavedToServerSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 55, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "submitCounter", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 47, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 56, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "methodsClass": [ + { + "name": "appendStudentResponse", + "args": [ + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 236, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "attachAudioRecording", + "args": [ + { + "name": "audioFile", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 651, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "audioFile", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "confirmSubmit", + "args": [ + { + "name": "numberOfSubmitsLeft", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 192, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "numberOfSubmitsLeft", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "cRaterErrorResponse", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "deferred", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialogRef", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 367, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "deferred", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialogRef", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "cRaterSuccessResponse", + "args": [ + { + "name": "responses", + "type": "RawCRaterResponse", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "deferred", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialogRef", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 378, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "responses", + "type": "RawCRaterResponse", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "deferred", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialogRef", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createAdditionalProcessingFunctionPromises", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "action", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 319, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "action", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createAutoCommentAnnotation", + "args": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 511, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createAutoScoreAnnotation", + "args": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 494, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createComponentState", + "args": [ + { + "name": "action", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 247, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCreate a new component state populated with the student data\ne.g. 'submit', 'save', 'change'\n", + "description": "

    Create a new component state populated with the student data\ne.g. 'submit', 'save', 'change'

    \n", + "jsdoctags": [ + { + "name": { + "pos": 9432, + "end": 9438, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "action" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 9426, + "end": 9431, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    the action that is triggering creating of this component state\ne.g. 'submit', 'save', 'change'

    \n" + }, + { + "tagName": { + "pos": 9545, + "end": 9551, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

    a promise that will return a component state

    \n" + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createComponentStateAdditionalProcessing", + "args": [ + { + "name": "deferred", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 289, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nPerform any additional processing that is required before returning the component state\nNote: this function must call deferred.resolve() otherwise student work will not be saved\ne.g. 'submit', 'save', 'change'\n", + "description": "

    Perform any additional processing that is required before returning the component state\nNote: this function must call deferred.resolve() otherwise student work will not be saved\ne.g. 'submit', 'save', 'change'

    \n", + "jsdoctags": [ + { + "name": { + "pos": 11131, + "end": 11139, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "deferred" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 11125, + "end": 11130, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    a deferred object

    \n" + }, + { + "name": { + "pos": 11170, + "end": 11184, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 11164, + "end": 11169, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    the component state

    \n" + }, + { + "name": { + "pos": 11217, + "end": 11223, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "action" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 11211, + "end": 11216, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    the action that we are creating the component state for\ne.g. 'submit', 'save', 'change'

    \n" + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createMergedComponentState", + "args": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 611, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCreate a component state with the merged student responses\n", + "description": "

    Create a component state with the merged student responses

    \n", + "jsdoctags": [ + { + "name": { + "pos": 22198, + "end": 22213, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentStates" + }, + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 22192, + "end": 22197, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    an array of component states

    \n" + }, + { + "tagName": { + "pos": 22249, + "end": 22255, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

    a component state with the merged student responses

    \n" + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getFeedbackRules", + "args": [], + "optional": false, + "returnType": "FeedbackRule[]", + "typeParameters": [], + "line": 664, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getFeedbackText", + "args": [ + { + "name": "rule", + "type": "FeedbackRule", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 535, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "rule", + "type": "FeedbackRule", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getItemId", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 150, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "getStudentResponse", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 232, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "hasFeedback", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 185, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "hasFeedbackRules", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 528, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "hasSubmitMessage", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 181, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isCRaterEnabled", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 590, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isCRaterScoreOnChange", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 602, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "isCRaterScoreOnSave", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 594, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "isCRaterScoreOnSubmit", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 598, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "isMultipleFeedbackTextsForSameRuleAllowed", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 668, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 143, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 95, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "performCRaterScoring", + "args": [ + { + "name": "deferred", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 342, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "deferred", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "performSubmit", + "args": [ + { + "name": "submitTriggeredBy", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 154, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "submitTriggeredBy", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "pingCRaterEndpoint", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 137, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "processAdditionalFunctions", + "args": [ + { + "name": "deferred", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "action", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 312, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "deferred", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "action", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "processCRaterSuccessResponse", + "args": [ + { + "name": "score", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "response", + "type": "CRaterResponse", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 399, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "score", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "response", + "type": "CRaterResponse", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setStudentWork", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 161, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "shouldPerformCRaterScoring", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "'change'" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 334, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "'change'", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "snipButtonClicked", + "args": [ + { + "name": "$event", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 545, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "$event", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "studentDataChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 638, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "submitWithFeedback", + "args": [ + { + "name": "numberOfSubmitsLeft", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 200, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "numberOfSubmitsLeft", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "submitWithoutFeedback", + "args": [ + { + "name": "numberOfSubmitsLeft", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 216, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "numberOfSubmitsLeft", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "tryAddDefaultFeedback", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 306, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "updateAudioAttachments", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 659, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "addDefaultFeedback", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 688, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "attachStudentAsset", + "args": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 232, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "broadcastDoneRenderingComponent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 325, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "canSubmit", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 488, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "clearLatestComponentState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 555, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "connectedComponentStudentDataSaved", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 796, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nThis function is called when a connected component of this component saves student data.\nThis was added to handle a race condition when a step has a connected component on a previous\nstep but the connected component student work on the previous step was not being imported\nbecause it wasn't being saved in time.\nHere is an example of what was happening\n- Student generates work on step 1 but does not click the save button\n- Student goes to step 2 which triggers a promise to save the student work on step 1\n- Step 2 is loaded and checks if there is any work it needs to import from step 1\n- The work in step 1 has not saved yet so step 2 does not import any work and loads without\n importing any work\n- The work from step 1 is then saved\nHere is the additional process that this function performs to fix this problem\n- Step 2 listens for when work is saved on step 1\n- When the work for step 1 is saved, step 2 checks to see if it needs to import that work\n", + "description": "

    This function is called when a connected component of this component saves student data.\nThis was added to handle a race condition when a step has a connected component on a previous\nstep but the connected component student work on the previous step was not being imported\nbecause it wasn't being saved in time.\nHere is an example of what was happening

    \n
      \n
    • Student generates work on step 1 but does not click the save button
    • \n
    • Student goes to step 2 which triggers a promise to save the student work on step 1
    • \n
    • Step 2 is loaded and checks if there is any work it needs to import from step 1
    • \n
    • The work in step 1 has not saved yet so step 2 does not import any work and loads without\nimporting any work
    • \n
    • The work from step 1 is then saved\nHere is the additional process that this function performs to fix this problem
    • \n
    • Step 2 listens for when work is saved on step 1
    • \n
    • When the work for step 1 is saved, step 2 checks to see if it needs to import that work
    • \n
    \n", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "copyAndAttachStudentAsset", + "args": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 218, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "copyPublicNotebookItem", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 632, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "copyPublicNotebookItemButtonClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 747, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createComponentStateAndBroadcast", + "args": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 559, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createDefaultFeedbackAnnotation", + "args": [ + { + "name": "feedbackText", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 706, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "feedbackText", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createNewComponentState", + "args": [], + "optional": false, + "returnType": "Partial", + "typeParameters": [], + "line": 818, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "disableAllInput", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 492, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "disableComponentIfNecessary", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 332, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "disableSubmitButton", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 496, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "doAttachStudentAsset", + "args": [ + { + "name": "studentAssetRequest", + "type": "StudentAssetRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 212, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "studentAssetRequest", + "type": "StudentAssetRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 541, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentStudentDataChanged", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 572, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentSubmitDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 548, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentSubmitTriggered", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 512, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "generateImageFromComponentState", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 615, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nRender the component state and then generate an image from it.\n", + "description": "

    Render the component state and then generate an image from it.

    \n", + "jsdoctags": [ + { + "name": { + "pos": 18804, + "end": 18818, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 18798, + "end": 18803, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    The component state to render.

    \n" + }, + { + "tagName": { + "pos": 18856, + "end": 18862, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

    A promise that will return an image.

    \n" + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "generateStarterState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 216, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getAction", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 321, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getClientSaveTime", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 684, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getComponentStatePromise", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 309, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getComponentStateWrapper", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "ComponentStateWrapper", + "typeParameters": [], + "line": 301, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getDefaultFeedback", + "args": [ + { + "name": "submitCount", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 702, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "submitCount", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getElementById", + "args": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getFirstResult", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 758, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "getFirstResult", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getIsDirty", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 277, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getMaxScore", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 680, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getMaxSubmitCount", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 460, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getNumberOfSubmitsLeft", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 456, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "handleConnectedComponents", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 352, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "handleConnectedComponentsPostProcess", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 385, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "handleStudentWorkSavedToServer", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 263, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "handleStudentWorkSavedToServerAdditionalProcessing", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 287, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasAnySubmissions", + "args": [ + { + "name": "componentStates", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 344, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentStates", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasDefaultFeedback", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 695, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasMaxScore", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 676, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasMaxSubmitCount", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 437, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasMaxSubmitCountAndUsedAllSubmits", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 452, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasSubmitsLeft", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 500, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasUsedAllSubmits", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 441, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "importWorkAsBackground", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 658, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "importWorkByStudentWorkId", + "args": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 170, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "incrementSubmitCounter", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 389, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isAddToNotebookEnabled", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 624, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isForThisComponent", + "args": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 192, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isFromConnectedComponent", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 766, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isHandleConnectedComponentAfterConnectedComponentStudentDataSaved", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 802, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isLockAfterSubmit", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 348, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isNotebookEnabled", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 643, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isPreviewMode", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 109, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSameComponent", + "args": [ + { + "name": "component", + "type": "Component", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 188, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "component", + "type": "Component", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isStudentNoteClippingEnabled", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 647, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isWorkFromClassmate", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 196, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "lockIfNecessary", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 281, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "processConnectedComponentState", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 184, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "processLatestStudentWork", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 580, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "registerNotebookItemChosenListener", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 736, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "removeAttachment", + "args": [ + { + "name": "attachment", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 245, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "attachment", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "saveButtonClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 393, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "saveForAuthoringPreviewMode", + "args": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 404, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setBackgroundImage", + "args": [ + { + "name": "image", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 674, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "image", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setComponentStateAsBackgroundImage", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 668, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 537, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsDirtyAndBroadcast", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 527, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsSubmit", + "args": [ + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 464, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsSubmitDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 508, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsSubmitDirtyAndBroadcast", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 532, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setParentStudentWorkIdToCurrentStudentWork", + "args": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 180, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setSubmitCounter", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 811, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "shouldCreateComponentState", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 317, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "showStudentAssets", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 651, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "submit", + "args": [ + { + "name": "submitTriggeredBy", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 416, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "submitTriggeredBy", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "submitButtonClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 412, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToAnnotationSavedToServer", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 123, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToAttachStudentAsset", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 200, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToNodeSubmitClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 137, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToNotebookItemChosen", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 159, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToNotifyConnectedComponents", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 147, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToRequestComponentState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 289, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToStudentWorkSavedToServer", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 252, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToSubscriptions", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 113, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "tryDisableComponent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 445, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "ComponentHeaderComponent", + "type": "component" + }, + { + "name": "MatButton" + }, + { + "name": "MatIcon" + }, + { + "name": "MatFormField" + }, + { + "name": "MatInput" + }, + { + "name": "CdkTextareaAutosize" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "SpeechToTextComponent", + "type": "component" + }, + { + "name": "AudioRecorderComponent", + "type": "component" + }, + { + "name": "ComponentSaveSubmitButtonsComponent", + "type": "component" + }, + { + "name": "ComponentAnnotationsComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { ChangeDetectorRef, Component } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { timeout } from 'rxjs/operators';\nimport { DialogWithoutCloseComponent } from '../../../directives/dialog-without-close/dialog-without-close.component';\nimport { AnnotationService } from '../../../services/annotationService';\nimport { ConfigService } from '../../../services/configService';\nimport { CRaterService } from '../../../services/cRaterService';\nimport { NodeService } from '../../../services/nodeService';\nimport { NotebookService } from '../../../services/notebookService';\nimport { NotificationService } from '../../../services/notificationService';\nimport { ProjectService } from '../../../services/projectService';\nimport { StudentAssetService } from '../../../services/studentAssetService';\nimport { StudentDataService } from '../../../services/studentDataService';\nimport { ComponentStudent } from '../../component-student.component';\nimport { ComponentService } from '../../componentService';\nimport { CRaterResponse } from '../../common/cRater/CRaterResponse';\nimport { FeedbackRuleEvaluator } from '../../common/feedbackRule/FeedbackRuleEvaluator';\nimport { FeedbackRule } from '../../common/feedbackRule/FeedbackRule';\nimport { FeedbackRuleComponent } from '../../feedbackRule/FeedbackRuleComponent';\nimport { OpenResponseService } from '../openResponseService';\nimport { copy } from '../../../common/object/object';\nimport { RawCRaterResponse } from '../../common/cRater/RawCRaterResponse';\nimport { hasConnectedComponent } from '../../../common/ComponentContent';\nimport { ConstraintService } from '../../../services/constraintService';\nimport { CRaterPingService } from '../../../services/cRaterPingService';\nimport { OpenResponseContent } from '../OpenResponseContent';\nimport { ComponentHeaderComponent } from '../../../directives/component-header/component-header.component';\nimport { MatButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatFormField } from '@angular/material/form-field';\nimport { MatInput } from '@angular/material/input';\nimport { CdkTextareaAutosize } from '@angular/cdk/text-field';\nimport { FormsModule } from '@angular/forms';\nimport { SpeechToTextComponent } from '../speech-to-text/speech-to-text.component';\nimport { AudioRecorderComponent } from '../audio-recorder/audio-recorder.component';\nimport { ComponentSaveSubmitButtonsComponent } from '../../../directives/component-save-submit-buttons/component-save-submit-buttons.component';\nimport { ComponentAnnotationsComponent } from '../../../directives/componentAnnotations/component-annotations.component';\n\n@Component({\n imports: [\n ComponentHeaderComponent,\n MatButton,\n MatIcon,\n MatFormField,\n MatInput,\n CdkTextareaAutosize,\n FormsModule,\n SpeechToTextComponent,\n AudioRecorderComponent,\n ComponentSaveSubmitButtonsComponent,\n ComponentAnnotationsComponent\n ],\n selector: 'open-response-student',\n styleUrl: 'open-response-student.component.scss',\n templateUrl: 'open-response-student.component.html'\n})\nexport class OpenResponseStudent extends ComponentStudent {\n audioAttachments: any[] = [];\n cRaterTimeout: number = 40000;\n isPublicSpaceExist: boolean = false;\n isStudentAudioRecordingEnabled: boolean = false;\n protected speechToTextEnabled: boolean;\n studentResponse: string = '';\n\n constructor(\n protected annotationService: AnnotationService,\n private changeDetector: ChangeDetectorRef,\n protected componentService: ComponentService,\n private constraintService: ConstraintService,\n protected configService: ConfigService,\n private cRaterPingService: CRaterPingService,\n private cRaterService: CRaterService,\n protected dialog: MatDialog,\n private openResponseService: OpenResponseService,\n protected nodeService: NodeService,\n protected notebookService: NotebookService,\n private notificationService: NotificationService,\n private projectService: ProjectService,\n protected studentAssetService: StudentAssetService,\n protected studentDataService: StudentDataService\n ) {\n super(\n annotationService,\n componentService,\n configService,\n dialog,\n nodeService,\n notebookService,\n studentAssetService,\n studentDataService\n );\n this.speechToTextEnabled = this.projectService.getSpeechToTextSettings()?.enabled;\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n if (hasConnectedComponent(this.componentContent, 'showWork')) {\n this.handleConnectedComponents();\n } else if (\n this.componentState != null &&\n this.openResponseService.componentStateHasStudentWork(\n this.componentState,\n this.componentContent\n )\n ) {\n this.setStudentWork(this.componentState);\n } else if (this.component.hasConnectedComponent()) {\n this.handleConnectedComponents();\n } else if (this.componentState == null) {\n if (this.component.hasConnectedComponent()) {\n this.handleConnectedComponents();\n } else if (this.componentContent.starterSentence != null) {\n this.studentResponse = this.componentContent.starterSentence;\n }\n }\n\n if (this.hasMaxSubmitCountAndUsedAllSubmits()) {\n this.isDisabled = true;\n }\n this.disableComponentIfNecessary();\n this.isPublicSpaceExist = this.projectService.isSpaceExists('public');\n this.registerNotebookItemChosenListener();\n this.isStudentAudioRecordingEnabled = this.componentContent.isStudentAudioRecordingEnabled;\n\n // load script for this component, if any\n const script = this.componentContent.script;\n if (script != null) {\n this.projectService.retrieveScript(script).then((script) => {\n new Function(script).call(this);\n });\n }\n this.updateAudioAttachments();\n this.pingCRaterEndpoint();\n this.broadcastDoneRenderingComponent();\n }\n\n private pingCRaterEndpoint(): void {\n if (this.isCRaterEnabled()) {\n this.cRaterPingService.startPinging(this.getItemId());\n }\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n if (this.isCRaterEnabled()) {\n this.cRaterPingService.stopPinging(this.getItemId());\n }\n }\n\n private getItemId(): string {\n return (this.component.content as OpenResponseContent).cRater.itemId;\n }\n\n performSubmit(submitTriggeredBy: string): void {\n super.performSubmit(submitTriggeredBy);\n if (this.hasMaxSubmitCountAndUsedAllSubmits()) {\n this.isDisabled = true;\n }\n }\n\n setStudentWork(componentState: any): void {\n if (componentState != null) {\n const studentData = componentState.studentData;\n if (studentData != null) {\n const response = studentData.response;\n if (response != null) {\n this.studentResponse = response;\n }\n const submitCounter = studentData.submitCounter;\n if (submitCounter != null) {\n this.submitCounter = submitCounter;\n }\n if (studentData.attachments != null) {\n this.attachments = studentData.attachments;\n }\n this.processLatestStudentWork();\n }\n }\n }\n\n hasSubmitMessage(): boolean {\n return true;\n }\n\n hasFeedback(): boolean {\n return (\n this.isCRaterEnabled() &&\n (this.componentContent.cRater.showFeedback || this.componentContent.cRater.showScore)\n );\n }\n\n confirmSubmit(numberOfSubmitsLeft: number): boolean {\n if (this.hasFeedback()) {\n return this.submitWithFeedback(numberOfSubmitsLeft);\n } else {\n return this.submitWithoutFeedback(numberOfSubmitsLeft);\n }\n }\n\n submitWithFeedback(numberOfSubmitsLeft: number): boolean {\n let isPerformSubmit = false;\n if (numberOfSubmitsLeft <= 0) {\n alert($localize`You do not have any more chances to receive feedback on your answer.`);\n } else if (numberOfSubmitsLeft === 1) {\n isPerformSubmit = confirm(\n $localize`You have 1 chance to receive feedback on your answer so this should be your best work.\\n\\nAre you ready to receive feedback on this answer?`\n );\n } else if (numberOfSubmitsLeft > 1) {\n isPerformSubmit = confirm(\n $localize`You have ${numberOfSubmitsLeft} chances to receive feedback on your answer so this should be your best work.\\n\\nAre you ready to receive feedback on this answer?`\n );\n }\n return isPerformSubmit;\n }\n\n submitWithoutFeedback(numberOfSubmitsLeft: number): boolean {\n let isPerformSubmit = false;\n if (numberOfSubmitsLeft <= 0) {\n alert($localize`You do not have any more chances to receive feedback on your answer.`);\n } else if (numberOfSubmitsLeft === 1) {\n isPerformSubmit = confirm(\n $localize`You have ${numberOfSubmitsLeft} chance to receive feedback on your answer so this should be your best work.\\n\\nAre you ready to receive feedback on this answer?`\n );\n } else if (numberOfSubmitsLeft > 1) {\n isPerformSubmit = confirm(\n $localize`You have ${numberOfSubmitsLeft} chances to submit your answer so this should be your best work.\\n\\nAre you ready to submit this answer?`\n );\n }\n return isPerformSubmit;\n }\n\n getStudentResponse(): any {\n return this.studentResponse;\n }\n\n protected appendStudentResponse(text: string): void {\n this.studentResponse += text;\n this.studentDataChanged();\n }\n\n /**\n * Create a new component state populated with the student data\n * @param action the action that is triggering creating of this component state\n * e.g. 'submit', 'save', 'change'\n * @return a promise that will return a component state\n */\n createComponentState(action: any): any {\n const componentState: any = this.createNewComponentState();\n const studentData: any = {};\n const response = this.getStudentResponse();\n studentData.response = response;\n studentData.attachments = copy(this.attachments); // create a copy without reference to original array\n studentData.submitCounter = this.submitCounter;\n if (this.parentStudentWorkIds != null) {\n studentData.parentStudentWorkIds = this.parentStudentWorkIds;\n }\n componentState.isSubmit = this.isSubmit;\n componentState.studentData = studentData;\n componentState.componentType = 'OpenResponse';\n componentState.nodeId = this.nodeId;\n componentState.componentId = this.componentId;\n componentState.isCompleted = this.openResponseService.isCompletedV2(\n this.projectService.getNodeById(this.nodeId),\n this.componentContent,\n { componentStates: [componentState], events: [], annotations: [] }\n );\n const promise = new Promise((resolve, reject) => {\n this.createComponentStateAdditionalProcessing(\n { resolve: resolve, reject: reject },\n componentState,\n action\n );\n });\n this.isSubmit = false;\n if (this.hasMaxSubmitCountAndUsedAllSubmits()) {\n this.isDisabled = true;\n }\n return promise;\n }\n\n /**\n * Perform any additional processing that is required before returning the component state\n * Note: this function must call deferred.resolve() otherwise student work will not be saved\n * @param deferred a deferred object\n * @param componentState the component state\n * @param action the action that we are creating the component state for\n * e.g. 'submit', 'save', 'change'\n */\n createComponentStateAdditionalProcessing(\n deferred: any,\n componentState: any,\n action: string\n ): void {\n if (this.shouldPerformCRaterScoring(componentState, action)) {\n this.performCRaterScoring(deferred, componentState);\n } else if (\n this.projectService.hasAdditionalProcessingFunctions(this.nodeId, this.componentId)\n ) {\n this.processAdditionalFunctions(deferred, componentState, action);\n } else {\n this.tryAddDefaultFeedback(componentState);\n deferred.resolve(componentState);\n }\n }\n\n private tryAddDefaultFeedback(componentState: any) {\n if (this.isSubmit && this.hasDefaultFeedback()) {\n this.addDefaultFeedback(componentState);\n }\n }\n\n private processAdditionalFunctions(deferred: any, componentState: any, action: any): void {\n const allPromises = this.createAdditionalProcessingFunctionPromises(componentState, action);\n Promise.all(allPromises).then(() => {\n deferred.resolve(componentState);\n });\n }\n\n private createAdditionalProcessingFunctionPromises(componentState: any, action: any): any {\n const additionalProcessingFunctions = this.projectService.getAdditionalProcessingFunctions(\n this.nodeId,\n this.componentId\n );\n const allPromises = [];\n for (const additionalProcessingFunction of additionalProcessingFunctions) {\n const promise = new Promise((resolve, reject) => {\n additionalProcessingFunction({ resolve: resolve, reject: reject }, componentState, action);\n });\n allPromises.push(promise);\n }\n return allPromises;\n }\n\n private shouldPerformCRaterScoring(componentState: any, action = 'change'): boolean {\n return (\n (action === 'submit' && componentState.isSubmit && this.isCRaterScoreOnSubmit()) ||\n (action === 'save' && this.isCRaterScoreOnSave()) ||\n (action === 'change' && this.isCRaterScoreOnChange())\n );\n }\n\n private performCRaterScoring(deferred: any, componentState: any): void {\n const dialogRef = this.dialog.open(DialogWithoutCloseComponent, {\n data: {\n content: $localize`We are scoring your work...`,\n title: $localize`Please Wait`\n },\n disableClose: true\n });\n this.cRaterService\n .makeCRaterScoringRequest(\n this.cRaterService.getCRaterItemId(this.componentContent),\n new Date().getTime(),\n this.studentResponse\n )\n .pipe(timeout(this.cRaterTimeout))\n .subscribe(\n (response: any) => {\n this.cRaterSuccessResponse(response.responses, componentState, deferred, dialogRef);\n },\n () => {\n this.cRaterErrorResponse(componentState, deferred, dialogRef);\n }\n );\n }\n\n private cRaterErrorResponse(componentState: any, deferred: any, dialogRef: any): void {\n alert(\n $localize`There was an issue scoring your work. Please try again.\\nIf this problem continues, let your teacher know and move on to the next activity. Your work will still be saved.`\n );\n dialogRef.close();\n componentState.isSubmit = false;\n componentState.studentData.submitCounter--;\n this.submitCounter--;\n deferred.resolve(componentState);\n }\n\n private cRaterSuccessResponse(\n responses: RawCRaterResponse,\n componentState: any,\n deferred: any,\n dialogRef: any\n ): void {\n const cRaterResponse = this.cRaterService.getCRaterResponse(responses, this.submitCounter);\n let score = cRaterResponse.score;\n if (cRaterResponse.scores != null) {\n const maxSoFarFunc = (accumulator, currentValue) => {\n return Math.max(accumulator, currentValue.score);\n };\n score = cRaterResponse.scores.reduce(maxSoFarFunc, 0);\n }\n if (score != null) {\n this.processCRaterSuccessResponse(score, cRaterResponse, componentState);\n }\n dialogRef.close();\n deferred.resolve(componentState);\n }\n\n private processCRaterSuccessResponse(\n score: number,\n response: CRaterResponse,\n componentState: any\n ): void {\n let previousScore = null;\n const autoScoreAnnotationData: any = {\n value: score,\n maxAutoScore: this.projectService.getMaxScoreForComponent(this.nodeId, this.componentId),\n autoGrader: 'cRater'\n };\n if (response.scores != null) {\n autoScoreAnnotationData.scores = response.scores;\n }\n if (response.ideas != null) {\n autoScoreAnnotationData.ideas = response.ideas;\n }\n\n let autoScoreAnnotation = this.createAutoScoreAnnotation(autoScoreAnnotationData);\n const latestAnnotations = this.annotationService.getLatestComponentAnnotations(\n this.nodeId,\n this.componentId,\n this.workgroupId\n );\n\n if (\n latestAnnotations != null &&\n latestAnnotations.score != null &&\n latestAnnotations.score.data != null\n ) {\n previousScore = latestAnnotations.score.data.value;\n }\n\n componentState.annotations = [autoScoreAnnotation];\n\n let autoComment = null;\n const submitCounter = this.submitCounter;\n let feedbackRuleId = null;\n\n if (this.componentContent.cRater.enableMultipleAttemptScoringRules && submitCounter > 1) {\n // this step has multiple attempt scoring rules and this is a subsequent submit\n // get the feedback based upon the previous score and current score\n autoComment = this.cRaterService.getMultipleAttemptCRaterFeedbackTextByScore(\n this.componentContent,\n previousScore,\n score\n );\n } else {\n if (this.hasFeedbackRules()) {\n const feedbackRuleEvaluator = new FeedbackRuleEvaluator(\n new FeedbackRuleComponent(\n this.getFeedbackRules(),\n this.getMaxSubmitCount(),\n this.isMultipleFeedbackTextsForSameRuleAllowed()\n ),\n this.configService,\n this.constraintService\n );\n const rule: FeedbackRule = feedbackRuleEvaluator.getFeedbackRule([response]);\n autoComment = this.getFeedbackText(rule);\n feedbackRuleId = rule.id;\n } else {\n autoComment = this.cRaterService.getCRaterFeedbackTextByScore(this.componentContent, score);\n }\n }\n\n if (autoComment != null) {\n const autoCommentAnnotationData: any = {};\n autoCommentAnnotationData.value = autoComment;\n autoCommentAnnotationData.autoGrader = 'cRater';\n if (feedbackRuleId != null) {\n autoCommentAnnotationData.feedbackRuleId = feedbackRuleId;\n }\n const autoCommentAnnotation = this.createAutoCommentAnnotation(autoCommentAnnotationData);\n componentState.annotations.push(autoCommentAnnotation);\n }\n if (\n this.componentContent.enableNotifications &&\n this.componentContent.notificationSettings &&\n this.componentContent.notificationSettings.notifications\n ) {\n const notificationForScore: any = this.projectService.getNotificationByScore(\n this.componentContent,\n previousScore,\n score\n );\n if (notificationForScore != null) {\n notificationForScore.score = score;\n notificationForScore.nodeId = this.nodeId;\n notificationForScore.componentId = this.componentId;\n this.notificationService.sendNotificationForScore(notificationForScore);\n }\n }\n }\n\n createAutoScoreAnnotation(data: any): any {\n const runId = this.configService.getRunId();\n const periodId = this.configService.getPeriodId();\n const nodeId = this.nodeId;\n const componentId = this.componentId;\n const toWorkgroupId = this.configService.getWorkgroupId();\n const annotation = this.annotationService.createAutoScoreAnnotation(\n runId,\n periodId,\n nodeId,\n componentId,\n toWorkgroupId,\n data\n );\n return annotation;\n }\n\n createAutoCommentAnnotation(data: any): any {\n const runId = this.configService.getRunId();\n const periodId = this.configService.getPeriodId();\n const nodeId = this.nodeId;\n const componentId = this.componentId;\n const toWorkgroupId = this.configService.getWorkgroupId();\n const annotation = this.annotationService.createAutoCommentAnnotation(\n runId,\n periodId,\n nodeId,\n componentId,\n toWorkgroupId,\n data\n );\n return annotation;\n }\n\n private hasFeedbackRules(): boolean {\n return (\n this.componentContent.cRater.feedback?.enabled &&\n this.componentContent.cRater.feedback.rules.length > 0\n );\n }\n\n private getFeedbackText(rule: FeedbackRule): string {\n const annotationsForFeedbackRule = this.annotationService\n .getAnnotations()\n .filter(\n (annotation) =>\n this.isForThisComponent(annotation) && annotation.data.feedbackRuleId === rule.id\n );\n return rule.feedback[annotationsForFeedbackRule.length % rule.feedback.length];\n }\n\n snipButtonClicked($event: any): void {\n if (this.isDirty) {\n const studentWorkSavedToServerSubscription =\n this.studentDataService.studentWorkSavedToServer$.subscribe((componentState: any) => {\n if (\n componentState &&\n this.nodeId === componentState.nodeId &&\n this.componentId === componentState.componentId\n ) {\n const imageObject = null;\n const noteText = componentState.studentData.response;\n const isEditTextEnabled = false;\n const isFileUploadEnabled = false;\n this.notebookService.addNote(\n this.studentDataService.getCurrentNodeId(),\n imageObject,\n noteText,\n [componentState.id],\n isEditTextEnabled,\n isFileUploadEnabled\n );\n studentWorkSavedToServerSubscription.unsubscribe();\n }\n });\n this.saveButtonClicked(); // trigger a save\n } else {\n const studentWork = this.studentDataService.getLatestComponentStateByNodeIdAndComponentId(\n this.nodeId,\n this.componentId\n );\n const imageObject = null;\n const noteText = studentWork.studentData.response;\n const isEditTextEnabled = false;\n const isFileUploadEnabled = false;\n this.notebookService.addNote(\n this.studentDataService.getCurrentNodeId(),\n imageObject,\n noteText,\n [studentWork.id],\n isEditTextEnabled,\n isFileUploadEnabled\n );\n }\n }\n\n isCRaterEnabled(): boolean {\n return this.cRaterService.isCRaterEnabled(this.componentContent);\n }\n\n private isCRaterScoreOnSave(): boolean {\n return this.cRaterService.isCRaterScoreOnEvent(this.componentContent, 'save');\n }\n\n private isCRaterScoreOnSubmit(): boolean {\n return this.cRaterService.isCRaterScoreOnEvent(this.componentContent, 'submit');\n }\n\n private isCRaterScoreOnChange(): boolean {\n return this.cRaterService.isCRaterScoreOnEvent(this.componentContent, 'change');\n }\n\n /**\n * Create a component state with the merged student responses\n * @param componentStates an array of component states\n * @return a component state with the merged student responses\n */\n createMergedComponentState(componentStates: any[]): any {\n let mergedComponentState: any = this.createNewComponentState();\n if (componentStates != null) {\n let mergedResponse = '';\n for (let c = 0; c < componentStates.length; c++) {\n let componentState = componentStates[c];\n if (componentState != null) {\n let studentData = componentState.studentData;\n if (studentData != null) {\n let response = studentData.response;\n if (response != null && response != '') {\n if (mergedResponse != '') {\n mergedResponse += '\\n';\n }\n mergedResponse += response;\n }\n }\n }\n }\n if (mergedResponse != null && mergedResponse != '') {\n mergedComponentState.studentData = {};\n mergedComponentState.studentData.response = mergedResponse;\n }\n }\n return mergedComponentState;\n }\n\n studentDataChanged(): void {\n this.setIsDirtyAndBroadcast();\n if (this.studentResponse === '') {\n this.setIsSubmitDirty(false);\n } else {\n this.setIsSubmitDirtyAndBroadcast();\n }\n this.clearLatestComponentState();\n const action = 'change';\n this.createComponentStateAndBroadcast(action);\n this.updateAudioAttachments();\n }\n\n attachAudioRecording(audioFile: any): void {\n this.studentAssetService.uploadAsset(audioFile).then((studentAsset) => {\n this.attachStudentAsset(studentAsset).then(() => {\n this.studentAssetService.deleteAsset(studentAsset).then(() => this.studentDataChanged());\n });\n });\n }\n\n private updateAudioAttachments(): void {\n this.audioAttachments = this.attachments.filter((attachment) => attachment.type === 'audio');\n this.changeDetector.detectChanges();\n }\n\n getFeedbackRules(): FeedbackRule[] {\n return this.componentContent.cRater.feedback.rules;\n }\n\n isMultipleFeedbackTextsForSameRuleAllowed(): boolean {\n return true;\n }\n}\n", + "styleUrl": "open-response-student.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "changeDetector", + "type": "ChangeDetectorRef", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentService", + "type": "ComponentService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "constraintService", + "type": "ConstraintService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "cRaterPingService", + "type": "CRaterPingService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "cRaterService", + "type": "CRaterService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "openResponseService", + "type": "OpenResponseService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "notebookService", + "type": "NotebookService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "notificationService", + "type": "NotificationService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentAssetService", + "type": "StudentAssetService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentDataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 63, + "jsdoctags": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "changeDetector", + "type": "ChangeDetectorRef", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentService", + "type": "ComponentService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "constraintService", + "type": "ConstraintService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "cRaterPingService", + "type": "CRaterPingService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "cRaterService", + "type": "CRaterService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "openResponseService", + "type": "OpenResponseService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "notebookService", + "type": "NotebookService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "notificationService", + "type": "NotificationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentAssetService", + "type": "StudentAssetService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentDataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "ComponentStudent" + ], + "templateData": "\n
    \n @if (isAddToNotebookEnabled()) {\n \n note_add\n Add to Notebook\n \n }\n @if (isPublicSpaceExist) {\n \n file_download\n Import Classmate Work\n \n }\n
    \n
    \n \n \n \n \n @if (speechToTextEnabled) {\n \n }\n @if (isStudentAudioRecordingEnabled) {\n \n }\n
    \n@if (isStudentAttachmentEnabled) {\n
    \n \n @for (attachment of attachments; track attachment) {\n @if (attachment.type !== 'audio') {\n
    \n \n \n cancel\n \n
    \n }\n }\n
    \n}\n@if (isSaveOrSubmitButtonVisible) {\n \n}\n@if (mode === 'student') {\n \n}\n" + }, + { + "name": "OutsideUrlAuthoring", + "id": "component-OutsideUrlAuthoring-4c646aadd2f3b1023e4efc4adef536b1baea55fb4e9edfc4acb771f0f6e5839dd40836f9a2befc78d3a9798b1614f31c570765acd2b6fe21a9eebc6b12855d14", + "file": "src/assets/wise5/components/outsideURL/outside-url-authoring/outside-url-authoring.component.ts", + "encapsulation": [ + "ViewEncapsulation.None" + ], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "outside-url-authoring", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "outside-url-authoring.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "allOpenEducationalResources", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 46 + }, + { + "name": "filteredOpenEducationalResources", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 47 + }, + { + "name": "heightChange", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 70 + }, + { + "name": "isShowOERs", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 45 + }, + { + "name": "searchText", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 66 + }, + { + "name": "selectedSubjects", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 67 + }, + { + "name": "subjects", + "defaultValue": "[\n {\n value: 'Earth and Space Sciences',\n label: $localize`Earth and Space Sciences`\n },\n {\n value: 'Life Sciences',\n label: $localize`Life Sciences`\n },\n {\n value: 'Physical Sciences',\n label: $localize`Physical Sciences`\n },\n {\n value: 'Engineering, Technology, and Applications of Science',\n label: $localize`Engineering, Technology, and Applications of Science`\n }\n ]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 48 + }, + { + "name": "urlChange", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 68 + }, + { + "name": "widthChange", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 69 + }, + { + "name": "allowedConnectedComponentTypes", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "idToOrder", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "inputChange", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "promptChange", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + } + ], + "methodsClass": [ + { + "name": "chooseOpenEducationalResource", + "args": [ + { + "name": "openEducationalResource", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 112, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "openEducationalResource", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "clearFilters", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 122, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isAnySubjectChosen", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 142, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isResourceSelected", + "args": [ + { + "name": "resourceUrl", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 118, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "resourceUrl", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isSearchTextFound", + "args": [ + { + "name": "searchText", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "testText", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 138, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "searchText", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "testText", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isSubjectFound", + "args": [ + { + "name": "selectedSubjects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "resource", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 146, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "selectedSubjects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "resource", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 82, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "searchFieldChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 128, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "assetSelected", + "args": [ + { + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 100, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "componentChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 73, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "confirmAndRemove", + "args": [ + { + "name": "message", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "array", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 110, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "message", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "array", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "deleteStarterState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 81, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "getComponent", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 106, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "getComponents", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 102, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "isForThisComponent", + "args": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 77, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "moveObjectDown", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 122, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "moveObjectUp", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 117, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 65, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "promptChanged", + "args": [ + { + "name": "prompt", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 69, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "prompt", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "saveStarterState", + "args": [ + { + "name": "starterState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "starterState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "setShowSubmitButtonValue", + "args": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 85, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "MatSlideToggle" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatSelectModule", + "type": "module" + }, + { + "name": "MatInput" + }, + { + "name": "MatTooltip" + }, + { + "name": "MatIcon" + }, + { + "name": "MatCard" + }, + { + "name": "NgStyle" + }, + { + "name": "MatCardTitle" + }, + { + "name": "MatCardActions" + }, + { + "name": "TranslatableInputComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { CommonModule, NgStyle } from '@angular/common';\nimport { Component, ViewEncapsulation } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCard, MatCardActions, MatCardTitle } from '@angular/material/card';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInput } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatSlideToggle } from '@angular/material/slide-toggle';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { Subject } from 'rxjs';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport { ProjectAssetService } from '../../../../../app/services/projectAssetService';\nimport { AbstractComponentAuthoring } from '../../../authoringTool/components/AbstractComponentAuthoring';\nimport { TranslatableInputComponent } from '../../../authoringTool/components/translatable-input/translatable-input.component';\nimport { ConfigService } from '../../../services/configService';\nimport { TeacherNodeService } from '../../../services/teacherNodeService';\nimport { TeacherProjectService } from '../../../services/teacherProjectService';\nimport { OutsideURLService } from '../outsideURLService';\n\n@Component({\n selector: 'outside-url-authoring',\n templateUrl: 'outside-url-authoring.component.html',\n styleUrl: 'outside-url-authoring.component.scss',\n encapsulation: ViewEncapsulation.None,\n imports: [\n CommonModule,\n MatSlideToggle,\n FormsModule,\n MatButtonModule,\n MatFormFieldModule,\n MatSelectModule,\n MatInput,\n MatTooltip,\n MatIcon,\n MatCard,\n NgStyle,\n MatCardTitle,\n MatCardActions,\n TranslatableInputComponent\n ]\n})\nexport class OutsideUrlAuthoring extends AbstractComponentAuthoring {\n isShowOERs: boolean;\n allOpenEducationalResources: any[];\n filteredOpenEducationalResources: any[];\n subjects: any[] = [\n {\n value: 'Earth and Space Sciences',\n label: $localize`Earth and Space Sciences`\n },\n {\n value: 'Life Sciences',\n label: $localize`Life Sciences`\n },\n {\n value: 'Physical Sciences',\n label: $localize`Physical Sciences`\n },\n {\n value: 'Engineering, Technology, and Applications of Science',\n label: $localize`Engineering, Technology, and Applications of Science`\n }\n ];\n searchText: string;\n selectedSubjects: any[];\n urlChange: Subject = new Subject();\n widthChange: Subject = new Subject();\n heightChange: Subject = new Subject();\n\n constructor(\n protected configService: ConfigService,\n protected nodeService: TeacherNodeService,\n protected outsideURLService: OutsideURLService,\n protected projectAssetService: ProjectAssetService,\n protected projectService: TeacherProjectService\n ) {\n super(configService, nodeService, projectAssetService, projectService);\n }\n\n ngOnInit() {\n super.ngOnInit();\n this.isShowOERs = this.componentContent.url === '';\n this.searchText = '';\n this.selectedSubjects = [];\n this.outsideURLService.getOpenEducationalResources().then((openEducationalResources: any) => {\n this.allOpenEducationalResources = openEducationalResources.sort((a, b) =>\n a.metadata.title.localeCompare(b.metadata.title)\n );\n this.filteredOpenEducationalResources = this.allOpenEducationalResources;\n });\n this.subscriptions.add(\n this.urlChange.pipe(debounceTime(1000), distinctUntilChanged()).subscribe((url: string) => {\n this.componentContent.url = url;\n this.componentContent.info = null;\n this.componentChanged();\n })\n );\n this.subscriptions.add(\n this.widthChange.pipe(debounceTime(1000), distinctUntilChanged()).subscribe(() => {\n this.componentChanged();\n })\n );\n this.subscriptions.add(\n this.heightChange.pipe(debounceTime(1000), distinctUntilChanged()).subscribe(() => {\n this.componentChanged();\n })\n );\n }\n\n chooseOpenEducationalResource(openEducationalResource: any): void {\n this.componentContent.url = openEducationalResource.url;\n this.componentContent.info = openEducationalResource.info;\n this.componentChanged();\n }\n\n isResourceSelected(resourceUrl: string): boolean {\n return resourceUrl === this.componentContent.url;\n }\n\n clearFilters(): void {\n this.searchText = '';\n this.selectedSubjects = [];\n this.searchFieldChanged();\n }\n\n searchFieldChanged(): void {\n this.filteredOpenEducationalResources = this.allOpenEducationalResources.filter((oer) => {\n const isSearchTextFound = this.isSearchTextFound(this.searchText, JSON.stringify(oer));\n if (this.isAnySubjectChosen()) {\n return isSearchTextFound && this.isSubjectFound(this.selectedSubjects, oer);\n }\n return isSearchTextFound;\n });\n }\n\n isSearchTextFound(searchText: string, testText: string): boolean {\n return testText.toLowerCase().includes(searchText.toLowerCase());\n }\n\n isAnySubjectChosen(): boolean {\n return this.selectedSubjects.length > 0;\n }\n\n isSubjectFound(selectedSubjects: any[], resource: any): boolean {\n for (const subject of selectedSubjects) {\n if (resource.metadata.subjects.includes(subject)) {\n return true;\n }\n }\n return false;\n }\n}\n", + "styleUrl": "outside-url-authoring.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeService", + "type": "TeacherNodeService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "outsideURLService", + "type": "OutsideURLService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectAssetService", + "type": "ProjectAssetService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 70, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeService", + "type": "TeacherNodeService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "outsideURLService", + "type": "OutsideURLService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectAssetService", + "type": "ProjectAssetService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "AbstractComponentAuthoring" + ], + "templateData": "
    \n \n
    \n
    \n \n Width (px) (optional)\n \n \n \n Height (px)\n \n \n
    \n\n Show Open Education Resources\n\n@if (isShowOERs) {\n
    \n \n}\n" + }, + { + "name": "OutsideUrlStudent", + "id": "component-OutsideUrlStudent-7a011c66c10431dd1e2815874af009ab3c24fed7b1d363e286e64d63caece452788f11eadbfea4a5a585d6a8c5da5b67cecf4049c1754f6a6555d677f1b4fb78", + "file": "src/assets/wise5/components/outsideURL/outside-url-student/outside-url-student.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "outside-url-student", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "outside-url-student.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "component", + "deprecated": false, + "deprecationMessage": "", + "line": 24, + "type": "Component", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentState", + "deprecated": false, + "deprecationMessage": "", + "line": 25, + "type": "any", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isDisabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "line": 26, + "type": "boolean", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "mode", + "deprecated": false, + "deprecationMessage": "", + "line": 27, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 28, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "workgroupId", + "deprecated": false, + "deprecationMessage": "", + "line": 29, + "type": "number", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "outputsClass": [ + { + "name": "saveComponentStateEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 30, + "type": "EventEmitter", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "starterStateChangedEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 31, + "type": "EventEmitter", + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "propertiesClass": [ + { + "name": "height", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 22 + }, + { + "name": "infoString", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 20 + }, + { + "name": "infoUrl", + "deprecated": false, + "deprecationMessage": "", + "type": "SafeUrl", + "indexKey": "", + "optional": false, + "description": "", + "line": 19 + }, + { + "name": "url", + "deprecated": false, + "deprecationMessage": "", + "type": "SafeUrl", + "indexKey": "", + "optional": false, + "description": "", + "line": 18 + }, + { + "name": "width", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 21 + }, + { + "name": "annotationSavedToServerSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 53, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "attachments", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 33, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 34, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 35, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentType", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 36, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isDirty", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 45, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSaveButtonVisible", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 38, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSaveOrSubmitButtonVisible", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 41, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isShowAddToNotebookButton", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 39, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isStudentAttachmentEnabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 46, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmit", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 44, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmitButtonDisabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 42, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmitButtonVisible", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 40, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmitDirty", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 43, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "latestAnnotations", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 48, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "latestComponentState", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 50, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "nodeSubmitClickedSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 54, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "parentStudentWorkIds", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 49, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "prompt", + "deprecated": false, + "deprecationMessage": "", + "type": "SafeHtml", + "indexKey": "", + "optional": false, + "description": "", + "line": 37, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "requestComponentStateSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 52, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "showAddToNotebookButton", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 51, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "studentWorkSavedToServerSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 55, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "submitCounter", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 47, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 56, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "methodsClass": [ + { + "name": "getHeight", + "args": [ + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 84, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getInfoString", + "args": [ + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 68, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getInfoUrl", + "args": [ + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "SafeUrl", + "typeParameters": [], + "line": 60, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getURL", + "args": [ + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "SafeUrl", + "typeParameters": [], + "line": 56, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getWidth", + "args": [ + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 80, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "hasInfo", + "args": [ + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 76, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 47, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "addDefaultFeedback", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 688, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "attachStudentAsset", + "args": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 232, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "broadcastDoneRenderingComponent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 325, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "canSubmit", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 488, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "clearLatestComponentState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 555, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "confirmSubmit", + "args": [ + { + "name": "numberOfSubmitsLeft", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 468, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "numberOfSubmitsLeft", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "connectedComponentStudentDataSaved", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 796, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nThis function is called when a connected component of this component saves student data.\nThis was added to handle a race condition when a step has a connected component on a previous\nstep but the connected component student work on the previous step was not being imported\nbecause it wasn't being saved in time.\nHere is an example of what was happening\n- Student generates work on step 1 but does not click the save button\n- Student goes to step 2 which triggers a promise to save the student work on step 1\n- Step 2 is loaded and checks if there is any work it needs to import from step 1\n- The work in step 1 has not saved yet so step 2 does not import any work and loads without\n importing any work\n- The work from step 1 is then saved\nHere is the additional process that this function performs to fix this problem\n- Step 2 listens for when work is saved on step 1\n- When the work for step 1 is saved, step 2 checks to see if it needs to import that work\n", + "description": "

    This function is called when a connected component of this component saves student data.\nThis was added to handle a race condition when a step has a connected component on a previous\nstep but the connected component student work on the previous step was not being imported\nbecause it wasn't being saved in time.\nHere is an example of what was happening

    \n
      \n
    • Student generates work on step 1 but does not click the save button
    • \n
    • Student goes to step 2 which triggers a promise to save the student work on step 1
    • \n
    • Step 2 is loaded and checks if there is any work it needs to import from step 1
    • \n
    • The work in step 1 has not saved yet so step 2 does not import any work and loads without\nimporting any work
    • \n
    • The work from step 1 is then saved\nHere is the additional process that this function performs to fix this problem
    • \n
    • Step 2 listens for when work is saved on step 1
    • \n
    • When the work for step 1 is saved, step 2 checks to see if it needs to import that work
    • \n
    \n", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "copyAndAttachStudentAsset", + "args": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 218, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "copyPublicNotebookItem", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 632, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "copyPublicNotebookItemButtonClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 747, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createAutoCommentAnnotation", + "args": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 725, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createAutoScoreAnnotation", + "args": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 714, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createComponentState", + "args": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 568, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createComponentStateAdditionalProcessing", + "args": [ + { + "name": "promise", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 598, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "promise", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createComponentStateAndBroadcast", + "args": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 559, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createDefaultFeedbackAnnotation", + "args": [ + { + "name": "feedbackText", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 706, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "feedbackText", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createMergedComponentState", + "args": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 377, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createNewComponentState", + "args": [], + "optional": false, + "returnType": "Partial", + "typeParameters": [], + "line": 818, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "disableAllInput", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 492, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "disableComponentIfNecessary", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 332, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "disableSubmitButton", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 496, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "doAttachStudentAsset", + "args": [ + { + "name": "studentAssetRequest", + "type": "StudentAssetRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 212, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "studentAssetRequest", + "type": "StudentAssetRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 541, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentStudentDataChanged", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 572, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentSubmitDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 548, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentSubmitTriggered", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 512, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "generateImageFromComponentState", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 615, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nRender the component state and then generate an image from it.\n", + "description": "

    Render the component state and then generate an image from it.

    \n", + "jsdoctags": [ + { + "name": { + "pos": 18804, + "end": 18818, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 18798, + "end": 18803, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    The component state to render.

    \n" + }, + { + "tagName": { + "pos": 18856, + "end": 18862, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

    A promise that will return an image.

    \n" + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "generateStarterState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 216, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getAction", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 321, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getClientSaveTime", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 684, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getComponentStatePromise", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 309, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getComponentStateWrapper", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "ComponentStateWrapper", + "typeParameters": [], + "line": 301, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getDefaultFeedback", + "args": [ + { + "name": "submitCount", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 702, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "submitCount", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getElementById", + "args": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getFirstResult", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 758, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "getFirstResult", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getIsDirty", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 277, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getMaxScore", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 680, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getMaxSubmitCount", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 460, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getNumberOfSubmitsLeft", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 456, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "handleConnectedComponents", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 352, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "handleConnectedComponentsPostProcess", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 385, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "handleStudentWorkSavedToServer", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 263, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "handleStudentWorkSavedToServerAdditionalProcessing", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 287, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasAnySubmissions", + "args": [ + { + "name": "componentStates", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 344, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentStates", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasDefaultFeedback", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 695, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasMaxScore", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 676, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasMaxSubmitCount", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 437, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasMaxSubmitCountAndUsedAllSubmits", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 452, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasSubmitMessage", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 504, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasSubmitsLeft", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 500, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasUsedAllSubmits", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 441, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "importWorkAsBackground", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 658, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "importWorkByStudentWorkId", + "args": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 170, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "incrementSubmitCounter", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 389, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isAddToNotebookEnabled", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 624, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isForThisComponent", + "args": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 192, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isFromConnectedComponent", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 766, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isHandleConnectedComponentAfterConnectedComponentStudentDataSaved", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 802, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isLockAfterSubmit", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 348, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isNotebookEnabled", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 643, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isPreviewMode", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 109, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSameComponent", + "args": [ + { + "name": "component", + "type": "Component", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 188, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "component", + "type": "Component", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isStudentNoteClippingEnabled", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 647, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isWorkFromClassmate", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 196, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "lockIfNecessary", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 281, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 97, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "performSubmit", + "args": [ + { + "name": "submitTriggeredBy", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 472, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "submitTriggeredBy", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "processConnectedComponentState", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 184, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "processLatestStudentWork", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 580, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "registerNotebookItemChosenListener", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 736, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "removeAttachment", + "args": [ + { + "name": "attachment", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 245, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "attachment", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "saveButtonClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 393, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "saveForAuthoringPreviewMode", + "args": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 404, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setBackgroundImage", + "args": [ + { + "name": "image", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 674, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "image", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setComponentStateAsBackgroundImage", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 668, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 537, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsDirtyAndBroadcast", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 527, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsSubmit", + "args": [ + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 464, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsSubmitDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 508, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsSubmitDirtyAndBroadcast", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 532, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setParentStudentWorkIdToCurrentStudentWork", + "args": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 180, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setStudentWork", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 381, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setSubmitCounter", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 811, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "shouldCreateComponentState", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 317, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "showStudentAssets", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 651, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "studentDataChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 519, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "submit", + "args": [ + { + "name": "submitTriggeredBy", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 416, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "submitTriggeredBy", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "submitButtonClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 412, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToAnnotationSavedToServer", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 123, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToAttachStudentAsset", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 200, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToNodeSubmitClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 137, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToNotebookItemChosen", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 159, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToNotifyConnectedComponents", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 147, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToRequestComponentState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 289, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToStudentWorkSavedToServer", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 252, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToSubscriptions", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 113, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "tryDisableComponent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 445, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { DomSanitizer, SafeUrl } from '@angular/platform-browser';\nimport { AnnotationService } from '../../../services/annotationService';\nimport { ConfigService } from '../../../services/configService';\nimport { NodeService } from '../../../services/nodeService';\nimport { NotebookService } from '../../../services/notebookService';\nimport { StudentAssetService } from '../../../services/studentAssetService';\nimport { StudentDataService } from '../../../services/studentDataService';\nimport { ComponentStudent } from '../../component-student.component';\nimport { ComponentService } from '../../componentService';\n\n@Component({\n selector: 'outside-url-student',\n templateUrl: 'outside-url-student.component.html'\n})\nexport class OutsideUrlStudent extends ComponentStudent {\n url: SafeUrl;\n infoUrl: SafeUrl;\n infoString: string;\n width: string;\n height: string;\n\n constructor(\n protected annotationService: AnnotationService,\n protected componentService: ComponentService,\n protected configService: ConfigService,\n protected dialog: MatDialog,\n protected nodeService: NodeService,\n protected notebookService: NotebookService,\n protected sanitizer: DomSanitizer,\n protected studentAssetService: StudentAssetService,\n protected studentDataService: StudentDataService\n ) {\n super(\n annotationService,\n componentService,\n configService,\n dialog,\n nodeService,\n notebookService,\n studentAssetService,\n studentDataService\n );\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n this.url = this.getURL(this.componentContent);\n this.infoUrl = this.getInfoUrl(this.componentContent);\n this.infoString = this.getInfoString(this.componentContent);\n this.width = this.getWidth(this.componentContent);\n this.height = this.getHeight(this.componentContent);\n }\n\n getURL(componentContent: any): SafeUrl {\n return this.sanitizer.bypassSecurityTrustResourceUrl(componentContent.url);\n }\n\n getInfoUrl(componentContent: any): SafeUrl {\n if (this.hasInfo(componentContent)) {\n return this.sanitizer.bypassSecurityTrustResourceUrl(componentContent.info);\n } else {\n return this.getURL(componentContent);\n }\n }\n\n getInfoString(componentContent: any): string {\n if (this.hasInfo(componentContent)) {\n return componentContent.info;\n } else {\n return componentContent.url;\n }\n }\n\n hasInfo(componentContent: any): boolean {\n return componentContent.info != null && componentContent.info !== '';\n }\n\n getWidth(componentContent: any): string {\n return componentContent.width ? componentContent.width + 'px' : '100%';\n }\n\n getHeight(componentContent: any): string {\n return componentContent.height ? componentContent.height + 'px' : '600px';\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentService", + "type": "ComponentService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "notebookService", + "type": "NotebookService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "sanitizer", + "type": "DomSanitizer", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentAssetService", + "type": "StudentAssetService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentDataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 22, + "jsdoctags": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentService", + "type": "ComponentService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "notebookService", + "type": "NotebookService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "sanitizer", + "type": "DomSanitizer", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentAssetService", + "type": "StudentAssetService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentDataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "ComponentStudent" + ], + "templateData": "
    \n
    \n \n
    \n @if (infoString !== '') {\n \n }\n
    \n" + }, + { + "name": "PasswordRequirementComponent", + "id": "component-PasswordRequirementComponent-0c70b8666adc41ea5d3c76ca714cfcee7cd371371c3c35b1926a2d78772ffc201e0f833e0e4da7d3b5722af8a39d0583f2039eb1d8252035af686593f6f0c200", + "file": "src/app/password/password-requirement/password-requirement.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "password-requirement", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./password-requirement.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "errorFieldName", + "deprecated": false, + "deprecationMessage": "", + "line": 16, + "type": "string", + "decorators": [] + }, + { + "name": "passwordFormControl", + "deprecated": false, + "deprecationMessage": "", + "line": 17, + "type": "FormControl", + "decorators": [] + }, + { + "name": "requirementText", + "deprecated": false, + "deprecationMessage": "", + "line": 18, + "type": "string", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "INVALID_PASSWORD_MISSING_LETTER", + "defaultValue": "'12345678'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "modifierKind": [ + 126 + ] + }, + { + "name": "INVALID_PASSWORD_MISSING_NUMBER", + "defaultValue": "'abcdefgh'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "modifierKind": [ + 126 + ] + }, + { + "name": "INVALID_PASSWORD_TOO_SHORT", + "defaultValue": "'abcd123'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "modifierKind": [ + 126 + ] + }, + { + "name": "VALID_PASSWORD", + "defaultValue": "'abcd1234'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "modifierKind": [ + 126 + ] + } + ], + "methodsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input } from '@angular/core';\nimport { FormControl } from '@angular/forms';\n\n@Component({\n selector: 'password-requirement',\n standalone: false,\n styleUrl: './password-requirement.component.scss',\n templateUrl: './password-requirement.component.html'\n})\nexport class PasswordRequirementComponent {\n public static INVALID_PASSWORD_MISSING_LETTER = '12345678';\n public static INVALID_PASSWORD_MISSING_NUMBER = 'abcdefgh';\n public static INVALID_PASSWORD_TOO_SHORT = 'abcd123';\n public static VALID_PASSWORD = 'abcd1234';\n\n @Input() errorFieldName: string;\n @Input() passwordFormControl: FormControl;\n @Input() requirementText: string;\n}\n", + "styleUrl": "./password-requirement.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [], + "templateData": "\n @if (passwordFormControl.pristine) {\n
    \n } @else {\n @if (passwordFormControl.errors != null && passwordFormControl.errors[errorFieldName]) {\n close\n } @else {\n done\n }\n }\n
    {{ requirementText }}
    \n\n" + }, + { + "name": "PauseScreensMenuComponent", + "id": "component-PauseScreensMenuComponent-4b6734e54beb5216df4e40c5ff31bbfe7e448fd569297ee0dbfb937f5ac6aed613aa01d9640ffe529e018a6e468875645502857fd2db4ee9c442cb00f3d1b045", + "file": "src/assets/wise5/classroomMonitor/classroomMonitorComponents/pause-screens-menu/pause-screens-menu.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "pause-screens-menu", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./pause-screens-menu.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "allPeriodsPaused", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 23, + "modifierKind": [ + 124 + ] + }, + { + "name": "periods", + "deprecated": false, + "deprecationMessage": "", + "type": "Period[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 24, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "toggleAllPeriods", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 37, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "togglePeriod", + "args": [ + { + "name": "period", + "type": "Period", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 33, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "period", + "type": "Period", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatDividerModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatSlideToggleModule", + "type": "module" + }, + { + "name": "MatToolbarModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { TeacherDataService } from '../../../services/teacherDataService';\nimport { TeacherPauseScreenService } from '../../../services/teacherPauseScreenService';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { FormsModule } from '@angular/forms';\n\nclass Period {\n paused: boolean;\n periodId: number;\n periodName: string;\n}\n\n@Component({\n imports: [FormsModule, MatDividerModule, MatIconModule, MatSlideToggleModule, MatToolbarModule],\n selector: 'pause-screens-menu',\n styleUrl: './pause-screens-menu.component.scss',\n templateUrl: './pause-screens-menu.component.html'\n})\nexport class PauseScreensMenuComponent {\n protected allPeriodsPaused: boolean;\n protected periods: Period[];\n\n constructor(\n private dataService: TeacherDataService,\n private pauseScreenService: TeacherPauseScreenService\n ) {\n this.periods = this.dataService.getPeriods().filter((period) => period.periodId !== -1);\n }\n\n protected togglePeriod(period: Period): void {\n this.pauseScreenService.pauseScreensChanged(period.periodId, period.paused);\n }\n\n protected toggleAllPeriods(): void {\n this.periods.forEach((period) => {\n this.pauseScreenService.pauseScreensChanged(period.periodId, this.allPeriodsPaused);\n });\n }\n}\n", + "styleUrl": "./pause-screens-menu.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "pauseScreenService", + "type": "TeacherPauseScreenService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 24, + "jsdoctags": [ + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "pauseScreenService", + "type": "TeacherPauseScreenService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "
    \n \n
    \n pause_circle_filled  \n Pause Student Screens\n
    \n \n
    \n \n All Periods\n \n \n @for (period of periods; track period.periodId) {\n \n Period: {{ period.periodName }}\n \n }\n
    \n
    \n" + }, + { + "name": "PeerChatAuthoringComponent", + "id": "component-PeerChatAuthoringComponent-978f459e34f5d8954ac821f8057f80516725e82352c17b316b9c0a45da2e537b989878156174e0f1a1ff6dfc14c2d9582e9bd5430274ff926618a93b0af0ff6a", + "file": "src/assets/wise5/components/peerChat/peer-chat-authoring/peer-chat-authoring.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./peer-chat-authoring.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "allowedComponentTypes", + "defaultValue": "[\n 'ConceptMap',\n 'Draw',\n 'Graph',\n 'Label',\n 'Match',\n 'MultipleChoice',\n 'OpenResponse',\n 'Table'\n ]", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 22 + }, + { + "name": "logicOptions", + "defaultValue": "peerChatLogicOptions", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 32 + }, + { + "name": "nodeIds", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 33 + }, + { + "name": "allowedConnectedComponentTypes", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "idToOrder", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "inputChange", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "promptChange", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + } + ], + "methodsClass": [ + { + "name": "deleteLogic", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 65, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getComponents", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 48, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "getNodePositionAndTitle", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 44, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isApplicationNode", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 40, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isComponentTypeAllowed", + "args": [ + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 52, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "logicNameChanged", + "args": [ + { + "name": "logicObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 76, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "logicObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "logicNodeIdChanged", + "args": [ + { + "name": "logicObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 84, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "logicObject", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 35, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "tryUpdateComponentId", + "args": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeIdFieldName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentIdFieldName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 56, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeIdFieldName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentIdFieldName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "assetSelected", + "args": [ + { + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 100, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "componentChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 73, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "confirmAndRemove", + "args": [ + { + "name": "message", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "array", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 110, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "message", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "array", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "deleteStarterState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 81, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "getComponent", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 106, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "isForThisComponent", + "args": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 77, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "moveObjectDown", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 122, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "moveObjectUp", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 117, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 65, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "promptChanged", + "args": [ + { + "name": "prompt", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 69, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "prompt", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "saveStarterState", + "args": [ + { + "name": "starterState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "starterState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "setShowSubmitButtonValue", + "args": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 85, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "EditComponentPrompt", + "type": "component" + }, + { + "name": "EditDynamicPromptComponent", + "type": "component" + }, + { + "name": "EditQuestionBankComponent", + "type": "component" + }, + { + "name": "EditComponentPeerGroupingTagComponent", + "type": "component" + }, + { + "name": "PeerChatModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { AbstractComponentAuthoring } from '../../../authoringTool/components/AbstractComponentAuthoring';\nimport peerChatLogicOptions from './peer-chat-logic-options';\nimport { EditComponentPrompt } from '../../../../../app/authoring-tool/edit-component-prompt/edit-component-prompt.component';\nimport { EditDynamicPromptComponent } from '../../../../../app/authoring-tool/edit-dynamic-prompt/edit-dynamic-prompt.component';\nimport { EditQuestionBankComponent } from '../../../../../app/authoring-tool/edit-question-bank/edit-question-bank.component';\nimport { EditComponentPeerGroupingTagComponent } from '../../../../../app/authoring-tool/edit-component-peer-grouping-tag/edit-component-peer-grouping-tag.component';\nimport { PeerChatModule } from '../peer-chat.module';\n\n@Component({\n imports: [\n EditComponentPrompt,\n EditDynamicPromptComponent,\n EditQuestionBankComponent,\n EditComponentPeerGroupingTagComponent,\n PeerChatModule\n ],\n styleUrl: './peer-chat-authoring.component.scss',\n templateUrl: './peer-chat-authoring.component.html'\n})\nexport class PeerChatAuthoringComponent extends AbstractComponentAuthoring {\n allowedComponentTypes: string[] = [\n 'ConceptMap',\n 'Draw',\n 'Graph',\n 'Label',\n 'Match',\n 'MultipleChoice',\n 'OpenResponse',\n 'Table'\n ];\n logicOptions = peerChatLogicOptions;\n nodeIds: string[];\n\n ngOnInit(): void {\n super.ngOnInit();\n this.nodeIds = this.projectService.getFlattenedProjectAsNodeIds();\n }\n\n isApplicationNode(nodeId: string): boolean {\n return this.projectService.isApplicationNode(nodeId);\n }\n\n getNodePositionAndTitle(nodeId: string): string {\n return this.projectService.getNodePositionAndTitle(nodeId);\n }\n\n getComponents(nodeId: string): any[] {\n return this.projectService.getComponents(nodeId);\n }\n\n isComponentTypeAllowed(componentType: string): boolean {\n return this.allowedComponentTypes.includes(componentType);\n }\n\n tryUpdateComponentId(object: any, nodeIdFieldName: string, componentIdFieldName: string): void {\n const components = this.projectService.getComponents(object[nodeIdFieldName]);\n if (components.length === 0) {\n delete object[componentIdFieldName];\n } else if (components.length === 1) {\n object[componentIdFieldName] = components[0].id;\n }\n }\n\n deleteLogic(index: number): void {\n if (this.componentContent.logic.length === 1) {\n alert(\n $localize`You are not allowed to delete this Grouping Logic because you must have at least one.`\n );\n } else if (confirm($localize`Are you sure you want to delete this Grouping Logic?`)) {\n this.componentContent.logic.splice(index, 1);\n this.componentChanged();\n }\n }\n\n logicNameChanged(logicObject: any): void {\n if (logicObject.name === 'random' || logicObject.name === 'manual') {\n delete logicObject.nodeId;\n delete logicObject.componentId;\n }\n this.componentChanged();\n }\n\n logicNodeIdChanged(logicObject: any): void {\n this.tryUpdateComponentId(logicObject, 'nodeId', 'componentId');\n this.componentChanged();\n }\n}\n", + "styleUrl": "./peer-chat-authoring.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [ + "AbstractComponentAuthoring" + ], + "templateData": "@if (!componentContent.dynamicPrompt?.enabled) {\n \n}\n\n\n\n" + }, + { + "name": "PeerChatChatBoxComponent", + "id": "component-PeerChatChatBoxComponent-08eb51250ab8d0f93e9723a688de934eb1a6ea4c537dcfc3473dfec3fde53cbdcd9852565132af0c38d0671359ee9c7f563f9e5dbc29d3d05da2d4a179f4bad7", + "file": "src/assets/wise5/components/peerChat/peer-chat-chat-box/peer-chat-chat-box.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "peer-chat-chat-box", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./peer-chat-chat-box.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "component", + "deprecated": false, + "deprecationMessage": "", + "line": 26, + "type": "PeerChatComponent", + "decorators": [] + }, + { + "name": "isEnabled", + "defaultValue": "true", + "deprecated": false, + "deprecationMessage": "", + "line": 28, + "type": "boolean", + "decorators": [] + }, + { + "name": "isGrading", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "line": 29, + "type": "boolean", + "decorators": [] + }, + { + "name": "messages", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "line": 30, + "type": "PeerChatMessage[]", + "decorators": [] + }, + { + "name": "myWorkgroupId", + "deprecated": false, + "deprecationMessage": "", + "line": 31, + "type": "number", + "decorators": [] + }, + { + "name": "peerGroup", + "deprecated": false, + "deprecationMessage": "", + "line": 32, + "type": "PeerGroup", + "decorators": [] + }, + { + "name": "response", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "line": 33, + "type": "string", + "decorators": [] + }, + { + "name": "workgroupInfos", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "line": 38, + "type": "any", + "decorators": [] + } + ], + "outputsClass": [ + { + "name": "deleteClickedEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 27, + "type": "EventEmitter" + }, + { + "name": "onSubmit", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 35, + "type": "EventEmitter" + }, + { + "name": "responseChangedEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 34, + "type": "EventEmitter" + }, + { + "name": "undeleteClickedEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 36, + "type": "EventEmitter" + } + ], + "propertiesClass": [ + { + "name": "workgroupInfosWithoutTeachers", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 39, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "deleteClicked", + "args": [ + { + "name": "peerChatMessage", + "type": "PeerChatMessage", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 49, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "peerChatMessage", + "type": "PeerChatMessage", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "filterOutTeachers", + "args": [ + { + "name": "workgroupInfos", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 45, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "workgroupInfos", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 41, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "responseChanged", + "args": [ + { + "name": "response", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 62, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "response", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "submitResponse", + "args": [ + { + "name": "event", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 57, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "event", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "undeleteClicked", + "args": [ + { + "name": "peerChatMessage", + "type": "PeerChatMessage", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 53, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "peerChatMessage", + "type": "PeerChatMessage", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "MatCardModule", + "type": "module" + }, + { + "name": "PeerChatMembersComponent", + "type": "component" + }, + { + "name": "PeerChatMemberTypingIndicatorComponent", + "type": "component" + }, + { + "name": "PeerChatMessageInputComponent", + "type": "component" + }, + { + "name": "PeerChatMessagesComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { PeerChatMessage } from '../PeerChatMessage';\nimport { PeerChatComponent } from '../PeerChatComponent';\nimport { PeerGroup } from '../PeerGroup';\nimport { MatCardModule } from '@angular/material/card';\nimport { PeerChatMembersComponent } from '../peer-chat-members/peer-chat-members.component';\nimport { PeerChatMessagesComponent } from '../peer-chat-messages/peer-chat-messages.component';\nimport { PeerChatMessageInputComponent } from '../peer-chat-message-input/peer-chat-message-input.component';\nimport { PeerChatMemberTypingIndicatorComponent } from '../peer-chat-member-typing-indicator/peer-chat-member-typing-indicator.component';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n imports: [\n CommonModule,\n MatCardModule,\n PeerChatMembersComponent,\n PeerChatMemberTypingIndicatorComponent,\n PeerChatMessageInputComponent,\n PeerChatMessagesComponent\n ],\n selector: 'peer-chat-chat-box',\n styleUrl: './peer-chat-chat-box.component.scss',\n templateUrl: './peer-chat-chat-box.component.html'\n})\nexport class PeerChatChatBoxComponent implements OnInit {\n @Input() component: PeerChatComponent;\n @Output() deleteClickedEvent: EventEmitter = new EventEmitter();\n @Input() isEnabled: boolean = true;\n @Input() isGrading: boolean = false;\n @Input() messages: PeerChatMessage[] = [];\n @Input() myWorkgroupId: number;\n @Input() peerGroup: PeerGroup;\n @Input() response: string = '';\n @Output() responseChangedEvent: EventEmitter = new EventEmitter();\n @Output('onSubmit') submit: EventEmitter = new EventEmitter();\n @Output() undeleteClickedEvent: EventEmitter =\n new EventEmitter();\n @Input() workgroupInfos: any = {};\n protected workgroupInfosWithoutTeachers: any[];\n\n ngOnInit(): void {\n this.workgroupInfosWithoutTeachers = this.filterOutTeachers(this.workgroupInfos);\n }\n\n private filterOutTeachers(workgroupInfos: any): any[] {\n return Object.values(workgroupInfos).filter((workgroupInfo: any) => !workgroupInfo.isTeacher);\n }\n\n protected deleteClicked(peerChatMessage: PeerChatMessage): void {\n this.deleteClickedEvent.emit(peerChatMessage);\n }\n\n protected undeleteClicked(peerChatMessage: PeerChatMessage): void {\n this.undeleteClickedEvent.emit(peerChatMessage);\n }\n\n protected submitResponse(event: string): void {\n this.submit.emit(event);\n this.response = '';\n }\n\n protected responseChanged(response: string): void {\n this.responseChangedEvent.emit(response);\n }\n}\n", + "styleUrl": "./peer-chat-chat-box.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "\n \n @if (messages.length > 0) {\n \n }\n @if (isEnabled) {\n \n }\n \n\n" + }, + { + "name": "PeerChatGradingComponent", + "id": "component-PeerChatGradingComponent-a67ebbfc7375305e834c2b41df9601047fd896ccecf9836b7e6a2b41cc303ad0991ec955b5bc63df72ac3a6a81b81cb49a32034215dbaee8f6a27d166a22ff64", + "file": "src/assets/wise5/components/peerChat/peer-chat-grading/peer-chat-grading.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./peer-chat-grading.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "workgroupId", + "deprecated": false, + "deprecationMessage": "", + "line": 29, + "type": "number", + "decorators": [], + "inheritance": { + "file": "PeerChatShowWorkComponent" + } + }, + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "line": 8, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "componentState", + "deprecated": false, + "deprecationMessage": "", + "line": 9, + "type": "any", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "isRevision", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "line": 10, + "type": "boolean", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 7, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "dynamicPrompt", + "deprecated": false, + "deprecationMessage": "", + "type": "FeedbackRule", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "inheritance": { + "file": "PeerChatShowWorkComponent" + } + }, + { + "name": "isPeerChatWorkgroupsAvailable", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 20, + "inheritance": { + "file": "PeerChatShowWorkComponent" + } + }, + { + "name": "peerChatMessages", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "PeerChatMessage[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 21, + "inheritance": { + "file": "PeerChatShowWorkComponent" + } + }, + { + "name": "peerChatWorkgroupIds", + "defaultValue": "new Set()", + "deprecated": false, + "deprecationMessage": "", + "type": "Set", + "indexKey": "", + "optional": false, + "description": "", + "line": 22, + "inheritance": { + "file": "PeerChatShowWorkComponent" + } + }, + { + "name": "peerChatWorkgroupInfos", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 23, + "inheritance": { + "file": "PeerChatShowWorkComponent" + } + }, + { + "name": "peerGroup", + "deprecated": false, + "deprecationMessage": "", + "type": "PeerGroup", + "indexKey": "", + "optional": false, + "description": "", + "line": 24, + "inheritance": { + "file": "PeerChatShowWorkComponent" + } + }, + { + "name": "questionBankRules", + "deprecated": false, + "deprecationMessage": "", + "type": "QuestionBankRule[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 25, + "inheritance": { + "file": "PeerChatShowWorkComponent" + } + }, + { + "name": "questionIdsUsed", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 26, + "inheritance": { + "file": "PeerChatShowWorkComponent" + } + }, + { + "name": "requestTimeout", + "defaultValue": "10000", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 27, + "inheritance": { + "file": "PeerChatShowWorkComponent" + } + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "inheritance": { + "file": "ComponentShowWorkDirective" + } + } + ], + "methodsClass": [ + { + "name": "createComponentState", + "args": [ + { + "name": "response", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "ComponentState", + "typeParameters": [], + "line": 67, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "response", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "deleteClicked", + "args": [ + { + "name": "peerChatMessage", + "type": "PeerChatMessage", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 84, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "peerChatMessage", + "type": "PeerChatMessage", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getPeerGroupPeriodId", + "args": [ + { + "name": "peerGroup", + "type": "PeerGroup", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 117, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "peerGroup", + "type": "PeerGroup", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "saveDeleteAnnotation", + "args": [ + { + "name": "peerChatMessage", + "type": "PeerChatMessage", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 92, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "peerChatMessage", + "type": "PeerChatMessage", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "sendNotificationsToGroupMembers", + "args": [ + { + "name": "peerGroup", + "type": "PeerGroup", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 46, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "peerGroup", + "type": "PeerGroup", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "submitTeacherResponse", + "args": [ + { + "name": "response", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 39, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "response", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "undeleteClicked", + "args": [ + { + "name": "peerChatMessage", + "type": "PeerChatMessage", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 88, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "peerChatMessage", + "type": "PeerChatMessage", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addTeacherWorkgroupIds", + "args": [ + { + "name": "workgroupIds", + "type": "Set", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 76, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "workgroupIds", + "type": "Set", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "PeerChatShowWorkComponent" + } + }, + { + "name": "addWorkgroupIdsFromPeerChatMessages", + "args": [ + { + "name": "workgroupIds", + "type": "Set", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 135, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "workgroupIds", + "type": "Set", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "PeerChatShowWorkComponent" + } + }, + { + "name": "addWorkgroupIdsFromPeerGroup", + "args": [ + { + "name": "workgroupIds", + "type": "Set", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "peerGroup", + "type": "PeerGroup", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 70, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "workgroupIds", + "type": "Set", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "peerGroup", + "type": "PeerGroup", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "PeerChatShowWorkComponent" + } + }, + { + "name": "getDynamicPrompt", + "args": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "FeedbackRule", + "typeParameters": [], + "line": 106, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "PeerChatShowWorkComponent" + } + }, + { + "name": "getLatestStudentDataFieldForWorkgroup", + "args": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "fieldName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 118, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "fieldName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "PeerChatShowWorkComponent" + } + }, + { + "name": "getQuestionBankRule", + "args": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "QuestionBankRule[]", + "typeParameters": [], + "line": 114, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "PeerChatShowWorkComponent" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 41, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "requestChatWorkgroups", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 46, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "PeerChatShowWorkComponent" + } + }, + { + "name": "requestChatWorkgroupsSuccess", + "args": [ + { + "name": "peerGroup", + "type": "PeerGroup", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 55, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "peerGroup", + "type": "PeerGroup", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "PeerChatShowWorkComponent" + } + }, + { + "name": "retrievePeerChatAnnotations", + "args": [], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 90, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "PeerChatShowWorkComponent" + } + }, + { + "name": "retrievePeerChatComponentStates", + "args": [], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 82, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "PeerChatShowWorkComponent" + } + }, + { + "name": "setPeerChatMessages", + "args": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 98, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "PeerChatShowWorkComponent" + } + }, + { + "name": "setPeerChatWorkgroupInfos", + "args": [ + { + "name": "workgroupIds", + "type": "number[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 144, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "workgroupIds", + "type": "number[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "PeerChatShowWorkComponent" + } + }, + { + "name": "ngAfterViewInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 33, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentShowWorkDirective" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "PeerChatModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { ComponentState } from '../../../../../app/domain/componentState';\nimport { AnnotationService } from '../../../services/annotationService';\nimport { ConfigService } from '../../../services/configService';\nimport { NodeService } from '../../../services/nodeService';\nimport { NotificationService } from '../../../services/notificationService';\nimport { PeerGroupService } from '../../../services/peerGroupService';\nimport { ProjectService } from '../../../services/projectService';\nimport { TeacherDataService } from '../../../services/teacherDataService';\nimport { TeacherWebSocketService } from '../../../services/teacherWebSocketService';\nimport { TeacherWorkService } from '../../../services/teacherWorkService';\nimport { PeerChatShowWorkComponent } from '../peer-chat-show-work/peer-chat-show-work.component';\nimport { PeerChatMessage } from '../PeerChatMessage';\nimport { PeerChatService } from '../peerChatService';\nimport { PeerGroup } from '../PeerGroup';\nimport { PeerChatModule } from '../peer-chat.module';\n\n@Component({\n imports: [PeerChatModule],\n styleUrl: './peer-chat-grading.component.scss',\n templateUrl: './peer-chat-grading.component.html'\n})\nexport class PeerChatGradingComponent extends PeerChatShowWorkComponent {\n constructor(\n protected annotationService: AnnotationService,\n protected configService: ConfigService,\n protected dataService: TeacherDataService,\n protected nodeService: NodeService,\n protected notificationService: NotificationService,\n protected peerChatService: PeerChatService,\n protected peerGroupService: PeerGroupService,\n protected projectService: ProjectService,\n protected teacherWebSocketService: TeacherWebSocketService,\n protected teacherWorkService: TeacherWorkService\n ) {\n super(configService, nodeService, peerChatService, peerGroupService, projectService);\n }\n\n submitTeacherResponse(response: string): void {\n this.sendNotificationsToGroupMembers(this.peerGroup);\n this.teacherWorkService\n .saveWork(this.createComponentState(response))\n .subscribe(() => this.ngOnInit());\n }\n\n private sendNotificationsToGroupMembers(peerGroup: PeerGroup): void {\n const runId = this.configService.getRunId();\n const periodId = peerGroup.periodId;\n const notificationType = 'PeerChatMessage';\n const teacherWorkgroupId = this.configService.getWorkgroupId();\n const message = 'Your teacher sent a chat message';\n for (const workgroupId of peerGroup.getWorkgroupIds()) {\n const notification = this.notificationService.createNewNotification(\n runId,\n periodId,\n notificationType,\n this.nodeId,\n this.componentId,\n teacherWorkgroupId,\n workgroupId,\n message\n );\n this.notificationService.saveNotificationToServer(notification);\n }\n }\n\n private createComponentState(response: string): ComponentState {\n return {\n componentId: this.componentId,\n componentType: 'PeerChat',\n isSubmit: true,\n nodeId: this.nodeId,\n runId: this.configService.getRunId(),\n periodId: this.dataService.getCurrentPeriodId(),\n studentData: {\n response: response\n },\n clientSaveTime: new Date().getTime(),\n workgroupId: this.configService.getWorkgroupId(),\n peerGroupId: this.peerGroup.id\n };\n }\n\n protected deleteClicked(peerChatMessage: PeerChatMessage): void {\n this.saveDeleteAnnotation(peerChatMessage, 'Delete');\n }\n\n protected undeleteClicked(peerChatMessage: PeerChatMessage): void {\n this.saveDeleteAnnotation(peerChatMessage, 'Undo Delete');\n }\n\n private saveDeleteAnnotation(peerChatMessage: PeerChatMessage, action: string): void {\n const toWorkgroupId = peerChatMessage.workgroupId;\n const periodId = this.getPeerGroupPeriodId(this.peerGroup);\n const teacherUserInfo = this.configService.getMyUserInfo();\n const fromWorkgroupId = teacherUserInfo.workgroupId;\n const runId = this.configService.getRunId();\n const nodeId = this.nodeId;\n const componentId = this.componentId;\n const studentWorkId = peerChatMessage.componentStateId;\n const data = {\n action: action\n };\n const annotation = this.annotationService.createInappropriateFlagAnnotation(\n runId,\n periodId,\n nodeId,\n componentId,\n fromWorkgroupId,\n toWorkgroupId,\n studentWorkId,\n data\n );\n this.annotationService.saveAnnotation(annotation).then(() => {});\n }\n\n private getPeerGroupPeriodId(peerGroup: PeerGroup): number {\n for (const member of peerGroup.members) {\n return member.periodId;\n }\n return null;\n }\n}\n", + "styleUrl": "./peer-chat-grading.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "notificationService", + "type": "NotificationService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "peerChatService", + "type": "PeerChatService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "peerGroupService", + "type": "PeerGroupService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "teacherWebSocketService", + "type": "TeacherWebSocketService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "teacherWorkService", + "type": "TeacherWorkService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 23, + "jsdoctags": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "notificationService", + "type": "NotificationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "peerChatService", + "type": "PeerChatService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "peerGroupService", + "type": "PeerGroupService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "teacherWebSocketService", + "type": "TeacherWebSocketService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "teacherWorkService", + "type": "TeacherWorkService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "PeerChatShowWorkComponent" + ], + "templateData": "@if (isPeerChatWorkgroupsAvailable) {\n @if (dynamicPrompt != null) {\n
    \n }\n
    \n @if (questionBankRules != null) {\n
    \n @if (componentContent.questionBank?.enabled) {\n \n }\n
    \n }\n \n \n
    \n \n} @else {\n
    \n This Peer Chat activity is not yet available. Please check back later or wait for a notification\n to return.\n \n
    \n}\n" + }, + { + "name": "PeerChatMembersComponent", + "id": "component-PeerChatMembersComponent-178e3535df600a0eee48bd9a7d65d9b8de73c33c6b3cb1ea3e5e6b336dd3f73991d418a5d9bb4dde79e65941c2304c68ed00ff3a4c71e34ede73153dcaacde44", + "file": "src/assets/wise5/components/peerChat/peer-chat-members/peer-chat-members.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "peer-chat-members", + "styleUrls": [], + "styles": [ + ".mat-icon { vertical-align: middle; } .names { margin: 0 2px; }" + ], + "templateUrl": [ + "./peer-chat-members.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "peerChatWorkgroupInfos", + "deprecated": false, + "deprecationMessage": "", + "line": 12, + "type": "any[]", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [], + "methodsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n imports: [CommonModule, MatIconModule],\n selector: 'peer-chat-members',\n styles: ['.mat-icon { vertical-align: middle; } .names { margin: 0 2px; }'],\n templateUrl: './peer-chat-members.component.html'\n})\nexport class PeerChatMembersComponent {\n @Input() peerChatWorkgroupInfos: any[];\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": ".mat-icon { vertical-align: middle; } .names { margin: 0 2px; }\n", + "extends": [], + "templateData": "
    \n Chat members:\n @for (info of peerChatWorkgroupInfos; track info) {\n \n account_circle \n {{ info.displayNames }}\n \n }\n
    \n" + }, + { + "name": "PeerChatMemberTypingIndicatorComponent", + "id": "component-PeerChatMemberTypingIndicatorComponent-9c88de0d502b3201ab0270cb439d7f45cb04944cf6ad901110ffafb26e5fd05fe0577cc16770c9bb904a1bebd2efed991b3bf96557caf3b6883603cb69dbdf01", + "file": "src/assets/wise5/components/peerChat/peer-chat-member-typing-indicator/peer-chat-member-typing-indicator.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "peer-chat-member-typing-indicator", + "styleUrls": [], + "styles": [], + "template": "{{ message }}", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "component", + "deprecated": false, + "deprecationMessage": "", + "line": 14, + "type": "PeerChatComponent", + "decorators": [] + }, + { + "name": "myWorkgroupId", + "deprecated": false, + "deprecationMessage": "", + "line": 17, + "type": "number", + "decorators": [] + }, + { + "name": "peerGroup", + "deprecated": false, + "deprecationMessage": "", + "line": 18, + "type": "PeerGroup", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "intervalId", + "deprecated": false, + "deprecationMessage": "", + "type": "NodeJS.Timeout", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 123 + ] + }, + { + "name": "message", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "modifierKind": [ + 124 + ] + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "modifierKind": [ + 123 + ] + }, + { + "name": "typingDurationBuffer", + "defaultValue": "5000", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 20, + "modifierKind": [ + 123 + ] + }, + { + "name": "workgroupToLastTypingTimestamp", + "defaultValue": "new Map()", + "deprecated": false, + "deprecationMessage": "", + "type": "Map", + "indexKey": "", + "optional": false, + "description": "", + "line": 21, + "modifierKind": [ + 123 + ] + } + ], + "methodsClass": [ + { + "name": "isForThisComponent", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 99, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isFromClassmate", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 106, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isMessageFromPeer", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 91, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 37, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 29, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "subscribeToIsTypingMessages", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 63, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "subscribeToStudentWork", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 80, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "updateMessage", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 42, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input } from '@angular/core';\nimport { StompService } from '../../../services/stompService';\nimport { PeerChatComponent } from '../PeerChatComponent';\nimport { PeerGroup } from '../PeerGroup';\nimport { ConfigService } from '../../../services/configService';\nimport { Subscription } from 'rxjs';\nimport { StudentDataService } from '../../../services/studentDataService';\n\n@Component({\n selector: 'peer-chat-member-typing-indicator',\n template: `{{ message }}`\n})\nexport class PeerChatMemberTypingIndicatorComponent {\n @Input() component: PeerChatComponent;\n private intervalId: NodeJS.Timeout;\n protected message: string;\n @Input() myWorkgroupId: number;\n @Input() peerGroup: PeerGroup;\n private subscriptions: Subscription = new Subscription();\n private typingDurationBuffer: number = 5000;\n private workgroupToLastTypingTimestamp: Map = new Map();\n\n constructor(\n private configService: ConfigService,\n private dataService: StudentDataService,\n private stompService: StompService\n ) {}\n\n ngOnInit(): void {\n this.intervalId = setInterval(() => {\n this.updateMessage();\n }, 1000);\n this.subscribeToIsTypingMessages();\n this.subscribeToStudentWork();\n }\n\n ngOnDestroy(): void {\n clearInterval(this.intervalId);\n this.subscriptions.unsubscribe();\n }\n\n private updateMessage(): void {\n const workgroupsTyping = [];\n this.workgroupToLastTypingTimestamp.forEach((lastTypingTimestamp, workgroupId) => {\n if (new Date().getTime() - lastTypingTimestamp < this.typingDurationBuffer) {\n workgroupsTyping.push(workgroupId);\n }\n });\n if (workgroupsTyping.length === 0) {\n this.message = '';\n } else {\n const classmateNames = workgroupsTyping\n .map((workgroupId) =>\n this.configService.getStudentFirstNamesByWorkgroupId(workgroupId).join(', ')\n )\n .join(', ');\n this.message = classmateNames.includes(',')\n ? $localize`${classmateNames} are typing...`\n : $localize`${classmateNames} is typing...`;\n }\n }\n\n private subscribeToIsTypingMessages(): void {\n this.subscriptions.add(\n this.stompService.rxStomp\n .watch(`/topic/peer-group/${this.peerGroup.id}/is-typing`)\n .subscribe(({ body }) => {\n const { nodeId, componentId, workgroupId } = JSON.parse(JSON.parse(body).content);\n if (\n nodeId === this.component.nodeId &&\n componentId === this.component.id &&\n workgroupId !== this.myWorkgroupId\n ) {\n this.workgroupToLastTypingTimestamp.set(workgroupId, new Date().getTime());\n }\n })\n );\n }\n\n private subscribeToStudentWork(): void {\n this.subscriptions.add(\n this.dataService.studentWorkReceived$.subscribe((componentState) => {\n if (this.isMessageFromPeer(componentState)) {\n this.workgroupToLastTypingTimestamp.delete(componentState.workgroupId);\n this.updateMessage();\n }\n })\n );\n }\n\n private isMessageFromPeer(componentState: any): boolean {\n return (\n this.isForThisComponent(componentState) &&\n this.isFromClassmate(componentState) &&\n componentState.peerGroupId === this.peerGroup.id\n );\n }\n\n private isForThisComponent(componentState: any): boolean {\n return (\n componentState.nodeId === this.component.nodeId &&\n componentState.componentId === this.component.id\n );\n }\n\n private isFromClassmate(componentState: any): boolean {\n return componentState.workgroupId !== this.myWorkgroupId;\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "stompService", + "type": "StompService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 21, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "stompService", + "type": "StompService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [] + }, + { + "name": "PeerChatMessageComponent", + "id": "component-PeerChatMessageComponent-2a13ed10da51838d56096c5e2df538949bdc6d09ccef33b2d6fe9978e0e4c1ec405944c9db98071f8688b9ea90433689a8b22eec77f676972d5314d5ff6988fd", + "file": "src/assets/wise5/components/peerChat/peer-chat-message/peer-chat-message.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "peer-chat-message", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./peer-chat-message.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "avatarColor", + "deprecated": false, + "deprecationMessage": "", + "line": 15, + "type": "string", + "decorators": [] + }, + { + "name": "displayNames", + "deprecated": false, + "deprecationMessage": "", + "line": 17, + "type": "string", + "decorators": [] + }, + { + "name": "isGrading", + "deprecated": false, + "deprecationMessage": "", + "line": 18, + "type": "boolean", + "decorators": [] + }, + { + "name": "isTeacher", + "deprecated": false, + "deprecationMessage": "", + "line": 20, + "type": "boolean", + "decorators": [] + }, + { + "name": "myWorkgroupId", + "deprecated": false, + "deprecationMessage": "", + "line": 21, + "type": "number", + "decorators": [] + }, + { + "name": "peerChatMessage", + "deprecated": false, + "deprecationMessage": "", + "line": 22, + "type": "PeerChatMessage", + "decorators": [] + } + ], + "outputsClass": [ + { + "name": "deleteClickedEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 16, + "type": "EventEmitter" + }, + { + "name": "undeleteClickedEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 24, + "type": "EventEmitter" + } + ], + "propertiesClass": [ + { + "name": "isMyMessage", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "modifierKind": [ + 124 + ] + }, + { + "name": "text", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 23, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "delete", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 32, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 27, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "undelete", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 37, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { PeerChatMessage } from '../PeerChatMessage';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n imports: [CommonModule, MatButtonModule, MatIconModule, MatTooltipModule],\n selector: 'peer-chat-message',\n styleUrl: './peer-chat-message.component.scss',\n templateUrl: './peer-chat-message.component.html'\n})\nexport class PeerChatMessageComponent implements OnInit {\n @Input() avatarColor: string;\n @Output() deleteClickedEvent: EventEmitter = new EventEmitter();\n @Input() displayNames: string;\n @Input() isGrading: boolean;\n protected isMyMessage: boolean;\n @Input() isTeacher: boolean;\n @Input() myWorkgroupId: number;\n @Input() peerChatMessage: PeerChatMessage;\n protected text: string;\n @Output() undeleteClickedEvent: EventEmitter =\n new EventEmitter();\n\n ngOnInit(): void {\n this.text = this.peerChatMessage.text;\n this.isMyMessage = this.myWorkgroupId === this.peerChatMessage.workgroupId;\n }\n\n protected delete(): void {\n this.peerChatMessage.isDeleted = true;\n this.deleteClickedEvent.emit(this.peerChatMessage);\n }\n\n protected undelete(): void {\n this.peerChatMessage.isDeleted = false;\n this.undeleteClickedEvent.emit(this.peerChatMessage);\n }\n}\n", + "styleUrl": "./peer-chat-message.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "
    \n @if (isTeacher) {\n account_box \n } @else {\n account_circle \n }\n \n
    \n
    {{ displayNames }}
    \n {{ text }}\n
    \n @if (isGrading) {\n @if (peerChatMessage.isDeleted) {\n \n visibility_off\n \n } @else {\n \n visibility\n \n }\n }\n
    \n\n" + }, + { + "name": "PeerChatMessageInputComponent", + "id": "component-PeerChatMessageInputComponent-4fa0846784df88f915d65cdcc9b146d1e9e6f50b156fbe7c48b4b325e822b612b8c00889075eef3c40e4dddb8d4c25aec864e595b0940a42a63a5420805b5a73", + "file": "src/assets/wise5/components/peerChat/peer-chat-message-input/peer-chat-message-input.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "peer-chat-message-input", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./peer-chat-message-input.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "component", + "deprecated": false, + "deprecationMessage": "", + "line": 17, + "type": "PeerChatComponent", + "decorators": [] + }, + { + "name": "messageText", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "line": 21, + "type": "string", + "decorators": [] + }, + { + "name": "peerGroup", + "deprecated": false, + "deprecationMessage": "", + "line": 22, + "type": "PeerGroup", + "decorators": [] + } + ], + "outputsClass": [ + { + "name": "onSubmit", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 24, + "type": "EventEmitter" + }, + { + "name": "responseChangedEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 23, + "type": "EventEmitter" + } + ], + "propertiesClass": [ + { + "name": "intervalId", + "deprecated": false, + "deprecationMessage": "", + "type": "NodeJS.Timeout", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "modifierKind": [ + 123 + ] + }, + { + "name": "isSubmitEnabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "modifierKind": [ + 124 + ] + }, + { + "name": "lastTypingTimestamp", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 20, + "modifierKind": [ + 123 + ] + }, + { + "name": "typingDurationBuffer", + "defaultValue": "5000", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 25, + "modifierKind": [ + 123 + ] + } + ], + "methodsClass": [ + { + "name": "broadcastTypingStatus", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 51, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "keyPressed", + "args": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 61, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnChanges", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 38, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 42, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 32, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "onFocus", + "args": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 79, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "placeCursorAtEndOfMessageText", + "args": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "responseChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 46, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "submitResponse", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 72, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CdkTextareaAutosize" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatFormField" + }, + { + "name": "MatInputModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { StompService } from '../../../services/stompService';\nimport { ConfigService } from '../../../services/configService';\nimport { PeerChatComponent } from '../PeerChatComponent';\nimport { PeerGroup } from '../PeerGroup';\nimport { MatFormField, MatInputModule } from '@angular/material/input';\nimport { CdkTextareaAutosize } from '@angular/cdk/text-field';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n imports: [CdkTextareaAutosize, FormsModule, MatButtonModule, MatFormField, MatInputModule],\n selector: 'peer-chat-message-input',\n templateUrl: './peer-chat-message-input.component.html'\n})\nexport class PeerChatMessageInputComponent implements OnInit {\n @Input() component: PeerChatComponent;\n private intervalId: NodeJS.Timeout;\n protected isSubmitEnabled: boolean = false;\n private lastTypingTimestamp: number = 0;\n @Input() messageText: string = '';\n @Input() peerGroup: PeerGroup;\n @Output() responseChangedEvent: EventEmitter = new EventEmitter();\n @Output('onSubmit') submit: EventEmitter = new EventEmitter();\n private typingDurationBuffer: number = 5000;\n\n constructor(\n private configService: ConfigService,\n private stompService: StompService\n ) {}\n\n ngOnInit(): void {\n this.intervalId = setInterval(() => {\n this.broadcastTypingStatus();\n }, 2500);\n }\n\n ngOnChanges(): void {\n this.responseChanged();\n }\n\n ngOnDestroy(): void {\n clearInterval(this.intervalId);\n }\n\n protected responseChanged(): void {\n this.isSubmitEnabled = this.messageText?.length > 0;\n this.responseChangedEvent.emit(this.messageText);\n }\n\n private broadcastTypingStatus(): void {\n if (new Date().getTime() - this.lastTypingTimestamp < this.typingDurationBuffer) {\n this.stompService.rxStomp.publish({\n destination: `/app/api/peer-chat/${this.component.nodeId}/${this.component.id}/${\n this.peerGroup.id\n }/${this.configService.getWorkgroupId()}/is-typing`\n });\n }\n }\n\n protected keyPressed(event: any): void {\n if (event.keyCode === 13) {\n event.preventDefault();\n if (this.isSubmitEnabled) {\n this.submitResponse();\n }\n } else {\n this.lastTypingTimestamp = new Date().getTime();\n }\n }\n\n protected submitResponse(): void {\n this.submit.emit(this.messageText);\n this.messageText = '';\n this.isSubmitEnabled = false;\n this.lastTypingTimestamp = 0;\n }\n\n protected onFocus(event: any): void {\n this.placeCursorAtEndOfMessageText(event);\n }\n\n private placeCursorAtEndOfMessageText(event: any): void {\n const messageLength = this.messageText.length;\n event.srcElement.selectionStart = messageLength;\n event.srcElement.selectionEnd = messageLength;\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "stompService", + "type": "StompService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 25, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "stompService", + "type": "StompService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "
    \n \n \n \n \n \n Send\n \n
    \n" + }, + { + "name": "PeerChatMessagesComponent", + "id": "component-PeerChatMessagesComponent-6b79a49d404adaa60aa87e4ee2662cf3bf09e049b042dd0e3ecaa7fe8f106feb4d315de8d454139346628fd1ff5eb518a2dee13f7e44b4499c454431009a0a96", + "file": "src/assets/wise5/components/peerChat/peer-chat-messages/peer-chat-messages.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "peer-chat-messages", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./peer-chat-messages.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "isGrading", + "deprecated": false, + "deprecationMessage": "", + "line": 14, + "type": "boolean", + "decorators": [] + }, + { + "name": "myWorkgroupId", + "deprecated": false, + "deprecationMessage": "", + "line": 15, + "type": "number", + "decorators": [] + }, + { + "name": "peerChatMessages", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "line": 16, + "type": "PeerChatMessage[]", + "decorators": [] + }, + { + "name": "workgroupInfos", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "line": 19, + "type": "any", + "decorators": [] + } + ], + "outputsClass": [ + { + "name": "deleteClickedEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 13, + "type": "EventEmitter" + }, + { + "name": "undeleteClickedEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 17, + "type": "EventEmitter" + } + ], + "propertiesClass": [], + "methodsClass": [ + { + "name": "deleteClicked", + "args": [ + { + "name": "peerChatMessage", + "type": "PeerChatMessage", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 21, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "peerChatMessage", + "type": "PeerChatMessage", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "undeleteClicked", + "args": [ + { + "name": "peerChatMessage", + "type": "PeerChatMessage", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 25, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "peerChatMessage", + "type": "PeerChatMessage", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "PeerChatMessageComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { PeerChatMessage } from '../PeerChatMessage';\nimport { CommonModule } from '@angular/common';\nimport { PeerChatMessageComponent } from '../peer-chat-message/peer-chat-message.component';\n\n@Component({\n imports: [CommonModule, PeerChatMessageComponent],\n selector: 'peer-chat-messages',\n styleUrl: './peer-chat-messages.component.scss',\n templateUrl: './peer-chat-messages.component.html'\n})\nexport class PeerChatMessagesComponent {\n @Output() deleteClickedEvent: EventEmitter = new EventEmitter();\n @Input() isGrading: boolean;\n @Input() myWorkgroupId: number;\n @Input() peerChatMessages: PeerChatMessage[] = [];\n @Output() undeleteClickedEvent: EventEmitter =\n new EventEmitter();\n @Input() workgroupInfos: any = {};\n\n protected deleteClicked(peerChatMessage: PeerChatMessage): void {\n this.deleteClickedEvent.emit(peerChatMessage);\n }\n\n protected undeleteClicked(peerChatMessage: PeerChatMessage): void {\n this.undeleteClickedEvent.emit(peerChatMessage);\n }\n}\n", + "styleUrl": "./peer-chat-messages.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [], + "templateData": "@for (peerChatMessage of peerChatMessages; track peerChatMessage) {\n @if (isGrading || !peerChatMessage.isDeleted) {\n \n }\n}\n" + }, + { + "name": "PeerChatQuestionBankComponent", + "id": "component-PeerChatQuestionBankComponent-046d6d9accdc685ec7e331dd6fb903a4916c4ea92d4fcb1797a14a07c5906d8b724f131622cfc4ce83c759a69d79513a46042850a943ab9f522d2292b7f5cb0a", + "file": "src/assets/wise5/components/peerChat/peer-chat-question-bank/peer-chat-question-bank.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "peer-chat-question-bank", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./peer-chat-question-bank.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "content", + "deprecated": false, + "deprecationMessage": "", + "line": 32, + "type": "QuestionBankContent", + "decorators": [] + }, + { + "name": "displayedQuestionBankRules", + "deprecated": false, + "deprecationMessage": "", + "line": 33, + "type": "QuestionBankRule[]", + "decorators": [] + }, + { + "name": "questionIdsUsed", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "line": 35, + "type": "string[]", + "decorators": [] + } + ], + "outputsClass": [ + { + "name": "displayedQuestionBankRulesChange", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 34, + "type": "EventEmitter" + }, + { + "name": "useQuestionEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 37, + "type": "EventEmitter" + } + ], + "propertiesClass": [ + { + "name": "questions", + "deprecated": false, + "deprecationMessage": "", + "type": "(string | Question)[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 36, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "chooseQuestionBankRulesToDisplay", + "args": [ + { + "name": "referenceComponent", + "type": "WISEComponent", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "peerGroup", + "type": "PeerGroup", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "peerGroupStudentData", + "type": "PeerGroupStudentData[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "QuestionBankRule[]", + "typeParameters": [], + "line": 93, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "referenceComponent", + "type": "WISEComponent", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "peerGroup", + "type": "PeerGroup", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "peerGroupStudentData", + "type": "PeerGroupStudentData[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "evaluatePeerGroup", + "args": [ + { + "name": "referenceComponent", + "type": "WISEComponent", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 70, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "referenceComponent", + "type": "WISEComponent", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "filterQuestions", + "args": [ + { + "name": "questionBankRules", + "type": "QuestionBankRule[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "maxQuestionsToShow", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "QuestionBankRule[]", + "typeParameters": [], + "line": 122, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "questionBankRules", + "type": "QuestionBankRule[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "maxQuestionsToShow", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getPeerGroupData", + "args": [ + { + "name": "peerGroupingTag", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 144, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "peerGroupingTag", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 47, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "setQuestions", + "args": [ + { + "name": "rules", + "type": "QuestionBankRule[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 162, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "rules", + "type": "QuestionBankRule[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "subscribeToQuestionUsed", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 64, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "useQuestion", + "args": [ + { + "name": "question", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 166, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "question", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatButton" + }, + { + "name": "MatCard" + }, + { + "name": "MatIcon" + }, + { + "name": "MatTooltip" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { Observable, forkJoin } from 'rxjs';\nimport { PeerGroupService } from '../../../services/peerGroupService';\nimport { ProjectService } from '../../../services/projectService';\nimport { OpenResponseContent } from '../../openResponse/OpenResponseContent';\nimport { Component as WISEComponent } from '../../../common/Component';\nimport { PeerGroupStudentData } from '../../../../../app/domain/peerGroupStudentData';\nimport { CRaterResponse } from '../../common/cRater/CRaterResponse';\nimport { FeedbackRuleEvaluatorMultipleStudents } from '../../common/feedbackRule/FeedbackRuleEvaluatorMultipleStudents';\nimport { FeedbackRuleComponent } from '../../feedbackRule/FeedbackRuleComponent';\nimport { QuestionBankRule } from './QuestionBankRule';\nimport { concatMap, map } from 'rxjs/operators';\nimport { PeerGroup } from '../PeerGroup';\nimport { QuestionBankContent } from './QuestionBankContent';\nimport { copy } from '../../../common/object/object';\nimport { Question } from './Question';\nimport { QuestionBankService } from './questionBank.service';\nimport { ConstraintService } from '../../../services/constraintService';\nimport { ConfigService } from '../../../services/configService';\nimport { MatCard } from '@angular/material/card';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatButton } from '@angular/material/button';\nimport { MatTooltip } from '@angular/material/tooltip';\n\n@Component({\n imports: [MatButton, MatCard, MatIcon, MatTooltip],\n selector: 'peer-chat-question-bank',\n styleUrl: './peer-chat-question-bank.component.scss',\n templateUrl: './peer-chat-question-bank.component.html'\n})\nexport class PeerChatQuestionBankComponent implements OnInit {\n @Input() content: QuestionBankContent;\n @Input() displayedQuestionBankRules: QuestionBankRule[];\n @Output() displayedQuestionBankRulesChange = new EventEmitter();\n @Input() questionIdsUsed: string[] = [];\n protected questions: (string | Question)[];\n @Output() useQuestionEvent = new EventEmitter();\n\n constructor(\n private configService: ConfigService,\n private constraintService: ConstraintService,\n private peerGroupService: PeerGroupService,\n private projectService: ProjectService,\n private questionBankService: QuestionBankService\n ) {}\n\n ngOnInit(): void {\n if (this.displayedQuestionBankRules == null) {\n const referenceComponent = this.projectService.getReferenceComponent(\n this.content.questionBank\n );\n if (\n this.content.questionBank.isPeerGroupingTagSpecified() &&\n ['MultipleChoice', 'OpenResponse'].includes(referenceComponent.content.type)\n ) {\n this.evaluatePeerGroup(referenceComponent);\n }\n } else {\n this.setQuestions(this.displayedQuestionBankRules);\n }\n this.subscribeToQuestionUsed();\n }\n\n private subscribeToQuestionUsed(): void {\n this.questionBankService.questionUsed$.subscribe((question: Question) =>\n this.questionIdsUsed.push(question.id)\n );\n }\n\n private evaluatePeerGroup(referenceComponent: WISEComponent): void {\n const peerGroupRequest = this.peerGroupService.retrievePeerGroup(\n this.content.questionBank.getPeerGroupingTag()\n );\n const peerGroupDataRequest = this.getPeerGroupData(\n this.content.questionBank.getPeerGroupingTag(),\n this.content.nodeId,\n this.content.componentId\n );\n forkJoin([peerGroupRequest, peerGroupDataRequest]).subscribe((response) => {\n const peerGroup = response[0];\n const peerGroupStudentData = response[1];\n const questionBankRules = this.chooseQuestionBankRulesToDisplay(\n referenceComponent,\n peerGroup,\n peerGroupStudentData\n );\n this.displayedQuestionBankRules = questionBankRules;\n this.displayedQuestionBankRulesChange.emit(questionBankRules);\n this.setQuestions(questionBankRules);\n });\n }\n\n private chooseQuestionBankRulesToDisplay(\n referenceComponent: WISEComponent,\n peerGroup: PeerGroup,\n peerGroupStudentData: PeerGroupStudentData[]\n ): QuestionBankRule[] {\n const responses = peerGroupStudentData.map((peerMemberData: PeerGroupStudentData) => {\n return new CRaterResponse({\n ideas: peerMemberData.annotation?.data.ideas,\n scores: peerMemberData.annotation?.data.scores,\n submitCounter: peerMemberData.studentWork.studentData.submitCounter\n });\n });\n const feedbackRuleEvaluator = new FeedbackRuleEvaluatorMultipleStudents(\n new FeedbackRuleComponent(\n this.content.questionBank.getRules(),\n (referenceComponent.content as OpenResponseContent).maxSubmitCount,\n false\n ),\n this.configService,\n this.constraintService\n );\n feedbackRuleEvaluator.setReferenceComponent(referenceComponent);\n feedbackRuleEvaluator.setPeerGroup(peerGroup);\n return this.filterQuestions(\n feedbackRuleEvaluator.getFeedbackRules(responses) as QuestionBankRule[],\n this.content.questionBank.maxQuestionsToShow\n );\n }\n\n private filterQuestions(\n questionBankRules: QuestionBankRule[],\n maxQuestionsToShow: number\n ): QuestionBankRule[] {\n const rules = copy(questionBankRules);\n const filteredRules: QuestionBankRule[] = copy(rules);\n filteredRules.forEach((rule) => (rule.questions = []));\n let numAdded = 0;\n let ruleIndex = 0;\n const totalNumQuestions = rules.map((rule) => rule.questions).flat().length;\n const maxQuestions = maxQuestionsToShow ?? totalNumQuestions;\n while (numAdded < maxQuestions && numAdded != totalNumQuestions) {\n if (rules[ruleIndex].questions.length > 0) {\n const question = rules[ruleIndex].questions.shift();\n filteredRules[ruleIndex].questions.push(question);\n numAdded++;\n }\n ruleIndex = (ruleIndex + 1) % rules.length;\n }\n return filteredRules.filter((rule) => rule.questions.length > 0);\n }\n\n private getPeerGroupData(\n peerGroupingTag: string,\n nodeId: string,\n componentId: string\n ): Observable {\n return this.peerGroupService.retrievePeerGroup(peerGroupingTag).pipe(\n concatMap((peerGroup: PeerGroup) => {\n return this.peerGroupService\n .retrieveQuestionBankStudentData(peerGroup.id, nodeId, componentId)\n .pipe(\n map((peerGroupStudentData: PeerGroupStudentData[]) => {\n return peerGroupStudentData;\n })\n );\n })\n );\n }\n\n private setQuestions(rules: QuestionBankRule[]): void {\n this.questions = rules.flatMap((rule) => rule.questions);\n }\n\n protected useQuestion(question: string): void {\n this.useQuestionEvent.emit(question);\n }\n}\n", + "styleUrl": "./peer-chat-question-bank.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "constraintService", + "type": "ConstraintService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "peerGroupService", + "type": "PeerGroupService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "questionBankService", + "type": "QuestionBankService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 37, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "constraintService", + "type": "ConstraintService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "peerGroupService", + "type": "PeerGroupService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "questionBankService", + "type": "QuestionBankService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "\n
    \n help\n @if (content.questionBank.label != null && content.questionBank.label !== '') {\n {{ content.questionBank.label }}\n } @else {\n Question Bank\n }\n
    \n
    \n
      \n @for (question of questions; track question) {\n
    • \n @if (content.questionBank.version === 2) {\n @if (content.questionBank.clickToUseEnabled) {\n
      \n \n {{ question.text }}\n \n
      \n @if (questionIdsUsed.includes(question.id)) {\n check_circle \n Used in chat\n }\n
      \n
      \n } @else {\n {{ question.text }}\n }\n } @else {\n {{ question }}\n }\n
    • \n }\n
    \n
    \n
    \n" + }, + { + "name": "PeerChatShowWorkComponent", + "id": "component-PeerChatShowWorkComponent-dfcca5c52d1ed15f75f32ee4d316a91018104b0c7ff43fd2f6498301722b26c47f453cc2c863a00e34ef1094ae877988b20449d85fb27e9251b356e5076bccdd", + "file": "src/assets/wise5/components/peerChat/peer-chat-show-work/peer-chat-show-work.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "template": "", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "workgroupId", + "deprecated": false, + "deprecationMessage": "", + "line": 29, + "type": "number", + "decorators": [] + }, + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "line": 8, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "componentState", + "deprecated": false, + "deprecationMessage": "", + "line": 9, + "type": "any", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "isRevision", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "line": 10, + "type": "boolean", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 7, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "dynamicPrompt", + "deprecated": false, + "deprecationMessage": "", + "type": "FeedbackRule", + "indexKey": "", + "optional": false, + "description": "", + "line": 19 + }, + { + "name": "isPeerChatWorkgroupsAvailable", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 20 + }, + { + "name": "peerChatMessages", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "PeerChatMessage[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 21 + }, + { + "name": "peerChatWorkgroupIds", + "defaultValue": "new Set()", + "deprecated": false, + "deprecationMessage": "", + "type": "Set", + "indexKey": "", + "optional": false, + "description": "", + "line": 22 + }, + { + "name": "peerChatWorkgroupInfos", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 23 + }, + { + "name": "peerGroup", + "deprecated": false, + "deprecationMessage": "", + "type": "PeerGroup", + "indexKey": "", + "optional": false, + "description": "", + "line": 24 + }, + { + "name": "questionBankRules", + "deprecated": false, + "deprecationMessage": "", + "type": "QuestionBankRule[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 25 + }, + { + "name": "questionIdsUsed", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 26 + }, + { + "name": "requestTimeout", + "defaultValue": "10000", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 27 + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "inheritance": { + "file": "ComponentShowWorkDirective" + } + } + ], + "methodsClass": [ + { + "name": "addTeacherWorkgroupIds", + "args": [ + { + "name": "workgroupIds", + "type": "Set", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 76, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "workgroupIds", + "type": "Set", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addWorkgroupIdsFromPeerChatMessages", + "args": [ + { + "name": "workgroupIds", + "type": "Set", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 135, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "workgroupIds", + "type": "Set", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addWorkgroupIdsFromPeerGroup", + "args": [ + { + "name": "workgroupIds", + "type": "Set", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "peerGroup", + "type": "PeerGroup", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 70, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "workgroupIds", + "type": "Set", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "peerGroup", + "type": "PeerGroup", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getDynamicPrompt", + "args": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "FeedbackRule", + "typeParameters": [], + "line": 106, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getLatestStudentDataFieldForWorkgroup", + "args": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "fieldName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 118, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "fieldName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getQuestionBankRule", + "args": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "QuestionBankRule[]", + "typeParameters": [], + "line": 114, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 41, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "requestChatWorkgroups", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 46, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "requestChatWorkgroupsSuccess", + "args": [ + { + "name": "peerGroup", + "type": "PeerGroup", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 55, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "peerGroup", + "type": "PeerGroup", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "retrievePeerChatAnnotations", + "args": [], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 90, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "retrievePeerChatComponentStates", + "args": [], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 82, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "setPeerChatMessages", + "args": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 98, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setPeerChatWorkgroupInfos", + "args": [ + { + "name": "workgroupIds", + "type": "number[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 144, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "workgroupIds", + "type": "number[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngAfterViewInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 33, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentShowWorkDirective" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input } from '@angular/core';\nimport { timeout } from 'rxjs/operators';\nimport { ComponentShowWorkDirective } from '../../component-show-work.directive';\nimport { ConfigService } from '../../../services/configService';\nimport { ProjectService } from '../../../services/projectService';\nimport { PeerChatMessage } from '../PeerChatMessage';\nimport { PeerChatService } from '../peerChatService';\nimport { PeerGroupService } from '../../../services/peerGroupService';\nimport { PeerGroup } from '../PeerGroup';\nimport { PeerGroupMember } from '../PeerGroupMember';\nimport { NodeService } from '../../../services/nodeService';\nimport { FeedbackRule } from '../../common/feedbackRule/FeedbackRule';\nimport { QuestionBankRule } from '../peer-chat-question-bank/QuestionBankRule';\nimport { forkJoin, Observable } from 'rxjs';\nimport { getQuestionIdsUsed } from '../peer-chat-question-bank/question-bank-helper';\n\n@Component({ template: '' })\nexport class PeerChatShowWorkComponent extends ComponentShowWorkDirective {\n dynamicPrompt: FeedbackRule;\n isPeerChatWorkgroupsAvailable: boolean = false;\n peerChatMessages: PeerChatMessage[] = [];\n peerChatWorkgroupIds: Set = new Set();\n peerChatWorkgroupInfos: any = {};\n peerGroup: PeerGroup;\n questionBankRules: QuestionBankRule[];\n questionIdsUsed: string[] = [];\n requestTimeout: number = 10000;\n\n @Input() workgroupId: number;\n\n constructor(\n protected configService: ConfigService,\n protected nodeService: NodeService,\n protected peerChatService: PeerChatService,\n protected peerGroupService: PeerGroupService,\n protected projectService: ProjectService\n ) {\n super(nodeService, projectService);\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n this.requestChatWorkgroups();\n }\n\n private requestChatWorkgroups(): void {\n this.peerGroupService\n .retrievePeerGroup(this.componentContent.peerGroupingTag, this.workgroupId)\n .pipe(timeout(this.requestTimeout))\n .subscribe((peerGroup: PeerGroup) => {\n this.requestChatWorkgroupsSuccess(peerGroup);\n });\n }\n\n private requestChatWorkgroupsSuccess(peerGroup: PeerGroup): void {\n this.peerGroup = peerGroup;\n this.addWorkgroupIdsFromPeerGroup(this.peerChatWorkgroupIds, peerGroup);\n this.addTeacherWorkgroupIds(this.peerChatWorkgroupIds);\n forkJoin([\n this.retrievePeerChatComponentStates(),\n this.retrievePeerChatAnnotations()\n ]).subscribe(([componentStates, annotations]) => {\n this.setPeerChatMessages(componentStates);\n this.addWorkgroupIdsFromPeerChatMessages(this.peerChatWorkgroupIds, componentStates);\n this.setPeerChatWorkgroupInfos(Array.from(this.peerChatWorkgroupIds));\n this.peerChatService.processIsDeletedAnnotations(annotations, this.peerChatMessages);\n });\n }\n\n private addWorkgroupIdsFromPeerGroup(workgroupIds: Set, peerGroup: PeerGroup): void {\n peerGroup.members.forEach((member: PeerGroupMember) => {\n workgroupIds.add(member.id);\n });\n }\n\n private addTeacherWorkgroupIds(workgroupIds: Set): void {\n this.configService.getTeacherWorkgroupIds().forEach((workgroupId) => {\n workgroupIds.add(workgroupId);\n });\n }\n\n private retrievePeerChatComponentStates(): Observable {\n return this.peerChatService.retrievePeerChatComponentStates(\n this.nodeId,\n this.componentId,\n this.workgroupId\n );\n }\n\n private retrievePeerChatAnnotations(): Observable {\n return this.peerChatService.retrievePeerChatAnnotations(\n this.nodeId,\n this.componentId,\n this.workgroupId\n );\n }\n\n private setPeerChatMessages(componentStates: any[]): void {\n this.peerChatMessages = [];\n this.peerChatService.setPeerChatMessages(this.peerChatMessages, componentStates);\n this.dynamicPrompt = this.getDynamicPrompt(componentStates, this.workgroupId);\n this.questionBankRules = this.getQuestionBankRule(componentStates, this.workgroupId);\n this.questionIdsUsed = getQuestionIdsUsed(componentStates, this.workgroupId);\n }\n\n private getDynamicPrompt(componentStates: any[], workgroupId: number): FeedbackRule {\n return this.getLatestStudentDataFieldForWorkgroup(\n componentStates,\n workgroupId,\n 'dynamicPrompt'\n );\n }\n\n private getQuestionBankRule(componentStates: any[], workgroupId: number): QuestionBankRule[] {\n return this.getLatestStudentDataFieldForWorkgroup(componentStates, workgroupId, 'questionBank');\n }\n\n private getLatestStudentDataFieldForWorkgroup(\n componentStates: any[],\n workgroupId: number,\n fieldName: string\n ): any {\n for (let c = componentStates.length - 1; c >= 0; c--) {\n const componentState = componentStates[c];\n if (\n componentState.workgroupId === workgroupId &&\n componentState.studentData[fieldName] != null\n ) {\n return componentState.studentData[fieldName];\n }\n }\n return null;\n }\n\n private addWorkgroupIdsFromPeerChatMessages(\n workgroupIds: Set,\n componentStates: any[]\n ): void {\n componentStates.forEach((componentState) => {\n workgroupIds.add(componentState.workgroupId);\n });\n }\n\n private setPeerChatWorkgroupInfos(workgroupIds: number[]): void {\n this.peerChatService.setPeerChatWorkgroups(this.peerChatWorkgroupInfos, workgroupIds);\n this.isPeerChatWorkgroupsAvailable = true;\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "peerChatService", + "type": "PeerChatService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "peerGroupService", + "type": "PeerGroupService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 29, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "peerChatService", + "type": "PeerChatService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "peerGroupService", + "type": "PeerGroupService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "ComponentShowWorkDirective" + ] + }, + { + "name": "PeerChatStudentComponent", + "id": "component-PeerChatStudentComponent-878c0413a4a5923aa296a379f7b17f28f9b074d5f266119cd238f39107c0ef8ba257ac94500fd8546e65d93454fec78bc202d2785ebcba5990585f6e88fc6658", + "file": "src/assets/wise5/components/peerChat/peer-chat-student/peer-chat-student.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "peer-chat-student", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./peer-chat-student.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "component", + "deprecated": false, + "deprecationMessage": "", + "line": 24, + "type": "Component", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentState", + "deprecated": false, + "deprecationMessage": "", + "line": 25, + "type": "any", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isDisabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "line": 26, + "type": "boolean", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "mode", + "deprecated": false, + "deprecationMessage": "", + "line": 27, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 28, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "workgroupId", + "deprecated": false, + "deprecationMessage": "", + "line": 29, + "type": "number", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "outputsClass": [ + { + "name": "saveComponentStateEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 30, + "type": "EventEmitter", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "starterStateChangedEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 31, + "type": "EventEmitter", + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "propertiesClass": [ + { + "name": "component", + "deprecated": false, + "deprecationMessage": "", + "type": "PeerChatComponent", + "indexKey": "", + "optional": false, + "description": "", + "line": 44 + }, + { + "name": "displayedQuestionBankRules", + "deprecated": false, + "deprecationMessage": "", + "type": "QuestionBankRule[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 45 + }, + { + "name": "dynamicPrompt", + "deprecated": false, + "deprecationMessage": "", + "type": "FeedbackRule", + "indexKey": "", + "optional": false, + "description": "", + "line": 46 + }, + { + "name": "isPeerChatWorkgroupsAvailable", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 48 + }, + { + "name": "isPeerChatWorkgroupsResponseReceived", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 47 + }, + { + "name": "myWorkgroupId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 49 + }, + { + "name": "peerChatMessages", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "PeerChatMessage[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 50 + }, + { + "name": "peerChatWorkgroupIds", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "number[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 51 + }, + { + "name": "peerChatWorkgroupInfos", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 52 + }, + { + "name": "peerGroup", + "deprecated": false, + "deprecationMessage": "", + "type": "PeerGroup", + "indexKey": "", + "optional": false, + "description": "", + "line": 53 + }, + { + "name": "question", + "deprecated": false, + "deprecationMessage": "", + "type": "Question", + "indexKey": "", + "optional": false, + "description": "", + "line": 54 + }, + { + "name": "questionBankContent", + "deprecated": false, + "deprecationMessage": "", + "type": "QuestionBankContent", + "indexKey": "", + "optional": false, + "description": "", + "line": 55 + }, + { + "name": "questionIdsUsed", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 56 + }, + { + "name": "requestTimeout", + "defaultValue": "10000", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 57 + }, + { + "name": "response", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 58 + }, + { + "name": "annotationSavedToServerSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 53, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "attachments", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 33, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 34, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 35, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentType", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 36, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isDirty", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 45, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSaveButtonVisible", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 38, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSaveOrSubmitButtonVisible", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 41, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isShowAddToNotebookButton", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 39, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isStudentAttachmentEnabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 46, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmit", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 44, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmitButtonDisabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 42, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmitButtonVisible", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 40, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmitDirty", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 43, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "latestAnnotations", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 48, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "latestComponentState", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 50, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "nodeSubmitClickedSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 54, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "parentStudentWorkIds", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 49, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "prompt", + "deprecated": false, + "deprecationMessage": "", + "type": "SafeHtml", + "indexKey": "", + "optional": false, + "description": "", + "line": 37, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "requestComponentStateSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 52, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "showAddToNotebookButton", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 51, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "studentWorkSavedToServerSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 55, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "submitCounter", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 47, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 56, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "methodsClass": [ + { + "name": "addPeerChatMessage", + "args": [ + { + "name": "peerChatMessage", + "type": "PeerChatMessage", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 187, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "peerChatMessage", + "type": "PeerChatMessage", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addTeacherWorkgroupIds", + "args": [ + { + "name": "workgroupIds", + "type": "number[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 148, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "workgroupIds", + "type": "number[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "containsTeacherMessage", + "args": [ + { + "name": "peerChatMessages", + "type": "PeerChatMessage[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 284, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "peerChatMessages", + "type": "PeerChatMessage[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createComponentState", + "args": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 191, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createComponentStateAdditionalProcessing", + "args": [ + { + "name": "promise", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 227, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "promise", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getPeerChatAnnotations", + "args": [ + { + "name": "peerGroup", + "type": "PeerGroup", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 165, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "peerGroup", + "type": "PeerGroup", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getPeerChatComponentStates", + "args": [ + { + "name": "peerGroup", + "type": "PeerGroup", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 152, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "peerGroup", + "type": "PeerGroup", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getWorkgroupIdsToSendNotificationTo", + "args": [ + { + "name": "peerChatWorkgroupIds", + "type": "number[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "peerChatMessages", + "type": "PeerChatMessage[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "myWorkgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number[]", + "typeParameters": [], + "line": 268, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "peerChatWorkgroupIds", + "type": "number[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "peerChatMessages", + "type": "PeerChatMessage[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "myWorkgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isMessageToDisplayForThisChat", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 112, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isTeacherWorkgroupId", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 290, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngAfterViewChecked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 96, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 88, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "onDynamicPromptChanged", + "args": [ + { + "name": "feedbackRule", + "type": "FeedbackRule", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 294, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "feedbackRule", + "type": "FeedbackRule", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "registerStudentWorkReceivedListener", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 100, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "requestChatWorkgroups", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 120, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "responseChanged", + "args": [ + { + "name": "response", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 310, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "response", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "sendNotificationToPeerWorkgroups", + "args": [ + { + "name": "workgroupIds", + "type": "number[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 248, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "workgroupIds", + "type": "number[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "sendWorkToPeerWorkgroups", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 240, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setPeerChatMessages", + "args": [ + { + "name": "componentStates", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 160, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentStates", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setPeerChatWorkgroups", + "args": [ + { + "name": "workgroupIds", + "type": "number[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 173, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "workgroupIds", + "type": "number[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "submitStudentResponse", + "args": [ + { + "name": "response", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 180, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "response", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "useQuestion", + "args": [ + { + "name": "question", + "type": "Question", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 298, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "question", + "type": "Question", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addDefaultFeedback", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 688, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "attachStudentAsset", + "args": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 232, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "broadcastDoneRenderingComponent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 325, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "canSubmit", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 488, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "clearLatestComponentState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 555, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "confirmSubmit", + "args": [ + { + "name": "numberOfSubmitsLeft", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 468, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "numberOfSubmitsLeft", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "connectedComponentStudentDataSaved", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 796, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nThis function is called when a connected component of this component saves student data.\nThis was added to handle a race condition when a step has a connected component on a previous\nstep but the connected component student work on the previous step was not being imported\nbecause it wasn't being saved in time.\nHere is an example of what was happening\n- Student generates work on step 1 but does not click the save button\n- Student goes to step 2 which triggers a promise to save the student work on step 1\n- Step 2 is loaded and checks if there is any work it needs to import from step 1\n- The work in step 1 has not saved yet so step 2 does not import any work and loads without\n importing any work\n- The work from step 1 is then saved\nHere is the additional process that this function performs to fix this problem\n- Step 2 listens for when work is saved on step 1\n- When the work for step 1 is saved, step 2 checks to see if it needs to import that work\n", + "description": "

    This function is called when a connected component of this component saves student data.\nThis was added to handle a race condition when a step has a connected component on a previous\nstep but the connected component student work on the previous step was not being imported\nbecause it wasn't being saved in time.\nHere is an example of what was happening

    \n
      \n
    • Student generates work on step 1 but does not click the save button
    • \n
    • Student goes to step 2 which triggers a promise to save the student work on step 1
    • \n
    • Step 2 is loaded and checks if there is any work it needs to import from step 1
    • \n
    • The work in step 1 has not saved yet so step 2 does not import any work and loads without\nimporting any work
    • \n
    • The work from step 1 is then saved\nHere is the additional process that this function performs to fix this problem
    • \n
    • Step 2 listens for when work is saved on step 1
    • \n
    • When the work for step 1 is saved, step 2 checks to see if it needs to import that work
    • \n
    \n", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "copyAndAttachStudentAsset", + "args": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 218, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "copyPublicNotebookItem", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 632, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "copyPublicNotebookItemButtonClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 747, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createAutoCommentAnnotation", + "args": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 725, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createAutoScoreAnnotation", + "args": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 714, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createComponentStateAndBroadcast", + "args": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 559, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createDefaultFeedbackAnnotation", + "args": [ + { + "name": "feedbackText", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 706, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "feedbackText", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createMergedComponentState", + "args": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 377, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createNewComponentState", + "args": [], + "optional": false, + "returnType": "Partial", + "typeParameters": [], + "line": 818, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "disableAllInput", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 492, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "disableComponentIfNecessary", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 332, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "disableSubmitButton", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 496, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "doAttachStudentAsset", + "args": [ + { + "name": "studentAssetRequest", + "type": "StudentAssetRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 212, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "studentAssetRequest", + "type": "StudentAssetRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 541, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentStudentDataChanged", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 572, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentSubmitDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 548, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentSubmitTriggered", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 512, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "generateImageFromComponentState", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 615, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nRender the component state and then generate an image from it.\n", + "description": "

    Render the component state and then generate an image from it.

    \n", + "jsdoctags": [ + { + "name": { + "pos": 18804, + "end": 18818, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 18798, + "end": 18803, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    The component state to render.

    \n" + }, + { + "tagName": { + "pos": 18856, + "end": 18862, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

    A promise that will return an image.

    \n" + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "generateStarterState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 216, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getAction", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 321, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getClientSaveTime", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 684, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getComponentStatePromise", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 309, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getComponentStateWrapper", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "ComponentStateWrapper", + "typeParameters": [], + "line": 301, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getDefaultFeedback", + "args": [ + { + "name": "submitCount", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 702, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "submitCount", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getElementById", + "args": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getFirstResult", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 758, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "getFirstResult", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getIsDirty", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 277, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getMaxScore", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 680, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getMaxSubmitCount", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 460, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getNumberOfSubmitsLeft", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 456, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "handleConnectedComponents", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 352, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "handleConnectedComponentsPostProcess", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 385, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "handleStudentWorkSavedToServer", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 263, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "handleStudentWorkSavedToServerAdditionalProcessing", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 287, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasAnySubmissions", + "args": [ + { + "name": "componentStates", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 344, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentStates", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasDefaultFeedback", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 695, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasMaxScore", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 676, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasMaxSubmitCount", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 437, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasMaxSubmitCountAndUsedAllSubmits", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 452, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasSubmitMessage", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 504, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasSubmitsLeft", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 500, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasUsedAllSubmits", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 441, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "importWorkAsBackground", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 658, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "importWorkByStudentWorkId", + "args": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 170, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "incrementSubmitCounter", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 389, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isAddToNotebookEnabled", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 624, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isForThisComponent", + "args": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 192, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isFromConnectedComponent", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 766, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isHandleConnectedComponentAfterConnectedComponentStudentDataSaved", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 802, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isLockAfterSubmit", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 348, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isNotebookEnabled", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 643, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isPreviewMode", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 109, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSameComponent", + "args": [ + { + "name": "component", + "type": "Component", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 188, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "component", + "type": "Component", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isStudentNoteClippingEnabled", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 647, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isWorkFromClassmate", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 196, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "lockIfNecessary", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 281, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 97, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "performSubmit", + "args": [ + { + "name": "submitTriggeredBy", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 472, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "submitTriggeredBy", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "processConnectedComponentState", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 184, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "processLatestStudentWork", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 580, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "registerNotebookItemChosenListener", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 736, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "removeAttachment", + "args": [ + { + "name": "attachment", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 245, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "attachment", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "saveButtonClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 393, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "saveForAuthoringPreviewMode", + "args": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 404, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setBackgroundImage", + "args": [ + { + "name": "image", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 674, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "image", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setComponentStateAsBackgroundImage", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 668, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 537, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsDirtyAndBroadcast", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 527, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsSubmit", + "args": [ + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 464, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsSubmitDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 508, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsSubmitDirtyAndBroadcast", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 532, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setParentStudentWorkIdToCurrentStudentWork", + "args": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 180, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setStudentWork", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 381, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setSubmitCounter", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 811, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "shouldCreateComponentState", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 317, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "showStudentAssets", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 651, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "studentDataChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 519, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "submit", + "args": [ + { + "name": "submitTriggeredBy", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 416, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "submitTriggeredBy", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "submitButtonClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 412, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToAnnotationSavedToServer", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 123, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToAttachStudentAsset", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 200, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToNodeSubmitClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 137, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToNotebookItemChosen", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 159, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToNotifyConnectedComponents", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 147, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToRequestComponentState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 289, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToStudentWorkSavedToServer", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 252, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToSubscriptions", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 113, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "tryDisableComponent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 445, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "ComponentAnnotationsComponent", + "type": "component" + }, + { + "name": "ComponentHeaderComponent", + "type": "component" + }, + { + "name": "PeerChatChatBoxComponent", + "type": "component" + }, + { + "name": "PeerChatQuestionBankComponent", + "type": "component" + }, + { + "name": "PeerChatModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { ChangeDetectorRef, Component } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { forkJoin, Observable } from 'rxjs';\nimport { timeout } from 'rxjs/operators';\nimport { AnnotationService } from '../../../services/annotationService';\nimport { ConfigService } from '../../../services/configService';\nimport { NodeService } from '../../../services/nodeService';\nimport { NotebookService } from '../../../services/notebookService';\nimport { NotificationService } from '../../../services/notificationService';\nimport { PeerGroupService } from '../../../services/peerGroupService';\nimport { StudentAssetService } from '../../../services/studentAssetService';\nimport { StudentDataService } from '../../../services/studentDataService';\nimport { StudentWebSocketService } from '../../../services/studentWebSocketService';\nimport { FeedbackRule } from '../../common/feedbackRule/FeedbackRule';\nimport { ComponentStudent } from '../../component-student.component';\nimport { ComponentService } from '../../componentService';\nimport { QuestionBankContent } from '../peer-chat-question-bank/QuestionBankContent';\nimport { QuestionBankRule } from '../peer-chat-question-bank/QuestionBankRule';\nimport { PeerChatComponent } from '../PeerChatComponent';\nimport { PeerChatMessage } from '../PeerChatMessage';\nimport { PeerChatService } from '../peerChatService';\nimport { PeerGroup } from '../PeerGroup';\nimport { Question } from '../peer-chat-question-bank/Question';\nimport { QuestionBankService } from '../peer-chat-question-bank/questionBank.service';\nimport { getQuestionIdsUsed } from '../peer-chat-question-bank/question-bank-helper';\nimport { ComponentHeaderComponent } from '../../../directives/component-header/component-header.component';\nimport { PeerChatQuestionBankComponent } from '../peer-chat-question-bank/peer-chat-question-bank.component';\nimport { PeerChatChatBoxComponent } from '../peer-chat-chat-box/peer-chat-chat-box.component';\nimport { ComponentAnnotationsComponent } from '../../../directives/componentAnnotations/component-annotations.component';\nimport { PeerChatModule } from '../peer-chat.module';\n\n@Component({\n imports: [\n ComponentAnnotationsComponent,\n ComponentHeaderComponent,\n PeerChatChatBoxComponent,\n PeerChatQuestionBankComponent,\n PeerChatModule\n ],\n selector: 'peer-chat-student',\n templateUrl: './peer-chat-student.component.html'\n})\nexport class PeerChatStudentComponent extends ComponentStudent {\n component: PeerChatComponent;\n displayedQuestionBankRules: QuestionBankRule[];\n dynamicPrompt: FeedbackRule;\n isPeerChatWorkgroupsResponseReceived: boolean;\n isPeerChatWorkgroupsAvailable: boolean;\n myWorkgroupId: number;\n peerChatMessages: PeerChatMessage[] = [];\n peerChatWorkgroupIds: number[] = [];\n peerChatWorkgroupInfos: any = {};\n peerGroup: PeerGroup;\n question: Question;\n questionBankContent: QuestionBankContent;\n questionIdsUsed: string[] = [];\n requestTimeout: number = 10000;\n response: string = '';\n\n constructor(\n protected annotationService: AnnotationService,\n private changeDetectorRef: ChangeDetectorRef,\n protected componentService: ComponentService,\n protected configService: ConfigService,\n protected dialog: MatDialog,\n protected nodeService: NodeService,\n protected notebookService: NotebookService,\n private notificationService: NotificationService,\n private peerChatService: PeerChatService,\n private peerGroupService: PeerGroupService,\n private questionBankService: QuestionBankService,\n protected studentAssetService: StudentAssetService,\n protected studentDataService: StudentDataService,\n private studentWebSocketService: StudentWebSocketService\n ) {\n super(\n annotationService,\n componentService,\n configService,\n dialog,\n nodeService,\n notebookService,\n studentAssetService,\n studentDataService\n );\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n this.myWorkgroupId = this.configService.isAuthoring() ? 1 : this.configService.getWorkgroupId();\n this.requestChatWorkgroups();\n this.registerStudentWorkReceivedListener();\n this.questionBankContent = this.component.getQuestionBankContent();\n }\n\n ngAfterViewChecked(): void {\n this.changeDetectorRef.detectChanges();\n }\n\n private registerStudentWorkReceivedListener(): void {\n this.subscriptions.add(\n this.studentDataService.studentWorkReceived$.subscribe((componentState) => {\n if (this.isMessageToDisplayForThisChat(componentState)) {\n this.addPeerChatMessage(\n this.peerChatService.convertComponentStateToPeerChatMessage(componentState)\n );\n }\n })\n );\n }\n\n private isMessageToDisplayForThisChat(componentState: any): boolean {\n return (\n this.isForThisComponent(componentState) &&\n this.isWorkFromClassmate(componentState) &&\n componentState.peerGroupId === this.peerGroup.id\n );\n }\n\n private requestChatWorkgroups(): void {\n this.peerGroupService\n .retrievePeerGroup(this.component.getPeerGroupingTag(), this.workgroupId)\n .pipe(timeout(this.requestTimeout))\n .subscribe(\n (peerGroup: PeerGroup) => {\n this.isPeerChatWorkgroupsResponseReceived = true;\n if (peerGroup != null) {\n this.peerGroup = peerGroup;\n const peerGroupWorkgroupIds = peerGroup.getWorkgroupIds();\n this.addTeacherWorkgroupIds(peerGroupWorkgroupIds);\n this.setPeerChatWorkgroups(peerGroupWorkgroupIds);\n forkJoin([\n this.getPeerChatComponentStates(peerGroup),\n this.getPeerChatAnnotations(peerGroup)\n ]).subscribe(([componentStates, annotations]) => {\n this.setPeerChatMessages(componentStates);\n this.peerChatService.processIsDeletedAnnotations(annotations, this.peerChatMessages);\n this.questionIdsUsed = getQuestionIdsUsed(componentStates, this.myWorkgroupId);\n });\n }\n },\n (error) => {\n this.isPeerChatWorkgroupsResponseReceived = true;\n }\n );\n }\n\n private addTeacherWorkgroupIds(workgroupIds: number[]): void {\n workgroupIds.push(...this.configService.getTeacherWorkgroupIds());\n }\n\n private getPeerChatComponentStates(peerGroup: PeerGroup): Observable {\n return this.peerGroupService.retrievePeerGroupWork(\n peerGroup,\n this.component.nodeId,\n this.component.id\n );\n }\n\n private setPeerChatMessages(componentStates: any = []): void {\n this.peerChatMessages = [];\n this.peerChatService.setPeerChatMessages(this.peerChatMessages, componentStates);\n }\n\n private getPeerChatAnnotations(peerGroup: PeerGroup): Observable {\n return this.peerGroupService.retrievePeerGroupAnnotations(\n peerGroup,\n this.component.nodeId,\n this.component.id\n );\n }\n\n private setPeerChatWorkgroups(workgroupIds: number[]): void {\n this.peerChatWorkgroupIds = workgroupIds;\n this.peerChatWorkgroupInfos = {};\n this.peerChatService.setPeerChatWorkgroups(this.peerChatWorkgroupInfos, workgroupIds);\n this.isPeerChatWorkgroupsAvailable = true;\n }\n\n submitStudentResponse(response: string): void {\n const peerChatMessage = new PeerChatMessage(this.myWorkgroupId, response, new Date().getTime());\n this.addPeerChatMessage(peerChatMessage);\n this.response = response;\n this.emitComponentSubmitTriggered();\n }\n\n private addPeerChatMessage(peerChatMessage: PeerChatMessage): void {\n this.peerChatMessages.push(peerChatMessage);\n }\n\n createComponentState(action: string): any {\n const componentState: any = this.createNewComponentState();\n componentState.studentData = {\n response: this.response,\n submitCounter: this.submitCounter\n };\n if (this.question != null) {\n componentState.studentData.questionId = this.question.id;\n this.questionBankService.questionUsed(this.question);\n }\n if (this.dynamicPrompt != null) {\n componentState.studentData.dynamicPrompt = this.dynamicPrompt;\n }\n if (this.displayedQuestionBankRules != null) {\n componentState.studentData.questionBank = this.displayedQuestionBankRules;\n }\n componentState.componentType = 'PeerChat';\n componentState.nodeId = this.component.nodeId;\n componentState.componentId = this.component.id;\n componentState.isSubmit = true;\n componentState.runId = this.configService.getRunId();\n componentState.periodId = this.configService.getPeriodId();\n componentState.workgroupId = this.myWorkgroupId;\n componentState.peerGroupId = this.peerGroup.id;\n const promise = new Promise((resolve, reject) => {\n return this.createComponentStateAdditionalProcessing(\n { resolve: resolve, reject: reject },\n componentState,\n action\n );\n });\n this.response = '';\n this.question = null;\n return promise;\n }\n\n createComponentStateAdditionalProcessing(promise: any, componentState: any, action: string) {\n this.sendWorkToPeerWorkgroups(componentState);\n this.sendNotificationToPeerWorkgroups(\n this.getWorkgroupIdsToSendNotificationTo(\n this.peerChatWorkgroupIds,\n this.peerChatMessages,\n this.workgroupId\n )\n );\n promise.resolve(componentState);\n return promise;\n }\n\n private sendWorkToPeerWorkgroups(componentState: any): void {\n for (const workgroupId of this.peerChatWorkgroupIds) {\n if (workgroupId !== this.workgroupId) {\n this.studentWebSocketService.sendStudentWorkToClassmate(workgroupId, componentState);\n }\n }\n }\n\n private sendNotificationToPeerWorkgroups(workgroupIds: number[]): void {\n const runId = this.configService.getRunId();\n const periodId = this.configService.getPeriodId();\n const notificationType = 'PeerChatMessage';\n const message = $localize`You have new chat messages`;\n for (const workgroupId of workgroupIds) {\n const notification = this.notificationService.createNewNotification(\n runId,\n periodId,\n notificationType,\n this.component.nodeId,\n this.component.id,\n this.workgroupId,\n workgroupId,\n message\n );\n this.notificationService.saveNotificationToServer(notification);\n }\n }\n\n private getWorkgroupIdsToSendNotificationTo(\n peerChatWorkgroupIds: number[],\n peerChatMessages: PeerChatMessage[],\n myWorkgroupId: number\n ): number[] {\n return peerChatWorkgroupIds.filter((workgroupId) => {\n if (workgroupId === myWorkgroupId) {\n return false;\n } else if (this.isTeacherWorkgroupId(workgroupId)) {\n return this.containsTeacherMessage(peerChatMessages);\n } else {\n return true;\n }\n });\n }\n\n private containsTeacherMessage(peerChatMessages: PeerChatMessage[]): boolean {\n return peerChatMessages.some((peerChatMessage) =>\n this.isTeacherWorkgroupId(peerChatMessage.workgroupId)\n );\n }\n\n private isTeacherWorkgroupId(workgroupId: number): boolean {\n return this.configService.getTeacherWorkgroupIds().includes(workgroupId);\n }\n\n onDynamicPromptChanged(feedbackRule: FeedbackRule): void {\n this.dynamicPrompt = feedbackRule;\n }\n\n protected useQuestion(question: Question): void {\n if (\n this.response === '' ||\n confirm(\n $localize`Are you sure you want to replace the current text in your response input box with this text?`\n )\n ) {\n this.question = question;\n this.response = question.text;\n }\n }\n\n protected responseChanged(response: string): void {\n this.response = response;\n if (response.length < 2) {\n this.question = null;\n }\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "changeDetectorRef", + "type": "ChangeDetectorRef", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentService", + "type": "ComponentService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "notebookService", + "type": "NotebookService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "notificationService", + "type": "NotificationService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "peerChatService", + "type": "PeerChatService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "peerGroupService", + "type": "PeerGroupService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "questionBankService", + "type": "QuestionBankService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentAssetService", + "type": "StudentAssetService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentDataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentWebSocketService", + "type": "StudentWebSocketService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 58, + "jsdoctags": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "changeDetectorRef", + "type": "ChangeDetectorRef", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentService", + "type": "ComponentService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "notebookService", + "type": "NotebookService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "notificationService", + "type": "NotificationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "peerChatService", + "type": "PeerChatService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "peerGroupService", + "type": "PeerGroupService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "questionBankService", + "type": "QuestionBankService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentAssetService", + "type": "StudentAssetService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentDataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentWebSocketService", + "type": "StudentWebSocketService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "ComponentStudent" + ], + "templateData": "
    \n @if (isPeerChatWorkgroupsResponseReceived && !isPeerChatWorkgroupsAvailable) {\n
    \n This Peer Chat activity is not yet available. Please check back later or wait for a\n notification to return.\n \n
    \n }\n @if (isPeerChatWorkgroupsAvailable) {\n \n
    \n @if (questionBankContent != null) {\n
    \n @if (questionBankContent.questionBank?.enabled) {\n \n }\n
    \n }\n
    \n \n
    \n
    \n @if (mode === 'student') {\n \n }\n }\n
    \n" + }, + { + "name": "PeerGroupAssignedWorkgroupsComponent", + "id": "component-PeerGroupAssignedWorkgroupsComponent-d164e31c841f46a8807ace9012fd099e59574ca9fdab9d171ba4a082677ea6e5ddf53f8ec0358ce8f1d206942fd4d77d3e3e2cb860c003e2e023899d69ea934e", + "file": "src/assets/wise5/classroomMonitor/classroomMonitorComponents/peer-group/peer-group-assigned-workgroups/peer-group-assigned-workgroups.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "peer-group-assigned-workgroups", + "styleUrls": [ + "../peer-group-workgroups-container/peer-group-workgroups-container.component.scss", + "./peer-group-assigned-workgroups.component.scss" + ], + "styles": [], + "templateUrl": [ + "./peer-group-assigned-workgroups.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "groupings", + "deprecated": false, + "deprecationMessage": "", + "line": 15, + "type": "any[]", + "decorators": [] + } + ], + "outputsClass": [ + { + "name": "moveWorkgroup", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 16, + "type": "EventEmitter" + } + ], + "propertiesClass": [], + "methodsClass": [ + { + "name": "emitMoveWorkgroup", + "args": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 18, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatCard" + }, + { + "name": "PeerGroupGroupingComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { MatCard } from '@angular/material/card';\nimport { PeerGroupGroupingComponent } from '../peer-group-grouping/peer-group-grouping.component';\n\n@Component({\n imports: [MatCard, PeerGroupGroupingComponent],\n selector: 'peer-group-assigned-workgroups',\n styleUrls: [\n '../peer-group-workgroups-container/peer-group-workgroups-container.component.scss',\n './peer-group-assigned-workgroups.component.scss'\n ],\n templateUrl: './peer-group-assigned-workgroups.component.html'\n})\nexport class PeerGroupAssignedWorkgroupsComponent {\n @Input() groupings: any[];\n @Output() moveWorkgroup: EventEmitter = new EventEmitter();\n\n emitMoveWorkgroup(event: any): void {\n this.moveWorkgroup.emit(event);\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": [ + { + "data": "@use 'style/abstracts/variables';\n\n.group.mat-mdc-card {\n padding: 8px 8px 0;\n box-shadow: none;\n}\n\n.mat-mdc-card-content {\n padding: 8px 0 0;\n}\n\nh4 {\n margin: 0;\n}\n\n.avatar {\n margin-right: 4px;\n}\n\nul {\n min-height: 48px;\n padding: 4px;\n margin: -4px -8px;\n transition: background-color 250ms;\n border-bottom-left-radius: variables.$card-border-radius;\n border-bottom-right-radius: variables.$card-border-radius;\n column-gap: 0;\n}\n\nli {\n list-style-type: none;\n cursor: move;\n padding: 4px;\n -webkit-column-break-inside: avoid;\n page-break-inside: avoid;\n break-inside: avoid;\n}\n\n.cdk-drag-placeholder {\n opacity: .4;\n}\n", + "styleUrl": "../peer-group-workgroups-container/peer-group-workgroups-container.component.scss" + }, + { + "data": ".group-container {\n padding: 4px\n}", + "styleUrl": "./peer-group-assigned-workgroups.component.scss" + } + ], + "stylesData": "", + "extends": [], + "templateData": "
    \n @for (grouping of groupings; track grouping) {\n
    \n \n \n \n
    \n }\n
    \n" + }, + { + "name": "PeerGroupButtonComponent", + "id": "component-PeerGroupButtonComponent-fa31fb1e36fa02eb8b7ab34858956f99a20b21f5596a51478bef990b0a13a3d694ede85060da7db7a784ec2da19d941f91e7ff100a8f72d02f7f84e2678fc30f", + "file": "src/assets/wise5/classroomMonitor/classroomMonitorComponents/peer-group-button/peer-group-button.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "peer-group-button", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./peer-group-button.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "component", + "deprecated": false, + "deprecationMessage": "", + "line": 14, + "type": "any", + "decorators": [] + }, + { + "name": "node", + "deprecated": false, + "deprecationMessage": "", + "line": 15, + "type": "Node", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "peerGroupingTag", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "ngOnChanges", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 20, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "showPeerGroup", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 24, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { Node } from '../../../common/Node';\nimport { TeacherPeerGroupService } from '../../../services/teacherPeerGroupService';\n\n@Component({\n imports: [CommonModule, MatButtonModule, MatIconModule],\n selector: 'peer-group-button',\n templateUrl: './peer-group-button.component.html'\n})\nexport class PeerGroupButtonComponent {\n @Input() component: any;\n @Input() node: Node;\n protected peerGroupingTag: string;\n\n constructor(private peerGroupService: TeacherPeerGroupService) {}\n\n ngOnChanges(): void {\n this.peerGroupingTag = this.component?.peerGroupingTag;\n }\n\n protected showPeerGroup(): void {\n this.peerGroupService.showPeerGroupDetails(this.peerGroupingTag);\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "peerGroupService", + "type": "TeacherPeerGroupService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 16, + "jsdoctags": [ + { + "name": "peerGroupService", + "type": "TeacherPeerGroupService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "@if (peerGroupingTag) {\n \n}\n" + }, + { + "name": "PeerGroupDialogComponent", + "id": "component-PeerGroupDialogComponent-cd555dabea70bd34ed768578a6b95b1ce359db846ae8bfa52ff57e4f76045fe197ab334f94f3c4eebae76a76113859e1a78c7346fb445bcdf7704295acd9b000", + "file": "src/assets/wise5/classroomMonitor/classroomMonitorComponents/peer-group/peer-group-dialog/peer-group-dialog.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./peer-group-dialog.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "currentPeriodChangedSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 32, + "modifierKind": [ + 123 + ] + }, + { + "name": "peerGroupingName", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 33, + "modifierKind": [ + 124 + ] + }, + { + "name": "peerGroupingTag", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 38, + "decorators": [ + { + "name": "Inject", + "stringifiedArguments": "MAT_DIALOG_DATA" + } + ], + "modifierKind": [ + 171, + 125 + ] + }, + { + "name": "periods", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 34, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 52, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 42, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "setPeriods", + "args": [ + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 56, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatDialogTitle" + }, + { + "name": "SelectPeriodComponent", + "type": "component" + }, + { + "name": "CdkScrollable" + }, + { + "name": "MatDialogContent" + }, + { + "name": "PeerGroupPeriodComponent", + "type": "component" + }, + { + "name": "MatDialogActions" + }, + { + "name": "MatButton" + }, + { + "name": "MatDialogClose" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Inject, OnInit } from '@angular/core';\nimport {\n MAT_DIALOG_DATA,\n MatDialogTitle,\n MatDialogContent,\n MatDialogActions,\n MatDialogClose\n} from '@angular/material/dialog';\nimport { Subscription } from 'rxjs';\nimport { TeacherDataService } from '../../../../services/teacherDataService';\nimport { TeacherProjectService } from '../../../../services/teacherProjectService';\nimport { SelectPeriodComponent } from '../../select-period/select-period.component';\nimport { CdkScrollable } from '@angular/cdk/scrolling';\nimport { PeerGroupPeriodComponent } from '../peer-group-period/peer-group-period.component';\nimport { MatButton } from '@angular/material/button';\n\n@Component({\n imports: [\n MatDialogTitle,\n SelectPeriodComponent,\n CdkScrollable,\n MatDialogContent,\n PeerGroupPeriodComponent,\n MatDialogActions,\n MatButton,\n MatDialogClose\n ],\n styleUrl: './peer-group-dialog.component.scss',\n templateUrl: './peer-group-dialog.component.html'\n})\nexport class PeerGroupDialogComponent implements OnInit {\n private currentPeriodChangedSubscription: Subscription;\n protected peerGroupingName: string;\n protected periods: any[];\n\n constructor(\n private dataService: TeacherDataService,\n @Inject(MAT_DIALOG_DATA) public peerGroupingTag: string,\n private projectService: TeacherProjectService\n ) {}\n\n ngOnInit(): void {\n this.setPeriods(this.dataService.getCurrentPeriodId());\n this.peerGroupingName = this.projectService.getPeerGrouping(this.peerGroupingTag).name;\n this.currentPeriodChangedSubscription = this.dataService.currentPeriodChanged$.subscribe(\n ({ currentPeriod }) => {\n this.setPeriods(currentPeriod.periodId);\n }\n );\n }\n\n ngOnDestroy(): void {\n this.currentPeriodChangedSubscription.unsubscribe();\n }\n\n private setPeriods(periodId: number): void {\n const allPeriods = this.dataService.getPeriods();\n this.periods =\n periodId === -1\n ? allPeriods.slice(1)\n : [allPeriods.find((period) => period.periodId === periodId)];\n }\n}\n", + "styleUrl": "./peer-group-dialog.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "peerGroupingTag", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 34, + "jsdoctags": [ + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "peerGroupingTag", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "\n Groupings for {{ peerGroupingName }}\n \n \n\n\n

    Tip: Drag students to change groups for this peer grouping.

    \n @for (period of periods; track period) {\n \n }\n
    \n\n \n\n" + }, + { + "name": "PeerGroupGroupingComponent", + "id": "component-PeerGroupGroupingComponent-3e6c6070ca2f177b9dd339a086904cc4c6155b036cb087f2914b7f032d77023163837f74d52e18b8955ca1a3e596ddabd20d1956e11bf5c606aed84acd36b1df", + "file": "src/assets/wise5/classroomMonitor/classroomMonitorComponents/peer-group/peer-group-grouping/peer-group-grouping.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "peer-group-grouping", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./peer-group-grouping.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "grouping", + "deprecated": false, + "deprecationMessage": "", + "line": 18, + "type": "any", + "decorators": [] + } + ], + "outputsClass": [ + { + "name": "moveWorkgroup", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 9, + "type": "EventEmitter", + "inheritance": { + "file": "PeerGroupWorkgroupsContainerComponent" + } + } + ], + "propertiesClass": [ + { + "name": "avatarColor", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 20, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "PeerGroupWorkgroupsContainerComponent" + } + }, + { + "name": "addBackgroundColor", + "args": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 46, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "PeerGroupWorkgroupsContainerComponent" + } + }, + { + "name": "dragEnter", + "args": [ + { + "name": "event", + "type": "CdkDragEnter", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 15, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "event", + "type": "CdkDragEnter", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "PeerGroupWorkgroupsContainerComponent" + } + }, + { + "name": "dragExit", + "args": [ + { + "name": "event", + "type": "CdkDragExit", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 19, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "event", + "type": "CdkDragExit", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "PeerGroupWorkgroupsContainerComponent" + } + }, + { + "name": "dropWorkgroup", + "args": [ + { + "name": "event", + "type": "CdkDragDrop", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 23, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "event", + "type": "CdkDragDrop", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "PeerGroupWorkgroupsContainerComponent" + } + }, + { + "name": "isFromAssignedContainer", + "args": [ + { + "name": "event", + "type": "CdkDragDrop", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 42, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "event", + "type": "CdkDragDrop", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "PeerGroupWorkgroupsContainerComponent" + } + }, + { + "name": "removeBackgroundColor", + "args": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 50, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "PeerGroupWorkgroupsContainerComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatIcon" + }, + { + "name": "NgStyle" + }, + { + "name": "MatCardContent" + }, + { + "name": "CdkDropList" + }, + { + "name": "CdkDrag" + }, + { + "name": "PeerGroupWorkgroupComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input } from '@angular/core';\nimport { PeerGroupWorkgroupsContainerComponent } from '../peer-group-workgroups-container/peer-group-workgroups-container.component';\nimport { getAvatarColorForWorkgroupId } from '../../../../common/workgroup/workgroup';\nimport { MatIcon } from '@angular/material/icon';\nimport { NgStyle } from '@angular/common';\nimport { MatCardContent } from '@angular/material/card';\nimport { CdkDropList, CdkDrag } from '@angular/cdk/drag-drop';\nimport { PeerGroupWorkgroupComponent } from '../peer-group-workgroup/peer-group-workgroup.component';\n\n@Component({\n imports: [MatIcon, NgStyle, MatCardContent, CdkDropList, CdkDrag, PeerGroupWorkgroupComponent],\n selector: 'peer-group-grouping',\n styleUrl: '../peer-group-workgroups-container/peer-group-workgroups-container.component.scss',\n templateUrl: './peer-group-grouping.component.html'\n})\nexport class PeerGroupGroupingComponent extends PeerGroupWorkgroupsContainerComponent {\n protected avatarColor: string;\n @Input() grouping: any;\n\n ngOnInit(): void {\n this.avatarColor = getAvatarColorForWorkgroupId(this.grouping.id);\n }\n}\n", + "styleUrl": "../peer-group-workgroups-container/peer-group-workgroups-container.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [ + "PeerGroupWorkgroupsContainerComponent" + ], + "templateData": "
    \n group\n

    Group {{ grouping.id }}

    \n
    \n\n \n @for (workgroup of grouping.members; track workgroup) {\n \n \n \n }\n \n\n" + }, + { + "name": "PeerGroupMoveWorkgroupConfirmDialogComponent", + "id": "component-PeerGroupMoveWorkgroupConfirmDialogComponent-aeea6d7eac50b1afcc44db72b60826933976ffce314d98e5a19fd8c94eb7973b26cc49767b258fe43599dfc250865c0cb3355377a6e6e50474d47fa4096b0e3f", + "file": "src/assets/wise5/classroomMonitor/classroomMonitorComponents/peer-group/peer-group-move-workgroup-confirm-dialog/peer-group-move-workgroup-confirm-dialog.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "app-peer-group-move-workgroup-confirm-dialog", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./peer-group-move-workgroup-confirm-dialog.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "isMovingFromPeerGroup", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 28, + "decorators": [ + { + "name": "Inject", + "stringifiedArguments": "MAT_DIALOG_DATA" + } + ], + "modifierKind": [ + 171, + 125 + ] + } + ], + "methodsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatDialogTitle" + }, + { + "name": "MatIcon" + }, + { + "name": "CdkScrollable" + }, + { + "name": "MatDialogContent" + }, + { + "name": "MatDialogActions" + }, + { + "name": "MatButton" + }, + { + "name": "MatDialogClose" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Inject } from '@angular/core';\nimport {\n MAT_DIALOG_DATA,\n MatDialogTitle,\n MatDialogContent,\n MatDialogActions,\n MatDialogClose\n} from '@angular/material/dialog';\nimport { MatIcon } from '@angular/material/icon';\nimport { CdkScrollable } from '@angular/cdk/scrolling';\nimport { MatButton } from '@angular/material/button';\n\n@Component({\n imports: [\n MatDialogTitle,\n MatIcon,\n CdkScrollable,\n MatDialogContent,\n MatDialogActions,\n MatButton,\n MatDialogClose\n ],\n selector: 'app-peer-group-move-workgroup-confirm-dialog',\n styleUrl: './peer-group-move-workgroup-confirm-dialog.component.scss',\n templateUrl: './peer-group-move-workgroup-confirm-dialog.component.html'\n})\nexport class PeerGroupMoveWorkgroupConfirmDialogComponent {\n constructor(@Inject(MAT_DIALOG_DATA) public isMovingFromPeerGroup: boolean) {}\n}\n", + "styleUrl": "./peer-group-move-workgroup-confirm-dialog.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "isMovingFromPeerGroup", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 27, + "jsdoctags": [ + { + "name": "isMovingFromPeerGroup", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "

    \n Change Grouping\n \n @if (isMovingFromPeerGroup) {\n warning\n }\n

    \n\n
    \n @if (isMovingFromPeerGroup) {\n

    \n Warning: If you remove students from a Peer Group, they will no longer see any contributions\n they made to that group.\n

    \n

    Their contributions will still be visible to remaining group members.

    \n }\n

    Are you sure you want to move this team?

    \n
    \n
    \n\n @if (isMovingFromPeerGroup) {\n \n }\n @if (!isMovingFromPeerGroup) {\n \n }\n @if (isMovingFromPeerGroup) {\n \n }\n @if (!isMovingFromPeerGroup) {\n \n }\n\n" + }, + { + "name": "PeerGroupPeriodComponent", + "id": "component-PeerGroupPeriodComponent-0b40d3791cb196f3837ee8b38504a0a3d1ecf07c7835d7e9cfee3204900aabab2548d8e92991e82801344acd73dc6646ab4bd396f9a85301afa91c738af59047", + "file": "src/assets/wise5/classroomMonitor/classroomMonitorComponents/peer-group/peer-group-period/peer-group-period.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "peer-group-period", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./peer-group-period.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "peerGroupingTag", + "deprecated": false, + "deprecationMessage": "", + "line": 27, + "type": "string", + "decorators": [] + }, + { + "name": "period", + "deprecated": false, + "deprecationMessage": "", + "line": 28, + "type": "any", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "groupings", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 32 + }, + { + "name": "nextAvailableGroupId", + "defaultValue": "1", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 33 + }, + { + "name": "UNASSIGNED_GROUP_ID", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 30 + }, + { + "name": "unassignedWorkgroups", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 34 + }, + { + "name": "workgroups", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 35 + } + ], + "methodsClass": [ + { + "name": "addGrouping", + "args": [ + { + "name": "grouping", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "grouping", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addWorkgroupToGroup", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "groupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 178, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "groupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createGrouping", + "args": [ + { + "name": "id", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "this.nextAvailableGroupId" + }, + { + "name": "members", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 76, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "id", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "this.nextAvailableGroupId", + "tagName": { + "text": "param" + } + }, + { + "name": "members", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createNewGroup", + "args": [], + "optional": false, + "returnType": "Subscription", + "typeParameters": [], + "line": 87, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getGroup", + "args": [ + { + "name": "groupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 188, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "groupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getPeerGroupsInPeriod", + "args": [ + { + "name": "peerGroups", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 60, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "peerGroups", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getWorkgroupsInPeriod", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 68, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getWorkgroupsNotInPeerGroupInPeriod", + "args": [ + { + "name": "workgroups", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 64, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "workgroups", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isUnassignedGroupId", + "args": [ + { + "name": "groupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 112, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "groupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "moveWorkgroup", + "args": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Subscription", + "typeParameters": [], + "line": 101, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "moveWorkgroupSuccess", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "previousGroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "newGroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 146, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "previousGroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "newGroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "moveWorkgroupToGroupRequest", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "previousGroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "newGroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Subscription", + "typeParameters": [], + "line": 131, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "previousGroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "newGroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnChanges", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 42, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "removeWorkgroup", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "groupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 151, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "groupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "removeWorkgroupFromGroup", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "groupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 168, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "groupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "removeWorkgroupFromGroupRequest", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "previousGroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "newGroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Subscription", + "typeParameters": [], + "line": 116, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "previousGroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "newGroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "removeWorkgroupFromUnassigned", + "args": [ + { + "name": "workgroupId", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 159, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "workgroupId", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatCard" + }, + { + "name": "MatCardContent" + }, + { + "name": "MatButton" + }, + { + "name": "MatIcon" + }, + { + "name": "CdkDropListGroup" + }, + { + "name": "PeerGroupUnassignedWorkgroupsComponent", + "type": "component" + }, + { + "name": "PeerGroupAssignedWorkgroupsComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { ConfigService } from '../../../../services/configService';\nimport { PeerGroupService } from '../../../../services/peerGroupService';\nimport { MatCard, MatCardContent } from '@angular/material/card';\nimport { MatButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\nimport { CdkDropListGroup } from '@angular/cdk/drag-drop';\nimport { PeerGroupUnassignedWorkgroupsComponent } from '../peer-group-unassigned-workgroups/peer-group-unassigned-workgroups.component';\nimport { PeerGroupAssignedWorkgroupsComponent } from '../peer-group-assigned-workgroups/peer-group-assigned-workgroups.component';\n\n@Component({\n imports: [\n MatCard,\n MatCardContent,\n MatButton,\n MatIcon,\n CdkDropListGroup,\n PeerGroupUnassignedWorkgroupsComponent,\n PeerGroupAssignedWorkgroupsComponent\n ],\n selector: 'peer-group-period',\n styleUrl: './peer-group-period.component.scss',\n templateUrl: './peer-group-period.component.html'\n})\nexport class PeerGroupPeriodComponent {\n @Input() peerGroupingTag: string;\n @Input() period: any;\n\n UNASSIGNED_GROUP_ID = 0;\n\n groupings: any[] = [];\n nextAvailableGroupId: number = 1;\n unassignedWorkgroups: any[] = [];\n workgroups: any[] = [];\n\n constructor(\n private ConfigService: ConfigService,\n private PeerGroupService: PeerGroupService\n ) {}\n\n ngOnChanges(): void {\n this.PeerGroupService.retrievePeerGroupInfo(this.peerGroupingTag).subscribe(\n ({ peerGroups, workgroupsNotInPeerGroup }) => {\n for (const peerGroup of this.getPeerGroupsInPeriod(peerGroups, this.period.periodId)) {\n this.addGrouping(peerGroup);\n }\n this.unassignedWorkgroups = this.getWorkgroupsNotInPeerGroupInPeriod(\n workgroupsNotInPeerGroup,\n this.period.periodId\n );\n },\n () => {\n // TODO\n }\n );\n this.workgroups = this.getWorkgroupsInPeriod();\n }\n\n getPeerGroupsInPeriod(peerGroups: any[], periodId: number): any[] {\n return peerGroups.filter((peerGroup) => peerGroup.periodId === periodId);\n }\n\n getWorkgroupsNotInPeerGroupInPeriod(workgroups: any[], periodId: number): any[] {\n return workgroups.filter((workgroup) => workgroup.periodId === periodId);\n }\n\n getWorkgroupsInPeriod(): any[] {\n const workgroups = [];\n for (const workgroup of this.ConfigService.getWorkgroupsByPeriod(this.period.periodId)) {\n workgroups.push({ id: workgroup.workgroupId });\n }\n return workgroups;\n }\n\n createGrouping(id: number = this.nextAvailableGroupId, members: any[]): any {\n return {\n id: id,\n members: members\n };\n }\n\n addGrouping(grouping: any): void {\n this.groupings.push(grouping);\n }\n\n createNewGroup(): Subscription {\n return this.PeerGroupService.createNewGroup(\n this.period.periodId,\n this.peerGroupingTag\n ).subscribe(\n (group) => {\n this.addGrouping(group);\n },\n () => {\n // TODO\n }\n );\n }\n\n moveWorkgroup(event: any): Subscription {\n const workgroupId = event.item.data;\n const previousGroupId = event.previousContainer.data.id;\n const newGroupId = event.container.data.id;\n if (this.isUnassignedGroupId(newGroupId)) {\n return this.removeWorkgroupFromGroupRequest(workgroupId, previousGroupId, newGroupId);\n } else {\n return this.moveWorkgroupToGroupRequest(workgroupId, previousGroupId, newGroupId);\n }\n }\n\n isUnassignedGroupId(groupId: number): boolean {\n return groupId === this.UNASSIGNED_GROUP_ID;\n }\n\n removeWorkgroupFromGroupRequest(\n workgroupId: number,\n previousGroupId: number,\n newGroupId: number\n ): Subscription {\n return this.PeerGroupService.removeWorkgroupFromGroup(workgroupId, previousGroupId).subscribe(\n () => {\n this.moveWorkgroupSuccess(workgroupId, previousGroupId, newGroupId);\n },\n () => {\n // TODO\n }\n );\n }\n\n moveWorkgroupToGroupRequest(\n workgroupId: number,\n previousGroupId: number,\n newGroupId: number\n ): Subscription {\n return this.PeerGroupService.moveWorkgroupToGroup(workgroupId, newGroupId).subscribe(\n () => {\n this.moveWorkgroupSuccess(workgroupId, previousGroupId, newGroupId);\n },\n () => {\n // TODO\n }\n );\n }\n\n moveWorkgroupSuccess(workgroupId: number, previousGroupId: number, newGroupId: number): void {\n this.removeWorkgroup(workgroupId, previousGroupId);\n this.addWorkgroupToGroup(workgroupId, newGroupId);\n }\n\n removeWorkgroup(workgroupId: number, groupId: number): void {\n if (this.isUnassignedGroupId(groupId)) {\n this.removeWorkgroupFromUnassigned(workgroupId);\n } else {\n this.removeWorkgroupFromGroup(workgroupId, groupId);\n }\n }\n\n removeWorkgroupFromUnassigned(workgroupId: any): void {\n for (let w = 0; w < this.unassignedWorkgroups.length; w++) {\n if (this.unassignedWorkgroups[w].id === workgroupId) {\n this.unassignedWorkgroups.splice(w, 1);\n return;\n }\n }\n }\n\n removeWorkgroupFromGroup(workgroupId: number, groupId: number): void {\n const group = this.getGroup(groupId);\n for (let w = 0; w < group.members.length; w++) {\n if (group.members[w].id === workgroupId) {\n group.members.splice(w, 1);\n return;\n }\n }\n }\n\n addWorkgroupToGroup(workgroupId: number, groupId: number): void {\n const member = { id: workgroupId, periodId: this.period.periodId };\n if (this.isUnassignedGroupId(groupId)) {\n this.unassignedWorkgroups.push(member);\n } else {\n const group = this.getGroup(groupId);\n group.members.push(member);\n }\n }\n\n getGroup(groupId: number): any {\n return this.groupings.find((group) => group.id === groupId);\n }\n}\n", + "styleUrl": "./peer-group-period.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "ConfigService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "PeerGroupService", + "type": "PeerGroupService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 35, + "jsdoctags": [ + { + "name": "ConfigService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "PeerGroupService", + "type": "PeerGroupService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "\n \n
    \n

    Period {{ period.periodName }}

    \n \n \n group_add\n  \n New Group\n \n
    \n
    \n \n \n
    \n
    \n
    \n" + }, + { + "name": "PeerGroupUnassignedWorkgroupsComponent", + "id": "component-PeerGroupUnassignedWorkgroupsComponent-df43e44e9932bc40a2888548422f1cac2634231848b7889a3de36b4993bb30266887f7e9301776f4fa4ef2999dbb01f40f81d82bf7e706447a8c59a346208afb", + "file": "src/assets/wise5/classroomMonitor/classroomMonitorComponents/peer-group/peer-group-unassigned-workgroups/peer-group-unassigned-workgroups.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "peer-group-unassigned-workgroups", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./peer-group-unassigned-workgroups.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "unassignedWorkgroups", + "deprecated": false, + "deprecationMessage": "", + "line": 21, + "type": "any[]", + "decorators": [] + } + ], + "outputsClass": [ + { + "name": "moveWorkgroup", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 9, + "type": "EventEmitter", + "inheritance": { + "file": "PeerGroupWorkgroupsContainerComponent" + } + } + ], + "propertiesClass": [], + "methodsClass": [ + { + "name": "addBackgroundColor", + "args": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 46, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "PeerGroupWorkgroupsContainerComponent" + } + }, + { + "name": "dragEnter", + "args": [ + { + "name": "event", + "type": "CdkDragEnter", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 15, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "event", + "type": "CdkDragEnter", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "PeerGroupWorkgroupsContainerComponent" + } + }, + { + "name": "dragExit", + "args": [ + { + "name": "event", + "type": "CdkDragExit", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 19, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "event", + "type": "CdkDragExit", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "PeerGroupWorkgroupsContainerComponent" + } + }, + { + "name": "dropWorkgroup", + "args": [ + { + "name": "event", + "type": "CdkDragDrop", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 23, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "event", + "type": "CdkDragDrop", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "PeerGroupWorkgroupsContainerComponent" + } + }, + { + "name": "isFromAssignedContainer", + "args": [ + { + "name": "event", + "type": "CdkDragDrop", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 42, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "event", + "type": "CdkDragDrop", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "PeerGroupWorkgroupsContainerComponent" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 13, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "PeerGroupWorkgroupsContainerComponent" + } + }, + { + "name": "removeBackgroundColor", + "args": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 50, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "PeerGroupWorkgroupsContainerComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatCard" + }, + { + "name": "MatCardTitle" + }, + { + "name": "MatCardContent" + }, + { + "name": "CdkDropList" + }, + { + "name": "CdkDrag" + }, + { + "name": "PeerGroupWorkgroupComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input } from '@angular/core';\nimport { PeerGroupWorkgroupsContainerComponent } from '../peer-group-workgroups-container/peer-group-workgroups-container.component';\nimport { MatCard, MatCardTitle, MatCardContent } from '@angular/material/card';\nimport { CdkDropList, CdkDrag } from '@angular/cdk/drag-drop';\nimport { PeerGroupWorkgroupComponent } from '../peer-group-workgroup/peer-group-workgroup.component';\n\n@Component({\n imports: [\n MatCard,\n MatCardTitle,\n MatCardContent,\n CdkDropList,\n CdkDrag,\n PeerGroupWorkgroupComponent\n ],\n selector: 'peer-group-unassigned-workgroups',\n styleUrl: '../peer-group-workgroups-container/peer-group-workgroups-container.component.scss',\n templateUrl: './peer-group-unassigned-workgroups.component.html'\n})\nexport class PeerGroupUnassignedWorkgroupsComponent extends PeerGroupWorkgroupsContainerComponent {\n @Input() unassignedWorkgroups: any[];\n}\n", + "styleUrl": "../peer-group-workgroups-container/peer-group-workgroups-container.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [ + "PeerGroupWorkgroupsContainerComponent" + ], + "templateData": "\n

    Ungrouped

    \n \n \n @for (workgroup of unassignedWorkgroups; track workgroup) {\n \n \n \n }\n \n \n
    \n" + }, + { + "name": "PeerGroupWorkgroupComponent", + "id": "component-PeerGroupWorkgroupComponent-15fa231983bf5faee5003c6cbf3d1e9c4def21a2d036739b77b5cdbafd5c6c4ac0b34c15dbb5a226aec42e6e3fc1a7a1203bd1794097f2e8e7de816746d3bf48", + "file": "src/assets/wise5/classroomMonitor/classroomMonitorComponents/peer-group/peer-group-workgroup/peer-group-workgroup.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "peer-group-workgroup", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./peer-group-workgroup.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "workgroup", + "deprecated": false, + "deprecationMessage": "", + "line": 14, + "type": "any", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "avatarColor", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 16 + }, + { + "name": "isEmptyWorkgroup", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 17 + }, + { + "name": "workgroupUsernames", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 18 + } + ], + "methodsClass": [ + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "NgClass" + }, + { + "name": "MatIcon" + }, + { + "name": "NgStyle" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input, OnInit } from '@angular/core';\nimport { ConfigService } from '../../../../services/configService';\nimport { getAvatarColorForWorkgroupId } from '../../../../common/workgroup/workgroup';\nimport { NgClass, NgStyle } from '@angular/common';\nimport { MatIcon } from '@angular/material/icon';\n\n@Component({\n imports: [NgClass, MatIcon, NgStyle],\n selector: 'peer-group-workgroup',\n styleUrl: './peer-group-workgroup.component.scss',\n templateUrl: './peer-group-workgroup.component.html'\n})\nexport class PeerGroupWorkgroupComponent implements OnInit {\n @Input() workgroup: any;\n\n avatarColor: string;\n isEmptyWorkgroup: boolean;\n workgroupUsernames: string;\n\n constructor(private configService: ConfigService) {}\n\n ngOnInit(): void {\n this.workgroupUsernames = this.configService.getDisplayUsernamesByWorkgroupId(\n this.workgroup.id\n );\n if (this.workgroupUsernames === '') {\n this.isEmptyWorkgroup = true;\n this.workgroupUsernames = $localize`Empty Team`;\n }\n this.avatarColor = getAvatarColorForWorkgroupId(this.workgroup.id);\n }\n}\n", + "styleUrl": "./peer-group-workgroup.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 18, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "\n account_circle
    \n
    \n {{ workgroupUsernames }} (Team {{ workgroup.id }})\n
    \n\n" + }, + { + "name": "PeerReviewAndRevisionComponent", + "id": "component-PeerReviewAndRevisionComponent-a76027ec9ec945356bab5580a5d60f2965eb56d3cbafbf77da15fcd1af6d95656ad8bf9b28b0d7498b149bdb06946b41ea88aae748352d854954a3e155c51af4", + "file": "src/assets/wise5/authoringTool/structure/peer-review-and-revision/peer-review-and-revision.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./peer-review-and-revision.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "groupsPath", + "defaultValue": "`peer-review-and-revision/groups.json`", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ConfigureStructureComponent" + } + }, + { + "name": "nodesPath", + "defaultValue": "`peer-review-and-revision/nodes.json`", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ConfigureStructureComponent" + } + }, + { + "name": "structure", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ConfigureStructureComponent" + } + }, + { + "name": "structureDir", + "defaultValue": "'assets/wise5/authoringTool/structure'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ConfigureStructureComponent" + } + }, + { + "name": "submitting", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ConfigureStructureComponent" + } + }, + { + "name": "target", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ConfigureStructureComponent" + } + } + ], + "methodsClass": [ + { + "name": "addNodesToProject", + "args": [ + { + "name": "nodes", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 78, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodes", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ConfigureStructureComponent" + } + }, + { + "name": "chooseLocation", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 52, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ConfigureStructureComponent" + } + }, + { + "name": "fetchGroups", + "args": [ + { + "name": "groupsPath", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "this.groupsPath" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 40, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "groupsPath", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "this.groupsPath", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ConfigureStructureComponent" + } + }, + { + "name": "fetchNodes", + "args": [ + { + "name": "nodesPath", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "this.nodesPath" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 46, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodesPath", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "this.nodesPath", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ConfigureStructureComponent" + } + }, + { + "name": "injectGroup", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 32, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ConfigureStructureComponent" + } + }, + { + "name": "injectGroupAndNodes", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 27, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ConfigureStructureComponent" + } + }, + { + "name": "injectNodes", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 36, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ConfigureStructureComponent" + } + }, + { + "name": "injectUniqueIds", + "args": [ + { + "name": "structure", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 72, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "structure", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ConfigureStructureComponent" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ConfigureStructureComponent" + } + }, + { + "name": "saveAndGoBackToProjectHome", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 86, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ConfigureStructureComponent" + } + }, + { + "name": "submit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 59, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ConfigureStructureComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatDivider" + }, + { + "name": "MatButton" + }, + { + "name": "RouterLink" + }, + { + "name": "MatProgressBar" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { ConfigureStructureComponent } from '../configure-structure.component';\nimport { MatProgressBar } from '@angular/material/progress-bar';\nimport { RouterLink } from '@angular/router';\nimport { MatButton } from '@angular/material/button';\nimport { MatDivider } from '@angular/material/divider';\n\n@Component({\n imports: [MatDivider, MatButton, RouterLink, MatProgressBar],\n styleUrl: '../../add-content.scss',\n templateUrl: './peer-review-and-revision.component.html'\n})\nexport class PeerReviewAndRevisionComponent extends ConfigureStructureComponent {\n protected groupsPath = `peer-review-and-revision/groups.json`;\n protected nodesPath = `peer-review-and-revision/nodes.json`;\n}\n", + "styleUrl": "../../add-content.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [ + "ConfigureStructureComponent" + ], + "templateData": "
    Peer Review & Revision
    \n

    \n The Peer Review & Revision KI lesson structure guides students through writing their own\n explanation, critiquing explanations of peer learners, and ultimately revising their own initial\n explanation.\n

    \n
    \n \n
    \n \n \n \n \n @if (submitting) {\n \n }\n Submit\n \n
    \n
    \n" + }, + { + "name": "PersonalLibraryComponent", + "id": "component-PersonalLibraryComponent-61bf80e445eeafab83b29f0bfb380219faa1c6eecb983a7b68798f6c04d4f54b1b773ee45cd86faaac3cb165435438c9109afa8da3de8150a19046e829ccf88f", + "file": "src/app/modules/library/personal-library/personal-library.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "app-personal-library", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./personal-library.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "filteredProjects", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "LibraryProject[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 40, + "inheritance": { + "file": "LibraryComponent" + } + }, + { + "name": "numProjectsInView", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 41, + "modifierKind": [ + 124 + ] + }, + { + "name": "numSelectedProjects", + "defaultValue": "computed(() => this.selectedProjects().length)", + "deprecated": false, + "deprecationMessage": "", + "type": "Signal", + "indexKey": "", + "optional": false, + "description": "", + "line": 42, + "modifierKind": [ + 124 + ] + }, + { + "name": "personalProjects", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "LibraryProject[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 43, + "modifierKind": [ + 124 + ] + }, + { + "name": "projectIdToIsSelected", + "defaultValue": "computed(() =>\n this.selectedProjects().reduce((accumulator, project) => {\n accumulator[project.id] = true;\n return accumulator;\n }, {})\n )", + "deprecated": false, + "deprecationMessage": "", + "type": "Signal", + "indexKey": "", + "optional": false, + "description": "", + "line": 44, + "modifierKind": [ + 124 + ] + }, + { + "name": "projects", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "LibraryProject[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 50, + "inheritance": { + "file": "LibraryComponent" + } + }, + { + "name": "projectsLabel", + "defaultValue": "$localize`Select all units`", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 51, + "modifierKind": [ + 124 + ] + }, + { + "name": "selectedProjects", + "defaultValue": "signal([])", + "deprecated": false, + "deprecationMessage": "", + "type": "WritableSignal", + "indexKey": "", + "optional": false, + "description": "", + "line": 52, + "modifierKind": [ + 124 + ] + }, + { + "name": "selectedTags", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "Tag[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 53, + "modifierKind": [ + 124 + ] + }, + { + "name": "sharedProjects", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "LibraryProject[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 54, + "modifierKind": [ + 124 + ] + }, + { + "name": "showArchivedView", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 55, + "modifierKind": [ + 124 + ] + }, + { + "name": "highIndex", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "LibraryComponent" + } + }, + { + "name": "lowIndex", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "LibraryComponent" + } + }, + { + "name": "pageIndex", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "LibraryComponent" + } + }, + { + "name": "pageSize", + "defaultValue": "12", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "LibraryComponent" + } + }, + { + "name": "pageSizeOptions", + "defaultValue": "[12, 24, 48, 96]", + "deprecated": false, + "deprecationMessage": "", + "type": "number[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "LibraryComponent" + } + }, + { + "name": "paginators", + "deprecated": false, + "deprecationMessage": "", + "type": "QueryList", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "decorators": [ + { + "name": "ViewChildren", + "stringifiedArguments": "MatPaginator" + } + ], + "modifierKind": [ + 171 + ], + "inheritance": { + "file": "LibraryComponent" + } + }, + { + "name": "showFilters", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "LibraryComponent" + } + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "LibraryComponent" + } + } + ], + "methodsClass": [ + { + "name": "archiveProjects", + "args": [ + { + "name": "archive", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 180, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "archive", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "combinePersonalAndSharedProjects", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 108, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "filterUpdated", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 128, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "LibraryComponent" + } + }, + { + "name": "getNumVisiblePersonalOrPublicProjects", + "args": [], + "optional": false, + "returnType": "BehaviorSubject", + "typeParameters": [], + "line": 124, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "LibraryComponent" + } + }, + { + "name": "getProjectsInView", + "args": [], + "optional": false, + "returnType": "LibraryProject[]", + "typeParameters": [], + "line": 174, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 65, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "LibraryComponent" + } + }, + { + "name": "pageChange", + "args": [ + { + "name": "event", + "type": "PageEvent", + "deprecated": false, + "deprecationMessage": "", + "optional": true + }, + { + "name": "scroll", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "optional": true + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 147, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "event", + "type": "PageEvent", + "deprecated": false, + "deprecationMessage": "", + "optional": true, + "tagName": { + "text": "param" + } + }, + { + "name": "scroll", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "optional": true, + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "LibraryComponent" + } + }, + { + "name": "removeTag", + "args": [ + { + "name": "tag", + "type": "Tag", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 189, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "tag", + "type": "Tag", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "selectAllProjects", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 168, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "selectTags", + "args": [ + { + "name": "tags", + "type": "Tag[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 184, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "tags", + "type": "Tag[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "sortByProjectIdDesc", + "args": [ + { + "name": "a", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "b", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 120, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "a", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "b", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "subscribeToRefreshProjects", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 100, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "switchActiveArchivedView", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 142, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "unselectAllProjects", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 163, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "updateProjects", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 114, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "updateSelectedProjects", + "args": [ + { + "name": "event", + "type": "ProjectSelectionEvent", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 152, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "event", + "type": "ProjectSelectionEvent", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "countVisibleProjects", + "args": [ + { + "name": "projects", + "type": "LibraryProject[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "projects", + "type": "LibraryProject[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "LibraryComponent" + } + }, + { + "name": "emitNumberOfProjectsVisible", + "args": [ + { + "name": "numProjectsVisible", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 73, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "numProjectsVisible", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "LibraryComponent" + } + }, + { + "name": "isOnPage", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 56, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "LibraryComponent" + } + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 30, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "LibraryComponent" + } + }, + { + "name": "setPageBounds", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 51, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "LibraryComponent" + } + }, + { + "name": "setPagination", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 44, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "LibraryComponent" + } + }, + { + "name": "sortUnits", + "args": [ + { + "name": "a", + "type": "LibraryProject", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "b", + "type": "LibraryProject", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 89, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "a", + "type": "LibraryProject", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "b", + "type": "LibraryProject", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "LibraryComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "ApplyTagsButtonComponent", + "type": "component" + }, + { + "name": "ArchiveProjectsButtonComponent", + "type": "component" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "LibraryProjectComponent", + "type": "component" + }, + { + "name": "MatDividerModule", + "type": "module" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatPaginatorModule", + "type": "module" + }, + { + "name": "MatSelectModule", + "type": "module" + }, + { + "name": "SelectAllItemsCheckboxComponent", + "type": "component" + }, + { + "name": "SelectTagsComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { ApplyTagsButtonComponent } from '../../../teacher/apply-tags-button/apply-tags-button.component';\nimport { ArchiveProjectsButtonComponent } from '../../../teacher/archive-projects-button/archive-projects-button.component';\nimport { ArchiveProjectService } from '../../../services/archive-project.service';\nimport { BehaviorSubject } from 'rxjs';\nimport { Component, Signal, WritableSignal, computed, signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { LibraryComponent } from '../library/library.component';\nimport { LibraryProject } from '../libraryProject';\nimport { LibraryProjectComponent } from '../library-project/library-project.component';\nimport { LibraryService } from '../../../services/library.service';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatPaginatorModule, PageEvent } from '@angular/material/paginator';\nimport { MatSelectModule } from '@angular/material/select';\nimport { Project } from '../../../domain/project';\nimport { ProjectSelectionEvent } from '../../../domain/projectSelectionEvent';\nimport { SelectAllItemsCheckboxComponent } from '../select-all-items-checkbox/select-all-items-checkbox.component';\nimport { SelectTagsComponent } from '../../../teacher/select-tags/select-tags.component';\nimport { Tag } from '../../../domain/tag';\nimport { ProjectFilterValues } from '../../../domain/projectFilterValues';\n\n@Component({\n imports: [\n ApplyTagsButtonComponent,\n ArchiveProjectsButtonComponent,\n FormsModule,\n LibraryProjectComponent,\n MatDividerModule,\n MatFormFieldModule,\n MatPaginatorModule,\n MatSelectModule,\n SelectAllItemsCheckboxComponent,\n SelectTagsComponent\n ],\n selector: 'app-personal-library',\n styleUrl: './personal-library.component.scss',\n templateUrl: './personal-library.component.html'\n})\nexport class PersonalLibraryComponent extends LibraryComponent {\n filteredProjects: LibraryProject[] = [];\n protected numProjectsInView: number;\n protected numSelectedProjects: Signal = computed(() => this.selectedProjects().length);\n protected personalProjects: LibraryProject[] = [];\n protected projectIdToIsSelected: Signal<{ [key: number]: boolean }> = computed(() =>\n this.selectedProjects().reduce((accumulator, project) => {\n accumulator[project.id] = true;\n return accumulator;\n }, {})\n );\n projects: LibraryProject[] = [];\n protected projectsLabel: string = $localize`Select all units`;\n protected selectedProjects: WritableSignal = signal([]);\n protected selectedTags: Tag[] = [];\n protected sharedProjects: LibraryProject[] = [];\n protected showArchivedView: boolean = false;\n\n constructor(\n private archiveProjectService: ArchiveProjectService,\n protected filterValues: ProjectFilterValues,\n protected libraryService: LibraryService\n ) {\n super(filterValues, libraryService);\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n this.subscriptions.add(\n this.libraryService.personalLibraryProjectsSource$.subscribe(\n (personalProjects: LibraryProject[]) => {\n if (history.state?.newProjectId) {\n personalProjects.find(\n (project) => project.id === history.state?.newProjectId\n ).isHighlighted = true;\n }\n this.personalProjects = personalProjects;\n this.updateProjects();\n }\n )\n );\n this.subscriptions.add(\n this.libraryService.sharedLibraryProjectsSource$.subscribe(\n (sharedProjects: LibraryProject[]) => {\n this.sharedProjects = sharedProjects;\n this.updateProjects();\n }\n )\n );\n this.subscriptions.add(\n this.libraryService.newProjectSource$.subscribe((project) => {\n if (project) {\n project.isHighlighted = true;\n this.projects.unshift(project);\n this.filterUpdated();\n }\n })\n );\n this.subscribeToRefreshProjects();\n }\n\n private subscribeToRefreshProjects(): void {\n this.subscriptions.add(\n this.archiveProjectService.refreshProjectsEvent$.subscribe(() => {\n this.updateProjects();\n })\n );\n }\n\n private combinePersonalAndSharedProjects(): void {\n const projects = this.personalProjects.concat(this.sharedProjects);\n projects.sort(this.sortByProjectIdDesc);\n this.projects = projects;\n }\n\n private updateProjects(): void {\n this.combinePersonalAndSharedProjects();\n this.filterUpdated();\n this.unselectAllProjects();\n }\n\n private sortByProjectIdDesc(a, b): number {\n return b.id - a.id;\n }\n\n protected getNumVisiblePersonalOrPublicProjects(): BehaviorSubject {\n return this.libraryService.numberOfPersonalProjectsVisible;\n }\n\n public filterUpdated(): void {\n super.filterUpdated();\n this.filteredProjects = this.filteredProjects.filter(\n (project) => project.hasTagWithText('archived') == this.showArchivedView\n );\n if (this.selectedTags.length > 0) {\n this.filteredProjects = this.filteredProjects.filter((project: Project) =>\n this.selectedTags.some((tag: Tag) => project.hasTag(tag))\n );\n }\n this.numProjectsInView = this.getProjectsInView().length;\n this.unselectAllProjects();\n }\n\n protected switchActiveArchivedView(): void {\n this.filterUpdated();\n this.unselectAllProjects();\n }\n\n protected pageChange(event?: PageEvent, scroll?: boolean): void {\n super.pageChange(event, scroll);\n this.unselectAllProjects();\n }\n\n protected updateSelectedProjects(event: ProjectSelectionEvent): void {\n const selectedProjects = this.selectedProjects();\n if (event.selected) {\n selectedProjects.push(event.project);\n } else {\n selectedProjects.splice(selectedProjects.indexOf(event.project), 1);\n }\n // create a new array to trigger change detection\n this.selectedProjects.set([...selectedProjects]);\n }\n\n protected unselectAllProjects(): void {\n this.projects.forEach((project) => (project.selected = false));\n this.selectedProjects.set([]);\n }\n\n protected selectAllProjects(): void {\n const projects = this.getProjectsInView();\n projects.forEach((project) => (project.selected = true));\n this.selectedProjects.set(projects);\n }\n\n private getProjectsInView(): LibraryProject[] {\n return this.filteredProjects.filter(\n (project, index) => this.lowIndex <= index && index < this.highIndex\n );\n }\n\n protected archiveProjects(archive: boolean): void {\n this.archiveProjectService.archiveProjects(this.selectedProjects(), archive);\n }\n\n protected selectTags(tags: Tag[]): void {\n this.selectedTags = tags;\n this.filterUpdated();\n }\n\n protected removeTag(tag: Tag): void {\n this.selectedTags = this.selectedTags.filter((selectedTag: Tag) => selectedTag.id !== tag.id);\n this.filterUpdated();\n }\n}\n", + "styleUrl": "./personal-library.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "archiveProjectService", + "type": "ArchiveProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "filterValues", + "type": "ProjectFilterValues", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "libraryService", + "type": "LibraryService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 55, + "jsdoctags": [ + { + "name": "archiveProjectService", + "type": "ArchiveProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "filterValues", + "type": "ProjectFilterValues", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "libraryService", + "type": "LibraryService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "LibraryComponent" + ], + "templateData": "
    \n
    \n \n \n \n View\n \n Active\n Archived\n \n \n
    \n
    \n
    \n \n @if (numSelectedProjects() > 0) {\n {{ numSelectedProjects() }} selected \n \n \n }\n
    \n \n\n \n \n
    \n
    \n @for (project of filteredProjects; track project.id; let i = $index) {\n @if (isOnPage(i)) {\n \n }\n }\n @if (filteredProjects.length === 0) {\n
    No units found.
    \n }\n
    \n \n \n
    \n" + }, + { + "name": "PossibleScoreComponent", + "id": "component-PossibleScoreComponent-5b47fab41a5822025d2742ad97af0ef16be7157c62b3ea8bdf78526f22d8c9e687d510c4c89a84f9e2bc0789ae43f81aa352c2fe0a7a7c89340f409e584f0a02", + "file": "src/app/possible-score/possible-score.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "possible-score", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "possible-score.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "maxScore", + "deprecated": false, + "deprecationMessage": "", + "line": 10, + "type": "number", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "hidePossibleScores", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 9, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 14, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input } from '@angular/core';\nimport { ProjectService } from '../../assets/wise5/services/projectService';\n\n@Component({\n selector: 'possible-score',\n templateUrl: 'possible-score.component.html'\n})\nexport class PossibleScoreComponent {\n protected hidePossibleScores: boolean;\n @Input() maxScore: number;\n\n constructor(private projectService: ProjectService) {}\n\n ngOnInit(): void {\n this.hidePossibleScores = this.projectService.getThemeSettings().hidePossibleScores;\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 10, + "jsdoctags": [ + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "@if (maxScore > 0 && !hidePossibleScores) {\n \n @if (maxScore === 1) {\n ({{ maxScore }} point)\n } @else {\n ({{ maxScore }} points)\n }\n \n}\n" + }, + { + "name": "PreviewComponentComponent", + "id": "component-PreviewComponentComponent-e180ef4ba7b6bcfad1c2325838b13b1ae3dc9e4d28790889dfe983514af2f00f19fc8b0bd56d8bc17e6ef146dec733e8240fbed0737a29afe8f802a6fcdf1adc", + "file": "src/assets/wise5/authoringTool/components/preview-component/preview-component.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "preview-component", + "styleUrls": [], + "styles": [], + "template": "
    ", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "component", + "deprecated": false, + "deprecationMessage": "", + "line": 21, + "type": "WISEComponent", + "decorators": [] + }, + { + "name": "disabled", + "deprecated": false, + "deprecationMessage": "", + "line": 24, + "type": "boolean", + "decorators": [] + }, + { + "name": "periodId", + "deprecated": false, + "deprecationMessage": "", + "line": 25, + "type": "number", + "decorators": [] + } + ], + "outputsClass": [ + { + "name": "starterStateChangedEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 26, + "type": "EventEmitter" + } + ], + "propertiesClass": [ + { + "name": "componentElementRef", + "deprecated": false, + "deprecationMessage": "", + "type": "ElementRef", + "indexKey": "", + "optional": false, + "description": "", + "line": 22, + "decorators": [ + { + "name": "ViewChild", + "stringifiedArguments": "'component'" + } + ], + "modifierKind": [ + 171, + 123 + ] + }, + { + "name": "componentRef", + "deprecated": false, + "deprecationMessage": "", + "type": "ComponentRef", + "indexKey": "", + "optional": false, + "description": "", + "line": 23, + "modifierKind": [ + 123 + ] + } + ], + "methodsClass": [ + { + "name": "ngAfterViewInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 33, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnChanges", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 37, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 43, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "renderComponent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 47, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import {\n ApplicationRef,\n Component,\n ComponentRef,\n ElementRef,\n EnvironmentInjector,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n createComponent\n} from '@angular/core';\nimport { Component as WISEComponent } from '../../../common/Component';\nimport { components } from '../../../components/Components';\n\n@Component({\n selector: 'preview-component',\n template: '
    '\n})\nexport class PreviewComponentComponent {\n @Input() component: WISEComponent;\n @ViewChild('component') private componentElementRef: ElementRef;\n private componentRef: ComponentRef;\n @Input() disabled: boolean;\n @Input() periodId: number;\n @Output() starterStateChangedEvent: EventEmitter = new EventEmitter();\n\n constructor(\n private applicationRef: ApplicationRef,\n private injector: EnvironmentInjector\n ) {}\n\n ngAfterViewInit(): void {\n this.renderComponent();\n }\n\n ngOnChanges(): void {\n if (this.componentElementRef != null) {\n this.renderComponent();\n }\n }\n\n ngOnDestroy(): void {\n this.componentRef.destroy();\n }\n\n private renderComponent(): void {\n this.componentRef = createComponent(components[this.component.content.type].student, {\n hostElement: this.componentElementRef.nativeElement,\n environmentInjector: this.injector\n });\n Object.assign(this.componentRef.instance, {\n component: this.component,\n mode: 'preview',\n periodId: this.periodId,\n isDisabled: this.disabled,\n starterStateChangedEvent: this.starterStateChangedEvent\n });\n this.applicationRef.attachView(this.componentRef.hostView);\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "applicationRef", + "type": "ApplicationRef", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "injector", + "type": "EnvironmentInjector", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 26, + "jsdoctags": [ + { + "name": "applicationRef", + "type": "ApplicationRef", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "injector", + "type": "EnvironmentInjector", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [] + }, + { + "name": "PreviewComponentDialogComponent", + "id": "component-PreviewComponentDialogComponent-aae033c08cf931d732f8028b431704f635368a9f9b2e210af248511be82f14c59d5a2d46e10714d83ee7d66e613cfb8a47d448fec70d6e74b938cdc1397bfbc3", + "file": "src/assets/wise5/authoringTool/components/preview-component-dialog/preview-component-dialog.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "preview-component-dialog.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "canSaveStarterState", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 21, + "modifierKind": [ + 124 + ] + }, + { + "name": "componentTypesWithStarterStates", + "defaultValue": "['ConceptMap', 'Draw', 'Label']", + "deprecated": false, + "deprecationMessage": "", + "type": "[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 22, + "modifierKind": [ + 124 + ] + }, + { + "name": "starterState", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 23, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 27, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "updateStarterState", + "args": [ + { + "name": "starterState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 33, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "starterState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatDialogModule", + "type": "module" + }, + { + "name": "MatDividerModule", + "type": "module" + }, + { + "name": "PreviewComponentComponent", + "type": "component" + }, + { + "name": "SaveStarterStateComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Inject, OnInit } from '@angular/core';\nimport { Component as WISEComponent } from '../../../common/Component';\nimport { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { SaveStarterStateComponent } from '../save-starter-state/save-starter-state.component';\nimport { PreviewComponentComponent } from '../preview-component/preview-component.component';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n imports: [\n MatButtonModule,\n MatDialogModule,\n MatDividerModule,\n PreviewComponentComponent,\n SaveStarterStateComponent\n ],\n styleUrl: 'preview-component-dialog.component.scss',\n templateUrl: 'preview-component-dialog.component.html'\n})\nexport class PreviewComponentDialogComponent implements OnInit {\n protected canSaveStarterState: boolean;\n protected componentTypesWithStarterStates = ['ConceptMap', 'Draw', 'Label'];\n protected starterState: any;\n\n constructor(@Inject(MAT_DIALOG_DATA) protected component: WISEComponent) {}\n\n ngOnInit(): void {\n this.canSaveStarterState = this.componentTypesWithStarterStates.includes(\n this.component.content.type\n );\n }\n\n protected updateStarterState(starterState: any): void {\n this.starterState = starterState;\n }\n}\n", + "styleUrl": "preview-component-dialog.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "component", + "type": "WISEComponent", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 23, + "jsdoctags": [ + { + "name": "component", + "type": "WISEComponent", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "

    Preview Component

    \n@if (canSaveStarterState) {\n \n \n}\n\n\n \n\n\n\n \n\n" + }, + { + "name": "PrivacyComponent", + "id": "component-PrivacyComponent-13e43ff8b3e025d85e1b01def4671932692313439cef252e20035872c1a20ca89fd68375b405a62265558740d0fc550f91e298071eff9e60499fe3bf1ff7aca0", + "file": "src/app/privacy/privacy.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "app-privacy", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./privacy.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [], + "methodsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\n\n@Component({\n selector: 'app-privacy',\n styleUrl: './privacy.component.scss',\n templateUrl: './privacy.component.html'\n})\nexport class PrivacyComponent {}\n", + "styleUrl": "./privacy.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [], + "templateData": "
    \n
    \n

    WISE Terms of Use & Privacy Policy

    \n

    Table of Contents

    \n
      \n
    1. User Agreement
    2. \n
    3. Information We Collect
    4. \n
    5. How We Use the Data
    6. \n
    7. Rules of Use
    8. \n
    9. Information Security
    10. \n
    11. State & Federal Laws
    12. \n
    13. Changes & Updates
    14. \n
    \n
    \n

    1. User Agreement

    \n

    \n We understand how important privacy is to our community, especially the teachers and students\n all over the world who use WISE resources in their educational endeavors. This policy explains\n what information we collect, how we use it, and what we do to keep it safe.\n

    \n

    \n These Terms of Use and Privacy Policy constitute an agreement between you and the Web-based\n Inquiry Science Environment team that governs your use of wise.berkeley.edu and all associated\n services and websites (collectively \"WISE\"). The WISE team is a federally-funded research\n group headquartered at the University of California, Berkeley and is a non-profit\n organization.\n

    \n

    \n Please read this document carefully. By using WISE you affirm that you have read, understood,\n and accepted the terms and conditions outlined here. If you do not agree with any of these\n conditions, please do not use WISE. If you have questions about this policy, please feel free\n to contact us using our Contact Form.\n

    \n

    This policy was last updated on February 24, 2023.

    \n

    2. Information We Collect

    \n\n

    Personal Information

    \n

    \n In order to use some features of WISE, you will need to register by creating a user account.\n Creating an account is optional, but without an account you will not be able to create or\n publish curriculum units or use WISE curricula to capture, store, review, or assess student\n work.\n

    \n

    \n When creating a WISE teacher account, we ask you to provide your first and last name, email\n address, password, city, state, country, school name, school level, and school subjects. To\n create a WISE student account, we ask you to provide your first and last name, birth day and\n month, gender, and password, and choose a security question and answer.\n

    \n

    \n To help ensure unauthorized use of your account, please keep your password secret. You are\n solely responsible for any use of your account, even if your account is used by another\n person. If any use of your account violates the Terms of Use, your account may be suspended or\n deleted.\n

    \n

    \n If you believe that your account is no longer secure for any reason, please change your\n password. If you cannot access your account to change your password, contact us using our\n Contact Form.\n

    \n\n

    User-Generated Content

    \n

    \n When students submit work in a WISE unit run (while logged into their accounts), we save their\n responses to questions and any content they create within the WISE platform. Teachers can\n review the responses and artifacts students create in the WISE runs they own. Teachers can\n also grade student work and provide feedback. Scores and comments generated by teachers\n through the WISE platform are stored by WISE and can be viewed by the students they are sent\n to.\n

    \n

    \n Curriculum units that teachers author using the WISE platform are also saved and stored on our\n servers and may be published to a public units library that is accessible to other WISE users\n or visitors (with the owner's permission). Please note: Every WISE unit hosted by the WISE\n site (whether it is shared in a unit project library or not) is viewable by anyone using the\n internet via the unit's unique URL.\n

    \n

    \n Some sections or features of WISE may allow you to share information concerning your opinions,\n experiences, or preferences about WISE content or other topics. For example, you might be able\n to voluntarily review or rate WISE resources, answer user questions, designate favorite WISE\n projects, respond to surveys, share personal information or social media profile links to your\n public WISE profile, etc. Information you provide will be stored by WISE and may be shared\n with other WISE users either anonymously or not (as long as you provide permission). Unless\n otherwise expressly provided for in this policy, WISE shall have no liability to you or to any\n third party with respect to information submitted voluntarily by you via the WISE site.\n

    \n

    Licensing

    \n

    \n All units that you create on or share to the WISE site shall be licensed under the Creative\n Commons Attribution-ShareAlike 4.0 license. For more information about the terms of this\n license, visit\n https://creativecommons.org/licenses/by-sa/4.0/. The WISE team reserves the right to remove any content that, in the WISE team's discretion,\n is harmful to the community or violates the WISE Terms of Use. Harmful use includes spam or\n repeated commercial advertisement through projects, comments, or discussion posts, as well as\n inappropriate or offensive material.\n

    \n

    \n You may link to or include outside resources or materials in your WISE units or in any public\n parts of the WISE site, but it is your responsibility to obtain any necessary permission from\n the original owners and include any required attribution for your use of such content. WISE\n will not be held responsible for the unauthorized use by a WISE account holder of any\n third-party content in WISE units or on any other sections of the WISE site.\n

    \n

    Auto-Generated Data

    \n

    \n When students and teachers use WISE, we save event data such as mouse clicks, time spent\n viewing pages, and other site interactions. This data is used for research purposes and for\n automated analyses and tools within WISE unit runs. (See 'How We Use the Data' for more\n information.)\n

    \n

    Cookies

    \n

    \n When you log in, WISE will ask your browser to put a \"cookie\" on your computer. This allows\n WISE to remember that you are logged in when you go to a different page. You can delete this\n cookie at any time through your browser's settings.\n

    \n

    Google Analytics

    \n

    \n WISE uses Google Analytics to help us understand our site usage. We use data like which pages\n you visit and clicks you make to help us improve the site. Information collected and processed\n by Google Analytics is anonymized and does not contain IP addresses or similar personally\n identifiable information. Some browsers allow you to opt-out of the Google Analytics tracking\n by installing add-ons for your browser.\n

    \n

    3. How We Use the Data

    \n

    We will not sell your information to anyone under any circumstances.

    \n

    \n The WISE team uses de-identified user data to perform research. Researchers in the School of\n Education at the University of California, Berkeley and partner institutions may use\n de-identified data to perform data analyses and explore research topics. This data includes\n both user-generated and auto-generated content (see 'Information We Collect' section). Results\n of our research may be shared with educators and other researchers through conferences,\n journals, and other publications.\n

    \n

    \n When generating and analyzing research data, student names are removed from all student work\n and replaced with identification numbers. This process of replacing names with identification\n numbers is performed automatically by the WISE platform when exporting research data and will\n be performed by teachers if any other student work (e.g., from other instructional materials)\n is to be analyzed by researchers.\n

    \n

    \n Email addresses for teacher accounts are used for communication: (a) for support, and (b) for\n occasional public announcements from the WISE Team. Teacher email addresses are also used to\n facilitate resetting of passwords.\n

    \n

    \n We do not ask students for their email address (unless they create a WISE account using a\n Google account) and do not share any student personal information with outside parties. Only\n the students' teachers and, in some cases, fellow classmates can access student names and/or\n usernames within WISE (for purposes of reviewing student work, grading, sending feedback,\n etc.). Each participating teacher will have access to their own students' unit work and will\n not be able to see any information from other teachers' students (unless another unit's\n teacher owner shares access through WISE). Teachers are also able to reset passwords for their\n students.\n

    \n

    \n A small set of WISE administrators are able to access user account information and data for\n support and technical purposes. A few select researchers may access teacher accounts to view\n anonymized student work or support teachers in setting up and managing units and runs.\n

    \n

    \n We will not disclose your personally identifying information to any other parties except in\n the following cases: 1) In cases where you (or a legal guardian) have provided your express\n consent; 2) As required by applicable law; or 3) With the appropriate authorities (including\n schools, school districts, and law enforcement, when necessary) for the purposes of protecting\n the safety of users, other individuals, or the security of the site.\n

    \n

    4. Rules of Use

    \n

    \n WISE promotes and supports freedom of speech and expression and strives to create a welcoming,\n supportive, and productive community of educators and learners.\n

    \n

    \n You may not use WISE to promote bigotry, discrimination, hatred, or violence against any\n individual or group. You may not expose any other person's identifying or contact information\n without that person's permission. Threatening, harassing, or intimidating any other person is\n not allowed and we reserve the right to remove any user-generated content that, in our\n discretion, does so. Projects, discussion posts, and user-profile pages containing offensive\n or sexually explicit material will not be tolerated and removed from the site immediately once\n brought to the attention of the WISE team.\n

    \n

    \n You may not deliberately perform actions that are intended to negatively affect the WISE\n website or its users. You may not post links to harmful sites to download viruses or malware.\n

    \n

    \n All user-generated content is provided as-is. The WISE Team is not responsible for the\n accuracy or reliability of any user-generated content available through WISE. The WISE Team\n does not endorse any views, opinions, or advice expressed in user-generated content. You agree\n to relieve the WISE Team of any and all liability arising from your user-generated content.\n

    \n

    \n If you notice any offensive material or user-generated content that are in violation with the\n rules above, please report it to the WISE Team using our Contact Form.\n

    \n

    5. Information Security

    \n

    \n The security of your information is important to us and we try to maintain a high standard for\n security by using technical safeguards. We will try our best to keep your data safe. However,\n no system can ever be 100% secure so we can not guarantee your personal information will be\n 100% safe from unauthorized access, either while stored on our site or our databases or while\n being transmitted to WISE over the internet.\n

    \n

    \n You can help us protect against unauthorized access to your account by choosing a strong\n password and keeping your password secret at all times.\n

    \n

    6. State & Federal Laws

    \n

    California Privacy Rights for Minors

    \n

    \n If you live in California and are under the age of 18 or the parent or legal guardian of a\n student under the age of 18, you may request the removal of your information from our site.\n When you request removal of your information, we will remove all your personal information to\n the best of our ability. Please note that we may not be able to remove all de-identified\n information or pieces of content stored in our databases and we may not remove content that we\n are required to retain under applicable federal and state laws. If you would like to request\n removal of your or your child's content or information, please\n contact us for assistance or you can delete specific information from\n you or your child's account.\n

    \n

    Children's Online Privacy Protection Act (COPPA)

    \n

    \n Our collection of personal information for children under 13 is intended to follow the\n principles of the Children's Online Privacy Protection Act (COPPA), a U.S. law designed to\n protect the online privacy of children under the age of 13.\n

    \n

    \n \n Please note that it is the responsibility of any teacher, school, school district, or any\n other entity or institution that intends to use WISE with any child under the age of 13 to\n obtain consent from the child's parent(s) or legal guardian(s) before having the child\n create a WISE account, utilizing the WISE platform to collect personal information from the\n child, or having the child generate stored content on the platform. WISE does not obtain and\n is not responsible for obtaining this consent.\n \n

    \n

    \n We do not make personal information collected from children publicly available nor do we\n enable children to do so on our platform. Content a child generates on the platform (while\n logged into their account) in the context of a unit run may be visible to the child's\n teacher(s) and/or classmates. We will not condition a child's participation in any activity or\n service on the disclosure of more personal information than is reasonably necessary to\n participate in an activity.\n

    \n

    \n Parents or guardians may contact us to review, update, or delete any of\n their children's personal information that we may have collected and to elect for us not to\n collect any additional personal information from their children.\n

    \n

    Family Educational Rights and Privacy Act (FERPA)

    \n

    \n We take care to be familiar with FERPA legislation and we take all possible measures to ensure\n compliance with FERPA's requirements when you use WISE. We are confident that the protection\n of data outlined in this document satisfies its requirements.\n

    \n

    \n 7. Changes and Updates to the Terms of Use & Privacy Policy\n

    \n

    \n We may occasionally update or modify our Terms of Use and Privacy Policy. We will always\n display the date this document was last updated. If we make significant changes to these\n terms, we will display a prominent notice on the WISE home page and may notify users via\n registered email. We encourage you to review this document periodically. By continuing to use\n WISE after any changes to this document, you acknowledge that you agree to the current version\n of these terms.\n

    \n

    \n If you have any questions or concerns about this document or the WISE site, please contact us\n using our Contact Form. We can also be reached by mail at:\n

    \n

    \n UC Berkeley School of Education
    \n Web-based Inquiry Science Environment (WISE)
    \n 2121 Berkeley Way, Room 4203
    \n Berkeley, CA 94720-1670\n

    \n
    \n
    \n" + }, + { + "name": "ProjectAssetAuthoringComponent", + "id": "component-ProjectAssetAuthoringComponent-deb905926f53832ca29271da60265973c41255f3e342152c61acfdb2e11ed7897a3e1ba81f1e26c994b367d5385be0c2bd20957c5bd40fcf8bc40cd1492635a4", + "file": "src/assets/wise5/authoringTool/project-asset-authoring/project-asset-authoring.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./project-asset-authoring.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "allowedFileTypes", + "defaultValue": "['any']", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 35 + }, + { + "name": "assetIsImage", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 36 + }, + { + "name": "assetIsVideo", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 37 + }, + { + "name": "assetSortBy", + "defaultValue": "'aToZ'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 38 + }, + { + "name": "componentId", + "defaultValue": "null", + "deprecated": false, + "deprecationMessage": "", + "type": "null", + "indexKey": "", + "optional": false, + "description": "", + "line": 39 + }, + { + "name": "errorFiles", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 40 + }, + { + "name": "isPopup", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 41 + }, + { + "name": "nodeId", + "defaultValue": "null", + "deprecated": false, + "deprecationMessage": "", + "type": "null", + "indexKey": "", + "optional": false, + "description": "", + "line": 42 + }, + { + "name": "previewAssetURL", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 43 + }, + { + "name": "projectAssets", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 44 + }, + { + "name": "projectAssetTotalSizeMax", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 45 + }, + { + "name": "projectAssetUsagePercentage", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 46 + }, + { + "name": "selectedAssetItem", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 47 + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 48 + }, + { + "name": "successFiles", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 49 + }, + { + "name": "target", + "defaultValue": "null", + "deprecated": false, + "deprecationMessage": "", + "type": "null", + "indexKey": "", + "optional": false, + "description": "", + "line": 50 + }, + { + "name": "targetObject", + "defaultValue": "null", + "deprecated": false, + "deprecationMessage": "", + "type": "null", + "indexKey": "", + "optional": false, + "description": "", + "line": 51 + }, + { + "name": "totalFileSize", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 52 + }, + { + "name": "totalUnusedFilesSize", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 53 + }, + { + "name": "unusedFilesPercentage", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 54 + }, + { + "name": "uploadErrorMessage", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 56 + }, + { + "name": "uploadSuccessMessage", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 55 + } + ], + "methodsClass": [ + { + "name": "assetSortByChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 122, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "chooseAsset", + "args": [ + { + "name": "assetItem", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 158, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "assetItem", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "deleteAsset", + "args": [ + { + "name": "assetItem", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 148, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "assetItem", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "downloadAsset", + "args": [ + { + "name": "assetItem", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 154, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "assetItem", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getLargeFileMessage", + "args": [ + { + "name": "files", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "largeFiles", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 209, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the confirm message to display to the author because they are trying to upload at least one\nlarge file.\n", + "description": "

    Get the confirm message to display to the author because they are trying to upload at least one\nlarge file.

    \n", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": { + "pos": 6437, + "end": 6442, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "files" + }, + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 6431, + "end": 6436, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    All the files they are trying to upload.

    \n" + }, + { + "name": { + "pos": 6496, + "end": 6506, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "largeFiles" + }, + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 6490, + "end": 6495, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    All the large files they are trying to upload.

    \n" + }, + { + "tagName": { + "pos": 6560, + "end": 6567, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

    The message to show to the author.

    \n", + "returnType": "string" + } + ] + }, + { + "name": "hasTarget", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 261, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "isFileLarge", + "args": [ + { + "name": "file", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 198, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "file", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 118, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 65, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "previewAsset", + "args": [ + { + "name": "assetItem", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 268, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "assetItem", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "separateLargeAndSmallFiles", + "args": [ + { + "name": "files", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 185, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "files", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setParams", + "args": [ + { + "name": "params", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 97, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "params", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setTotalFileSize", + "args": [ + { + "name": "totalFileSize", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 283, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "totalFileSize", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setTotalUnusedFilesSize", + "args": [ + { + "name": "totalUnusedFilesSize", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 288, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "totalUnusedFilesSize", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "showError", + "args": [ + { + "name": "error", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 252, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "error", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "showUploadedFiles", + "args": [ + { + "name": "uploadedFiles", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 243, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "uploadedFiles", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "sortAssets", + "args": [ + { + "name": "sortBy", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 126, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "sortBy", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "sortAssetsAToZ", + "args": [ + { + "name": "a", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "b", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 140, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "a", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "b", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "sortAssetsSmallToLarge", + "args": [ + { + "name": "a", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "b", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 144, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "a", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "b", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "uploadAssetItems", + "args": [ + { + "name": "files", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 169, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "files", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "uploadAssets", + "args": [ + { + "name": "files", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 224, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "files", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "DragAndDropDirective", + "type": "directive" + }, + { + "name": "FileSizePipe", + "type": "pipe" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatSelectModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Inject, Optional } from '@angular/core';\nimport { ConfigService } from '../../services/configService';\nimport { ProjectAssetService } from '../../../../app/services/projectAssetService';\nimport $ from 'jquery';\nimport { Subscription } from 'rxjs';\nimport { isImage, isVideo } from '../../common/file/file';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { AssetChooserDialogData } from './asset-chooser-dialog-data';\nimport { CommonModule } from '@angular/common';\nimport { FileSizePipe } from '../file-size/filesize.pipe';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { DragAndDropDirective } from '../../common/drag-and-drop/drag-and-drop.directive';\n\n@Component({\n imports: [\n CommonModule,\n DragAndDropDirective,\n FileSizePipe,\n FormsModule,\n MatButtonModule,\n MatFormFieldModule,\n MatIconModule,\n MatSelectModule,\n MatTooltipModule\n ],\n styleUrl: './project-asset-authoring.component.scss',\n templateUrl: './project-asset-authoring.component.html'\n})\nexport class ProjectAssetAuthoringComponent {\n allowedFileTypes: string[] = ['any'];\n assetIsImage: boolean;\n assetIsVideo: boolean;\n assetSortBy = 'aToZ';\n componentId = null;\n errorFiles: any;\n isPopup = false;\n nodeId = null;\n previewAssetURL: string;\n projectAssets: any;\n projectAssetTotalSizeMax = 0;\n projectAssetUsagePercentage: any = 0;\n selectedAssetItem: any;\n subscriptions: Subscription = new Subscription();\n successFiles: any;\n target = null;\n targetObject = null;\n totalFileSize = 0;\n totalUnusedFilesSize = 0;\n unusedFilesPercentage = 0;\n uploadSuccessMessage = '';\n uploadErrorMessage: any;\n\n constructor(\n private configService: ConfigService,\n @Optional() @Inject(MAT_DIALOG_DATA) private dialogData: AssetChooserDialogData,\n @Optional() protected dialogRef: MatDialogRef,\n private projectAssetService: ProjectAssetService\n ) {}\n\n ngOnInit(): void {\n if (this.dialogData != null) {\n this.setParams(this.dialogData);\n }\n\n this.subscriptions.add(\n this.projectAssetService.getProjectAssets().subscribe((projectAssets) => {\n if (projectAssets != null) {\n this.projectAssets = projectAssets;\n this.sortAssets(this.assetSortBy);\n this.projectAssetTotalSizeMax = this.projectAssetService.totalSizeMax;\n }\n })\n );\n\n this.subscriptions.add(\n this.projectAssetService.getTotalFileSize().subscribe((totalFileSize) => {\n this.setTotalFileSize(totalFileSize);\n })\n );\n\n this.subscriptions.add(\n this.projectAssetService.getTotalUnusedFileSize().subscribe((totalUnusedFilesSize) => {\n this.setTotalUnusedFilesSize(totalUnusedFilesSize);\n })\n );\n\n if (this.projectAssetService.isProjectAssetsAvailable()) {\n this.projectAssetService.calculateAssetUsage();\n }\n }\n\n private setParams(params: any): void {\n if (params.isPopup != null) {\n this.isPopup = true;\n }\n if (params.nodeId != null) {\n this.nodeId = params.nodeId;\n }\n if (params.componentId != null) {\n this.componentId = params.componentId;\n }\n if (params.target != null) {\n this.target = params.target;\n }\n if (params.targetObject != null) {\n this.targetObject = params.targetObject;\n }\n if (params.allowedFileTypes != null) {\n this.allowedFileTypes = params.allowedFileTypes;\n }\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n protected assetSortByChanged(): void {\n this.sortAssets(this.assetSortBy);\n }\n\n private sortAssets(sortBy: string): void {\n if (sortBy === 'aToZ') {\n this.projectAssets.files.sort(this.sortAssetsAToZ);\n } else if (sortBy === 'zToA') {\n this.projectAssets.files = this.projectAssets.files.sort(this.sortAssetsAToZ).reverse();\n } else if (sortBy === 'smallToLarge') {\n this.projectAssets.files.sort(this.sortAssetsSmallToLarge);\n } else if (sortBy === 'largeToSmall') {\n this.projectAssets.files = this.projectAssets.files\n .sort(this.sortAssetsSmallToLarge)\n .reverse();\n }\n }\n\n private sortAssetsAToZ(a: any, b: any): number {\n return a.fileName.toLowerCase().localeCompare(b.fileName.toLowerCase());\n }\n\n private sortAssetsSmallToLarge(a: any, b: any): number {\n return a.fileSize - b.fileSize;\n }\n\n protected deleteAsset(assetItem: any): void {\n if (confirm($localize`Are you sure you want to delete this file?\\n\\n${assetItem.fileName}`)) {\n this.projectAssetService.deleteAssetItem(assetItem);\n }\n }\n\n protected downloadAsset(assetItem: any): void {\n this.projectAssetService.downloadAssetItem(assetItem);\n }\n\n protected chooseAsset(assetItem: any): void {\n const params = {\n assetItem: assetItem,\n nodeId: this.nodeId,\n componentId: this.componentId,\n target: this.target,\n targetObject: this.targetObject\n };\n this.dialogRef.close(params);\n }\n\n protected uploadAssetItems(files: any[]): void {\n files = Array.from(files);\n let performUploadOfAllFiles = true;\n const largeAndSmallFiles = this.separateLargeAndSmallFiles(files);\n const largeFiles = largeAndSmallFiles.largeFiles;\n const smallFiles = largeAndSmallFiles.smallFiles;\n if (largeFiles.length > 0) {\n performUploadOfAllFiles = confirm(this.getLargeFileMessage(files, largeFiles));\n }\n if (performUploadOfAllFiles) {\n this.uploadAssets(files);\n } else if (smallFiles.length > 0) {\n this.uploadAssets(smallFiles);\n }\n }\n\n private separateLargeAndSmallFiles(files: any[]): any {\n const largeFiles = [];\n const smallFiles = [];\n for (const file of files) {\n if (this.isFileLarge(file)) {\n largeFiles.push(file);\n } else {\n smallFiles.push(file);\n }\n }\n return { largeFiles: largeFiles, smallFiles: smallFiles };\n }\n\n private isFileLarge(file: any): boolean {\n return file.size > 500000;\n }\n\n /**\n * Get the confirm message to display to the author because they are trying to upload at least one\n * large file.\n * @param files All the files they are trying to upload.\n * @param largeFiles All the large files they are trying to upload.\n * @returns {string} The message to show to the author.\n */\n private getLargeFileMessage(files: any[], largeFiles: any[]): string {\n let message = ``;\n if (files.length == 1 && largeFiles.length == 1) {\n message = $localize`The file you are trying to upload is larger than 500 KB. We recommend using smaller files so they load faster for students. Are you sure you want to upload this large file?\\n`;\n } else if (largeFiles.length == 1) {\n message = $localize`One of the files you are trying to upload is larger than 500 KB. We recommend using smaller files so they load faster for students. Are you sure you want to upload the large file?\\n`;\n } else if (largeFiles.length > 1) {\n message = $localize`${largeFiles.length} of the files you are trying to upload are larger than 500 KB. We recommend using smaller files so they load faster for students. Are you sure you want to upload these large files?\\n`;\n }\n for (const largeFile of largeFiles) {\n message += `\\n${largeFile.name} (${Math.floor(largeFile.size / 1000)} KB)`;\n }\n return message;\n }\n\n private uploadAssets(files: any[]): void {\n this.subscriptions.add(\n this.projectAssetService\n .uploadAssets(files)\n .subscribe(({ success, error, assetDirectoryInfo }) => {\n if (success.length > 0) {\n this.showUploadedFiles(success);\n }\n if (error.length > 0) {\n this.showError(error);\n }\n this.projectAssets = assetDirectoryInfo;\n if (this.hasTarget()) {\n this.chooseAsset({ fileName: files[0].name, fileSize: files[0].size });\n }\n })\n );\n }\n\n private showUploadedFiles(uploadedFiles: any[]): void {\n this.successFiles = uploadedFiles;\n this.uploadSuccessMessage = $localize`Successfully uploaded:`;\n setTimeout(() => {\n this.uploadSuccessMessage = '';\n this.successFiles = [];\n }, 7000);\n }\n\n private showError(error: any): void {\n this.errorFiles = error;\n this.uploadErrorMessage = $localize`Error uploading: `;\n setTimeout(() => {\n this.uploadErrorMessage = '';\n this.errorFiles = [];\n }, 7000);\n }\n\n private hasTarget(): boolean {\n return (\n (this.nodeId != null && this.componentId != null && this.target != null) ||\n this.target === 'projectIcon'\n );\n }\n\n protected previewAsset(assetItem: any): void {\n this.selectedAssetItem = assetItem;\n const assetFileName = assetItem.fileName;\n const assetsDirectoryPath = this.configService.getProjectAssetsDirectoryPath();\n this.previewAssetURL = `${assetsDirectoryPath}/${assetFileName}`;\n this.assetIsImage = false;\n this.assetIsVideo = false;\n if (isImage(assetFileName)) {\n this.assetIsImage = true;\n } else if (isVideo(assetFileName)) {\n this.assetIsVideo = true;\n $('video').load(this.previewAssetURL);\n }\n }\n\n private setTotalFileSize(totalFileSize: number): void {\n this.totalFileSize = totalFileSize;\n this.projectAssetUsagePercentage = this.projectAssetService.getAssetUsagePercentage();\n }\n\n private setTotalUnusedFilesSize(totalUnusedFilesSize: number): void {\n this.totalUnusedFilesSize = totalUnusedFilesSize;\n this.unusedFilesPercentage = this.projectAssetService.getAssetUnusedPercentage();\n }\n}\n", + "styleUrl": "./project-asset-authoring.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialogData", + "type": "AssetChooserDialogData", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialogRef", + "type": "MatDialogRef", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectAssetService", + "type": "ProjectAssetService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 56, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialogData", + "type": "AssetChooserDialogData", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialogRef", + "type": "MatDialogRef", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectAssetService", + "type": "ProjectAssetService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "
    \n \n Drop image or file here or click to upload!\n \n
    \n
    \n \n You are using {{ totalFileSize | fileSize }} out of\n {{ projectAssetTotalSizeMax | fileSize }} ({{ projectAssetUsagePercentage.toFixed(0) }}%)\n \n @if (totalUnusedFilesSize != null && totalUnusedFilesSize !== 0) {\n (Unused Files {{ totalUnusedFilesSize | fileSize }} ({{\n unusedFilesPercentage.toFixed(0)\n }}%))\n \n }\n
    \n
    \n {{ uploadSuccessMessage }}\n @for (successFile of successFiles; track successFile) {\n
    \n {{ successFile.filename }}\n
    \n }\n
    \n
    \n {{ uploadErrorMessage }}\n @for (errorFile of errorFiles; track errorFile) {\n
    \n {{ errorFile.filename }} {{ errorFile.message }}\n
    \n }\n
    \n \n Sort Assets\n \n File Name A->Z\n File Name Z->A\n File Size Small -> Large\n File Size Large -> Small\n \n \n
    \n
    \n
      \n @for (assetItem of projectAssets.files; track assetItem) {\n @if (allowedFileTypes.includes('any') || allowedFileTypes.includes(assetItem.fileType)) {\n \n @if (isPopup) {\n \n }\n {{ assetItem.fileName }} ({{ assetItem.fileSize | fileSize }})\n @if (!assetItem.used) {\n \n (Not Used)\n \n }\n
      \n \n file_download\n \n \n delete\n \n \n }\n }\n
    \n
    \n
    \n @if (assetIsImage) {\n \n }\n @if (assetIsVideo) {\n \n }\n
    \n
    \n\n" + }, + { + "name": "ProjectAuthoringComponent", + "id": "component-ProjectAuthoringComponent-61420fa74d52b333397fd501c1673484cb3c88a3f7466146d6bab48fd93f26eab061d2244bc8e85c572fd4c208c34d708178b5edd7fcb65d4a9f4269080ee384", + "file": "src/assets/wise5/authoringTool/project-authoring/project-authoring.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./project-authoring.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "unitId", + "deprecated": false, + "deprecationMessage": "", + "line": 50, + "type": "number", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "allLessonsCollapsed", + "defaultValue": "computed(() =>\n this.isAllLessonsExpandedValue(false)\n )", + "deprecated": false, + "deprecationMessage": "", + "type": "Signal", + "indexKey": "", + "optional": false, + "description": "", + "line": 36, + "modifierKind": [ + 124 + ] + }, + { + "name": "allLessonsExpanded", + "defaultValue": "computed(() =>\n this.isAllLessonsExpandedValue(true)\n )", + "deprecated": false, + "deprecationMessage": "", + "type": "Signal", + "indexKey": "", + "optional": false, + "description": "", + "line": 39, + "modifierKind": [ + 124 + ] + }, + { + "name": "inactiveGroupNodes", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 42, + "modifierKind": [ + 124 + ] + }, + { + "name": "inactiveNodes", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 43, + "modifierKind": [ + 123 + ] + }, + { + "name": "inactiveStepNodes", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 44, + "modifierKind": [ + 124 + ] + }, + { + "name": "items", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 45, + "modifierKind": [ + 124 + ] + }, + { + "name": "lessonIdToExpanded", + "defaultValue": "signal({})", + "deprecated": false, + "deprecationMessage": "", + "type": "WritableSignal", + "indexKey": "", + "optional": false, + "description": "", + "line": 47, + "modifierKind": [ + 124 + ] + }, + { + "name": "lessons", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 46, + "modifierKind": [ + 124 + ] + }, + { + "name": "nodeIdToChecked", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 48, + "modifierKind": [ + 124 + ] + }, + { + "name": "nodeTypeSelected", + "deprecated": false, + "deprecationMessage": "", + "type": "Signal", + "indexKey": "", + "optional": false, + "description": "", + "line": 49, + "modifierKind": [ + 124 + ] + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 51, + "modifierKind": [ + 123 + ] + } + ], + "methodsClass": [ + { + "name": "chooseLocation", + "args": [ + { + "name": "isCopy", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 96, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "isCopy", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "collapseAllLessons", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 209, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "deleteSelectedNodes", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 103, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "expandAllLessons", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 205, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "getComponents", + "args": [ + { + "name": "nodeIds", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "ComponentContent[]", + "typeParameters": [], + "line": 117, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeIds", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getParentGroup", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 172, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getSelectedNodeIds", + "args": [], + "optional": false, + "returnType": "string[]", + "typeParameters": [], + "line": 125, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "hasSelectedNodes", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 185, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "hasSelectedStepsOnly", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 189, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "isAllLessonsExpandedValue", + "args": [ + { + "name": "expanded", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 196, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "expanded", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 76, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 62, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeClicked", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 91, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "onExpandedChanged", + "args": [ + { + "name": "event", + "type": "ExpandEvent", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 227, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "event", + "type": "ExpandEvent", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "refreshProject", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 80, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "removeLessonIdToExpandedEntries", + "args": [ + { + "name": "nodeIds", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 140, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeIds", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "selectNode", + "args": [ + { + "type": "SelectNodeEvent", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 180, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nThe checkbox for a node was clicked. We do not allow selecting a mix of group and step nodes.\nIf any group nodes are selected, disable all step node checkboxes, and vise-versa.\n", + "description": "

    The checkbox for a node was clicked. We do not allow selecting a mix of group and step nodes.\nIf any group nodes are selected, disable all step node checkboxes, and vise-versa.

    \n", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "type": "SelectNodeEvent", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setAllLessonsExpandedValue", + "args": [ + { + "name": "expanded", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 215, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "expanded", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "temporarilyHighlightNewNodes", + "args": [ + { + "name": "newNodes", + "type": "[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 163, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "newNodes", + "type": "[]", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "[]", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "unselectAllItems", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 149, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "unselectChildren", + "args": [ + { + "name": "lesson", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 239, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "lesson", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "updateNodeTypeSelected", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 243, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "ProjectAuthoringLessonComponent", + "type": "component" + }, + { + "name": "ProjectAuthoringStepComponent", + "type": "component" + }, + { + "name": "AddLessonButtonComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input, OnInit, Signal, WritableSignal, computed, signal } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatIconModule } from '@angular/material/icon';\nimport { FormsModule } from '@angular/forms';\nimport { ProjectAuthoringLessonComponent } from '../project-authoring-lesson/project-authoring-lesson.component';\nimport { ProjectAuthoringStepComponent } from '../project-authoring-step/project-authoring-step.component';\nimport { AddLessonButtonComponent } from '../add-lesson-button/add-lesson-button.component';\nimport { DeleteNodeService } from '../../services/deleteNodeService';\nimport { TeacherProjectService } from '../../services/teacherProjectService';\nimport { TeacherDataService } from '../../services/teacherDataService';\nimport { Subscription } from 'rxjs';\nimport { scrollToElement, temporarilyHighlightElement } from '../../common/dom/dom';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { SelectNodeEvent } from '../domain/select-node-event';\nimport { NodeTypeSelected } from '../domain/node-type-selected';\nimport { ExpandEvent } from '../domain/expand-event';\nimport { DeleteTranslationsService } from '../../services/deleteTranslationsService';\nimport { ComponentContent } from '../../common/ComponentContent';\nimport { copy } from '../../common/object/object';\n\n@Component({\n imports: [\n FormsModule,\n MatButtonModule,\n MatTooltipModule,\n MatIconModule,\n ProjectAuthoringLessonComponent,\n ProjectAuthoringStepComponent,\n AddLessonButtonComponent\n ],\n styleUrl: './project-authoring.component.scss',\n templateUrl: './project-authoring.component.html'\n})\nexport class ProjectAuthoringComponent implements OnInit {\n protected allLessonsCollapsed: Signal = computed(() =>\n this.isAllLessonsExpandedValue(false)\n );\n protected allLessonsExpanded: Signal = computed(() =>\n this.isAllLessonsExpandedValue(true)\n );\n protected inactiveGroupNodes: any[];\n private inactiveNodes: any[];\n protected inactiveStepNodes: any[];\n protected items: any;\n protected lessons: any[] = [];\n protected lessonIdToExpanded: WritableSignal<{ [key: string]: boolean }> = signal({});\n protected nodeIdToChecked: any = {};\n protected nodeTypeSelected: Signal;\n @Input('unitId') protected projectId?: number;\n private subscriptions: Subscription = new Subscription();\n\n constructor(\n private dataService: TeacherDataService,\n private deleteNodeService: DeleteNodeService,\n private deleteTranslationsService: DeleteTranslationsService,\n private projectService: TeacherProjectService,\n private route: ActivatedRoute,\n private router: Router\n ) {}\n\n ngOnInit(): void {\n this.projectId = Number(this.projectId);\n this.refreshProject();\n this.dataService.setCurrentNode(null);\n this.temporarilyHighlightNewNodes(history.state.newNodes);\n this.nodeTypeSelected = this.projectService.getNodeTypeSelected();\n this.subscriptions.add(\n this.projectService.refreshProject$.subscribe(() => {\n this.refreshProject();\n })\n );\n this.expandAllLessons();\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n private refreshProject(): void {\n this.projectService.parseProject();\n this.items = this.projectService.getNodesInOrder();\n this.items.shift(); // remove the 'group0' master root node from consideration\n this.lessons = this.projectService.getOrderedGroupNodes();\n this.inactiveGroupNodes = this.projectService.getInactiveGroupNodes();\n this.inactiveStepNodes = this.projectService.getInactiveStepNodes();\n this.inactiveNodes = this.projectService.getInactiveNodes();\n this.unselectAllItems();\n }\n\n protected nodeClicked(nodeId: string): void {\n this.unselectAllItems();\n this.dataService.setCurrentNodeByNodeId(nodeId);\n }\n\n protected chooseLocation(isCopy: boolean): void {\n this.router.navigate([isCopy ? 'choose-copy-location' : 'choose-move-location'], {\n relativeTo: this.route,\n state: { selectedNodeIds: this.getSelectedNodeIds() }\n });\n }\n\n protected deleteSelectedNodes(): void {\n const selectedNodeIds = this.getSelectedNodeIds();\n const confirmMessage = $localize`Are you sure you want to delete the ${selectedNodeIds.length} selected item(s)?`;\n if (confirm(confirmMessage)) {\n // get the components before they're removed by the following line\n const components = this.getComponents(selectedNodeIds);\n selectedNodeIds.forEach((nodeId) => this.deleteNodeService.deleteNode(nodeId));\n this.removeLessonIdToExpandedEntries(selectedNodeIds);\n this.projectService.saveProject();\n this.refreshProject();\n this.deleteTranslationsService.tryDeleteComponents(components);\n }\n }\n\n private getComponents(nodeIds: string[]): ComponentContent[] {\n return nodeIds.flatMap((nodeId: string) => {\n return this.projectService.isGroupNode(nodeId)\n ? this.projectService.getComponentsFromLesson(nodeId)\n : this.projectService.getComponentsFromStep(nodeId);\n });\n }\n\n private getSelectedNodeIds(): string[] {\n const selectedNodeIds = [];\n this.items.forEach((item: any) => {\n if (this.nodeIdToChecked[item.id]) {\n selectedNodeIds.push(item.id);\n }\n });\n for (const inactiveNode of this.inactiveNodes) {\n if (this.nodeIdToChecked[inactiveNode.id]) {\n selectedNodeIds.push(inactiveNode.id);\n }\n }\n return selectedNodeIds;\n }\n\n private removeLessonIdToExpandedEntries(nodeIds: string[]): void {\n this.lessonIdToExpanded.update((lessonIdToExpanded) => {\n nodeIds.forEach((nodeId) => {\n delete lessonIdToExpanded[nodeId];\n });\n return copy(lessonIdToExpanded);\n });\n }\n\n private unselectAllItems(): void {\n this.items.forEach((item: any) => {\n item.checked = false;\n });\n this.inactiveGroupNodes.forEach((inactiveGroupNode: any) => {\n inactiveGroupNode.checked = false;\n });\n this.inactiveStepNodes.forEach((inactiveStepNode: any) => {\n inactiveStepNode.checked = false;\n });\n this.nodeIdToChecked = {};\n this.projectService.setNodeTypeSelected(null);\n }\n\n private temporarilyHighlightNewNodes(newNodes = []): void {\n if (newNodes.length > 0) {\n setTimeout(() => {\n newNodes.forEach((newNode) => temporarilyHighlightElement(newNode.id));\n scrollToElement(newNodes[0].id);\n });\n }\n }\n\n protected getParentGroup(nodeId: string): any {\n return this.projectService.getParentGroup(nodeId);\n }\n\n /**\n * The checkbox for a node was clicked. We do not allow selecting a mix of group and step nodes.\n * If any group nodes are selected, disable all step node checkboxes, and vise-versa.\n */\n protected selectNode({ id, checked }: SelectNodeEvent): void {\n this.nodeIdToChecked[id] = checked;\n this.updateNodeTypeSelected();\n }\n\n protected hasSelectedNodes(): boolean {\n return this.getSelectedNodeIds().length > 0;\n }\n\n protected hasSelectedStepsOnly(): boolean {\n return (\n this.hasSelectedNodes() &&\n this.getSelectedNodeIds().every((nodeId) => this.projectService.isApplicationNode(nodeId))\n );\n }\n\n private isAllLessonsExpandedValue(expanded: boolean): boolean {\n return (\n this.lessons.every((lesson) => this.lessonIdToExpanded()[lesson.id] === expanded) &&\n this.inactiveGroupNodes.every(\n (inactiveGroupNode) => this.lessonIdToExpanded()[inactiveGroupNode.id] === expanded\n )\n );\n }\n\n protected expandAllLessons(): void {\n this.setAllLessonsExpandedValue(true);\n }\n\n protected collapseAllLessons(): void {\n this.setAllLessonsExpandedValue(false);\n this.lessons.forEach((lesson) => this.unselectChildren(lesson));\n this.updateNodeTypeSelected();\n }\n\n private setAllLessonsExpandedValue(expanded: boolean): void {\n this.lessonIdToExpanded.update((lessonIdToExpanded) => {\n for (const lesson of this.lessons) {\n lessonIdToExpanded[lesson.id] = expanded;\n }\n for (const inactiveGroupNode of this.inactiveGroupNodes) {\n lessonIdToExpanded[inactiveGroupNode.id] = expanded;\n }\n return copy(lessonIdToExpanded);\n });\n }\n\n protected onExpandedChanged(event: ExpandEvent): void {\n this.lessonIdToExpanded.update((lessonIdToExpanded) => {\n lessonIdToExpanded[event.id] = event.expanded;\n return copy(lessonIdToExpanded);\n });\n const lesson = this.lessons\n .concat(this.inactiveGroupNodes)\n .find((lesson: any) => lesson.id === event.id);\n this.unselectChildren(lesson);\n this.updateNodeTypeSelected();\n }\n\n private unselectChildren(lesson: any): void {\n lesson.ids.forEach((childId: string) => (this.nodeIdToChecked[childId] = false));\n }\n\n private updateNodeTypeSelected(): void {\n let nodeTypeSelected = null;\n Object.entries(this.nodeIdToChecked).forEach(([nodeId, checked]) => {\n if (checked) {\n nodeTypeSelected = this.projectService.isGroupNode(nodeId)\n ? NodeTypeSelected.lesson\n : NodeTypeSelected.step;\n }\n });\n this.projectService.setNodeTypeSelected(nodeTypeSelected);\n }\n}\n", + "styleUrl": "./project-authoring.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "deleteNodeService", + "type": "DeleteNodeService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "deleteTranslationsService", + "type": "DeleteTranslationsService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 51, + "jsdoctags": [ + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "deleteNodeService", + "type": "DeleteNodeService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "deleteTranslationsService", + "type": "DeleteTranslationsService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "
    \n \n redo\n \n \n content_copy\n \n \n delete\n \n
    \n \n + Expand All\n \n \n - Collapse All\n \n
    \n
    \n @if (lessons.length === 0) {\n
    \n
    There are no lessons
    \n \n
    \n } @else {\n @for (lesson of lessons; track lesson.id; let first = $first) {\n
    \n \n \n
    \n }\n }\n
    \n
    Unused Lessons
    \n @if (inactiveGroupNodes.length === 0) {\n
    \n
    There are no unused lessons
    \n \n
    \n } @else {\n
    \n @for (groupNode of inactiveGroupNodes; track groupNode.id; let first = $first) {\n
    \n \n \n
    \n }\n
    \n }\n
    \n
    Unused Steps
    \n @if (inactiveStepNodes.length === 0) {\n
    There are no unused steps
    \n } @else {\n @for (inactiveStepNode of inactiveStepNodes; track inactiveStepNode.id) {\n @if (getParentGroup(inactiveStepNode.id) == null) {\n \n }\n }\n }\n
    \n
    \n
    \n" + }, + { + "name": "ProjectAuthoringLessonComponent", + "id": "component-ProjectAuthoringLessonComponent-d01ec031ab8a619761e168395bf0f465c312d94c552394a962ccdbab3112473b20f76e3b245412fba457a2df3b3b2a6f4f6df8e4e84c7ba96cf2387b40d5d6f0", + "file": "src/assets/wise5/authoringTool/project-authoring-lesson/project-authoring-lesson.component.ts", + "encapsulation": [ + "ViewEncapsulation.None" + ], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "project-authoring-lesson", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./project-authoring-lesson.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "expanded", + "defaultValue": "true", + "deprecated": false, + "deprecationMessage": "", + "line": 39, + "type": "boolean", + "decorators": [] + }, + { + "name": "lesson", + "deprecated": false, + "deprecationMessage": "", + "line": 42, + "type": "any", + "decorators": [] + }, + { + "name": "projectId", + "deprecated": false, + "deprecationMessage": "", + "line": 44, + "type": "number", + "decorators": [] + }, + { + "name": "showPosition", + "deprecated": false, + "deprecationMessage": "", + "line": 46, + "type": "boolean", + "decorators": [] + } + ], + "outputsClass": [ + { + "name": "onExpandedChanged", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 40, + "type": "EventEmitter" + }, + { + "name": "selectNodeEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 45, + "type": "EventEmitter" + } + ], + "propertiesClass": [ + { + "name": "idToNode", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 41, + "modifierKind": [ + 124 + ] + }, + { + "name": "nodeTypeSelected", + "deprecated": false, + "deprecationMessage": "", + "type": "Signal", + "indexKey": "", + "optional": false, + "description": "", + "line": 43, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "addStepInside", + "args": [ + { + "name": "groupId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 92, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "groupId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "delete", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "move", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 76, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 57, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "saveAndRefreshProject", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 99, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "selectNode", + "args": [ + { + "name": "checked", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 62, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "checked", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setCurrentNode", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 67, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "toggleExpanded", + "args": [ + { + "name": "opened", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "true" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 71, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "opened", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "true", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatExpansionModule", + "type": "module" + }, + { + "name": "MatCheckboxModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + }, + { + "name": "NodeIconAndTitleComponent", + "type": "component" + }, + { + "name": "ProjectAuthoringStepComponent", + "type": "component" + }, + { + "name": "AddStepButtonComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, EventEmitter, Input, Output, Signal, ViewEncapsulation } from '@angular/core';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { FormsModule } from '@angular/forms';\nimport { NodeIconAndTitleComponent } from '../choose-node-location/node-icon-and-title/node-icon-and-title.component';\nimport { ProjectAuthoringStepComponent } from '../project-authoring-step/project-authoring-step.component';\nimport { AddStepButtonComponent } from '../add-step-button/add-step-button.component';\nimport { TeacherDataService } from '../../services/teacherDataService';\nimport { TeacherProjectService } from '../../services/teacherProjectService';\nimport { SelectNodeEvent } from '../domain/select-node-event';\nimport { NodeTypeSelected } from '../domain/node-type-selected';\nimport { ExpandEvent } from '../domain/expand-event';\nimport { DeleteNodeService } from '../../services/deleteNodeService';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { DeleteTranslationsService } from '../../services/deleteTranslationsService';\nimport { AddStepTarget } from '../../../../app/domain/addStepTarget';\n\n@Component({\n encapsulation: ViewEncapsulation.None,\n imports: [\n FormsModule,\n MatExpansionModule,\n MatCheckboxModule,\n MatIconModule,\n MatButtonModule,\n MatTooltipModule,\n NodeIconAndTitleComponent,\n ProjectAuthoringStepComponent,\n AddStepButtonComponent\n ],\n selector: 'project-authoring-lesson',\n styleUrl: './project-authoring-lesson.component.scss',\n templateUrl: './project-authoring-lesson.component.html'\n})\nexport class ProjectAuthoringLessonComponent {\n @Input() expanded: boolean = true;\n @Output() onExpandedChanged: EventEmitter = new EventEmitter();\n protected idToNode: any = {};\n @Input() lesson: any;\n protected nodeTypeSelected: Signal;\n @Input() projectId: number;\n @Output() selectNodeEvent: EventEmitter = new EventEmitter();\n @Input() showPosition: boolean;\n\n constructor(\n private dataService: TeacherDataService,\n private deleteNodeService: DeleteNodeService,\n private deleteTranslationsService: DeleteTranslationsService,\n private projectService: TeacherProjectService,\n private route: ActivatedRoute,\n private router: Router\n ) {}\n\n ngOnInit(): void {\n this.idToNode = this.projectService.idToNode;\n this.nodeTypeSelected = this.projectService.getNodeTypeSelected();\n }\n\n protected selectNode(checked: boolean): void {\n this.projectService.setNodeTypeSelected(checked ? NodeTypeSelected.lesson : null);\n this.selectNodeEvent.emit({ id: this.lesson.id, checked: checked });\n }\n\n protected setCurrentNode(nodeId: string): void {\n this.dataService.setCurrentNodeByNodeId(nodeId);\n }\n\n protected toggleExpanded(opened: boolean = true): void {\n this.expanded = opened;\n this.onExpandedChanged.emit({ id: this.lesson.id, expanded: this.expanded });\n }\n\n protected move(): void {\n this.router.navigate(['choose-move-location'], {\n relativeTo: this.route,\n state: { selectedNodeIds: [this.lesson.id] }\n });\n }\n\n protected delete(): void {\n if (confirm($localize`Are you sure you want to delete this lesson?`)) {\n const components = this.projectService.getComponentsFromLesson(this.lesson.id);\n this.deleteNodeService.deleteNode(this.lesson.id);\n this.saveAndRefreshProject();\n this.deleteTranslationsService.tryDeleteComponents(components);\n }\n }\n\n protected addStepInside(groupId: string): void {\n this.router.navigate(['add-node', 'choose-template'], {\n relativeTo: this.route,\n state: new AddStepTarget('in', groupId)\n });\n }\n\n private saveAndRefreshProject(): void {\n this.projectService.saveProject();\n this.projectService.refreshProject();\n }\n}\n", + "styleUrl": "./project-authoring-lesson.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "deleteNodeService", + "type": "DeleteNodeService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "deleteTranslationsService", + "type": "DeleteTranslationsService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 46, + "jsdoctags": [ + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "deleteNodeService", + "type": "DeleteNodeService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "deleteTranslationsService", + "type": "DeleteTranslationsService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "\n \n \n \n \n \n \n \n edit\n \n \n redo\n \n \n delete\n \n \n \n
    \n @for (childId of lesson.ids; track childId) {\n
    \n \n \n
    \n }\n @if (lesson.ids.length === 0) {\n
    \n
    This lesson has no steps
    \n \n add_circle\n \n
    \n }\n
    \n\n" + }, + { + "name": "ProjectAuthoringParentComponent", + "id": "component-ProjectAuthoringParentComponent-f5ea060271ae3f786ce650e616b66ebee96fd7d39eb34980d7840d42a0604ead34e7a7ba55fe885f61476883a3ab37c08a55c181f3019d7cb3621514dd9546a8", + "file": "src/assets/wise5/authoringTool/project-authoring-parent/project-authoring-parent.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./project-authoring-parent.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "unitId", + "deprecated": false, + "deprecationMessage": "", + "line": 12, + "type": "number", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [], + "methodsClass": [ + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 24, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 16, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "ConcurrentAuthorsMessageComponent", + "type": "component" + }, + { + "name": "RouterModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { NotifyAuthorService } from '../../services/notifyAuthorService';\nimport { ConcurrentAuthorsMessageComponent } from '../concurrent-authors-message/concurrent-authors-message.component';\n\n@Component({\n imports: [ConcurrentAuthorsMessageComponent, RouterModule],\n styleUrl: './project-authoring-parent.component.scss',\n templateUrl: './project-authoring-parent.component.html'\n})\nexport class ProjectAuthoringParentComponent {\n @Input('unitId') protected projectId?: number;\n\n constructor(private notifyAuthorService: NotifyAuthorService) {}\n\n ngOnInit(): void {\n this.projectId = Number(this.projectId);\n this.notifyAuthorService.editBegin(this.projectId);\n window.onbeforeunload = (event) => {\n this.notifyAuthorService.editEnd(this.projectId);\n };\n }\n\n ngOnDestroy(): void {\n this.notifyAuthorService.editEnd(this.projectId);\n }\n}\n", + "styleUrl": "./project-authoring-parent.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "notifyAuthorService", + "type": "NotifyAuthorService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 12, + "jsdoctags": [ + { + "name": "notifyAuthorService", + "type": "NotifyAuthorService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "
    \n
    \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n" + }, + { + "name": "ProjectAuthoringStepComponent", + "id": "component-ProjectAuthoringStepComponent-2777f3c0376f4ce1f22de66b2a9106f61794fd81bc501cb060619d4a41c1a647bd41870f64e688709949b32ecb2a997aeef4159614abb256a5364aff11db4166", + "file": "src/assets/wise5/authoringTool/project-authoring-step/project-authoring-step.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "project-authoring-step", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./project-authoring-step.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "projectId", + "deprecated": false, + "deprecationMessage": "", + "line": 36, + "type": "number", + "decorators": [] + }, + { + "name": "showPosition", + "deprecated": false, + "deprecationMessage": "", + "line": 38, + "type": "boolean", + "decorators": [] + }, + { + "name": "step", + "deprecated": false, + "deprecationMessage": "", + "line": 39, + "type": "any", + "decorators": [] + } + ], + "outputsClass": [ + { + "name": "selectNodeEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 37, + "type": "EventEmitter" + } + ], + "propertiesClass": [ + { + "name": "nodeTypeSelected", + "deprecated": false, + "deprecationMessage": "", + "type": "Signal", + "indexKey": "", + "optional": false, + "description": "", + "line": 35, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "constraintIconClicked", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 130, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "copy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 155, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "delete", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 161, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "getBranchCriteriaDescription", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 77, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nIf this step is a branch point, we will return the criteria that is used\nto determine which path the student gets assigned to.\nare assigned branch paths on this branch point.\n", + "description": "

    If this step is a branch point, we will return the criteria that is used\nto determine which path the student gets assigned to.\nare assigned branch paths on this branch point.

    \n", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": { + "pos": 3058, + "end": 3064, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 3052, + "end": 3057, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    The node id of the branch point.

    \n" + }, + { + "tagName": { + "pos": 3104, + "end": 3111, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

    A human readable string containing the criteria of how students\nare assigned branch paths on this branch point.

    \n" + } + ] + }, + { + "name": "getConstraintDescriptions", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 126, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getNumberOfBranchPaths", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 66, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getNumberOfConstraintsOnNode", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 118, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getStepBackgroundColor", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 102, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "goToEditBranch", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 139, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isBranchPoint", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 110, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isNodeInAnyBranchPath", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 62, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "move", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 148, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 53, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeHasConstraint", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 114, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "nodeHasRubric", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 122, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "saveAndRefreshProject", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 171, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "selectNode", + "args": [ + { + "name": "checked", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 57, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "checked", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setCurrentNode", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 106, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatCheckboxModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + }, + { + "name": "NodeIconAndTitleComponent", + "type": "component" + }, + { + "name": "RouterModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, EventEmitter, Input, Output, Signal } from '@angular/core';\nimport { TeacherProjectService } from '../../services/teacherProjectService';\nimport { TeacherDataService } from '../../services/teacherDataService';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { SelectNodeEvent } from '../domain/select-node-event';\nimport { NodeTypeSelected } from '../domain/node-type-selected';\nimport { DeleteNodeService } from '../../services/deleteNodeService';\nimport { CopyNodesService } from '../../services/copyNodesService';\nimport { DeleteTranslationsService } from '../../services/deleteTranslationsService';\nimport { CopyTranslationsService } from '../../services/copyTranslationsService';\nimport { ConstraintService } from '../../services/constraintService';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { NodeIconAndTitleComponent } from '../choose-node-location/node-icon-and-title/node-icon-and-title.component';\n\n@Component({\n imports: [\n CommonModule,\n MatButtonModule,\n MatCheckboxModule,\n MatIconModule,\n MatTooltipModule,\n NodeIconAndTitleComponent,\n RouterModule\n ],\n selector: 'project-authoring-step',\n styleUrl: './project-authoring-step.component.scss',\n templateUrl: './project-authoring-step.component.html'\n})\nexport class ProjectAuthoringStepComponent {\n protected nodeTypeSelected: Signal;\n @Input() projectId: number;\n @Output() selectNodeEvent: EventEmitter = new EventEmitter();\n @Input() showPosition: boolean;\n @Input() step: any;\n\n constructor(\n private copyNodesService: CopyNodesService,\n private copyTranslationsService: CopyTranslationsService,\n private constraintService: ConstraintService,\n private dataService: TeacherDataService,\n private deleteNodeService: DeleteNodeService,\n private deleteTranslationsService: DeleteTranslationsService,\n private projectService: TeacherProjectService,\n private route: ActivatedRoute,\n private router: Router\n ) {}\n\n ngOnInit(): void {\n this.nodeTypeSelected = this.projectService.getNodeTypeSelected();\n }\n\n protected selectNode(checked: boolean): void {\n this.projectService.setNodeTypeSelected(checked ? NodeTypeSelected.step : null);\n this.selectNodeEvent.emit({ id: this.step.id, checked: checked });\n }\n\n protected isNodeInAnyBranchPath(nodeId: string): boolean {\n return this.projectService.isNodeInAnyBranchPath(nodeId);\n }\n\n protected getNumberOfBranchPaths(nodeId: string): number {\n return this.projectService.getTransitionsByFromNodeId(nodeId).length;\n }\n\n /**\n * If this step is a branch point, we will return the criteria that is used\n * to determine which path the student gets assigned to.\n * @param nodeId The node id of the branch point.\n * @returns A human readable string containing the criteria of how students\n * are assigned branch paths on this branch point.\n */\n protected getBranchCriteriaDescription(nodeId: string): string {\n const transitionLogic = this.projectService.getNode(nodeId).getTransitionLogic();\n for (const transition of transitionLogic.transitions) {\n if (transition.criteria != null && transition.criteria.length > 0) {\n for (const singleCriteria of transition.criteria) {\n if (singleCriteria.name === 'choiceChosen') {\n return 'multiple choice';\n } else if (singleCriteria.name === 'score') {\n return 'score';\n }\n }\n }\n }\n\n /*\n * None of the transitions had a specific criteria so the branching is just\n * based on the howToChooseAmongAvailablePaths field.\n */\n if (transitionLogic.howToChooseAmongAvailablePaths === 'workgroupId') {\n return 'workgroup ID';\n } else if (transitionLogic.howToChooseAmongAvailablePaths === 'random') {\n return 'random assignment';\n }\n }\n\n protected getStepBackgroundColor(nodeId: string): string {\n return this.projectService.getBackgroundColor(nodeId);\n }\n\n protected setCurrentNode(nodeId: string): void {\n this.dataService.setCurrentNodeByNodeId(nodeId);\n }\n\n protected isBranchPoint(nodeId: string): boolean {\n return this.projectService.isBranchPoint(nodeId);\n }\n\n protected nodeHasConstraint(nodeId: string): boolean {\n return this.getNumberOfConstraintsOnNode(nodeId) > 0;\n }\n\n protected getNumberOfConstraintsOnNode(nodeId: string): number {\n return this.projectService.getNode(nodeId).getConstraints().length;\n }\n\n protected nodeHasRubric(nodeId: string): boolean {\n return this.projectService.getNode(nodeId).getNumRubrics() > 0;\n }\n\n protected getConstraintDescriptions(nodeId: string): string {\n return this.constraintService.getConstraintDescriptions(nodeId);\n }\n\n protected constraintIconClicked(nodeId: string): void {\n if (!this.isNodeInAnyBranchPath(nodeId)) {\n this.dataService.setCurrentNodeByNodeId(nodeId);\n this.router.navigate([\n `/teacher/edit/unit/${this.projectId}/node/${nodeId}/advanced/constraint`\n ]);\n }\n }\n\n protected goToEditBranch(nodeId: string): void {\n this.router.navigate(['edit-branch'], {\n relativeTo: this.route,\n state: {\n targetId: nodeId\n }\n });\n }\n\n protected move(): void {\n this.router.navigate(['choose-move-location'], {\n relativeTo: this.route,\n state: { selectedNodeIds: [this.step.id] }\n });\n }\n\n protected copy(): void {\n const newNodes = this.copyNodesService.copyNodesAfter([this.step.id], this.step.id);\n this.copyTranslationsService.tryCopyNodes(newNodes);\n this.saveAndRefreshProject();\n }\n\n protected delete(): void {\n if (confirm($localize`Are you sure you want to delete this step?`)) {\n // get the components before they're removed by the following line\n const components = this.step.components;\n this.deleteNodeService.deleteNode(this.step.id);\n this.saveAndRefreshProject();\n this.deleteTranslationsService.tryDeleteComponents(components);\n }\n }\n\n private saveAndRefreshProject(): void {\n this.projectService.saveProject();\n this.projectService.refreshProject();\n }\n}\n", + "styleUrl": "./project-authoring-step.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "copyNodesService", + "type": "CopyNodesService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "copyTranslationsService", + "type": "CopyTranslationsService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "constraintService", + "type": "ConstraintService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "deleteNodeService", + "type": "DeleteNodeService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "deleteTranslationsService", + "type": "DeleteTranslationsService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 39, + "jsdoctags": [ + { + "name": "copyNodesService", + "type": "CopyNodesService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "copyTranslationsService", + "type": "CopyTranslationsService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "constraintService", + "type": "ConstraintService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "deleteNodeService", + "type": "DeleteNodeService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "deleteTranslationsService", + "type": "DeleteTranslationsService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "\n \n \n \n \n
    \n @if (isBranchPoint(step.id)) {\n \n call_split\n \n }\n @if (nodeHasConstraint(step.id)) {\n \n block\n \n }\n @if (nodeHasRubric(step.id)) {\n message\n }\n
    \n \n \n
    \n \n redo\n \n \n content_copy\n \n \n delete\n \n
    \n \n\n" + }, + { + "name": "ProjectInfoAuthoringComponent", + "id": "component-ProjectInfoAuthoringComponent-80d935ece1756744145ffc79418b9730991274047854da04e14ea4d045e38b0d8b10d529f8dbacd18db640f3e5b5b80c9f84cb3f58bc9c593b219cfa3bd8a5c1", + "file": "src/assets/wise5/authoringTool/project-info-authoring/project-info-authoring.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./project-info-authoring.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "isEditingProjectIcon", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 34 + }, + { + "name": "isMyUnit", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 35, + "modifierKind": [ + 124 + ] + }, + { + "name": "isShowProjectIcon", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 36 + }, + { + "name": "isShowProjectIconError", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 37 + }, + { + "name": "isShowProjectIconLoading", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 38 + }, + { + "name": "metadata", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 39 + }, + { + "name": "metadataAuthoring", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 40 + }, + { + "name": "metadataChanged", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 41 + }, + { + "name": "projectIcon", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 42 + }, + { + "name": "projectIcons", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 43 + }, + { + "name": "publishUnitUrl", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 44, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "assetSelected", + "args": [ + { + "name": "args", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 180, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "args", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "chooseCustomProjectIcon", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 171, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "closeEditProjectIconMode", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 226, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "getFeaturedProjectIcons", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 157, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "getMetadataChoiceText", + "args": [ + { + "name": "choice", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 111, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "choice", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "hasUserCheckedThisMetadataField", + "args": [ + { + "name": "metadataField", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "choice", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 99, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "metadataField", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "choice", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "loadProjectIcon", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 205, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "loadProjectIconAfterTimeout", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 198, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "metadataCheckboxClicked", + "args": [ + { + "name": "metadataField", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 140, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "metadataField", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "metadataChoiceIsChecked", + "args": [ + { + "name": "metadataField", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "choice", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 133, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "metadataField", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "choice", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "metadataRadioClicked", + "args": [ + { + "name": "metadataField", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "choice", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 152, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "metadataField", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "choice", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 53, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "processMetadata", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 75, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "processMetadataAuthoringField", + "args": [ + { + "name": "field", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "field", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "processMetadataAuthoringFieldCheckbox", + "args": [ + { + "name": "field", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 89, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "field", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "save", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 248, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "setCustomProjectIcon", + "args": [ + { + "name": "projectIcon", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 186, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "projectIcon", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setFeaturedProjectIcon", + "args": [ + { + "name": "projectIcon", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 163, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "projectIcon", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "showProjectIcon", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 230, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "showProjectIconError", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 236, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "showProjectIconLoading", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 242, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "toggleEditProjectIconMode", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 219, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "EditProjectLanguageSettingComponent", + "type": "component" + }, + { + "name": "EditUnitResourcesComponent", + "type": "component" + }, + { + "name": "EditUnitTypeComponent", + "type": "component" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatCheckboxModule", + "type": "module" + }, + { + "name": "MatProgressSpinnerModule", + "type": "module" + }, + { + "name": "MatRadioModule", + "type": "module" + }, + { + "name": "TranslatableInputComponent", + "type": "component" + }, + { + "name": "TranslatableTextareaComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { Subject, debounceTime } from 'rxjs';\nimport { UserService } from '../../../../app/services/user.service';\nimport { ConfigService } from '../../services/configService';\nimport { TeacherProjectService } from '../../services/teacherProjectService';\nimport { TranslatableInputComponent } from '../components/translatable-input/translatable-input.component';\nimport { TranslatableTextareaComponent } from '../components/translatable-textarea/translatable-textarea.component';\nimport { EditUnitResourcesComponent } from '../edit-unit-resources/edit-unit-resources.component';\nimport { EditUnitTypeComponent } from '../edit-unit-type/edit-unit-type.component';\nimport { AssetChooser } from '../project-asset-authoring/asset-chooser';\nimport { EditProjectLanguageSettingComponent } from '../project-info/edit-project-language-setting/edit-project-language-setting.component';\n\n@Component({\n imports: [\n EditProjectLanguageSettingComponent,\n EditUnitResourcesComponent,\n EditUnitTypeComponent,\n MatButtonModule,\n MatCheckboxModule,\n MatProgressSpinnerModule,\n MatRadioModule,\n TranslatableInputComponent,\n TranslatableTextareaComponent\n ],\n styleUrl: './project-info-authoring.component.scss',\n templateUrl: './project-info-authoring.component.html'\n})\nexport class ProjectInfoAuthoringComponent {\n isEditingProjectIcon: boolean = false;\n protected isMyUnit: boolean;\n isShowProjectIcon: boolean = false;\n isShowProjectIconError: boolean = false;\n isShowProjectIconLoading: boolean = false;\n metadata: any;\n metadataAuthoring: any;\n metadataChanged: Subject = new Subject();\n projectIcon: string = '';\n projectIcons: any = [];\n protected publishUnitUrl;\n\n constructor(\n private configService: ConfigService,\n private dialog: MatDialog,\n private projectService: TeacherProjectService,\n private userService: UserService\n ) {}\n\n ngOnInit(): void {\n this.metadata = this.projectService.getProjectMetadata();\n if (this.metadata.resources == null) {\n this.metadata.resources = [];\n }\n if (this.metadata.unitType == null) {\n this.metadata.unitType = 'Platform';\n }\n this.metadataAuthoring = JSON.parse(\n this.configService.getConfigParam('projectMetadataSettings')\n );\n this.isMyUnit = this.metadata.authors.some(\n (author) => author.id === this.userService.getUserId()\n );\n this.publishUnitUrl = `${this.configService.getContextPath()}/contact?projectId=${this.configService.getProjectId()}&publish=true`;\n this.loadProjectIcon();\n this.processMetadata();\n this.metadataChanged.pipe(debounceTime(1000)).subscribe(() => {\n this.save();\n });\n }\n\n private processMetadata(): void {\n if (this.metadataAuthoring != null) {\n for (const field of this.metadataAuthoring.fields) {\n this.processMetadataAuthoringField(field);\n }\n }\n }\n\n private processMetadataAuthoringField(field: any): void {\n if (field?.type === 'checkbox') {\n this.processMetadataAuthoringFieldCheckbox(field);\n }\n }\n\n private processMetadataAuthoringFieldCheckbox(field: any): void {\n const metadataField = this.metadata[field.key];\n field.choicesMapping = {};\n if (metadataField != null && field.choices != null) {\n for (const choice of field.choices) {\n field.choicesMapping[choice] = this.hasUserCheckedThisMetadataField(metadataField, choice);\n }\n }\n }\n\n private hasUserCheckedThisMetadataField(metadataField: any, choice: string): boolean {\n let userHasCheckedThisMetadataField = false;\n for (const metadataFieldChoice of metadataField) {\n if (metadataFieldChoice != null && metadataFieldChoice == choice) {\n userHasCheckedThisMetadataField = true;\n break;\n }\n }\n return userHasCheckedThisMetadataField;\n }\n\n // returns the choice text that is appropriate for user's locale\n protected getMetadataChoiceText(choice: string): string {\n let choiceText = choice;\n const i18nMapping = this.metadataAuthoring.i18n;\n const i18nMappingContainingChoiceTextArray = Object.values(i18nMapping).filter(\n (onei18nMapping) => {\n return Object.values(onei18nMapping).indexOf(choice) != -1;\n }\n );\n if (\n i18nMappingContainingChoiceTextArray != null &&\n i18nMappingContainingChoiceTextArray.length > 0\n ) {\n // shouldn't be more than one, but if so, use the first one we find\n const i18nMappingContainingChoiceText = i18nMappingContainingChoiceTextArray[0];\n const userLocale = this.configService.getLocale();\n if (i18nMappingContainingChoiceText[userLocale] != null) {\n choiceText = i18nMappingContainingChoiceText[userLocale];\n }\n }\n return choiceText;\n }\n\n protected metadataChoiceIsChecked(metadataField: any, choice: string): boolean {\n return (\n this.getMetadataChoiceText(this.metadata[metadataField.key]) ==\n this.getMetadataChoiceText(choice)\n );\n }\n\n protected metadataCheckboxClicked(metadataField: any): void {\n const checkedChoices = [];\n for (const choice of metadataField.choices) {\n const isChoiceChecked = metadataField.choicesMapping[choice];\n if (isChoiceChecked) {\n checkedChoices.push(this.getMetadataChoiceText(choice));\n }\n }\n this.metadata[metadataField.key] = checkedChoices;\n this.save();\n }\n\n protected metadataRadioClicked(metadataField: any, choice: string): void {\n this.metadata[metadataField.key] = this.getMetadataChoiceText(choice);\n this.save();\n }\n\n private getFeaturedProjectIcons(): void {\n this.projectService.getFeaturedProjectIcons().then((featuredProjectIcons) => {\n this.projectIcons = featuredProjectIcons;\n });\n }\n\n protected setFeaturedProjectIcon(projectIcon: string): void {\n this.projectService.setFeaturedProjectIcon(projectIcon).then(() => {\n this.projectIcon = `/projectIcons/${projectIcon}`;\n this.showProjectIcon();\n this.closeEditProjectIconMode();\n });\n }\n\n protected chooseCustomProjectIcon(): void {\n new AssetChooser(this.dialog)\n .open('projectIcon')\n .afterClosed()\n .subscribe((data: any) => {\n this.assetSelected(data);\n });\n }\n\n private assetSelected(args: any): void {\n if (args.target === 'projectIcon') {\n this.setCustomProjectIcon(args.assetItem.fileName);\n }\n }\n\n private setCustomProjectIcon(projectIcon: string): void {\n this.showProjectIconLoading();\n this.projectService.setCustomProjectIcon(projectIcon).then(() => {\n this.loadProjectIconAfterTimeout();\n });\n }\n\n /*\n * Load the project_thumb.png after a timeout to allow time for the image to be updated on the\n * server and browser. This is to prevent the browser from displaying the previous\n * project_thumb.png.\n */\n private loadProjectIconAfterTimeout(): void {\n setTimeout(() => {\n this.loadProjectIcon();\n this.closeEditProjectIconMode();\n }, 3000);\n }\n\n private loadProjectIcon(): void {\n this.projectIcon = `${this.configService.getConfigParam(\n 'projectBaseURL'\n )}assets/project_thumb.png?timestamp=${new Date().getTime()}`;\n const image = new Image();\n image.onerror = () => {\n this.showProjectIconError();\n };\n image.onload = () => {\n this.showProjectIcon();\n };\n image.src = this.projectIcon;\n }\n\n protected toggleEditProjectIconMode(): void {\n this.isEditingProjectIcon = !this.isEditingProjectIcon;\n if (this.isEditingProjectIcon) {\n this.getFeaturedProjectIcons();\n }\n }\n\n private closeEditProjectIconMode(): void {\n this.isEditingProjectIcon = false;\n }\n\n private showProjectIcon(): void {\n this.isShowProjectIcon = true;\n this.isShowProjectIconError = false;\n this.isShowProjectIconLoading = false;\n }\n\n private showProjectIconError(): void {\n this.isShowProjectIcon = false;\n this.isShowProjectIconError = true;\n this.isShowProjectIconLoading = false;\n }\n\n private showProjectIconLoading(): void {\n this.isShowProjectIcon = false;\n this.isShowProjectIconError = false;\n this.isShowProjectIconLoading = true;\n }\n\n private save(): void {\n this.projectService.saveProject();\n }\n}\n", + "styleUrl": "./project-info-authoring.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "userService", + "type": "UserService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 44, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "userService", + "type": "UserService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "@if (isMyUnit) {\n \n \n \n}\n
    \n Unit Icon\n \n
    \n
    \n @if (isShowProjectIcon) {\n
    \n \n
    \n }\n @if (isShowProjectIconError) {\n
    \n

    This unit does not have a unit icon.

    \n

    Click the edit button to set one.

    \n
    \n }\n @if (isShowProjectIconLoading) {\n
    \n \n
    \n }\n
    \n@if (isEditingProjectIcon) {\n
    \n
    \n Choose a new Unit Icon by clicking on one below or upload your own custom icon.\n \n
    \n
    \n @for (projectIcon of projectIcons; track projectIcon) {\n \n }\n
    \n
    \n
    \n}\n
    \n@for (metadataField of metadataAuthoring.fields; track metadataField) {\n
    \n @if (metadataField.type === 'textarea') {\n \n }\n @if (metadataField.type === 'input') {\n \n }\n @if (metadataField.name === 'Language') {\n \n }\n @if (metadataField.type === 'radio' && metadataField.name !== 'Language') {\n \n \n @for (choice of metadataField.choices; track choice) {\n \n {{ getMetadataChoiceText(choice) }}\n \n }\n \n }\n @if (metadataField.type === 'checkbox') {\n \n
    \n @for (choice of metadataField.choices; track choice) {\n \n {{ getMetadataChoiceText(choice) }}\n \n }\n
    \n }\n
    \n}\n\n\n" + }, + { + "name": "ProjectLanguageChooserComponent", + "id": "component-ProjectLanguageChooserComponent-88e23ac26db4c0899f954619f2764be7d5be8ab43abbb26b510d542796c3de3000149546dde9c6492578966e61f09a1417b81cc62b35cd398b245ae503ca5559", + "file": "src/app/common/project-language-chooser/project-language-chooser.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "project-language-chooser", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./project-language-chooser.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "projectLocale", + "deprecated": false, + "deprecationMessage": "", + "line": 19, + "type": "ProjectLocale", + "decorators": [] + }, + { + "name": "tooltip", + "defaultValue": "$localize`Select language`", + "deprecated": false, + "deprecationMessage": "", + "line": 21, + "type": "string", + "decorators": [] + } + ], + "outputsClass": [ + { + "name": "languageChangedEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 18, + "type": "EventEmitter" + } + ], + "propertiesClass": [ + { + "name": "availableLanguages", + "deprecated": false, + "deprecationMessage": "", + "type": "Language[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "modifierKind": [ + 124 + ] + }, + { + "name": "selectedLanguage", + "deprecated": false, + "deprecationMessage": "", + "type": "Language", + "indexKey": "", + "optional": false, + "description": "", + "line": 20, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "changeLanguage", + "args": [ + { + "name": "language", + "type": "Language", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 36, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "language", + "type": "Language", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnChanges", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 25, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatMenuModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, EventEmitter, Input, OnChanges, Output } from '@angular/core';\nimport { Language } from '../../domain/language';\nimport { ProjectLocale } from '../../domain/projectLocale';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { ProjectService } from '../../../assets/wise5/services/projectService';\n\n@Component({\n selector: 'project-language-chooser',\n styleUrl: './project-language-chooser.component.scss',\n imports: [MatButtonModule, MatIconModule, MatMenuModule, MatTooltipModule],\n templateUrl: './project-language-chooser.component.html'\n})\nexport class ProjectLanguageChooserComponent implements OnChanges {\n protected availableLanguages: Language[];\n @Output() languageChangedEvent = new EventEmitter();\n @Input() projectLocale: ProjectLocale;\n protected selectedLanguage: Language;\n @Input() tooltip: string = $localize`Select language`;\n\n constructor(private projectService: ProjectService) {}\n\n ngOnChanges(): void {\n this.availableLanguages = this.projectLocale.getAvailableLanguages();\n this.selectedLanguage = this.projectService.currentLanguage();\n if (\n this.selectedLanguage == null ||\n !this.availableLanguages.some((lang) => lang.locale === this.selectedLanguage.locale)\n ) {\n this.selectedLanguage = this.projectLocale.getDefaultLanguage();\n }\n }\n\n protected changeLanguage(language: Language): void {\n this.selectedLanguage = language;\n this.languageChangedEvent.emit(language);\n }\n}\n", + "styleUrl": "./project-language-chooser.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 21, + "jsdoctags": [ + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnChanges" + ], + "templateData": "\n\n @for (language of availableLanguages; track language) {\n \n {{ language.language }}\n \n }\n\n" + }, + { + "name": "ProjectListComponent", + "id": "component-ProjectListComponent-9573370efe9ef058d74d982fcb2ee6784e84a151f3622c8c8a19a885991e31903622c7fea0bac2e2458eb6eb69554af30f641a7cd14b7223f4d1550c1374b74b", + "file": "src/assets/wise5/authoringTool/project-list/project-list.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./project-list.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "projects", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 27, + "modifierKind": [ + 124 + ] + }, + { + "name": "sharedProjects", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 28, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "addNewProject", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 112, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "copyProject", + "args": [ + { + "name": "projectId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 51, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "projectId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getCopyProjectConfirmMessage", + "args": [ + { + "name": "projectId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 69, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "projectId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "goHome", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 108, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "highlightNewProject", + "args": [ + { + "name": "projectId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 80, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "projectId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 47, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 38, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "openProject", + "args": [ + { + "name": "projectId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 99, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "projectId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "previewProject", + "args": [ + { + "name": "projectId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 104, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "projectId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "showMessageInModalDialog", + "args": [ + { + "name": "message", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 90, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "message", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatDialogModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + }, + { + "name": "RouterModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { CommonModule } from '@angular/common';\nimport { Component, OnDestroy, OnInit } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialog, MatDialogModule } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { Router, RouterModule } from '@angular/router';\nimport { scrollToTopOfPage, temporarilyHighlightElement } from '../../common/dom/dom';\nimport { DialogWithSpinnerComponent } from '../../directives/dialog-with-spinner/dialog-with-spinner.component';\nimport { ConfigService } from '../../services/configService';\nimport { CopyProjectService } from '../../services/copyProjectService';\nimport { SessionService } from '../../services/sessionService';\n\n@Component({\n imports: [\n CommonModule,\n MatButtonModule,\n MatDialogModule,\n MatIconModule,\n MatTooltipModule,\n RouterModule\n ],\n styleUrl: './project-list.component.scss',\n templateUrl: './project-list.component.html'\n})\nexport class ProjectListComponent implements OnInit, OnDestroy {\n protected projects: any[] = [];\n protected sharedProjects: any[] = [];\n\n constructor(\n private configService: ConfigService,\n private copyProjectService: CopyProjectService,\n private dialog: MatDialog,\n private router: Router,\n private sessionService: SessionService\n ) {}\n\n ngOnInit(): void {\n this.projects = this.configService\n .getConfigParam('projects')\n .filter((project) => !project.isDeleted);\n this.sharedProjects = this.configService\n .getConfigParam('sharedProjects')\n .sort((projectA, projectB) => projectB.id - projectA.id);\n }\n\n ngOnDestroy(): void {\n this.dialog.closeAll();\n }\n\n protected copyProject(projectId: number): void {\n if (confirm(this.getCopyProjectConfirmMessage(projectId))) {\n this.showMessageInModalDialog($localize`Copying Unit...`);\n this.copyProjectService.copyProject(projectId).subscribe({\n next: (project: any) => {\n scrollToTopOfPage();\n this.highlightNewProject(project.id);\n },\n error: () => {\n alert($localize`There was an error copying this unit. Please contact WISE staff.`);\n },\n complete: () => {\n this.dialog.closeAll();\n }\n });\n }\n }\n\n private getCopyProjectConfirmMessage(projectId: number): string {\n const project = this.projects\n .concat(this.sharedProjects)\n .find((project) => project.id === projectId);\n let projectInfo = `${projectId} ${project.name}`;\n if (project.runId != null) {\n projectInfo += $localize` (Run ID: ${project.runId})`;\n }\n return $localize`Are you sure you want to copy this unit?\\n\\n${projectInfo}`;\n }\n\n private highlightNewProject(projectId: number): void {\n this.configService.retrieveConfig(`/api/author/config`).subscribe(() => {\n this.projects = this.configService.getConfigParam('projects');\n // wait for new element to appear on the page\n setTimeout(() => {\n temporarilyHighlightElement(projectId.toString(), 3000);\n });\n });\n }\n\n private showMessageInModalDialog(message: string): void {\n this.dialog.open(DialogWithSpinnerComponent, {\n data: {\n title: message\n },\n disableClose: true\n });\n }\n\n protected openProject(projectId: number): void {\n this.showMessageInModalDialog($localize`Loading Unit...`);\n this.router.navigate([`/teacher/edit/unit/${projectId}`]);\n }\n\n protected previewProject(projectId: number): void {\n window.open(`${this.configService.getWISEBaseURL()}/preview/unit/${projectId}`);\n }\n\n protected goHome(): void {\n this.sessionService.goHome();\n }\n\n protected addNewProject(): void {\n this.router.navigate([`/teacher/edit/new-unit`]);\n }\n}\n", + "styleUrl": "./project-list.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "copyProjectService", + "type": "CopyProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "sessionService", + "type": "SessionService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 28, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "copyProjectService", + "type": "CopyProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "sessionService", + "type": "SessionService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit", + "OnDestroy" + ], + "templateData": "
    \n
    \n
    \n
    \n \n arrow_back\n \n \n add\n \n \n \n preview\n \n \n content_copy\n \n \n {{ project.id }} - {{ project.name }} \n @if (project.runId != null) {\n (Run ID: {{ project.runId }})\n }\n \n \n
    \n

    My Units

    \n @if (projects.length == 0) {\n
    You have no units
    \n } @else {\n @for (project of projects; track project.id) {\n
    \n \n
    \n }\n }\n

    Shared Units

    \n @if (sharedProjects.length == 0) {\n
    You have no shared units
    \n } @else {\n @for (project of sharedProjects; track project.id) {\n
    \n \n
    \n }\n }\n
    \n
    \n
    \n
    \n
    \n" + }, + { + "name": "ProjectProgressComponent", + "id": "component-ProjectProgressComponent-b1da778afba411585c09cf0ba43f70ffdbc0e579d1d62912ccc2a05ff1841219b9e11bd7699600509b3677d44748c57607714e712e3fe56b3dd25f43a126f2e4", + "file": "src/assets/wise5/classroomMonitor/classroomMonitorComponents/studentProgress/project-progress/project-progress.component.ts", + "encapsulation": [ + "ViewEncapsulation.None" + ], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "project-progress", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./project-progress.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "completed", + "deprecated": false, + "deprecationMessage": "", + "line": 12, + "type": "number", + "decorators": [] + }, + { + "name": "percent", + "deprecated": false, + "deprecationMessage": "", + "line": 13, + "type": "number", + "decorators": [] + }, + { + "name": "total", + "deprecated": false, + "deprecationMessage": "", + "line": 14, + "type": "number", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [], + "methodsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatProgressBarModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@Component({\n encapsulation: ViewEncapsulation.None,\n imports: [MatProgressBarModule, MatTooltipModule],\n selector: 'project-progress',\n templateUrl: './project-progress.component.html'\n})\nexport class ProjectProgressComponent {\n @Input() completed: number;\n @Input() percent: number;\n @Input() total: number;\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [], + "templateData": "\n \n \n \n {{ percent }}%\n
    \n" + }, + { + "name": "PromptComponent", + "id": "component-PromptComponent-f4dbfe146725195db4e3fbf94aa8787a695cd5d246a292c4d8560ba0ebe293efbdedd0b7fd01a8fa1f2fafa36338d764b46563a31777b317aa8d2a24f743ded1", + "file": "src/assets/wise5/directives/prompt/prompt.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "prompt", + "styleUrls": [], + "styles": [ + ".prompt { font-weight: 500; }" + ], + "template": "@if (!dynamicPrompt?.enabled) {\n
    \n} @else {\n \n}\n", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "line": 24, + "type": "string", + "decorators": [] + }, + { + "name": "dynamicPrompt", + "deprecated": false, + "deprecationMessage": "", + "line": 25, + "type": "DynamicPrompt", + "decorators": [] + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 27, + "type": "string", + "decorators": [] + }, + { + "name": "prompt", + "deprecated": false, + "deprecationMessage": "", + "line": 28, + "type": "string", + "decorators": [] + } + ], + "outputsClass": [ + { + "name": "dynamicPromptChanged", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 26, + "type": "EventEmitter" + } + ], + "propertiesClass": [], + "methodsClass": [ + { + "name": "onDynamicPromptChanged", + "args": [ + { + "name": "feedbackRule", + "type": "FeedbackRule", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 30, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "feedbackRule", + "type": "FeedbackRule", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "DynamicPromptComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FeedbackRule } from '../../components/common/feedbackRule/FeedbackRule';\nimport { DynamicPrompt } from '../dynamic-prompt/DynamicPrompt';\nimport { DynamicPromptComponent } from '../dynamic-prompt/dynamic-prompt.component';\n\n@Component({\n imports: [DynamicPromptComponent],\n selector: 'prompt',\n styles: ['.prompt { font-weight: 500; }'],\n template: `\n @if (!dynamicPrompt?.enabled) {\n
    \n } @else {\n \n }\n `\n})\nexport class PromptComponent {\n @Input() componentId: string;\n @Input() dynamicPrompt: DynamicPrompt;\n @Output() dynamicPromptChanged: EventEmitter = new EventEmitter();\n @Input() nodeId: string;\n @Input() prompt: string;\n\n protected onDynamicPromptChanged(feedbackRule: FeedbackRule): void {\n this.dynamicPromptChanged.emit(feedbackRule);\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": ".prompt { font-weight: 500; }\n", + "extends": [] + }, + { + "name": "PublicLibraryComponent", + "id": "component-PublicLibraryComponent-22b04d9ea3efe64f9caa78017516d36b67b38bdd77f735096c941e7d917d56cf3039f25a44b991b065fde2c6f14e3edbd652659dcdedd7c3f6b44fb6b6a7c606", + "file": "src/app/modules/library/public-library/public-library.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "public-library", + "styleUrls": [], + "styles": [ + "\n .content-block {\n padding: 16px;\n border-radius: 0;\n }\n\n .mat-mdc-paginator {\n background-color: transparent;\n }\n\n .mat-divider {\n margin: 0;\n }\n\n .library__list {\n padding: 8px 0;\n }\n " + ], + "templateUrl": [ + "./public-library.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "filteredProjects", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "LibraryProject[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "LibraryComponent" + } + }, + { + "name": "highIndex", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "LibraryComponent" + } + }, + { + "name": "lowIndex", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "LibraryComponent" + } + }, + { + "name": "pageIndex", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "LibraryComponent" + } + }, + { + "name": "pageSize", + "defaultValue": "12", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "LibraryComponent" + } + }, + { + "name": "pageSizeOptions", + "defaultValue": "[12, 24, 48, 96]", + "deprecated": false, + "deprecationMessage": "", + "type": "number[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "LibraryComponent" + } + }, + { + "name": "paginators", + "deprecated": false, + "deprecationMessage": "", + "type": "QueryList", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "decorators": [ + { + "name": "ViewChildren", + "stringifiedArguments": "MatPaginator" + } + ], + "modifierKind": [ + 171 + ], + "inheritance": { + "file": "LibraryComponent" + } + }, + { + "name": "projects", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "LibraryProject[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "LibraryComponent" + } + }, + { + "name": "showFilters", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "LibraryComponent" + } + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "LibraryComponent" + } + } + ], + "methodsClass": [ + { + "name": "getNumVisiblePersonalOrPublicProjects", + "args": [], + "optional": false, + "returnType": "BehaviorSubject", + "typeParameters": [], + "line": 70, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "LibraryComponent" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 41, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "LibraryComponent" + } + }, + { + "name": "removeDuplicates", + "args": [ + { + "name": "projects", + "type": "LibraryProject[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "LibraryProject[]", + "typeParameters": [], + "line": 61, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "projects", + "type": "LibraryProject[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "updateProjects", + "args": [ + { + "name": "projects", + "type": "LibraryProject[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 55, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "projects", + "type": "LibraryProject[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "countVisibleProjects", + "args": [ + { + "name": "projects", + "type": "LibraryProject[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "projects", + "type": "LibraryProject[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "LibraryComponent" + } + }, + { + "name": "emitNumberOfProjectsVisible", + "args": [ + { + "name": "numProjectsVisible", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 73, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "numProjectsVisible", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "LibraryComponent" + } + }, + { + "name": "filterUpdated", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 60, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "LibraryComponent" + } + }, + { + "name": "isOnPage", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 56, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "LibraryComponent" + } + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 30, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "LibraryComponent" + } + }, + { + "name": "pageChange", + "args": [ + { + "name": "event", + "type": "PageEvent", + "deprecated": false, + "deprecationMessage": "", + "optional": true + }, + { + "name": "scroll", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "optional": true + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 35, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "event", + "type": "PageEvent", + "deprecated": false, + "deprecationMessage": "", + "optional": true, + "tagName": { + "text": "param" + } + }, + { + "name": "scroll", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "optional": true, + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "LibraryComponent" + } + }, + { + "name": "setPageBounds", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 51, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "LibraryComponent" + } + }, + { + "name": "setPagination", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 44, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "LibraryComponent" + } + }, + { + "name": "sortUnits", + "args": [ + { + "name": "a", + "type": "LibraryProject", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "b", + "type": "LibraryProject", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 89, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "a", + "type": "LibraryProject", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "b", + "type": "LibraryProject", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "LibraryComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "LibraryProjectComponent", + "type": "component" + }, + { + "name": "MatDividerModule", + "type": "module" + }, + { + "name": "MatPaginatorModule", + "type": "module" + }, + { + "name": "PublicUnitTypeSelectorComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { BehaviorSubject } from 'rxjs';\nimport { Component } from '@angular/core';\nimport { LibraryComponent } from '../library/library.component';\nimport { LibraryProject } from '../libraryProject';\nimport { LibraryProjectComponent } from '../library-project/library-project.component';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatPaginatorModule } from '@angular/material/paginator';\nimport { PublicUnitTypeSelectorComponent } from '../public-unit-type-selector/public-unit-type-selector.component';\n\n@Component({\n imports: [\n LibraryProjectComponent,\n MatDividerModule,\n MatPaginatorModule,\n PublicUnitTypeSelectorComponent\n ],\n selector: 'public-library',\n styles: [\n `\n .content-block {\n padding: 16px;\n border-radius: 0;\n }\n\n .mat-mdc-paginator {\n background-color: transparent;\n }\n\n .mat-divider {\n margin: 0;\n }\n\n .library__list {\n padding: 8px 0;\n }\n `\n ],\n templateUrl: './public-library.component.html'\n})\nexport class PublicLibraryComponent extends LibraryComponent {\n ngOnInit(): void {\n super.ngOnInit();\n this.subscriptions.add(\n this.libraryService.officialLibraryProjectsSource$.subscribe((projects) =>\n this.updateProjects(projects)\n )\n );\n this.subscriptions.add(\n this.libraryService.communityLibraryProjectsSource$.subscribe((projects) =>\n this.updateProjects(projects)\n )\n );\n }\n\n private updateProjects(projects: LibraryProject[]): void {\n this.projects.push(...projects);\n this.projects = this.removeDuplicates(this.projects);\n this.filterUpdated();\n }\n\n private removeDuplicates(projects: LibraryProject[]): LibraryProject[] {\n return projects.reduce((acc, project) => {\n if (!acc.some((p) => p.id === project.id)) {\n acc.push(project);\n }\n return acc;\n }, []);\n }\n\n protected getNumVisiblePersonalOrPublicProjects(): BehaviorSubject {\n return this.libraryService.numberOfPublicProjectsVisible;\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "\n .content-block {\n padding: 16px;\n border-radius: 0;\n }\n\n .mat-mdc-paginator {\n background-color: transparent;\n }\n\n .mat-divider {\n margin: 0;\n }\n\n .library__list {\n padding: 8px 0;\n }\n \n", + "extends": [ + "LibraryComponent" + ], + "templateData": "
    \n
    \n \n \n
    \n
    \n @for (project of filteredProjects; track project.id; let i = $index) {\n @if (isOnPage(i)) {\n \n }\n }\n @if (filteredProjects.length === 0) {\n
    No units found.
    \n }\n
    \n \n
    \n" + }, + { + "name": "PublicUnitTypeSelectorComponent", + "id": "component-PublicUnitTypeSelectorComponent-4f02b886e7da7a1d0b61471f6da82fbec302838dbac5be1de35a73fcdac96ffaea03fbeb71abb15e41e40a6324e0ee04b84ff316e70a1539d26466df28c3357f", + "file": "src/app/modules/library/public-unit-type-selector/public-unit-type-selector.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "public-unit-type-selector", + "styleUrls": [], + "styles": [ + "\n a {\n cursor: pointer;\n }\n " + ], + "templateUrl": [ + "./public-unit-type-selector.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [ + { + "name": "publicUnitTypeUpdatedEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 30, + "type": "EventEmitter" + } + ], + "propertiesClass": [ + { + "name": "communityBuilt", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 29, + "modifierKind": [ + 124 + ] + }, + { + "name": "wiseTested", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 32, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "showInfo", + "args": [ + { + "name": "type", + "type": "\"community\" | \"official\"", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 50, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "type", + "type": "\"community\" | \"official\"", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "updatePublicUnitType", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 39, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatCheckboxModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Directive, EventEmitter, Output } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { ProjectFilterValues } from '../../../domain/projectFilterValues';\nimport { MatButtonModule } from '@angular/material/button';\nimport {\n MatDialogTitle,\n MatDialogContent,\n MatDialogActions,\n MatDialogRef,\n MatDialog\n} from '@angular/material/dialog';\nimport { RouterLink } from '@angular/router';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n imports: [FormsModule, MatCheckboxModule, MatIconModule],\n selector: 'public-unit-type-selector',\n styles: [\n `\n a {\n cursor: pointer;\n }\n `\n ],\n templateUrl: './public-unit-type-selector.component.html'\n})\nexport class PublicUnitTypeSelectorComponent {\n protected communityBuilt: boolean;\n @Output() publicUnitTypeUpdatedEvent: EventEmitter =\n new EventEmitter();\n protected wiseTested: boolean;\n\n constructor(\n private dialog: MatDialog,\n private filterValues: ProjectFilterValues\n ) {}\n\n protected updatePublicUnitType(): void {\n this.filterValues.publicUnitTypeValue = [];\n if (this.wiseTested) {\n this.filterValues.publicUnitTypeValue.push('wiseTested');\n }\n if (this.communityBuilt) {\n this.filterValues.publicUnitTypeValue.push('communityBuilt');\n }\n this.publicUnitTypeUpdatedEvent.emit();\n }\n\n protected showInfo(type: 'community' | 'official'): void {\n this.dialog.open(type === 'community' ? CommunityDetailsComponent : OfficialDetailsComponent, {\n panelClass: 'dialog-sm'\n });\n }\n}\n\n@Directive()\nabstract class DetailsComponent {\n constructor(public dialogRef: MatDialogRef) {}\n\n protected close(): void {\n this.dialogRef.close();\n }\n}\n\n@Component({\n imports: [MatButtonModule, MatDialogTitle, MatDialogContent, MatDialogActions, RouterLink],\n templateUrl: './official-library-details.html'\n})\nclass OfficialDetailsComponent extends DetailsComponent {}\n\n@Component({\n imports: [MatButtonModule, MatDialogTitle, MatDialogContent, MatDialogActions, RouterLink],\n templateUrl: './community-library-details.html'\n})\nclass CommunityDetailsComponent extends DetailsComponent {}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "\n a {\n cursor: pointer;\n }\n \n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "filterValues", + "type": "ProjectFilterValues", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 32, + "jsdoctags": [ + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "filterValues", + "type": "ProjectFilterValues", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "
    \n
    \n WISE Tested\n \n info\n \n
    \n
    \n Community Built\n \n info\n \n
    \n
    \n" + }, + { + "name": "RecoveryAuthoringComponent", + "id": "component-RecoveryAuthoringComponent-6dbdf3f5d90ee1f2abdf1e833a0e7d8f4fcee3049b0f27b5abcd2b450c63715ef6c7cc6a287cd421ef7d5ea1862f21b6cdf7213d2d6a0bf8dc175fe844d31d22", + "file": "src/assets/wise5/authoringTool/recovery-authoring/recovery-authoring.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./recovery-authoring.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "unitId", + "deprecated": false, + "deprecationMessage": "", + "line": 35, + "type": "string", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "badNodes", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "NodeRecoveryAnalysis[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 29 + }, + { + "name": "globalMessage", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 30, + "modifierKind": [ + 124 + ] + }, + { + "name": "jsonValid", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 31 + }, + { + "name": "projectJSONString", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 32 + }, + { + "name": "saveButtonEnabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 33 + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 34, + "modifierKind": [ + 123 + ] + } + ], + "methodsClass": [ + { + "name": "analyzeGroupChildIds", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeIdsFound", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeRecoveryAnalysis", + "type": "NodeRecoveryAnalysis", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 96, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeIdsFound", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeRecoveryAnalysis", + "type": "NodeRecoveryAnalysis", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "checkNodes", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 73, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "checkProjectJSONValidity", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 61, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "getNodeRecoveryAnalysis", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeIdsFound", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "NodeRecoveryAnalysis", + "typeParameters": [], + "line": 87, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeIdsFound", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "hasTransitionToNull", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 113, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 49, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 42, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectJSONChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 53, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "save", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 119, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "subscribeToGlobalMessage", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 65, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CdkTextareaAutosize" + }, + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatInputModule", + "type": "module" + }, + { + "name": "RouterModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input, OnInit } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { NotificationService } from '../../services/notificationService';\nimport { TeacherProjectService } from '../../services/teacherProjectService';\nimport { NodeRecoveryAnalysis } from '../../../../app/domain/nodeRecoveryAnalysis';\nimport { isValidJSONString } from '../../common/string/string';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { MatButtonModule } from '@angular/material/button';\nimport { FormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { CdkTextareaAutosize } from '@angular/cdk/text-field';\nimport { MatInputModule } from '@angular/material/input';\n\n@Component({\n imports: [\n CdkTextareaAutosize,\n CommonModule,\n FormsModule,\n MatButtonModule,\n MatFormFieldModule,\n MatInputModule,\n RouterModule\n ],\n styleUrl: './recovery-authoring.component.scss',\n templateUrl: './recovery-authoring.component.html'\n})\nexport class RecoveryAuthoringComponent implements OnInit {\n badNodes: NodeRecoveryAnalysis[] = [];\n protected globalMessage: any;\n jsonValid: boolean;\n projectJSONString: string;\n saveButtonEnabled: boolean = false;\n private subscriptions: Subscription = new Subscription();\n @Input() protected unitId?: string;\n\n constructor(\n private notificationService: NotificationService,\n private projectService: TeacherProjectService\n ) {}\n\n ngOnInit(): void {\n this.projectJSONString = JSON.stringify(this.projectService.project, null, 4);\n this.checkProjectJSONValidity();\n this.subscribeToGlobalMessage();\n this.checkNodes();\n }\n\n ngDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n projectJSONChanged(): void {\n this.checkProjectJSONValidity();\n this.saveButtonEnabled = this.jsonValid;\n if (this.jsonValid) {\n this.checkNodes();\n }\n }\n\n private checkProjectJSONValidity(): void {\n this.jsonValid = isValidJSONString(this.projectJSONString);\n }\n\n private subscribeToGlobalMessage(): void {\n this.subscriptions.add(\n this.notificationService.setGlobalMessage$.subscribe(({ globalMessage }) => {\n this.globalMessage = globalMessage;\n })\n );\n }\n\n private checkNodes(): void {\n const project = JSON.parse(this.projectJSONString);\n const nodeIdsFound = project.nodes.map((node: any) => {\n return node.id;\n });\n this.badNodes = [];\n for (const node of project.nodes) {\n const nodeRecoveryAnalysis = this.getNodeRecoveryAnalysis(node, nodeIdsFound);\n if (nodeRecoveryAnalysis.hasProblem()) {\n this.badNodes.push(nodeRecoveryAnalysis);\n }\n }\n }\n\n private getNodeRecoveryAnalysis(node: any, nodeIdsFound: string[]): NodeRecoveryAnalysis {\n const nodeRecoveryAnalysis = new NodeRecoveryAnalysis(node.id);\n if (node.ids != null) {\n this.analyzeGroupChildIds(node, nodeIdsFound, nodeRecoveryAnalysis);\n }\n nodeRecoveryAnalysis.setHasTransitionToNull(this.hasTransitionToNull(node));\n return nodeRecoveryAnalysis;\n }\n\n private analyzeGroupChildIds(\n node: any,\n nodeIdsFound: string[],\n nodeRecoveryAnalysis: NodeRecoveryAnalysis\n ): void {\n const nodesReferencesInGroup = new Map();\n for (const referencedId of node.ids) {\n if (!nodeIdsFound.includes(referencedId)) {\n nodeRecoveryAnalysis.addReferencedIdThatDoesNotExist(referencedId);\n }\n if (nodesReferencesInGroup.get(referencedId)) {\n nodeRecoveryAnalysis.addReferencedIdThatIsDuplicated(referencedId);\n }\n nodesReferencesInGroup.set(referencedId, true);\n }\n }\n\n private hasTransitionToNull(node: any): boolean {\n return node.transitionLogic?.transitions.some((transition: any) => {\n return transition.to == null;\n });\n }\n\n save(): void {\n this.projectService.project = JSON.parse(this.projectJSONString);\n this.projectService.saveProject();\n this.saveButtonEnabled = false;\n }\n}\n", + "styleUrl": "./recovery-authoring.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "notificationService", + "type": "NotificationService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 35, + "jsdoctags": [ + { + "name": "notificationService", + "type": "NotificationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "
    \n

    Recovery View

    \n
    \n
    \n \n Save\n \n \n
    \n
    \n @if (jsonValid) {\n
    JSON Valid
    \n }\n @if (!jsonValid) {\n
    JSON Invalid
    \n }\n @if (globalMessage != null) {\n
    \n
    \n {{ globalMessage.text }} {{ globalMessage.time | date: 'medium' }}\n
    \n
    \n }\n
    \n
    \n
    \n Warning: Modifying the JSON may break the project. Please make a backup copy of the JSON before\n you modify it.\n
    \n @if (badNodes.length > 0) {\n
    \n
    Potential Problems
    \n @for (badNode of badNodes; track badNode) {\n
    \n
    {{ badNode.nodeId }}
    \n @if (badNode.referencedIdsThatDoNotExist.length > 0) {\n
    \n This group references the node ID but the node does not exist:\n {{ badNode.referencedIdsThatDoNotExist }}\n
    \n }\n @if (badNode.referencedIdsThatAreDuplicated.length > 0) {\n
    \n This group references the same node ID multiple times:\n {{ badNode.referencedIdsThatAreDuplicated }}\n
    \n }\n @if (badNode.hasTransitionToNull) {\n
    This node has a transition to null
    \n }\n
    \n }\n
    \n }\n
    \n \n Edit Unit JSON\n \n \n \n
    \n
    \n" + }, + { + "name": "RegisterComponent", + "id": "component-RegisterComponent-d316100c1e544834b5adf2fae25e202bef3f8455b7e85cea01d4c315810f503e3dcba4b242c445454c639a41d623aa856bc885bc6ef306460b2e7db0a58948fd", + "file": "src/app/register/register.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "app-register", + "styleUrls": [ + "./register.component.scss" + ], + "styles": [], + "templateUrl": [ + "./register.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [], + "methodsClass": [ + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 12, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-register',\n templateUrl: './register.component.html',\n styleUrls: ['./register.component.scss'],\n standalone: false\n})\nexport class RegisterComponent implements OnInit {\n constructor() {}\n\n ngOnInit(): void {}\n}\n", + "assetsDirs": [], + "styleUrlsData": [ + { + "data": "", + "styleUrl": "./register.component.scss" + } + ], + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [], + "line": 9 + }, + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "
    \n \n \n
    \n" + }, + { + "name": "RegisterGoogleUserAlreadyExistsComponent", + "id": "component-RegisterGoogleUserAlreadyExistsComponent-3dd58ebfa8c03d790634db56a18f154d7fa7813fae2b94c682ab91c8394d74acd0d2e805fd3f75993d5fb8a28335cf6a9fdcbe1dd0076cce2e28c2642218ab60", + "file": "src/app/register/register-google-user-already-exists/register-google-user-already-exists.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "app-register-google-user-already-exists", + "styleUrls": [ + "./register-google-user-already-exists.component.scss" + ], + "styles": [], + "templateUrl": [ + "./register-google-user-already-exists.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [], + "methodsClass": [ + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 13, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "socialSignIn", + "args": [ + { + "name": "socialPlatform", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 15, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 125 + ], + "jsdoctags": [ + { + "name": "socialPlatform", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, OnInit } from '@angular/core';\nimport { ConfigService } from '../../services/config.service';\n\n@Component({\n selector: 'app-register-google-user-already-exists',\n templateUrl: './register-google-user-already-exists.component.html',\n styleUrls: ['./register-google-user-already-exists.component.scss'],\n standalone: false\n})\nexport class RegisterGoogleUserAlreadyExistsComponent implements OnInit {\n constructor(private configService: ConfigService) {}\n\n ngOnInit() {}\n\n public socialSignIn(socialPlatform: string) {\n window.location.href = `${this.configService.getContextPath()}/api/google-login`;\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": [ + { + "data": "", + "styleUrl": "./register-google-user-already-exists.component.scss" + } + ], + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 10, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "\n \n

    Create Account

    \n

    Hi! This Google user already has a WISE account.

    \n \n \n
    \n\n" + }, + { + "name": "RegisterHomeComponent", + "id": "component-RegisterHomeComponent-dd31359177988177021d312c962c28ce32b783e80bfec116f06ee5db68110ed88b021d6070f18b8d3125cc6b7fb0989d3c75eb0f6abf0b308126807fa1794020", + "file": "src/app/register/register-home/register-home.component.ts", + "encapsulation": [ + "ViewEncapsulation.None" + ], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "app-register-home", + "styleUrls": [ + "./register-home.component.scss" + ], + "styles": [], + "templateUrl": [ + "./register-home.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "googleUserNotFoundError", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 12 + }, + { + "name": "microsoftUserNotFoundError", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 17, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, OnInit, ViewEncapsulation } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\n@Component({\n selector: 'app-register-home',\n templateUrl: './register-home.component.html',\n styleUrls: ['./register-home.component.scss'],\n encapsulation: ViewEncapsulation.None,\n standalone: false\n})\nexport class RegisterHomeComponent implements OnInit {\n googleUserNotFoundError: boolean;\n protected microsoftUserNotFoundError: boolean;\n\n constructor(private activatedRoute: ActivatedRoute) {}\n\n ngOnInit() {\n this.activatedRoute.queryParams.subscribe((params) => {\n this.googleUserNotFoundError = params['googleUserNotFound'] === 'true';\n this.microsoftUserNotFoundError = params['microsoftUserNotFound'] === 'true';\n });\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": [ + { + "data": ".register-home {\n padding: 0 8px;\n \n h1 {\n margin-bottom: 0;\n }\n\n app-call-to-action {\n margin: 16px;\n }\n /* TODO(mdc-migration): The following rule targets internal classes of button that may no longer apply for the MDC version. */\n .cta, .cta__wrap, .mat-button-wrapper {\n height: 100%;\n }\n}\n", + "styleUrl": "./register-home.component.scss" + } + ], + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "activatedRoute", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 13, + "jsdoctags": [ + { + "name": "activatedRoute", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "
    \n @if (googleUserNotFoundError) {\n

    Sorry, your Google User ID was not found in WISE.

    \n }\n @if (microsoftUserNotFoundError) {\n

    \n Sorry, your Microsoft User ID was not found in WISE.\n

    \n }\n

    Create WISE Account

    \n
    \n \n \n
    \n
    \n" + }, + { + "name": "RegisterMicrosoftUserAlreadyExistsComponent", + "id": "component-RegisterMicrosoftUserAlreadyExistsComponent-7f490b9df9e00401c8ba69bc1f4859df7b65b03f617c7a3b35acd404f40ae04a26389073c00742a5c07ab01c93cd87ee1c29a009507e4db00b9e57221a9b0d65", + "file": "src/app/register/register-microsoft-user-already-exists/register-microsoft-user-already-exists.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./register-microsoft-user-already-exists.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [], + "methodsClass": [ + { + "name": "login", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 8, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\n\n@Component({\n templateUrl: './register-microsoft-user-already-exists.component.html',\n standalone: false\n})\nexport class RegisterMicrosoftUserAlreadyExistsComponent {\n protected login(): void {\n window.location.href = `/api/microsoft-login?redirectUrl=/`;\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [], + "templateData": "\n \n

    Create Account

    \n

    Hi! This Microsoft user already has a WISE account.

    \n \n \n
    \n\n" + }, + { + "name": "RegisterStudentCompleteComponent", + "id": "component-RegisterStudentCompleteComponent-95ca2210bc8782283062fa5f39e742296e2208796ff96f55d3ded1ebbbd2cb28e4379fc9b20ec15e1a9e345b6771c9967594e78a1de5b6201cdd8c729daa1fd7", + "file": "src/app/register/register-student-complete/register-student-complete.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "app-register-student-complete", + "styleUrls": [ + "./register-student-complete.component.scss" + ], + "styles": [], + "templateUrl": [ + "./register-student-complete.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "googleLogInURL", + "defaultValue": "`${this.configService.getContextPath()}/api/google-login`", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "RegisterUserCompleteComponent" + } + }, + { + "name": "isUsingGoogleId", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "RegisterUserCompleteComponent" + } + }, + { + "name": "isUsingMicrosoftId", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "RegisterUserCompleteComponent" + } + }, + { + "name": "microsoftLogInURL", + "defaultValue": "`${this.configService.getContextPath()}/api/microsoft-login?redirectUrl=/`", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "RegisterUserCompleteComponent" + } + }, + { + "name": "socialAccount", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "RegisterUserCompleteComponent" + } + }, + { + "name": "username", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "RegisterUserCompleteComponent" + } + } + ], + "methodsClass": [ + { + "name": "login", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 32, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "RegisterUserCompleteComponent" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 23, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "RegisterUserCompleteComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { RegisterUserCompleteComponent } from '../register-user-complete.component';\n\n@Component({\n selector: 'app-register-student-complete',\n templateUrl: './register-student-complete.component.html',\n styleUrls: ['./register-student-complete.component.scss'],\n standalone: false\n})\nexport class RegisterStudentCompleteComponent extends RegisterUserCompleteComponent {}\n", + "assetsDirs": [], + "styleUrlsData": [ + { + "data": "", + "styleUrl": "./register-student-complete.component.scss" + } + ], + "stylesData": "", + "extends": [ + "RegisterUserCompleteComponent" + ], + "templateData": "\n \n

    Your WISE account has been created!

    \n @if (!socialAccount) {\n

    \n Your username is: {{ username }}.\n

    \n }\n @if (!socialAccount) {\n

    Please write this down. You will need it when signing in to WISE in the future.

    \n }\n

    \n @if (!socialAccount) {\n Sign In to Get Started\n }\n @if (isUsingGoogleId) {\n

    \n
    \n
    \n" + }, + { + "name": "RegisterStudentComponent", + "id": "component-RegisterStudentComponent-4643c092502ab3a6e9c5e7b5642742a5214ccf36bcc085dbc18b3e4fdb8fec9a78cd253f458b256a9c81e16eee20fc0f6475359fdac2e1e349baf08106fb2134", + "file": "src/app/register/register-student/register-student.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "app-register-student", + "styleUrls": [ + "./register-student.component.scss" + ], + "styles": [], + "templateUrl": [ + "./register-student.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "firstName", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "modifierKind": [ + 124 + ] + }, + { + "name": "joinFormPath", + "defaultValue": "'/join/student/form'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractRegisterUserComponent" + } + }, + { + "name": "lastName", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "modifierKind": [ + 124 + ] + }, + { + "name": "googleAuthenticationEnabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 9, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractRegisterUserComponent" + } + }, + { + "name": "microsoftAuthenticationEnabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractRegisterUserComponent" + } + } + ], + "methodsClass": [ + { + "name": "getFormParams", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 16, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractRegisterUserComponent" + } + }, + { + "name": "getGoogleFormParams", + "args": [ + { + "name": "credential", + "type": "GoogleUser", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 20, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "credential", + "type": "GoogleUser", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractRegisterUserComponent" + } + }, + { + "name": "googleSignIn", + "args": [ + { + "name": "credential", + "type": "GoogleUser", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 32, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "credential", + "type": "GoogleUser", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractRegisterUserComponent" + } + }, + { + "name": "isSet", + "args": [ + { + "name": "value", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 28, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "value", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractRegisterUserComponent" + } + }, + { + "name": "microsoftSignIn", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 46, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractRegisterUserComponent" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 19, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractRegisterUserComponent" + } + }, + { + "name": "signUp", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 42, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractRegisterUserComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { GoogleUser } from '../../modules/google-sign-in/GoogleUser';\nimport { AbstractRegisterUserComponent } from '../abstract-register-user.component';\n\n@Component({\n selector: 'app-register-student',\n templateUrl: './register-student.component.html',\n styleUrls: ['./register-student.component.scss'],\n standalone: false\n})\nexport class RegisterStudentComponent extends AbstractRegisterUserComponent {\n protected firstName: string = '';\n protected joinFormPath: string = '/join/student/form';\n protected lastName: string = '';\n\n protected getFormParams(): any {\n return { firstName: this.firstName, lastName: this.lastName };\n }\n\n protected getGoogleFormParams(credential: GoogleUser): any {\n return { gID: credential.sub, name: credential.name };\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": [ + { + "data": "", + "styleUrl": "./register-student.component.scss" + } + ], + "stylesData": "", + "extends": [ + "AbstractRegisterUserComponent" + ], + "templateData": "\n \n

    Create Student Account

    \n

    \n \n First Name\n \n \n

    \n

    \n \n Last Name\n \n \n

    \n

    \n \n

    \n @if (googleAuthenticationEnabled || microsoftAuthenticationEnabled) {\n

    - or -

    \n

    \n @if (googleAuthenticationEnabled) {\n \n }\n

    \n

    \n @if (microsoftAuthenticationEnabled) {\n

    \n }\n
    \n
    \n" + }, + { + "name": "RegisterStudentFormComponent", + "id": "component-RegisterStudentFormComponent-7ddacdea252ccdf89014c65997a09d69b36856d2fea9e615d1606a2d3debee16aab16fd2b1bc37a80bd873c8efbe7f11f3c565594326170c58f63a16e2164943", + "file": "src/app/register/register-student-form/register-student-form.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "register-student-form", + "styleUrls": [ + "./register-student-form.component.scss" + ], + "styles": [], + "templateUrl": [ + "./register-student-form.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "createStudentAccountFormGroup", + "defaultValue": "this.fb.group({\n firstName: new FormControl('', [Validators.required, Validators.pattern(this.NAME_REGEX)]),\n lastName: new FormControl('', [Validators.required, Validators.pattern(this.NAME_REGEX)]),\n gender: new FormControl('', [Validators.required]),\n birthMonth: new FormControl('', [Validators.required]),\n birthDay: new FormControl({ value: '', disabled: true }, [Validators.required])\n })", + "deprecated": false, + "deprecationMessage": "", + "type": "FormGroup", + "indexKey": "", + "optional": false, + "description": "", + "line": 20 + }, + { + "name": "days", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 27 + }, + { + "name": "genders", + "defaultValue": "[\n { code: 'FEMALE', label: $localize`Female` },\n { code: 'MALE', label: $localize`Male` },\n { code: 'NO_ANSWER', label: $localize`No Answer/Other` }\n ]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 28 + }, + { + "name": "isRecaptchaEnabled", + "defaultValue": "this.configService.isRecaptchaEnabled()", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 33 + }, + { + "name": "months", + "defaultValue": "[\n { code: '1', label: $localize`01 (Jan)` },\n { code: '2', label: $localize`02 (Feb)` },\n { code: '3', label: $localize`03 (Mar)` },\n { code: '4', label: $localize`04 (Apr)` },\n { code: '5', label: $localize`05 (May)` },\n { code: '6', label: $localize`06 (Jun)` },\n { code: '7', label: $localize`07 (Jul)` },\n { code: '8', label: $localize`08 (Aug)` },\n { code: '9', label: $localize`09 (Sep)` },\n { code: '10', label: $localize`10 (Oct)` },\n { code: '11', label: $localize`11 (Nov)` },\n { code: '12', label: $localize`12 (Dec)` }\n ]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 34 + }, + { + "name": "securityQuestions", + "deprecated": false, + "deprecationMessage": "", + "type": "object", + "indexKey": "", + "optional": false, + "description": "", + "line": 48 + }, + { + "name": "user", + "defaultValue": "new Student()", + "deprecated": false, + "deprecationMessage": "", + "type": "Student", + "indexKey": "", + "optional": false, + "description": "", + "line": 49, + "inheritance": { + "file": "RegisterUserFormComponent" + } + }, + { + "name": "confirmPasswordLabel", + "defaultValue": "$localize`Confirm Password`", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 9, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "RegisterUserFormComponent" + } + }, + { + "name": "NAME_REGEX", + "defaultValue": "'^[a-zA-Z]+([ -]?[a-zA-Z]+)*$'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 7, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "RegisterUserFormComponent" + } + }, + { + "name": "passwordLabel", + "defaultValue": "$localize`Password`", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "RegisterUserFormComponent" + } + }, + { + "name": "passwordsFormGroup", + "defaultValue": "this.fb.group({})", + "deprecated": false, + "deprecationMessage": "", + "type": "FormGroup", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "RegisterUserFormComponent" + } + }, + { + "name": "processing", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "RegisterUserFormComponent" + } + } + ], + "methodsClass": [ + { + "name": "createAccount", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 116, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ] + }, + { + "name": "createAccountSuccess", + "args": [ + { + "name": "response", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 131, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "response", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getPassword", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 163, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isSocialAccount", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 104, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "isUsingGoogleId", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 108, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isUsingMicrosoftId", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 112, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "ngAfterViewChecked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 100, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 68, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "populateStudentUser", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 143, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ] + }, + { + "name": "setBirthDayOptions", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 173, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "setControlFieldValue", + "args": [ + { + "name": "name", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "value", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 169, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "name", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "value", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "handleCreateAccountError", + "args": [ + { + "name": "error", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "userObject", + "type": "User", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 17, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "error", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "userObject", + "type": "User", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "RegisterUserFormComponent" + } + }, + { + "name": "translateCreateAccountErrorMessageCode", + "args": [ + { + "name": "messageCode", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 31, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "messageCode", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "RegisterUserFormComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { ActivatedRoute, Router } from '@angular/router';\nimport { ChangeDetectorRef, Component, OnInit } from '@angular/core';\nimport { Student } from '../../domain/student';\nimport { StudentService } from '../../student/student.service';\nimport { FormControl, FormGroup, Validators, FormBuilder } from '@angular/forms';\nimport { UtilService } from '../../services/util.service';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { RegisterUserFormComponent } from '../register-user-form/register-user-form.component';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { ReCaptchaV3Service } from 'ng-recaptcha-2';\nimport { NewPasswordAndConfirmComponent } from '../../password/new-password-and-confirm/new-password-and-confirm.component';\nimport { ConfigService } from '../../services/config.service';\n@Component({\n selector: 'register-student-form',\n templateUrl: './register-student-form.component.html',\n styleUrls: ['./register-student-form.component.scss'],\n standalone: false\n})\nexport class RegisterStudentFormComponent extends RegisterUserFormComponent implements OnInit {\n createStudentAccountFormGroup: FormGroup = this.fb.group({\n firstName: new FormControl('', [Validators.required, Validators.pattern(this.NAME_REGEX)]),\n lastName: new FormControl('', [Validators.required, Validators.pattern(this.NAME_REGEX)]),\n gender: new FormControl('', [Validators.required]),\n birthMonth: new FormControl('', [Validators.required]),\n birthDay: new FormControl({ value: '', disabled: true }, [Validators.required])\n });\n days: string[] = [];\n genders: any[] = [\n { code: 'FEMALE', label: $localize`Female` },\n { code: 'MALE', label: $localize`Male` },\n { code: 'NO_ANSWER', label: $localize`No Answer/Other` }\n ];\n isRecaptchaEnabled: boolean = this.configService.isRecaptchaEnabled();\n months: any[] = [\n { code: '1', label: $localize`01 (Jan)` },\n { code: '2', label: $localize`02 (Feb)` },\n { code: '3', label: $localize`03 (Mar)` },\n { code: '4', label: $localize`04 (Apr)` },\n { code: '5', label: $localize`05 (May)` },\n { code: '6', label: $localize`06 (Jun)` },\n { code: '7', label: $localize`07 (Jul)` },\n { code: '8', label: $localize`08 (Aug)` },\n { code: '9', label: $localize`09 (Sep)` },\n { code: '10', label: $localize`10 (Oct)` },\n { code: '11', label: $localize`11 (Nov)` },\n { code: '12', label: $localize`12 (Dec)` }\n ];\n securityQuestions: object;\n user: Student = new Student();\n\n constructor(\n private changeDetectorRef: ChangeDetectorRef,\n private configService: ConfigService,\n protected fb: FormBuilder,\n private recaptchaV3Service: ReCaptchaV3Service,\n private router: Router,\n private route: ActivatedRoute,\n protected snackBar: MatSnackBar,\n private studentService: StudentService,\n private utilService: UtilService\n ) {\n super(fb, snackBar);\n this.studentService.retrieveSecurityQuestions().subscribe((response) => {\n this.securityQuestions = response;\n });\n }\n\n ngOnInit() {\n this.route.params.subscribe((params) => {\n this.user.googleUserId = params['gID'];\n this.user.microsoftUserId = params['mID'];\n if (!this.isSocialAccount()) {\n this.createStudentAccountFormGroup.addControl('passwords', this.passwordsFormGroup);\n this.createStudentAccountFormGroup.addControl(\n 'securityQuestion',\n new FormControl('', [Validators.required])\n );\n this.createStudentAccountFormGroup.addControl(\n 'securityQuestionAnswer',\n new FormControl('', [Validators.required])\n );\n }\n const name = params['name'];\n if (name != null) {\n this.setControlFieldValue('firstName', this.utilService.getFirstName(name));\n this.setControlFieldValue('lastName', this.utilService.getLastName(name));\n } else {\n this.setControlFieldValue('firstName', params['firstName']);\n this.setControlFieldValue('lastName', params['lastName']);\n }\n });\n\n this.createStudentAccountFormGroup.controls['birthMonth'].valueChanges.subscribe((value) => {\n this.setBirthDayOptions();\n });\n this.createStudentAccountFormGroup.controls['firstName'].markAsTouched();\n this.createStudentAccountFormGroup.controls['lastName'].markAsTouched();\n }\n\n ngAfterViewChecked(): void {\n this.changeDetectorRef.detectChanges();\n }\n\n private isSocialAccount(): boolean {\n return this.isUsingGoogleId() || this.isUsingMicrosoftId();\n }\n\n isUsingGoogleId() {\n return this.user.googleUserId != null;\n }\n\n private isUsingMicrosoftId(): boolean {\n return this.user.microsoftUserId != null;\n }\n\n async createAccount() {\n if (this.createStudentAccountFormGroup.valid) {\n this.processing = true;\n await this.populateStudentUser();\n this.studentService.registerStudentAccount(this.user).subscribe(\n (response: any) => {\n this.createAccountSuccess(response);\n },\n (response: HttpErrorResponse) => {\n this.handleCreateAccountError(response.error, this.user);\n }\n );\n }\n }\n\n createAccountSuccess(response: any): void {\n this.router.navigate([\n 'join/student/complete',\n {\n username: response.username,\n isUsingGoogleId: this.isUsingGoogleId(),\n isUsingMicrosoftId: this.isUsingMicrosoftId()\n }\n ]);\n this.processing = false;\n }\n\n async populateStudentUser() {\n for (let key of Object.keys(this.createStudentAccountFormGroup.controls)) {\n if (key == 'birthMonth' || key == 'birthDay') {\n this.user[key] = parseInt(this.createStudentAccountFormGroup.get(key).value);\n } else {\n this.user[key] = this.createStudentAccountFormGroup.get(key).value;\n }\n }\n if (this.isRecaptchaEnabled) {\n const token = await this.recaptchaV3Service.execute('importantAction').toPromise();\n this.user['token'] = token;\n }\n if (!this.isSocialAccount()) {\n this.user['password'] = this.getPassword();\n delete this.user['passwords'];\n delete this.user['googleUserId'];\n delete this.user['microsoftUserId'];\n }\n }\n\n getPassword() {\n return this.passwordsFormGroup.controls[\n NewPasswordAndConfirmComponent.NEW_PASSWORD_FORM_CONTROL_NAME\n ].value;\n }\n\n setControlFieldValue(name: string, value: string) {\n this.createStudentAccountFormGroup.controls[name].setValue(value);\n }\n\n setBirthDayOptions() {\n const month = this.createStudentAccountFormGroup.get('birthMonth').value;\n let days = 0;\n switch (month) {\n case '2':\n days = 29;\n break;\n case '4':\n case '6':\n case '9':\n case '11':\n days = 30;\n break;\n default:\n days = 31;\n }\n this.days = [];\n for (let i = 0; i < days; i++) {\n let day = (i + 1).toString();\n if (i < 9) {\n day = '0' + day;\n }\n this.days.push(day);\n }\n if (days < this.createStudentAccountFormGroup.get('birthDay').value) {\n this.createStudentAccountFormGroup.controls['birthDay'].reset();\n }\n this.createStudentAccountFormGroup.controls['birthDay'].enable();\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": [ + { + "data": ".wise-terms {\n margin-bottom: 0px;\n}", + "styleUrl": "./register-student-form.component.scss" + } + ], + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "changeDetectorRef", + "type": "ChangeDetectorRef", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "fb", + "type": "FormBuilder", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "recaptchaV3Service", + "type": "ReCaptchaV3Service", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "snackBar", + "type": "MatSnackBar", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentService", + "type": "StudentService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "utilService", + "type": "UtilService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 49, + "jsdoctags": [ + { + "name": "changeDetectorRef", + "type": "ChangeDetectorRef", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "fb", + "type": "FormBuilder", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "recaptchaV3Service", + "type": "ReCaptchaV3Service", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "snackBar", + "type": "MatSnackBar", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentService", + "type": "StudentService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "utilService", + "type": "UtilService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "RegisterUserFormComponent" + ], + "implements": [ + "OnInit" + ], + "templateData": "\n \n
    \n

    Create Student Account

    \n

    \n \n First Name\n \n @if (createStudentAccountFormGroup.controls['firstName'].hasError('required')) {\n First Name required\n }\n @if (createStudentAccountFormGroup.controls['firstName'].hasError('pattern')) {\n First Name must only contain characters A-Z, a-z, spaces, or dashes and can not start\n or end with a space or dash\n }\n \n

    \n

    \n \n Last Name\n \n @if (createStudentAccountFormGroup.controls['lastName'].hasError('required')) {\n Last Name required\n }\n @if (createStudentAccountFormGroup.controls['lastName'].hasError('pattern')) {\n Last Name must only contain characters A-Z, a-z, spaces, or dashes and can not start\n or end with a space or dash\n }\n \n

    \n

    \n \n Gender\n \n @for (gender of genders; track gender) {\n \n {{ gender.label }}\n \n }\n \n @if (createStudentAccountFormGroup.controls['gender'].hasError('required')) {\n Gender required\n }\n \n

    \n

    \n \n Birthday (Month)\n \n @for (month of months; track month) {\n \n {{ month.label }}\n \n }\n \n @if (createStudentAccountFormGroup.controls['birthMonth'].hasError('required')) {\n Month required\n }\n \n

    \n

    \n \n Birthday (Day)\n \n @for (day of days; track day) {\n \n {{ day }}\n \n }\n \n @if (createStudentAccountFormGroup.controls['birthDay'].hasError('required')) {\n Day required\n }\n \n

    \n @if (user.googleUserId == null && user.microsoftUserId == null) {\n
    \n

    \n \n Security Question\n \n @for (securityQuestion of securityQuestions; track securityQuestion) {\n \n {{ securityQuestion.value }}\n \n }\n \n @if (\n createStudentAccountFormGroup.controls['securityQuestion'].hasError('required')\n ) {\n Security Question required\n }\n \n

    \n

    \n \n Security Question Answer\n \n @if (\n createStudentAccountFormGroup.controls['securityQuestionAnswer'].hasError(\n 'required'\n )\n ) {\n Security Question Answer required\n }\n \n

    \n
    \n }\n @if (user.googleUserId == null && user.microsoftUserId == null) {\n
    \n \n \n
    \n }\n

    \n By clicking \"Create Account\", you agree to our\n Privacy Policy & Terms of Use.\n

    \n @if (isRecaptchaEnabled) {\n

    \n This site is protected by reCAPTCHA and the Google\n Privacy Policy and\n Terms of Service apply.\n

    \n }\n @if (isRecaptchaEnabled) {\n @switch (user.isRecaptchaInvalid) {\n @case (true) {\n Recaptcha failed. Please reload the page and try again!\n }\n @default {\n
     
    \n }\n }\n }\n \n @if (processing) {\n \n }\n Create Account\n \n \n
    \n
    \n" + }, + { + "name": "RegisterTeacherCompleteComponent", + "id": "component-RegisterTeacherCompleteComponent-2df47d311c639143272951712a3e49e2590d616108b5eab220420e6ba8de47754e053e0df21fe38606a0204f5010003c1a2082cbd471e3f7ed9cbb4fd47dfc7c", + "file": "src/app/register/register-teacher-complete/register-teacher-complete.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "app-register-teacher-complete", + "styleUrls": [ + "./register-teacher-complete.component.scss" + ], + "styles": [], + "templateUrl": [ + "./register-teacher-complete.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "googleLogInURL", + "defaultValue": "`${this.configService.getContextPath()}/api/google-login`", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "RegisterUserCompleteComponent" + } + }, + { + "name": "isUsingGoogleId", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "RegisterUserCompleteComponent" + } + }, + { + "name": "isUsingMicrosoftId", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "RegisterUserCompleteComponent" + } + }, + { + "name": "microsoftLogInURL", + "defaultValue": "`${this.configService.getContextPath()}/api/microsoft-login?redirectUrl=/`", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "RegisterUserCompleteComponent" + } + }, + { + "name": "socialAccount", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "RegisterUserCompleteComponent" + } + }, + { + "name": "username", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "RegisterUserCompleteComponent" + } + } + ], + "methodsClass": [ + { + "name": "login", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 32, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "RegisterUserCompleteComponent" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 23, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "RegisterUserCompleteComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { RegisterUserCompleteComponent } from '../register-user-complete.component';\n\n@Component({\n selector: 'app-register-teacher-complete',\n templateUrl: './register-teacher-complete.component.html',\n styleUrls: ['./register-teacher-complete.component.scss'],\n standalone: false\n})\nexport class RegisterTeacherCompleteComponent extends RegisterUserCompleteComponent {}\n", + "assetsDirs": [], + "styleUrlsData": [ + { + "data": "\n", + "styleUrl": "./register-teacher-complete.component.scss" + } + ], + "stylesData": "", + "extends": [ + "RegisterUserCompleteComponent" + ], + "templateData": "\n \n

    Your WISE account has been created!

    \n @if (!socialAccount) {\n

    \n Your username is: {{ username }}.\n

    \n }\n

    You should receive an email with your account details shortly.

    \n

    \n @if (!socialAccount) {\n Sign In to Get Started\n }\n @if (isUsingGoogleId) {\n

    \n
    \n
    \n" + }, + { + "name": "RegisterTeacherComponent", + "id": "component-RegisterTeacherComponent-6d8503ff3c25de8fbb4a7d43312c8363f2412dc3ecef903794c9c4733fe3895d71d27323ef61c988a8672a8271447fc88399b4153b6949774bd9de8edb61d2f4", + "file": "src/app/register/register-teacher/register-teacher.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "app-register-teacher", + "styleUrls": [ + "./register-teacher.component.scss" + ], + "styles": [], + "templateUrl": [ + "./register-teacher.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "email", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "modifierKind": [ + 124 + ] + }, + { + "name": "joinFormPath", + "defaultValue": "'/join/teacher/form'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractRegisterUserComponent" + } + }, + { + "name": "googleAuthenticationEnabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 9, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractRegisterUserComponent" + } + }, + { + "name": "microsoftAuthenticationEnabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractRegisterUserComponent" + } + } + ], + "methodsClass": [ + { + "name": "getFormParams", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 15, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractRegisterUserComponent" + } + }, + { + "name": "getGoogleFormParams", + "args": [ + { + "name": "credential", + "type": "GoogleUser", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 19, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "credential", + "type": "GoogleUser", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractRegisterUserComponent" + } + }, + { + "name": "googleSignIn", + "args": [ + { + "name": "credential", + "type": "GoogleUser", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 32, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "credential", + "type": "GoogleUser", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractRegisterUserComponent" + } + }, + { + "name": "isSet", + "args": [ + { + "name": "value", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 28, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "value", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractRegisterUserComponent" + } + }, + { + "name": "microsoftSignIn", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 46, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractRegisterUserComponent" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 19, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractRegisterUserComponent" + } + }, + { + "name": "signUp", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 42, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractRegisterUserComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { GoogleUser } from '../../modules/google-sign-in/GoogleUser';\nimport { AbstractRegisterUserComponent } from '../abstract-register-user.component';\n\n@Component({\n selector: 'app-register-teacher',\n templateUrl: './register-teacher.component.html',\n styleUrls: ['./register-teacher.component.scss'],\n standalone: false\n})\nexport class RegisterTeacherComponent extends AbstractRegisterUserComponent {\n protected email: string = '';\n protected joinFormPath: string = '/join/teacher/form';\n\n protected getFormParams(): any {\n return { email: this.email };\n }\n\n protected getGoogleFormParams(credential: GoogleUser): any {\n return { gID: credential.sub, name: credential.name, email: credential.email };\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": [ + { + "data": "", + "styleUrl": "./register-teacher.component.scss" + } + ], + "stylesData": "", + "extends": [ + "AbstractRegisterUserComponent" + ], + "templateData": "\n \n

    Create Teacher Account

    \n

    \n \n Email\n \n \n

    \n

    \n \n

    \n @if (googleAuthenticationEnabled || microsoftAuthenticationEnabled) {\n

    - or -

    \n

    \n @if (googleAuthenticationEnabled) {\n \n }\n

    \n

    \n @if (microsoftAuthenticationEnabled) {\n

    \n }\n
    \n
    \n" + }, + { + "name": "RegisterTeacherFormComponent", + "id": "component-RegisterTeacherFormComponent-f758768d07480e291226e09891202c72658d668fa167f47c569037156fd67b5e8bf868b3e6455bd6bc860c2f650557b36978938c8081cbab81ff2cfef7211659", + "file": "src/app/register/register-teacher-form/register-teacher-form.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "register-teacher-form", + "styleUrls": [ + "./register-teacher-form.component.scss" + ], + "styles": [], + "templateUrl": [ + "./register-teacher-form.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "createTeacherAccountFormGroup", + "defaultValue": "this.fb.group(\n {\n firstName: new FormControl('', [Validators.required, Validators.pattern(this.NAME_REGEX)]),\n lastName: new FormControl('', [Validators.required, Validators.pattern(this.NAME_REGEX)]),\n email: new FormControl('', [Validators.required, Validators.email]),\n city: new FormControl('', [Validators.required]),\n state: new FormControl('', [Validators.required]),\n country: new FormControl('', [Validators.required]),\n schoolName: new FormControl('', [Validators.required]),\n schoolLevel: new FormControl('', [Validators.required]),\n howDidYouHearAboutUs: new FormControl(''),\n agree: new FormControl('')\n },\n { validator: this.agreeCheckboxValidator }\n )", + "deprecated": false, + "deprecationMessage": "", + "type": "FormGroup", + "indexKey": "", + "optional": false, + "description": "", + "line": 22 + }, + { + "name": "isRecaptchaEnabled", + "defaultValue": "this.configService.isRecaptchaEnabled()", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 37 + }, + { + "name": "isSubmitted", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 38 + }, + { + "name": "passwordsFormGroup", + "defaultValue": "this.fb.group({})", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 39, + "inheritance": { + "file": "RegisterUserFormComponent" + } + }, + { + "name": "processing", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 40, + "inheritance": { + "file": "RegisterUserFormComponent" + } + }, + { + "name": "schoolLevels", + "defaultValue": "schoolLevels", + "deprecated": false, + "deprecationMessage": "", + "type": "SchoolLevel[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 41 + }, + { + "name": "user", + "defaultValue": "new Teacher()", + "deprecated": false, + "deprecationMessage": "", + "type": "Teacher", + "indexKey": "", + "optional": false, + "description": "", + "line": 42, + "inheritance": { + "file": "RegisterUserFormComponent" + } + }, + { + "name": "confirmPasswordLabel", + "defaultValue": "$localize`Confirm Password`", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 9, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "RegisterUserFormComponent" + } + }, + { + "name": "NAME_REGEX", + "defaultValue": "'^[a-zA-Z]+([ -]?[a-zA-Z]+)*$'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 7, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "RegisterUserFormComponent" + } + }, + { + "name": "passwordLabel", + "defaultValue": "$localize`Password`", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "RegisterUserFormComponent" + } + } + ], + "methodsClass": [ + { + "name": "agreeCheckboxValidator", + "args": [ + { + "name": "createTeacherAccountFormGroup", + "type": "FormGroup", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 144, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "createTeacherAccountFormGroup", + "type": "FormGroup", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createAccount", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 94, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 134 + ] + }, + { + "name": "createAccountSuccess", + "args": [ + { + "name": "response", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 110, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "response", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getPassword", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 138, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "isSocialAccount", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 78, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "isUsingGoogleId", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 82, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "isUsingMicrosoftId", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 86, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "ngAfterViewChecked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 74, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 58, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "populateTeacherUser", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 122, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123, + 134 + ] + }, + { + "name": "setControlFieldValue", + "args": [ + { + "name": "name", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "value", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 90, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "name", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "value", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "handleCreateAccountError", + "args": [ + { + "name": "error", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "userObject", + "type": "User", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 17, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "error", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "userObject", + "type": "User", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "RegisterUserFormComponent" + } + }, + { + "name": "translateCreateAccountErrorMessageCode", + "args": [ + { + "name": "messageCode", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 31, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "messageCode", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "RegisterUserFormComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { ChangeDetectorRef, Component, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Teacher } from '../../domain/teacher';\nimport { TeacherService } from '../../teacher/teacher.service';\nimport { FormControl, FormGroup, Validators, FormBuilder } from '@angular/forms';\nimport { UtilService } from '../../services/util.service';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { RegisterUserFormComponent } from '../register-user-form/register-user-form.component';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { ReCaptchaV3Service } from 'ng-recaptcha-2';\nimport { NewPasswordAndConfirmComponent } from '../../password/new-password-and-confirm/new-password-and-confirm.component';\nimport { ConfigService } from '../../services/config.service';\nimport { SchoolLevel, schoolLevels } from '../../domain/profile.constants';\n\n@Component({\n selector: 'register-teacher-form',\n templateUrl: './register-teacher-form.component.html',\n styleUrls: ['./register-teacher-form.component.scss'],\n standalone: false\n})\nexport class RegisterTeacherFormComponent extends RegisterUserFormComponent implements OnInit {\n createTeacherAccountFormGroup: FormGroup = this.fb.group(\n {\n firstName: new FormControl('', [Validators.required, Validators.pattern(this.NAME_REGEX)]),\n lastName: new FormControl('', [Validators.required, Validators.pattern(this.NAME_REGEX)]),\n email: new FormControl('', [Validators.required, Validators.email]),\n city: new FormControl('', [Validators.required]),\n state: new FormControl('', [Validators.required]),\n country: new FormControl('', [Validators.required]),\n schoolName: new FormControl('', [Validators.required]),\n schoolLevel: new FormControl('', [Validators.required]),\n howDidYouHearAboutUs: new FormControl(''),\n agree: new FormControl('')\n },\n { validator: this.agreeCheckboxValidator }\n );\n isRecaptchaEnabled: boolean = this.configService.isRecaptchaEnabled();\n isSubmitted = false;\n passwordsFormGroup = this.fb.group({});\n processing: boolean = false;\n schoolLevels: SchoolLevel[] = schoolLevels;\n user: Teacher = new Teacher();\n\n constructor(\n private changeDetectorRef: ChangeDetectorRef,\n private configService: ConfigService,\n protected fb: FormBuilder,\n private recaptchaV3Service: ReCaptchaV3Service,\n private router: Router,\n private route: ActivatedRoute,\n protected snackBar: MatSnackBar,\n private teacherService: TeacherService,\n private utilService: UtilService\n ) {\n super(fb, snackBar);\n }\n\n ngOnInit(): void {\n this.route.params.subscribe((params) => {\n this.user.googleUserId = params['gID'];\n this.user.microsoftUserId = params['mID'];\n if (!this.isSocialAccount()) {\n this.createTeacherAccountFormGroup.addControl('passwords', this.passwordsFormGroup);\n }\n const name = params['name'];\n if (name != null) {\n this.setControlFieldValue('firstName', this.utilService.getFirstName(name));\n this.setControlFieldValue('lastName', this.utilService.getLastName(name));\n }\n this.setControlFieldValue('email', params['email']);\n });\n }\n\n ngAfterViewChecked(): void {\n this.changeDetectorRef.detectChanges();\n }\n\n private isSocialAccount(): boolean {\n return this.isUsingGoogleId() || this.isUsingMicrosoftId();\n }\n\n private isUsingGoogleId(): boolean {\n return this.user.googleUserId != null;\n }\n\n private isUsingMicrosoftId(): boolean {\n return this.user.microsoftUserId != null;\n }\n\n private setControlFieldValue(name: string, value: string): void {\n this.createTeacherAccountFormGroup.controls[name].setValue(value);\n }\n\n async createAccount() {\n this.isSubmitted = true;\n if (this.createTeacherAccountFormGroup.valid) {\n this.processing = true;\n await this.populateTeacherUser();\n this.teacherService.registerTeacherAccount(this.user).subscribe(\n (response: any) => {\n this.createAccountSuccess(response);\n },\n (response: HttpErrorResponse) => {\n this.handleCreateAccountError(response.error, this.user);\n }\n );\n }\n }\n\n private createAccountSuccess(response: any): void {\n this.router.navigate([\n 'join/teacher/complete',\n {\n username: response.username,\n isUsingGoogleId: this.isUsingGoogleId(),\n isUsingMicrosoftId: this.isUsingMicrosoftId()\n }\n ]);\n this.processing = false;\n }\n\n private async populateTeacherUser() {\n for (let key of Object.keys(this.createTeacherAccountFormGroup.controls)) {\n this.user[key] = this.createTeacherAccountFormGroup.get(key).value;\n }\n if (this.isRecaptchaEnabled) {\n const token = await this.recaptchaV3Service.execute('importantAction').toPromise();\n this.user['token'] = token;\n }\n if (!this.isSocialAccount()) {\n this.user['password'] = this.getPassword();\n delete this.user['passwords'];\n delete this.user['googleUserId'];\n delete this.user['microsoftUserId'];\n }\n }\n\n private getPassword(): string {\n return this.passwordsFormGroup.controls[\n NewPasswordAndConfirmComponent.NEW_PASSWORD_FORM_CONTROL_NAME\n ].value;\n }\n\n private agreeCheckboxValidator(createTeacherAccountFormGroup: FormGroup): any {\n const agree = createTeacherAccountFormGroup.get('agree').value;\n if (!agree) {\n const error = { agreeNotChecked: true };\n createTeacherAccountFormGroup.setErrors(error);\n return error;\n }\n return null;\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": [ + { + "data": "", + "styleUrl": "./register-teacher-form.component.scss" + } + ], + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "changeDetectorRef", + "type": "ChangeDetectorRef", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "fb", + "type": "FormBuilder", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "recaptchaV3Service", + "type": "ReCaptchaV3Service", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "snackBar", + "type": "MatSnackBar", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "teacherService", + "type": "TeacherService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "utilService", + "type": "UtilService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 42, + "jsdoctags": [ + { + "name": "changeDetectorRef", + "type": "ChangeDetectorRef", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "fb", + "type": "FormBuilder", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "recaptchaV3Service", + "type": "ReCaptchaV3Service", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "snackBar", + "type": "MatSnackBar", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "teacherService", + "type": "TeacherService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "utilService", + "type": "UtilService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "RegisterUserFormComponent" + ], + "implements": [ + "OnInit" + ], + "templateData": "\n \n
    \n

    Create Teacher Account

    \n

    \n \n First Name\n \n @if (createTeacherAccountFormGroup.controls['firstName'].hasError('required')) {\n First Name required\n }\n @if (createTeacherAccountFormGroup.controls['firstName'].hasError('pattern')) {\n First Name must only contain characters A-Z, a-z, spaces, or dashes and can not start\n or end with a space or dash\n }\n \n

    \n

    \n \n Last Name\n \n @if (createTeacherAccountFormGroup.controls['lastName'].hasError('required')) {\n Last Name required\n }\n @if (createTeacherAccountFormGroup.controls['lastName'].hasError('pattern')) {\n Last Name must only contain characters A-Z, a-z, spaces, or dashes and can not start\n or end with a space or dash\n }\n \n

    \n

    \n \n Email\n \n We’ll never share your email address or personal information with anyone without your\n consent.\n @if (createTeacherAccountFormGroup.controls['email'].hasError('required')) {\n Email required\n }\n @if (createTeacherAccountFormGroup.controls['email'].hasError('email')) {\n Please enter a valid email address\n }\n \n

    \n

    \n \n City\n \n @if (createTeacherAccountFormGroup.controls['city'].hasError('required')) {\n City required\n }\n \n

    \n

    \n \n State\n \n @if (createTeacherAccountFormGroup.controls['state'].hasError('required')) {\n State required\n }\n \n

    \n

    \n \n Country\n \n @if (createTeacherAccountFormGroup.controls['country'].hasError('required')) {\n Country required\n }\n \n

    \n

    \n \n School Name\n \n @if (createTeacherAccountFormGroup.controls['schoolName'].hasError('required')) {\n School Name required\n }\n \n

    \n

    \n \n School Level\n \n @for (schoolLevel of schoolLevels; track schoolLevel) {\n \n {{ schoolLevel.label }}\n \n }\n \n @if (createTeacherAccountFormGroup.controls['schoolLevel'].hasError('required')) {\n School Level required\n }\n \n

    \n

    \n \n How did you hear about us?\n \n \n

    \n @if (user.googleUserId == null && user.microsoftUserId == null) {\n
    \n \n \n
    \n }\n
    \n

    \n I agree to the\n WISE Privacy Policy & Terms of Use\n *\n @if (isSubmitted && createTeacherAccountFormGroup.hasError('agreeNotChecked')) {\n You must agree to the Privacy Policy & Terms of Use\n }\n

    \n
    \n @if (isRecaptchaEnabled) {\n

    \n This site is protected by reCAPTCHA and the Google\n Privacy Policy and\n Terms of Service apply.\n

    \n }\n @if (isRecaptchaEnabled) {\n @switch (user.isRecaptchaInvalid) {\n @case (true) {\n Recaptcha failed. Please reload the page and try again!\n }\n @default {\n
     
    \n }\n }\n }\n \n @if (processing) {\n \n }\n Create Account\n \n \n
    \n
    \n" + }, + { + "name": "RegisterUserCompleteComponent", + "id": "component-RegisterUserCompleteComponent-1eceffd86bf7174beca5a779828f4c3a823424e82ed8abb32260c53d8d5ca1d50c41bd43a66579e294ae71c93a116219a85245635ecbdc77eedb8fc0c3ab1908", + "file": "src/app/register/register-user-complete.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "template": "", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "googleLogInURL", + "defaultValue": "`${this.configService.getContextPath()}/api/google-login`", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "modifierKind": [ + 124 + ] + }, + { + "name": "isUsingGoogleId", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "modifierKind": [ + 124 + ] + }, + { + "name": "isUsingMicrosoftId", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "modifierKind": [ + 124 + ] + }, + { + "name": "microsoftLogInURL", + "defaultValue": "`${this.configService.getContextPath()}/api/microsoft-login?redirectUrl=/`", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "modifierKind": [ + 124 + ] + }, + { + "name": "socialAccount", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "modifierKind": [ + 124 + ] + }, + { + "name": "username", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "login", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 32, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 23, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, OnInit } from '@angular/core';\nimport { Router, ActivatedRoute } from '@angular/router';\nimport { ConfigService } from '../services/config.service';\n\n@Component({\n template: '',\n standalone: false\n})\nexport abstract class RegisterUserCompleteComponent implements OnInit {\n protected googleLogInURL = `${this.configService.getContextPath()}/api/google-login`;\n protected microsoftLogInURL = `${this.configService.getContextPath()}/api/microsoft-login?redirectUrl=/`;\n protected socialAccount: boolean;\n protected isUsingGoogleId: boolean;\n protected isUsingMicrosoftId: boolean;\n protected username: string;\n\n constructor(\n protected configService: ConfigService,\n protected route: ActivatedRoute,\n protected router: Router\n ) {}\n\n ngOnInit(): void {\n this.route.params.subscribe(({ username, isUsingGoogleId, isUsingMicrosoftId }) => {\n this.username = username;\n this.isUsingGoogleId = isUsingGoogleId === 'true';\n this.isUsingMicrosoftId = isUsingMicrosoftId === 'true';\n this.socialAccount = this.isUsingGoogleId || this.isUsingMicrosoftId;\n });\n }\n\n protected login(): void {\n this.router.navigate(['/login', { username: this.username }]);\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 15, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ] + }, + { + "name": "RemoveUserConfirmDialogComponent", + "id": "component-RemoveUserConfirmDialogComponent-c4eefdfa69407538dfdf62ea546b1a86a49d5ca111a375f57549c8f7ee56598008186059036ffbdd58c55b36217295afc8f8154d642a1ccd0f64cf983b7a6331", + "file": "src/assets/wise5/classroomMonitor/classroomMonitorComponents/manageStudents/remove-user-confirm-dialog/remove-user-confirm-dialog.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./remove-user-confirm-dialog.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "studentDisplayName", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 30, + "modifierKind": [ + 124 + ] + }, + { + "name": "user", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 27, + "decorators": [ + { + "name": "Inject", + "stringifiedArguments": "MAT_DIALOG_DATA" + } + ], + "modifierKind": [ + 171, + 125 + ] + } + ], + "methodsClass": [ + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 32, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatDialogTitle" + }, + { + "name": "CdkScrollable" + }, + { + "name": "MatDialogContent" + }, + { + "name": "MatDialogActions" + }, + { + "name": "MatButton" + }, + { + "name": "MatDialogClose" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Inject, OnInit } from '@angular/core';\nimport {\n MAT_DIALOG_DATA,\n MatDialogTitle,\n MatDialogContent,\n MatDialogActions,\n MatDialogClose\n} from '@angular/material/dialog';\nimport { ConfigService } from '../../../../services/configService';\nimport { CdkScrollable } from '@angular/cdk/scrolling';\nimport { MatButton } from '@angular/material/button';\n\n@Component({\n imports: [\n MatDialogTitle,\n CdkScrollable,\n MatDialogContent,\n MatDialogActions,\n MatButton,\n MatDialogClose\n ],\n templateUrl: './remove-user-confirm-dialog.component.html'\n})\nexport class RemoveUserConfirmDialogComponent implements OnInit {\n constructor(\n private configService: ConfigService,\n @Inject(MAT_DIALOG_DATA) public user: any\n ) {}\n\n protected studentDisplayName: string;\n\n ngOnInit(): void {\n this.studentDisplayName = this.configService.getPermissions().canViewStudentNames\n ? `${this.user.name} (${this.user.username})`\n : $localize`Student ${this.user.id}`;\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "user", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 24, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "user", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "

    Remove Student

    \n
    \n
    \n

    \n Are you sure you want to remove\n {{ studentDisplayName }} from the unit?\n

    \n

    \n Warning: All of the students' work in the unit will be deleted and they will be removed from\n the class.\n

    \n

    \n If you would like to move a student to a different team, drag them to that team. You can also\n create a new team and add the student there.\n

    \n

    \n *Note that removing a student does not delete their WISE account, only their association with\n this unit.\n

    \n

    Are you sure you wish to proceed?

    \n
    \n
    \n\n \n \n\n" + }, + { + "name": "RequiredErrorLabelComponent", + "id": "component-RequiredErrorLabelComponent-2938f704a2e3c9dd712959077202693f3eba0fa24eff180fb5ac9cad8dd7762919c459617a9162d01d3539d7bc1ef093279cc7391cb01766091a7e96ef62362d", + "file": "src/assets/wise5/authoringTool/node/advanced/required-error-label/required-error-label.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "required-error-label", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./required-error-label.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [], + "methodsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatIconModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n imports: [MatIconModule],\n selector: 'required-error-label',\n styleUrl: './required-error-label.component.scss',\n templateUrl: './required-error-label.component.html'\n})\nexport class RequiredErrorLabelComponent {}\n", + "styleUrl": "./required-error-label.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [], + "templateData": "
    \n cancel\n Required\n
    \n" + }, + { + "name": "RubricAuthoringComponent", + "id": "component-RubricAuthoringComponent-c2eaa7b5506c3647ccc1307f5b6e4f61a5db9dad44c94bb5d47407d673dd46375992d5e037bed099cc75c2a19ab5235636acf523451c737f30189d6590101b81", + "file": "src/assets/wise5/authoringTool/rubric/rubric-authoring.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "rubric-authoring", + "styleUrls": [], + "styles": [ + ".mat-icon { margin: 0px; }" + ], + "template": "
    Edit Unit Rubric
    ", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "project", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 21, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "rubricChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 25, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "TranslatableRichTextEditorComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { TeacherProjectService } from '../../services/teacherProjectService';\nimport { Component } from '@angular/core';\nimport { TranslatableRichTextEditorComponent } from '../components/translatable-rich-text-editor/translatable-rich-text-editor.component';\n\n@Component({\n imports: [TranslatableRichTextEditorComponent],\n selector: 'rubric-authoring',\n styles: ['.mat-icon { margin: 0px; }'],\n template: `
    Edit Unit Rubric
    \n `\n})\nexport class RubricAuthoringComponent {\n protected project: any;\n\n constructor(private projectService: TeacherProjectService) {}\n\n ngOnInit(): void {\n this.project = this.projectService.getProject();\n }\n\n protected rubricChanged(): void {\n this.projectService.saveProject();\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": ".mat-icon { margin: 0px; }\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 17, + "jsdoctags": [ + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [] + }, + { + "name": "RunEndedAndLockedMessageComponent", + "id": "component-RunEndedAndLockedMessageComponent-dcb2090107b03837b8c30708fc5c525ee4af2c24833344a28518acc2549d42454e01a3764447478a5f411b657beb68d71f7dd47a2a31695e95fb49393d6ab872", + "file": "src/assets/wise5/vle/run-ended-and-locked-message/run-ended-and-locked-message.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "run-ended-and-locked-message", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./run-ended-and-locked-message.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "message", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 15, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatIconModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, OnInit } from '@angular/core';\nimport { ConfigService } from '../../services/configService';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n imports: [MatIconModule],\n selector: 'run-ended-and-locked-message',\n templateUrl: './run-ended-and-locked-message.component.html'\n})\nexport class RunEndedAndLockedMessageComponent implements OnInit {\n protected message: string;\n\n constructor(private configService: ConfigService) {}\n\n ngOnInit(): void {\n const endDate = this.configService.getPrettyEndDate();\n this.message = $localize`This unit ended on ${endDate}. You can no longer save new work.`;\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 11, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "
    \n lock \n {{ message }}\n
    \n" + }, + { + "name": "RunMenuComponent", + "id": "component-RunMenuComponent-ec43712de58707bd7f8fe1f8ff2ea89562696147e6520b8822c00e45a9ff25252fb7a72652675ac1b616a8d1c63fe2a3a8686673f66f3319c03dc8e7bd2dc406", + "file": "src/app/teacher/run-menu/run-menu.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "app-run-menu", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./run-menu.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "run", + "deprecated": false, + "deprecationMessage": "", + "line": 24, + "type": "TeacherRun", + "decorators": [] + } + ], + "outputsClass": [ + { + "name": "runArchiveStatusChangedEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 25, + "type": "EventEmitter" + } + ], + "propertiesClass": [ + { + "name": "reportProblemLink", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 23, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "archive", + "args": [ + { + "name": "archive", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 81, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "archive", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "canEdit", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 52, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "canShare", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 56, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "editContent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 69, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 34, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "shareRun", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 38, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "showEditRunDetails", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 60, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "showUnitDetails", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 45, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatMenuModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatDividerModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatDialog } from '@angular/material/dialog';\nimport { ShareRunDialogComponent } from '../share-run-dialog/share-run-dialog.component';\nimport { LibraryProjectDetailsComponent } from '../../modules/library/library-project-details/library-project-details.component';\nimport { UserService } from '../../services/user.service';\nimport { TeacherRun } from '../teacher-run';\nimport { RunSettingsDialogComponent } from '../run-settings-dialog/run-settings-dialog.component';\nimport { EditRunWarningDialogComponent } from '../edit-run-warning-dialog/edit-run-warning-dialog.component';\nimport { Router } from '@angular/router';\nimport { ArchiveProjectService } from '../../services/archive-project.service';\n\n@Component({\n imports: [MatMenuModule, MatIconModule, MatButtonModule, MatDividerModule],\n selector: 'app-run-menu',\n styleUrl: './run-menu.component.scss',\n templateUrl: './run-menu.component.html'\n})\nexport class RunMenuComponent implements OnInit {\n protected reportProblemLink: string = '';\n @Input() run: TeacherRun;\n @Output() runArchiveStatusChangedEvent: EventEmitter = new EventEmitter();\n\n constructor(\n private archiveProjectService: ArchiveProjectService,\n private dialog: MatDialog,\n private userService: UserService,\n private router: Router\n ) {}\n\n ngOnInit(): void {\n this.reportProblemLink = `/contact?runId=${this.run.id}`;\n }\n\n protected shareRun(): void {\n this.dialog.open(ShareRunDialogComponent, {\n data: { run: this.run },\n panelClass: 'dialog-md'\n });\n }\n\n protected showUnitDetails(): void {\n this.dialog.open(LibraryProjectDetailsComponent, {\n data: { project: this.run.project, isRunProject: true },\n panelClass: 'dialog-md'\n });\n }\n\n protected canEdit(): boolean {\n return this.run.project.canEdit(this.userService.getUserId());\n }\n\n protected canShare(): boolean {\n return this.run.canGradeAndManage(this.userService.getUserId());\n }\n\n protected showEditRunDetails(): void {\n this.dialog.open(RunSettingsDialogComponent, {\n ariaLabel: $localize`Run Settings`,\n data: this.run,\n panelClass: 'dialog-md',\n autoFocus: true\n });\n }\n\n protected editContent(): void {\n if (this.run.lastRun) {\n this.dialog.open(EditRunWarningDialogComponent, {\n ariaLabel: $localize`Edit Classroom Unit Warning`,\n data: this.run,\n panelClass: 'dialog-sm'\n });\n } else {\n this.router.navigateByUrl(`/teacher/edit/unit/${this.run.project.id}`);\n }\n }\n\n protected archive(archive: boolean): void {\n this.archiveProjectService.archiveProject(this.run.project, archive);\n }\n}\n", + "styleUrl": "./run-menu.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "archiveProjectService", + "type": "ArchiveProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "userService", + "type": "UserService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 25, + "jsdoctags": [ + { + "name": "archiveProjectService", + "type": "ArchiveProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "userService", + "type": "UserService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "\n\n
    \n
    Run ID: {{ run.id }}
    \n \n @if (run.project.wiseVersion !== 4) {\n \n settings\n Edit Settings\n \n }\n \n preview\n Preview\n \n \n info\n Unit Info\n \n @if (canShare() && run.project.wiseVersion !== 4) {\n \n supervised_user_circle\n Share Access\n \n }\n @if (canEdit() && run.project.wiseVersion !== 4) {\n \n edit\n Edit Content\n \n }\n \n report_problem\n Report Problem\n \n @if (!run.project.archived) {\n \n archive\n Archive\n \n }\n @if (run.project.archived) {\n \n unarchive\n Restore\n \n }\n
    \n
    \n" + }, + { + "name": "RunSettingsDialogComponent", + "id": "component-RunSettingsDialogComponent-ba5dc7c8f04b5fb37918a53886356097a10243f0ff049c21e36abae2cbf947bad63c927dcb5518fc0104308098e7dc8287c8f560b75b3f0bae2e4c881e3991c1", + "file": "src/app/teacher/run-settings-dialog/run-settings-dialog.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./run-settings-dialog.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "addPeriodMessage", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 57 + }, + { + "name": "deletePeriodMessage", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 56 + }, + { + "name": "dialog", + "deprecated": false, + "deprecationMessage": "", + "type": "MatDialog", + "indexKey": "", + "optional": false, + "description": "", + "line": 69, + "modifierKind": [ + 125 + ] + }, + { + "name": "dialogRef", + "deprecated": false, + "deprecationMessage": "", + "type": "MatDialogRef", + "indexKey": "", + "optional": false, + "description": "", + "line": 70, + "modifierKind": [ + 125 + ] + }, + { + "name": "endDate", + "deprecated": false, + "deprecationMessage": "", + "type": "Date", + "indexKey": "", + "optional": false, + "description": "", + "line": 52 + }, + { + "name": "endDateMessage", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 60 + }, + { + "name": "isDefaultRun", + "defaultValue": "true", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 62, + "modifierKind": [ + 124 + ] + }, + { + "name": "isLockedAfterEndDate", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 54 + }, + { + "name": "isLockedAfterEndDateCheckboxEnabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 53 + }, + { + "name": "isLockedAfterEndDateMessage", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 61 + }, + { + "name": "maxStartDate", + "deprecated": false, + "deprecationMessage": "", + "type": "Date", + "indexKey": "", + "optional": false, + "description": "", + "line": 63 + }, + { + "name": "maxStudentsPerTeam", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 49 + }, + { + "name": "maxStudentsPerTeamMessage", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 58 + }, + { + "name": "messageCodeToMessage", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 66 + }, + { + "name": "minEndDate", + "deprecated": false, + "deprecationMessage": "", + "type": "Date", + "indexKey": "", + "optional": false, + "description": "", + "line": 64 + }, + { + "name": "newPeriodName", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 48 + }, + { + "name": "previousEndDate", + "deprecated": false, + "deprecationMessage": "", + "type": "Date", + "indexKey": "", + "optional": false, + "description": "", + "line": 55 + }, + { + "name": "previousStartDate", + "deprecated": false, + "deprecationMessage": "", + "type": "Date", + "indexKey": "", + "optional": false, + "description": "", + "line": 51 + }, + { + "name": "run", + "deprecated": false, + "deprecationMessage": "", + "type": "TeacherRun", + "indexKey": "", + "optional": false, + "description": "", + "line": 71, + "decorators": [ + { + "name": "Inject", + "stringifiedArguments": "MAT_DIALOG_DATA" + } + ], + "modifierKind": [ + 171, + 125 + ] + }, + { + "name": "snackBar", + "deprecated": false, + "deprecationMessage": "", + "type": "MatSnackBar", + "indexKey": "", + "optional": false, + "description": "", + "line": 73, + "modifierKind": [ + 125 + ] + }, + { + "name": "startDate", + "deprecated": false, + "deprecationMessage": "", + "type": "Date", + "indexKey": "", + "optional": false, + "description": "", + "line": 50 + }, + { + "name": "startDateMessage", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 59 + }, + { + "name": "targetEndDate", + "deprecated": false, + "deprecationMessage": "", + "type": "Date", + "indexKey": "", + "optional": false, + "description": "", + "line": 65 + } + ], + "methodsClass": [ + { + "name": "addPeriod", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 115, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "changeMaxStudentsPerTeam", + "args": [ + { + "name": "maxStudentsPerTeam", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 156, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "maxStudentsPerTeam", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "clearErrorMessages", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 326, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "clearNewPeriodInput", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 322, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "deletePeriod", + "args": [ + { + "name": "periodName", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 136, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "periodName", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getEndDateChangeConfirmationMessage", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 245, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getEndTime", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 258, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "initializeMessageCodeToMessage", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 90, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isEnterKeyWithNewPeriodName", + "args": [ + { + "name": "event", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 111, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "event", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "newPeriodNameKeyUp", + "args": [ + { + "name": "event", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 105, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "event", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "rememberPreviousEndDate", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 318, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "rememberPreviousStartDate", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 314, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "rollbackEndDate", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 310, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "rollbackMaxStudentsPerTeam", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 302, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "rollbackStartDate", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 306, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "setDateRange", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 266, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "showConfirmMessage", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 335, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "translateMessageCode", + "args": [ + { + "name": "messageCode", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 339, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "messageCode", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "updateDataRun", + "args": [ + { + "name": "run", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 343, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "run", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "updateEndTime", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 220, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "updateIsLockedAfterEndDate", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 288, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "updateLockedAfterEndDateCheckbox", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 275, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "updateRunEndTime", + "args": [ + { + "name": "runId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "endTime", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 229, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "runId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "endTime", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "updateStartTime", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 188, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatDialogModule", + "type": "module" + }, + { + "name": "MatSnackBarModule", + "type": "module" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatInputModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatCheckboxModule", + "type": "module" + }, + { + "name": "MatRadioModule", + "type": "module" + }, + { + "name": "MatDatepickerModule", + "type": "module" + }, + { + "name": "MatNativeDateModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + }, + { + "name": "MatDividerModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Inject, LOCALE_ID } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport {\n MatDialogModule,\n MatDialog,\n MatDialogRef,\n MAT_DIALOG_DATA\n} from '@angular/material/dialog';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatNativeDateModule } from '@angular/material/core';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { LibraryProjectDetailsComponent } from '../../modules/library/library-project-details/library-project-details.component';\nimport { TeacherService } from '../teacher.service';\nimport { formatDate } from '@angular/common';\nimport { TeacherRun } from '../teacher-run';\nimport { MatSnackBar } from '@angular/material/snack-bar';\n\n@Component({\n imports: [\n CommonModule,\n FormsModule,\n MatDialogModule,\n MatSnackBarModule,\n MatFormFieldModule,\n MatInputModule,\n MatButtonModule,\n MatIconModule,\n MatCheckboxModule,\n MatRadioModule,\n MatDatepickerModule,\n MatNativeDateModule,\n MatTooltipModule,\n MatDividerModule\n ],\n styleUrl: './run-settings-dialog.component.scss',\n templateUrl: './run-settings-dialog.component.html'\n})\nexport class RunSettingsDialogComponent {\n newPeriodName: string;\n maxStudentsPerTeam: string;\n startDate: Date;\n previousStartDate: Date;\n endDate: Date;\n isLockedAfterEndDateCheckboxEnabled: boolean = false;\n isLockedAfterEndDate: boolean;\n previousEndDate: Date;\n deletePeriodMessage: string = '';\n addPeriodMessage: string = '';\n maxStudentsPerTeamMessage: string = '';\n startDateMessage: string = '';\n endDateMessage: string = '';\n isLockedAfterEndDateMessage: string = '';\n protected isDefaultRun: boolean = true;\n maxStartDate: Date;\n minEndDate: Date;\n targetEndDate: Date;\n messageCodeToMessage: any;\n\n constructor(\n public dialog: MatDialog,\n public dialogRef: MatDialogRef,\n @Inject(MAT_DIALOG_DATA) public run: TeacherRun,\n private teacherService: TeacherService,\n public snackBar: MatSnackBar,\n @Inject(LOCALE_ID) private localeID: string\n ) {\n this.maxStudentsPerTeam = this.run.maxStudentsPerTeam + '';\n this.startDate = new Date(this.run.startTime);\n this.endDate = this.run.endTime ? new Date(this.run.endTime) : null;\n this.isLockedAfterEndDate = this.run.isLockedAfterEndDate;\n this.rememberPreviousStartDate();\n this.rememberPreviousEndDate();\n this.setDateRange();\n if (this.endDate != null) {\n this.isLockedAfterEndDateCheckboxEnabled = true;\n }\n this.initializeMessageCodeToMessage();\n this.isDefaultRun = !this.run.isSurveyRun();\n }\n\n initializeMessageCodeToMessage() {\n this.messageCodeToMessage = {\n periodNameAlreadyExists: $localize`There is already a period with that name.`,\n noPermissionToAddPeriod: $localize`You do not have permission to add periods to this unit.`,\n notAllowedToDeletePeriodWithStudents: $localize`You are not allowed to delete a period that contains students.`,\n noPermissionToDeletePeriod: $localize`You do not have permission to delete periods from this unit.`,\n noPermissionToChangeMaxStudentsPerTeam: $localize`You do not have permission to change the number of students per team for this unit.`,\n notAllowedToDecreaseMaxStudentsPerTeam: $localize`You are not allowed to decrease the number of students per team because this unit already has teams with more than 1 student.`,\n noPermissionToChangeDate: $localize`You do not have permission to change the dates for this unit.`,\n endDateBeforeStartDate: $localize`End date can't be before start date.`,\n startDateAfterEndDate: $localize`Start date can't be after end date.`,\n noPermissionToChangeIsLockedAfterEndDate: $localize`You do not have permission to change whether unit is locked after end date.`\n };\n }\n\n newPeriodNameKeyUp(event) {\n if (this.isEnterKeyWithNewPeriodName(event)) {\n this.addPeriod();\n }\n }\n\n isEnterKeyWithNewPeriodName(event) {\n return event.keyCode === 13 && this.newPeriodName != '';\n }\n\n addPeriod() {\n this.clearErrorMessages();\n const periodName = this.newPeriodName;\n if (periodName == null || periodName === '') {\n this.addPeriodMessage = $localize`Please enter a new period name.`;\n } else {\n this.teacherService.addPeriodToRun(this.run.id, periodName).subscribe((response: any) => {\n if (response.status === 'success') {\n this.run = response.run;\n this.updateDataRun(this.run);\n this.clearNewPeriodInput();\n this.clearErrorMessages();\n this.showConfirmMessage();\n this.teacherService.broadcastRunChanges(new TeacherRun(this.run));\n } else {\n this.addPeriodMessage = this.translateMessageCode(response.messageCode);\n }\n });\n }\n }\n\n deletePeriod(periodName) {\n this.clearErrorMessages();\n if (confirm(`Are you sure you want to delete this period: ${periodName}?`)) {\n this.teacherService\n .deletePeriodFromRun(this.run.id, periodName)\n .subscribe((response: any) => {\n if (response.status === 'success') {\n this.run = response.run;\n this.updateDataRun(this.run);\n this.clearErrorMessages();\n this.showConfirmMessage();\n this.teacherService.broadcastRunChanges(new TeacherRun(this.run));\n } else {\n this.deletePeriodMessage = this.translateMessageCode(response.messageCode);\n alert(this.deletePeriodMessage);\n }\n });\n }\n }\n\n changeMaxStudentsPerTeam(maxStudentsPerTeam) {\n this.clearErrorMessages();\n let maxStudentsPerTeamText = maxStudentsPerTeam;\n if (maxStudentsPerTeam === 3) {\n maxStudentsPerTeamText = $localize`1-3`;\n }\n if (\n confirm(\n $localize`Are you sure you want to change the students per team to ${maxStudentsPerTeamText}:maxStudentsPerTeam:?`\n )\n ) {\n this.teacherService\n .updateRunStudentsPerTeam(this.run.id, maxStudentsPerTeam)\n .subscribe((response: any) => {\n if (response.status === 'success') {\n this.run = response.run;\n this.updateDataRun(this.run);\n this.clearErrorMessages();\n this.showConfirmMessage();\n } else {\n this.rollbackMaxStudentsPerTeam();\n this.maxStudentsPerTeamMessage = this.translateMessageCode(response.messageCode);\n alert(this.maxStudentsPerTeamMessage);\n }\n });\n return true;\n } else {\n this.rollbackMaxStudentsPerTeam();\n return false;\n }\n }\n\n updateStartTime() {\n this.clearErrorMessages();\n if (this.startDate) {\n const startDate = this.startDate;\n const formattedStartDate = formatDate(startDate, 'fullDate', this.localeID);\n if (\n confirm(\n $localize`Are you sure you want to change the start date to ${formattedStartDate}:startDate:?`\n )\n ) {\n this.teacherService\n .updateRunStartTime(this.run.id, startDate.getTime())\n .subscribe((response: any) => {\n if (response.status === 'success') {\n this.run = response.run;\n this.updateDataRun(this.run);\n this.rememberPreviousStartDate();\n this.clearErrorMessages();\n this.showConfirmMessage();\n this.setDateRange();\n } else {\n this.startDateMessage = this.translateMessageCode(response.messageCode);\n }\n });\n } else {\n this.rollbackStartDate();\n }\n } else {\n this.rollbackStartDate();\n }\n }\n\n updateEndTime() {\n this.clearErrorMessages();\n if (confirm(this.getEndDateChangeConfirmationMessage())) {\n this.updateRunEndTime(this.run.id, this.getEndTime());\n } else {\n this.rollbackEndDate();\n }\n }\n\n updateRunEndTime(runId, endTime) {\n this.teacherService.updateRunEndTime(runId, endTime).subscribe((response: any) => {\n if (response.status === 'success') {\n this.run = response.run;\n this.updateDataRun(this.run);\n this.rememberPreviousEndDate();\n this.clearErrorMessages();\n this.showConfirmMessage();\n this.setDateRange();\n this.updateLockedAfterEndDateCheckbox();\n } else {\n this.endDateMessage = this.translateMessageCode(response.messageCode);\n }\n });\n }\n\n getEndDateChangeConfirmationMessage() {\n let message = '';\n if (this.endDate) {\n const endDate = this.endDate;\n endDate.setHours(23, 59, 59);\n const formattedEndDate = formatDate(endDate, 'fullDate', this.localeID);\n message = $localize`Are you sure you want to change the end date to ${formattedEndDate}:endDate:?`;\n } else {\n message = $localize`Are you sure you want to remove the end date?`;\n }\n return message;\n }\n\n getEndTime() {\n if (this.endDate == null) {\n return null;\n } else {\n return this.endDate.getTime();\n }\n }\n\n setDateRange() {\n this.minEndDate = this.startDate;\n this.maxStartDate = this.endDate;\n this.targetEndDate = null;\n if (this.run.lastRun && !this.run.endTime) {\n this.targetEndDate = new Date(this.run.lastRun);\n }\n }\n\n updateLockedAfterEndDateCheckbox() {\n if (this.endDate == null) {\n const previousIsLockedAfterEndDateValue = this.isLockedAfterEndDate;\n this.isLockedAfterEndDateCheckboxEnabled = false;\n this.isLockedAfterEndDate = false;\n if (previousIsLockedAfterEndDateValue != this.isLockedAfterEndDate) {\n this.updateIsLockedAfterEndDate();\n }\n } else {\n this.isLockedAfterEndDateCheckboxEnabled = true;\n }\n }\n\n updateIsLockedAfterEndDate() {\n this.teacherService\n .updateIsLockedAfterEndDate(this.run.id, this.isLockedAfterEndDate)\n .subscribe((response: any) => {\n if (response.status === 'success') {\n this.run = response.run;\n this.updateDataRun(this.run);\n this.clearErrorMessages();\n } else {\n this.isLockedAfterEndDateMessage = this.translateMessageCode(response.messageCode);\n }\n });\n }\n\n rollbackMaxStudentsPerTeam() {\n this.maxStudentsPerTeam = this.run.maxStudentsPerTeam + '';\n }\n\n rollbackStartDate() {\n this.startDate = this.previousStartDate;\n }\n\n rollbackEndDate() {\n this.endDate = this.previousEndDate;\n }\n\n rememberPreviousStartDate() {\n this.previousStartDate = new Date(this.run.startTime);\n }\n\n rememberPreviousEndDate() {\n this.previousEndDate = new Date(this.run.endTime);\n }\n\n clearNewPeriodInput() {\n this.newPeriodName = '';\n }\n\n clearErrorMessages() {\n this.deletePeriodMessage = '';\n this.addPeriodMessage = '';\n this.maxStudentsPerTeamMessage = '';\n this.startDateMessage = '';\n this.endDateMessage = '';\n this.isLockedAfterEndDateMessage = '';\n }\n\n showConfirmMessage() {\n this.snackBar.open($localize`Unit settings updated.`);\n }\n\n translateMessageCode(messageCode: string): string {\n return this.messageCodeToMessage[messageCode];\n }\n\n updateDataRun(run) {\n this.run.periods = run.periods;\n this.run.maxStudentsPerTeam = run.maxStudentsPerTeam;\n this.run.startTime = run.startTime;\n this.run.endTime = run.endTime;\n this.run.isLockedAfterEndDate = run.isLockedAfterEndDate;\n this.run.lastRun = run.lastRun;\n }\n}\n", + "styleUrl": "./run-settings-dialog.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialogRef", + "type": "MatDialogRef", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "run", + "type": "TeacherRun", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "teacherService", + "type": "TeacherService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "snackBar", + "type": "MatSnackBar", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "localeID", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 66, + "jsdoctags": [ + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialogRef", + "type": "MatDialogRef", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "run", + "type": "TeacherRun", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "teacherService", + "type": "TeacherService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "snackBar", + "type": "MatSnackBar", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "localeID", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "

    Edit Settings

    \n\n

    \n {{ run.name }} (Run ID: {{ run.id }})\n

    \n @if (isDefaultRun) {\n

    Class Periods

    \n
    \n @for (period of run.periods; track period) {\n
    \n {{ period }}\n \n close\n \n
    \n }\n
    \n
    \n \n Add new period\n \n \n add_circle\n \n @if (addPeriodMessage) {\n {{ addPeriodMessage }}\n }\n \n @if (!addPeriodMessage) {\n

    For \"Period 9\", just enter the number 9.

    \n }\n
    \n \n

    Students Per Team

    \n \n \n Only 1 student\n \n \n 1-3 students\n \n \n \n }\n

    \n Schedule \n @if (run.lastRun) {\n @if (run.lastRun) {\n \n (Last student login: {{ run.lastRun | date: 'short' }})\n \n }\n }\n

    \n
    \n
    \n \n Start date\n \n \n \n Start date is required.\n @if (startDateMessage) {\n {{ startDateMessage }}\n }\n \n
    \n
    \n \n End date\n \n \n \n @if (endDateMessage) {\n {{ endDateMessage }}\n }\n \n
    \n @if (isDefaultRun) {\n
    \n \n Lock After End Date  \n help\n
    \n }\n
    \n
    \n\n \n\n" + }, + { + "name": "SaveIndicatorComponent", + "id": "component-SaveIndicatorComponent-bab0af9847482860c00d6c79280d830736f543a17f93875394570c9b751f0c990bf10d453b7bf508a561b72807f6b03c5eb963a35a16fc5f77ad1727bc385165", + "file": "src/assets/wise5/common/save-indicator/save-indicator.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "save-indicator", + "styleUrls": [], + "styles": [ + ".global-message { margin-right: 20px }" + ], + "templateUrl": [ + "./save-indicator.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "globalMessage", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "modifierKind": [ + 124 + ] + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 123 + ] + } + ], + "methodsClass": [ + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 27, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 19, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "MatProgressSpinnerModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, OnInit } from '@angular/core';\nimport { NotificationService } from '../../services/notificationService';\nimport { Subscription } from 'rxjs';\nimport { CommonModule } from '@angular/common';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\n\n@Component({\n imports: [CommonModule, MatProgressSpinnerModule],\n selector: 'save-indicator',\n styles: ['.global-message { margin-right: 20px }'],\n templateUrl: './save-indicator.component.html'\n})\nexport class SaveIndicatorComponent implements OnInit {\n protected globalMessage: any = {};\n private subscriptions: Subscription = new Subscription();\n\n constructor(private notificationService: NotificationService) {}\n\n ngOnInit(): void {\n this.subscriptions.add(\n this.notificationService.setGlobalMessage$.subscribe(({ globalMessage }) => {\n this.globalMessage = globalMessage;\n })\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": ".global-message { margin-right: 20px }\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "notificationService", + "type": "NotificationService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 15, + "jsdoctags": [ + { + "name": "notificationService", + "type": "NotificationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "
    \n @if (globalMessage.isProgressIndicatorVisible) {\n \n }\n @if (globalMessage.text) {\n \n {{ globalMessage.text }} {{ globalMessage.time | date: 'medium' }}\n \n }\n
    \n" + }, + { + "name": "SaveStarterStateComponent", + "id": "component-SaveStarterStateComponent-5a3a12438ab83547cafc48de4a9a98a034b627a4fe4198cf4928177795162666527bafb82d190ffd45a92aea0e4c3758d96e4588ed2d6ab74dfbff4216f06031", + "file": "src/assets/wise5/authoringTool/components/save-starter-state/save-starter-state.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "save-starter-state", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "save-starter-state.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "component", + "deprecated": false, + "deprecationMessage": "", + "line": 15, + "type": "WISEComponent", + "decorators": [] + }, + { + "name": "starterState", + "deprecated": false, + "deprecationMessage": "", + "line": 17, + "type": "any", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "dirty", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "delete", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 39, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "ngOnChanges", + "args": [ + { + "name": "changes", + "type": "SimpleChanges", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 24, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "changes", + "type": "SimpleChanges", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "save", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 28, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input, SimpleChanges } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { Component as WISEComponent } from '../../../common/Component';\nimport { TeacherNodeService } from '../../../services/teacherNodeService';\n\n@Component({\n imports: [MatButtonModule, MatIconModule, MatTooltipModule],\n selector: 'save-starter-state',\n templateUrl: 'save-starter-state.component.html'\n})\nexport class SaveStarterStateComponent {\n @Input() private component: WISEComponent;\n protected dirty: boolean;\n @Input() private starterState: any;\n\n constructor(\n private matDialog: MatDialog,\n private nodeService: TeacherNodeService\n ) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n this.dirty = !changes.starterState.isFirstChange();\n }\n\n protected save(): void {\n if (confirm($localize`Are you sure you want to save the starter state?`)) {\n this.nodeService.respondStarterState({\n nodeId: this.component.nodeId,\n componentId: this.component.id,\n starterState: this.starterState\n });\n this.dirty = false;\n }\n }\n\n protected delete(): void {\n if (\n confirm(\n $localize`Are you sure you want to delete the starter state? This will also close this preview window.`\n )\n ) {\n this.nodeService.deleteStarterState({\n nodeId: this.component.nodeId,\n componentId: this.component.id\n });\n this.matDialog.closeAll();\n }\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "matDialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeService", + "type": "TeacherNodeService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 17, + "jsdoctags": [ + { + "name": "matDialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeService", + "type": "TeacherNodeService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "
    \n To set a starter state, edit the content below and save:\n
    \n \n save\n \n \n close\n \n
    \n
    \n" + }, + { + "name": "SaveTimeMessageComponent", + "id": "component-SaveTimeMessageComponent-a68d14632afaa780a5f4e8d7ace92a5fc43f63cc5e2fd984074f72d9f7110d99b78a85330d94fae1495c6fceec0b1bdcd1a0de99842483622f0ecba0144bb47d", + "file": "src/assets/wise5/common/save-time-message/save-time-message.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "save-time-message", + "styleUrls": [], + "styles": [ + ".save-message { font-style: italic; font-size: 13px; }" + ], + "templateUrl": [ + "save-time-message.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "isAutoSave", + "deprecated": false, + "deprecationMessage": "", + "line": 12, + "type": "boolean", + "decorators": [] + }, + { + "name": "isInactive", + "deprecated": false, + "deprecationMessage": "", + "line": 13, + "type": "boolean", + "decorators": [] + }, + { + "name": "isSubmit", + "deprecated": false, + "deprecationMessage": "", + "line": 14, + "type": "boolean", + "decorators": [] + }, + { + "name": "saveTime", + "deprecated": false, + "deprecationMessage": "", + "line": 16, + "type": "number", + "decorators": [] + }, + { + "name": "timeOnly", + "deprecated": false, + "deprecationMessage": "", + "line": 17, + "type": "boolean", + "decorators": [] + }, + { + "name": "tooltipPosition", + "deprecated": false, + "deprecationMessage": "", + "line": 19, + "type": "\"left\" | \"right\" | \"above\" | \"below\" | \"before\" | \"after\"", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "message", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 124 + ] + }, + { + "name": "tooltip", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "getSaveTimeText", + "args": [ + { + "name": "saveTime", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "showFullDate", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 37, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "saveTime", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "showFullDate", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isToday", + "args": [ + { + "name": "time", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 53, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "time", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnChanges", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 23, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatTooltipModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { formatDate } from '@angular/common';\nimport { Component, Inject, Input, LOCALE_ID } from '@angular/core';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@Component({\n imports: [MatTooltipModule],\n selector: 'save-time-message',\n styles: ['.save-message { font-style: italic; font-size: 13px; }'],\n templateUrl: 'save-time-message.component.html'\n})\nexport class SaveTimeMessageComponent {\n @Input() isAutoSave: boolean;\n @Input() isInactive: boolean;\n @Input() isSubmit: boolean;\n protected message: string;\n @Input() saveTime: number;\n @Input() timeOnly: boolean;\n protected tooltip: string;\n @Input() tooltipPosition: 'left' | 'right' | 'above' | 'below' | 'before' | 'after';\n\n constructor(@Inject(LOCALE_ID) private localeID: string) {}\n\n ngOnChanges(): void {\n this.tooltip = this.getSaveTimeText(this.saveTime, true);\n const saveTimeText = this.getSaveTimeText(this.saveTime, this.isInactive);\n if (this.timeOnly) {\n this.message = saveTimeText;\n } else if (this.isSubmit) {\n this.message = $localize`Submitted ${saveTimeText}:saveTime:`;\n } else if (this.isAutoSave) {\n this.message = $localize`Auto Saved ${saveTimeText}:saveTime:`;\n } else {\n this.message = $localize`Saved ${saveTimeText}:saveTime:`;\n }\n }\n\n private getSaveTimeText(saveTime: number, showFullDate: boolean = false): string {\n let saveTimeText = '';\n if (showFullDate) {\n saveTimeText = `${formatDate(saveTime, 'fullDate', this.localeID)} • ${formatDate(\n saveTime,\n 'shortTime',\n this.localeID\n )}`;\n } else if (this.isToday(saveTime)) {\n saveTimeText = formatDate(saveTime, 'shortTime', this.localeID);\n } else {\n saveTimeText = formatDate(saveTime, 'mediumDate', this.localeID);\n }\n return saveTimeText;\n }\n\n private isToday(time: number): boolean {\n return (\n formatDate(time, 'shortDate', this.localeID) ===\n formatDate(new Date(), 'shortDate', this.localeID)\n );\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": ".save-message { font-style: italic; font-size: 13px; }\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "localeID", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 19, + "jsdoctags": [ + { + "name": "localeID", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "@if (isInactive) {\n {{ message }}\n} @else {\n \n {{ message }}\n
    \n}\n" + }, + { + "name": "SearchBarComponent", + "id": "component-SearchBarComponent-83a541b3cd99d44ca1e52d1344363050a419ae51ff7b35d37b06c54e632f532a6882310999df148270cbe692793ab3f634ccd86ba0485ba98b23349210d9f034", + "file": "src/app/modules/shared/search-bar/search-bar.component.ts", + "encapsulation": [ + "ViewEncapsulation.None" + ], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "app-search-bar", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./search-bar.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "debounce", + "defaultValue": "250", + "deprecated": false, + "deprecationMessage": "", + "line": 34, + "type": "number", + "decorators": [] + }, + { + "name": "disable", + "deprecated": false, + "deprecationMessage": "", + "line": 35, + "type": "boolean", + "decorators": [] + }, + { + "name": "placeholderText", + "defaultValue": "$localize`Search`", + "deprecated": false, + "deprecationMessage": "", + "line": 36, + "type": "string", + "decorators": [] + }, + { + "name": "value", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "line": 38, + "type": "string", + "decorators": [] + } + ], + "outputsClass": [ + { + "name": "update", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 33, + "type": "EventEmitter" + } + ], + "propertiesClass": [ + { + "name": "searchField", + "defaultValue": "new FormControl('')", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 37, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "clear", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 64, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "ngOnChanges", + "args": [ + { + "name": "changes", + "type": "SimpleChanges", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 53, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "changes", + "type": "SimpleChanges", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 40, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatInputModule", + "type": "module" + }, + { + "name": "ReactiveFormsModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { CommonModule } from '@angular/common';\nimport {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n SimpleChanges,\n ViewEncapsulation\n} from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\n\n@Component({\n encapsulation: ViewEncapsulation.None,\n imports: [\n CommonModule,\n MatButtonModule,\n MatFormFieldModule,\n MatIconModule,\n MatInputModule,\n ReactiveFormsModule\n ],\n selector: 'app-search-bar',\n styleUrl: './search-bar.component.scss',\n templateUrl: './search-bar.component.html'\n})\nexport class SearchBarComponent implements OnInit {\n @Output('update') change: EventEmitter = new EventEmitter();\n @Input() debounce: number = 250;\n @Input() disable: boolean;\n @Input() placeholderText: string = $localize`Search`;\n protected searchField = new FormControl('');\n @Input() value: string = '';\n\n ngOnInit(): void {\n this.searchField = new FormControl({\n value: this.value,\n disabled: this.disable\n });\n this.searchField.valueChanges\n .pipe(debounceTime(this.debounce))\n .pipe(distinctUntilChanged())\n .subscribe((value) => {\n this.change.emit(this.searchField.value);\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.value) {\n this.value = changes.value.currentValue;\n this.searchField.setValue(this.value);\n }\n if (changes.disable) {\n this.disable = changes.disable.currentValue;\n this.disable ? this.searchField.disable() : this.searchField.enable();\n }\n }\n\n protected clear(): void {\n this.searchField.setValue('');\n }\n}\n", + "styleUrl": "./search-bar.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "\n {{ placeholderText }}\n search\n \n \n close\n \n\n" + }, + { + "name": "SelectAllItemsCheckboxComponent", + "id": "component-SelectAllItemsCheckboxComponent-7b94756d907e8492a29c4140f5b03fd8869e3a65015074c9a65db1b986bd81edea458d7fa56a993f0985ceb5e58bd734ff024eda6f6cbc549a222121293cd455", + "file": "src/app/modules/library/select-all-items-checkbox/select-all-items-checkbox.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [ + { + "name": "}" + } + ], + "selector": "select-all-items-checkbox", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./select-all-items-checkbox.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "numAllItems", + "deprecated": false, + "deprecationMessage": "", + "line": 17, + "type": "number", + "decorators": [] + }, + { + "name": "numSelectedItems", + "deprecated": false, + "deprecationMessage": "", + "line": 18, + "type": "number", + "decorators": [] + }, + { + "name": "tooltip", + "deprecated": false, + "deprecationMessage": "", + "line": 20, + "type": "string", + "decorators": [] + } + ], + "outputsClass": [ + { + "name": "allSelectedEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 15, + "type": "EventEmitter" + }, + { + "name": "noneSelectedEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 16, + "type": "EventEmitter" + } + ], + "propertiesClass": [ + { + "name": "status", + "deprecated": false, + "deprecationMessage": "", + "type": "SelectAllItemsStatus", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "ngOnChanges", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "select", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 32, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatCheckboxModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { MAT_CHECKBOX_DEFAULT_OPTIONS, MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\ntype SelectAllItemsStatus = 'none' | 'some' | 'all';\n\n@Component({\n imports: [MatCheckboxModule, MatTooltipModule],\n providers: [{ provide: MAT_CHECKBOX_DEFAULT_OPTIONS, useValue: { clickAction: 'noop' } }],\n selector: 'select-all-items-checkbox',\n styleUrl: 'select-all-items-checkbox.component.scss',\n templateUrl: './select-all-items-checkbox.component.html'\n})\nexport class SelectAllItemsCheckboxComponent {\n @Output() allSelectedEvent: EventEmitter = new EventEmitter();\n @Output() noneSelectedEvent: EventEmitter = new EventEmitter();\n @Input() numAllItems: number;\n @Input() numSelectedItems: number;\n protected status: SelectAllItemsStatus;\n @Input() tooltip: string;\n\n ngOnChanges(): void {\n if (this.numSelectedItems == 0) {\n this.status = 'none';\n } else if (this.numSelectedItems < this.numAllItems) {\n this.status = 'some';\n } else {\n this.status = 'all';\n }\n }\n\n protected select(): void {\n if (this.status === 'none') {\n this.allSelectedEvent.emit();\n } else {\n this.noneSelectedEvent.emit();\n }\n }\n}\n", + "styleUrl": "select-all-items-checkbox.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [], + "templateData": "\n \n\n" + }, + { + "name": "SelectBranchCriteriaComponent", + "id": "component-SelectBranchCriteriaComponent-f1ade45c6887b97f4fc565d245fe1dda6fd74fa175f963a710b64078b6603ceea68cb36b8c8838393acde20e47128a8aa3770b951cefd9d37e4e633c88dd4960", + "file": "src/assets/wise5/authoringTool/select-branch-criteria/select-branch-criteria.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "select-branch-criteria", + "styleUrls": [], + "styles": [ + ".select-criteria { min-width: 320px; }" + ], + "templateUrl": [ + "./select-branch-criteria.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "criteria", + "deprecated": false, + "deprecationMessage": "", + "line": 28, + "type": "string", + "decorators": [] + } + ], + "outputsClass": [ + { + "name": "criteriaChangedEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 29, + "type": "EventEmitter" + } + ], + "propertiesClass": [ + { + "name": "BRANCH_CRITERIA", + "defaultValue": "BRANCH_CRITERIA", + "deprecated": false, + "deprecationMessage": "", + "type": "BranchCriteria[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 26, + "modifierKind": [ + 124, + 148 + ] + } + ], + "methodsClass": [ + { + "name": "showCriteriaHelp", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 33, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatSelectModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { BRANCH_CRITERIA, BranchCriteria } from '../../../../app/domain/branchCriteria';\nimport { BranchCriteriaHelpComponent } from './branch-criteria-help/branch-criteria-help.component';\n\n@Component({\n imports: [\n FormsModule,\n MatButtonModule,\n MatIconModule,\n MatFormFieldModule,\n MatSelectModule,\n MatTooltipModule\n ],\n selector: 'select-branch-criteria',\n styles: ['.select-criteria { min-width: 320px; }'],\n templateUrl: './select-branch-criteria.component.html'\n})\nexport class SelectBranchCriteriaComponent {\n protected readonly BRANCH_CRITERIA: BranchCriteria[] = BRANCH_CRITERIA;\n\n @Input() criteria: string;\n @Output() criteriaChangedEvent: EventEmitter = new EventEmitter();\n\n constructor(protected dialog: MatDialog) {}\n\n protected showCriteriaHelp(): void {\n this.dialog.open(BranchCriteriaHelpComponent, {\n panelClass: 'dialog-md'\n });\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": ".select-criteria { min-width: 320px; }\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 29, + "jsdoctags": [ + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "\n How to Choose Among Paths\n \n @for (criterion of BRANCH_CRITERIA; track $index) {\n \n {{ criterion.text }}\n \n }\n \n\n\n info\n\n" + }, + { + "name": "SelectComponentComponent", + "id": "component-SelectComponentComponent-ec6d423ea3229f7a8ddeecdd391b806e2693d543b0a98c750ade0862d005d00a2ad9d305156c8ad7c0e67f34b39e83e0673e08d908ea42c3f73252f32ced5e56", + "file": "src/app/authoring-tool/select-component/select-component.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "select-component", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./select-component.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "allowedComponentTypes", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "line": 14, + "type": "string[]", + "decorators": [] + }, + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "line": 16, + "type": "string", + "decorators": [] + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 19, + "type": "string", + "decorators": [] + }, + { + "name": "thisComponentId", + "deprecated": false, + "deprecationMessage": "", + "line": 20, + "type": "string", + "decorators": [] + } + ], + "outputsClass": [ + { + "name": "componentChangedEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 15, + "type": "EventEmitter" + } + ], + "propertiesClass": [ + { + "name": "components", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "ComponentContent[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "modifierKind": [ + 124 + ] + }, + { + "name": "componentToIsAllowed", + "defaultValue": "new Map()", + "deprecated": false, + "deprecationMessage": "", + "type": "Map", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "calculateComponents", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 39, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "componentChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 69, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "ngOnChanges", + "args": [ + { + "name": "changes", + "type": "SimpleChanges", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 24, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "changes", + "type": "SimpleChanges", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setComponentId", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 49, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatSelectModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, EventEmitter, Input, Output, SimpleChanges } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatSelectModule } from '@angular/material/select';\nimport { ProjectService } from '../../../assets/wise5/services/projectService';\nimport { ComponentContent } from '../../../assets/wise5/common/ComponentContent';\n\n@Component({\n imports: [FormsModule, MatFormFieldModule, MatSelectModule],\n selector: 'select-component',\n templateUrl: './select-component.component.html'\n})\nexport class SelectComponentComponent {\n @Input() allowedComponentTypes: string[] = [];\n @Output() componentChangedEvent: EventEmitter = new EventEmitter();\n @Input() componentId: string;\n protected components: ComponentContent[] = [];\n protected componentToIsAllowed: Map = new Map();\n @Input() nodeId: string;\n @Input() thisComponentId: string;\n\n constructor(private projectService: ProjectService) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.nodeId) {\n this.nodeId = changes.nodeId.currentValue;\n this.calculateComponents(this.nodeId);\n this.setComponentId();\n }\n if (changes.allowedComponentTypes) {\n this.allowedComponentTypes = changes.allowedComponentTypes.currentValue;\n this.calculateComponents(this.nodeId);\n }\n if (changes.componentId) {\n this.componentId = changes.componentId.currentValue;\n }\n }\n\n private calculateComponents(nodeId: string): void {\n this.components = this.projectService.getComponents(nodeId);\n for (const component of this.components) {\n this.componentToIsAllowed.set(\n component.id,\n this.allowedComponentTypes.includes(component.type)\n );\n }\n }\n\n private setComponentId(): void {\n let numAllowedComponents = 0;\n let allowedComponent = null;\n for (const component of this.components) {\n if (\n this.allowedComponentTypes.includes(component.type) &&\n component.id !== this.thisComponentId\n ) {\n numAllowedComponents += 1;\n allowedComponent = component;\n }\n }\n if (numAllowedComponents === 1) {\n this.componentId = allowedComponent.id;\n this.componentChanged();\n } else if (!this.components.map((component) => component.id).includes(this.componentId)) {\n this.componentId = null;\n }\n }\n\n protected componentChanged(): void {\n this.componentChangedEvent.emit(this.componentId);\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 20, + "jsdoctags": [ + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "\n Component\n \n @for (component of components; track component; let componentIndex = $index) {\n \n {{ componentIndex + 1 }}. {{ component.type }}\n @if (component.id === thisComponentId) {\n (This Component)\n }\n \n }\n \n\n" + }, + { + "name": "SelectMenuComponent", + "id": "component-SelectMenuComponent-c9545b5f2d3f81c9f6004014590bbc32ac743f5729a74ee8a14a26af1193af5eb22635cf3fc5c772ea1b0c8638a435224c75e65cfcc6b203638ba218d667dd8e", + "file": "src/app/modules/shared/select-menu/select-menu.component.ts", + "encapsulation": [ + "ViewEncapsulation.None" + ], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "app-select-menu", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./select-menu.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "disable", + "deprecated": false, + "deprecationMessage": "", + "line": 22, + "type": "boolean", + "decorators": [] + }, + { + "name": "multiple", + "deprecated": false, + "deprecationMessage": "", + "line": 23, + "type": "boolean", + "decorators": [] + }, + { + "name": "options", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "line": 24, + "type": "any[]", + "decorators": [] + }, + { + "name": "placeholderText", + "defaultValue": "$localize`Select an option`", + "deprecated": false, + "deprecationMessage": "", + "line": 25, + "type": "string", + "decorators": [] + }, + { + "name": "value", + "deprecated": false, + "deprecationMessage": "", + "line": 27, + "type": "any", + "decorators": [] + }, + { + "name": "valueProp", + "defaultValue": "'value'", + "deprecated": false, + "deprecationMessage": "", + "line": 28, + "type": "string", + "decorators": [] + }, + { + "name": "viewValueProp", + "defaultValue": "'viewValue'", + "deprecated": false, + "deprecationMessage": "", + "line": 29, + "type": "string", + "decorators": [] + } + ], + "outputsClass": [ + { + "name": "update", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 21, + "type": "EventEmitter" + } + ], + "propertiesClass": [ + { + "name": "selectField", + "defaultValue": "new FormControl('')", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 26, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "ngOnChanges", + "args": [ + { + "name": "changes", + "type": "SimpleChanges", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 41, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "changes", + "type": "SimpleChanges", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 31, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatSelectModule", + "type": "module" + }, + { + "name": "ReactiveFormsModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n SimpleChanges,\n ViewEncapsulation\n} from '@angular/core';\nimport { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatSelectModule } from '@angular/material/select';\n\n@Component({\n encapsulation: ViewEncapsulation.None,\n imports: [FormsModule, MatSelectModule, ReactiveFormsModule],\n selector: 'app-select-menu',\n styleUrl: './select-menu.component.scss',\n templateUrl: './select-menu.component.html'\n})\nexport class SelectMenuComponent implements OnInit {\n @Output('update') change: EventEmitter = new EventEmitter();\n @Input() disable: boolean;\n @Input() multiple: boolean;\n @Input() options: any[] = [];\n @Input() placeholderText: string = $localize`Select an option`;\n protected selectField = new FormControl('');\n @Input() value: any;\n @Input() valueProp: string = 'value';\n @Input() viewValueProp: string = 'viewValue';\n\n ngOnInit(): void {\n this.selectField = new FormControl({\n value: this.value,\n disabled: this.disable\n });\n this.selectField.valueChanges.subscribe((value) => {\n this.change.emit(this.selectField.value);\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.value) {\n this.value = changes.value.currentValue;\n this.selectField.setValue(this.value);\n }\n if (changes.disable) {\n this.disable = changes.disable.currentValue;\n this.disable ? this.selectField.disable() : this.selectField.enable();\n }\n }\n}\n", + "styleUrl": "./select-menu.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "\n {{ placeholderText }}\n \n @if (multiple) {\n \n {{ selectField.value ? selectField.value[0] : '' }}\n @if (selectField.value?.length > 1) {\n \n (+{{ selectField.value.length - 1 }} more)\n \n }\n \n }\n @for (option of options; track option.id) {\n \n {{ option[viewValueProp] }}\n \n }\n \n\n" + }, + { + "name": "SelectMergeStepComponent", + "id": "component-SelectMergeStepComponent-ff71c4d2e4e2a1571456a225b1d3e6365682d2dfe84fa91a11fca6862b8c0ce18353d89d697dd18003e7557f1a104ac478635f0290ae6889055e7d1239ebffab", + "file": "src/assets/wise5/authoringTool/select-merge-step/select-merge-step.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "select-merge-step", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./select-merge-step.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "branchStepId", + "deprecated": false, + "deprecationMessage": "", + "line": 14, + "type": "string", + "decorators": [] + } + ], + "outputsClass": [ + { + "name": "selectMergeStepEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 18, + "type": "EventEmitter" + } + ], + "propertiesClass": [ + { + "name": "mergeStepId", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 124 + ] + }, + { + "name": "nextStepId", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "modifierKind": [ + 124 + ] + }, + { + "name": "nextStepTitle", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatSelectModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { TeacherProjectService } from '../../services/teacherProjectService';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatSelectModule } from '@angular/material/select';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n selector: 'select-merge-step',\n imports: [FormsModule, MatFormFieldModule, MatSelectModule],\n templateUrl: './select-merge-step.component.html',\n styleUrl: './select-merge-step.component.scss'\n})\nexport class SelectMergeStepComponent {\n @Input() branchStepId: string;\n protected mergeStepId: string = '';\n protected nextStepId: string = '';\n protected nextStepTitle: string = '';\n @Output() selectMergeStepEvent: EventEmitter = new EventEmitter();\n\n constructor(private projectService: TeacherProjectService) {}\n\n ngOnInit(): void {\n const branchStepParentId = this.projectService.getParentGroupId(this.branchStepId);\n const nextStepId = this.projectService.getNextNodeId(this.branchStepId);\n const nextStepParentId = this.projectService.getParentGroupId(nextStepId);\n if (branchStepParentId === nextStepParentId) {\n this.nextStepId = nextStepId;\n this.nextStepTitle = this.projectService.getNodePositionAndTitle(this.nextStepId);\n this.mergeStepId = this.nextStepId;\n }\n this.selectMergeStepEvent.emit(this.mergeStepId);\n }\n}\n", + "styleUrl": "./select-merge-step.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 18, + "jsdoctags": [ + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "\n Merge Step\n \n @if (nextStepId !== '') {\n \n Use Next Step In Unit ({{ nextStepTitle }})\n \n }\n Create New Step\n \n All students will be directed here after completing their branch paths.\n\n" + }, + { + "name": "SelectPathCountComponent", + "id": "component-SelectPathCountComponent-3a92055d3a7d0277d09c8b3d35727f0fff8175f5628c6360af89922dc7fc3f64156c0754fa0fdb59b03563fe904c0226eb0e4661005bbcbbf1c45eb7b7dc77ad", + "file": "src/assets/wise5/authoringTool/select-path-count/select-path-count.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "select-path-count", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./select-path-count.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "pathCount", + "deprecated": false, + "deprecationMessage": "", + "line": 12, + "type": "number", + "decorators": [] + } + ], + "outputsClass": [ + { + "name": "pathCountChangedEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 13, + "type": "EventEmitter" + } + ], + "propertiesClass": [], + "methodsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatInputModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\n\n@Component({\n imports: [FormsModule, MatFormFieldModule, MatInputModule],\n selector: 'select-path-count',\n templateUrl: './select-path-count.component.html'\n})\nexport class SelectPathCountComponent {\n @Input() pathCount: number;\n @Output() pathCountChangedEvent: EventEmitter = new EventEmitter();\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [], + "templateData": "\n Number of Branch Paths\n \n\n" + }, + { + "name": "SelectPeerGroupingAuthoringComponent", + "id": "component-SelectPeerGroupingAuthoringComponent-da9b22c20c88d19926a3fd19f7d15e8e307bd0fdca5edc07b39b7763b4ef5f25063170c248b18f381dedd1a38828ef1b26c09dccb3c9d91fc66e91ada336faa7", + "file": "src/assets/wise5/authoringTool/peer-grouping/select-peer-grouping-authoring/select-peer-grouping-authoring.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "select-peer-grouping-authoring", + "styleUrls": [], + "styles": [ + ".bottom-spacing { margin-bottom: 10px; }" + ], + "templateUrl": [ + "./select-peer-grouping-authoring.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "tag", + "deprecated": false, + "deprecationMessage": "", + "line": 18, + "type": "string", + "decorators": [] + } + ], + "outputsClass": [ + { + "name": "tagChanged", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 19, + "type": "EventEmitter" + } + ], + "propertiesClass": [ + { + "name": "peerGrouping", + "deprecated": false, + "deprecationMessage": "", + "type": "PeerGrouping", + "indexKey": "", + "optional": false, + "description": "", + "line": 17 + } + ], + "methodsClass": [ + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "selectGroupingLogic", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 30, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatLabel" + }, + { + "name": "MatButton" + }, + { + "name": "MatTooltip" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { PeerGrouping } from '../../../../../app/domain/peerGrouping';\nimport { PeerGroupingAuthoringService } from '../../../services/peerGroupingAuthoringService';\nimport { SelectPeerGroupingDialogComponent } from '../select-peer-grouping-dialog/select-peer-grouping-dialog.component';\nimport { MatLabel } from '@angular/material/form-field';\nimport { MatButton } from '@angular/material/button';\nimport { MatTooltip } from '@angular/material/tooltip';\n\n@Component({\n selector: 'select-peer-grouping-authoring',\n templateUrl: './select-peer-grouping-authoring.component.html',\n styles: ['.bottom-spacing { margin-bottom: 10px; }'],\n imports: [MatLabel, MatButton, MatTooltip]\n})\nexport class SelectPeerGroupingAuthoringComponent implements OnInit {\n peerGrouping: PeerGrouping;\n @Input() tag: string;\n @Output() tagChanged: EventEmitter = new EventEmitter();\n\n constructor(\n private dialog: MatDialog,\n private peerGroupingAuthoringService: PeerGroupingAuthoringService\n ) {}\n\n ngOnInit(): void {\n this.peerGrouping = this.peerGroupingAuthoringService.getPeerGrouping(this.tag);\n }\n\n selectGroupingLogic(): void {\n this.dialog.open(SelectPeerGroupingDialogComponent, {\n data: {\n peerGrouping: this.peerGrouping,\n updateSelectedTag: (tag: string) => {\n this.peerGrouping = this.peerGroupingAuthoringService.getPeerGrouping(tag);\n this.tagChanged.emit(tag);\n }\n },\n panelClass: 'dialog-md'\n });\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": ".bottom-spacing { margin-bottom: 10px; }\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "peerGroupingAuthoringService", + "type": "PeerGroupingAuthoringService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 19, + "jsdoctags": [ + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "peerGroupingAuthoringService", + "type": "PeerGroupingAuthoringService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "
    \n Grouping Logic:\n @if (peerGrouping == null) {\n (None Selected)\n } @else {\n {{ peerGrouping.name }}\n }\n \n Select\n \n
    \n" + }, + { + "name": "SelectPeerGroupingDialogComponent", + "id": "component-SelectPeerGroupingDialogComponent-1d182780f9c661d3b4e2463c4c1785cfcbca19156f5b64aeaf4711458cc431b323c48fa760190bd08420bcae10bffea1c3fd5e4926b4329cb95b41e06cacbb22", + "file": "src/assets/wise5/authoringTool/peer-grouping/select-peer-grouping-dialog/select-peer-grouping-dialog.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [ + ".peer-grouping { margin-bottom: 8px; }" + ], + "templateUrl": [ + "./select-peer-grouping-dialog.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "peerGroupings", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "PeerGrouping[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 35 + } + ], + "methodsClass": [ + { + "name": "close", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 53, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "deletePeerGrouping", + "args": [ + { + "name": "peerGrouping", + "type": "PeerGrouping", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 63, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "peerGrouping", + "type": "PeerGrouping", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 44, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "selectPeerGrouping", + "args": [ + { + "name": "peerGrouping", + "type": "PeerGrouping", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 48, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "peerGrouping", + "type": "PeerGrouping", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "showNewPeerGroupingAuthoring", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 57, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatDialogModule", + "type": "module" + }, + { + "name": "CdkScrollable" + }, + { + "name": "MatCardModule", + "type": "module" + }, + { + "name": "SelectPeerGroupingOptionComponent", + "type": "component" + }, + { + "name": "MatButton" + }, + { + "name": "MatIcon" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { CdkScrollable } from '@angular/cdk/scrolling';\nimport { Component, Inject, OnInit } from '@angular/core';\nimport { MatButton } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport {\n MAT_DIALOG_DATA,\n MatDialog,\n MatDialogModule,\n MatDialogRef\n} from '@angular/material/dialog';\nimport { MatIcon } from '@angular/material/icon';\nimport { PeerGrouping } from '../../../../../app/domain/peerGrouping';\nimport { PeerGroupingAuthoringService } from '../../../services/peerGroupingAuthoringService';\nimport { CreateNewPeerGroupingDialogComponent } from '../create-new-peer-grouping-dialog/create-new-peer-grouping-dialog.component';\nimport { SelectPeerGroupingOptionComponent } from '../select-peer-grouping-option/select-peer-grouping-option.component';\n\nclass SelectPeerGroupingDialogData {\n peerGrouping: PeerGrouping;\n updateSelectedTag: (tag: string) => void;\n}\n\n@Component({\n templateUrl: './select-peer-grouping-dialog.component.html',\n styles: ['.peer-grouping { margin-bottom: 8px; }'],\n imports: [\n MatDialogModule,\n CdkScrollable,\n MatCardModule,\n SelectPeerGroupingOptionComponent,\n MatButton,\n MatIcon\n ]\n})\nexport class SelectPeerGroupingDialogComponent implements OnInit {\n peerGroupings: PeerGrouping[] = [];\n\n constructor(\n private dialog: MatDialog,\n private dialogRef: MatDialogRef,\n @Inject(MAT_DIALOG_DATA) private dialogData: SelectPeerGroupingDialogData,\n private peerGroupingAuthoringService: PeerGroupingAuthoringService\n ) {}\n\n ngOnInit(): void {\n this.peerGroupings = this.peerGroupingAuthoringService.getPeerGroupings();\n }\n\n selectPeerGrouping(peerGrouping: PeerGrouping): void {\n this.dialogData.peerGrouping = peerGrouping;\n this.dialogData.updateSelectedTag(peerGrouping.tag);\n }\n\n close(): void {\n this.dialogRef.close();\n }\n\n showNewPeerGroupingAuthoring(): void {\n this.dialog.open(CreateNewPeerGroupingDialogComponent, {\n panelClass: 'dialog-sm'\n });\n }\n\n deletePeerGrouping(peerGrouping: PeerGrouping): void {\n this.peerGroupingAuthoringService.deletePeerGrouping(peerGrouping);\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": ".peer-grouping { margin-bottom: 8px; }\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialogRef", + "type": "MatDialogRef", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialogData", + "type": "SelectPeerGroupingDialogData", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "peerGroupingAuthoringService", + "type": "PeerGroupingAuthoringService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 35, + "jsdoctags": [ + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialogRef", + "type": "MatDialogRef", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialogData", + "type": "SelectPeerGroupingDialogData", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "peerGroupingAuthoringService", + "type": "PeerGroupingAuthoringService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "

    Select Peer Grouping

    \n\n

    Choose a Peer Grouping to use for this component:

    \n @if (peerGroupings.length === 0) {\n

    (There are no Peer Groupings. Please create a new one.)

    \n }\n @for (peerGrouping of peerGroupings; track peerGrouping) {\n \n \n \n \n \n }\n \n
    \n\n \n\n" + }, + { + "name": "SelectPeerGroupingOptionComponent", + "id": "component-SelectPeerGroupingOptionComponent-8c9854a37eb861e6c24909d2d8edd29bb857c7dcb5645718814d2db2f9eea5c85df86546db5ff4bec2d04c1785143b1a65da144760f1fd5a04db3e197bc39f1e", + "file": "src/assets/wise5/authoringTool/peer-grouping/select-peer-grouping-option/select-peer-grouping-option.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "select-peer-grouping-option", + "styleUrls": [], + "styles": [ + ".field-label { font-weight: 500; } .select-option { margin: 0 0 8px -8px; }" + ], + "templateUrl": [ + "./select-peer-grouping-option.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "peerGrouping", + "deprecated": false, + "deprecationMessage": "", + "line": 23, + "type": "PeerGrouping", + "decorators": [] + }, + { + "name": "selectedPeerGrouping", + "deprecated": false, + "deprecationMessage": "", + "line": 24, + "type": "PeerGrouping", + "decorators": [] + } + ], + "outputsClass": [ + { + "name": "deleteEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 28, + "type": "EventEmitter" + }, + { + "name": "selectEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 29, + "type": "EventEmitter" + } + ], + "propertiesClass": [ + { + "name": "peerGroupingLogicName", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 25 + }, + { + "name": "stepsUsedIn", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 26 + } + ], + "methodsClass": [ + { + "name": "edit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 62, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnChanges", + "args": [ + { + "name": "changes", + "type": "SimpleChanges", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 40, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "changes", + "type": "SimpleChanges", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 36, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "select", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 58, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "setPeerGroupingLogicName", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 46, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatRadioButton" + }, + { + "name": "MatButton" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, EventEmitter, Input, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { PeerGrouping } from '../../../../../app/domain/peerGrouping';\nimport { PeerGroupingAuthoringService } from '../../../services/peerGroupingAuthoringService';\nimport { EditPeerGroupingDialogComponent } from '../edit-peer-grouping-dialog/edit-peer-grouping-dialog.component';\nimport {\n AVAILABLE_LOGIC,\n DIFFERENT_IDEAS_NAME,\n DIFFERENT_IDEAS_REGEX,\n DIFFERENT_SCORES_NAME,\n DIFFERENT_SCORES_REGEX\n} from '../PeerGroupingLogic';\nimport { MatRadioButton } from '@angular/material/radio';\nimport { MatButton } from '@angular/material/button';\n\n@Component({\n selector: 'select-peer-grouping-option',\n templateUrl: './select-peer-grouping-option.component.html',\n styles: ['.field-label { font-weight: 500; } .select-option { margin: 0 0 8px -8px; }'],\n imports: [MatRadioButton, MatButton]\n})\nexport class SelectPeerGroupingOptionComponent implements OnInit {\n @Input() peerGrouping: PeerGrouping;\n @Input() selectedPeerGrouping: PeerGrouping;\n peerGroupingLogicName: string;\n stepsUsedIn: string[] = [];\n\n @Output() deleteEvent: EventEmitter = new EventEmitter();\n @Output() selectEvent: EventEmitter = new EventEmitter();\n\n constructor(\n private dialog: MatDialog,\n private peerGroupingAuthoringService: PeerGroupingAuthoringService\n ) {}\n\n ngOnInit(): void {\n this.setPeerGroupingLogicName();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.selectedPeerGrouping) {\n this.stepsUsedIn = this.peerGroupingAuthoringService.getStepsUsedIn(this.peerGrouping.tag);\n }\n }\n\n private setPeerGroupingLogicName(): void {\n if (new RegExp(DIFFERENT_IDEAS_REGEX).exec(this.peerGrouping.logic) != null) {\n this.peerGroupingLogicName = DIFFERENT_IDEAS_NAME;\n } else if (new RegExp(DIFFERENT_SCORES_REGEX).exec(this.peerGrouping.logic) != null) {\n this.peerGroupingLogicName = DIFFERENT_SCORES_NAME;\n } else {\n this.peerGroupingLogicName = AVAILABLE_LOGIC.find(\n (logic) => logic.value === this.peerGrouping.logic\n ).name;\n }\n }\n\n select(): void {\n this.selectEvent.emit(this.peerGrouping);\n }\n\n edit(): void {\n this.dialog\n .open(EditPeerGroupingDialogComponent, {\n data: this.peerGrouping,\n panelClass: 'dialog-md'\n })\n .afterClosed()\n .subscribe((isDelete: boolean) => {\n if (isDelete) {\n this.deleteEvent.emit(this.peerGrouping);\n } else {\n this.setPeerGroupingLogicName();\n }\n });\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": ".field-label { font-weight: 500; } .select-option { margin: 0 0 8px -8px; }\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "peerGroupingAuthoringService", + "type": "PeerGroupingAuthoringService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 29, + "jsdoctags": [ + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "peerGroupingAuthoringService", + "type": "PeerGroupingAuthoringService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "
    \n \n {{ peerGrouping.name }}\n \n \n \n
    \n
    \n
    \n
    \n Steps Used In: \n @for (stepUsedIn of stepsUsedIn; track stepUsedIn; let isLast = $last) {\n \n {{ stepUsedIn }}\n @if (!isLast) {\n , \n }\n \n }\n @if (stepsUsedIn.length === 0) {\n None\n }\n
    \n
    \n Logic: {{ peerGroupingLogicName }}\n
    \n
    \n Teams Per Group: \n {{ peerGrouping.maxMembershipCount }}\n
    \n
    \n
    \n" + }, + { + "name": "SelectPeriodComponent", + "id": "component-SelectPeriodComponent-b7de2b0823b6d30ca1c89b18cd70bb2b0b51a76f0d7409eda1794432cdb69a4c9866b08baba1d642149ff5efa7f7b1b8a67d8a818ca928d40cdbe832f0d83d47", + "file": "src/assets/wise5/classroomMonitor/classroomMonitorComponents/select-period/select-period.component.ts", + "encapsulation": [ + "ViewEncapsulation.None" + ], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "select-period", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "select-period.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "currentPeriod", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "modifierKind": [ + 123 + ] + }, + { + "name": "periods", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "modifierKind": [ + 124 + ] + }, + { + "name": "selectedPeriodId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "modifierKind": [ + 124 + ] + }, + { + "name": "selectedPeriodText", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 20, + "modifierKind": [ + 124 + ] + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 21, + "modifierKind": [ + 123 + ] + } + ], + "methodsClass": [ + { + "name": "currentPeriodChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 73, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 51, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 29, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "populateNumWorkgroupsInPeriod", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 55, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "tryHideAllPeriods", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 66, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "updateSelectedText", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 79, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatSelectModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, ViewEncapsulation } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { WorkgroupService } from '../../../../../app/services/workgroup.service';\nimport { ConfigService } from '../../../services/configService';\nimport { TeacherDataService } from '../../../services/teacherDataService';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatSelectModule } from '@angular/material/select';\n\n@Component({\n encapsulation: ViewEncapsulation.None,\n imports: [MatFormFieldModule, MatSelectModule],\n selector: 'select-period',\n styleUrl: 'select-period.component.scss',\n templateUrl: 'select-period.component.html'\n})\nexport class SelectPeriodComponent {\n private currentPeriod: any;\n protected periods: any;\n protected selectedPeriodId: number;\n protected selectedPeriodText: string;\n private subscriptions: Subscription = new Subscription();\n\n constructor(\n private configService: ConfigService,\n private dataService: TeacherDataService,\n private workgroupService: WorkgroupService\n ) {}\n\n ngOnInit(): void {\n this.currentPeriod = this.dataService.getCurrentPeriod();\n this.selectedPeriodId = this.currentPeriod.periodId;\n this.updateSelectedText();\n this.periods = this.dataService.getPeriods();\n this.populateNumWorkgroupsInPeriod();\n this.tryHideAllPeriods();\n this.subscriptions.add(\n this.dataService.currentPeriodChanged$.subscribe(({ currentPeriod }) => {\n this.currentPeriod = currentPeriod;\n this.updateSelectedText();\n })\n );\n this.subscriptions.add(\n this.configService.configRetrieved$.subscribe(() => {\n if (this.configService.isClassroomMonitor()) {\n this.populateNumWorkgroupsInPeriod();\n }\n })\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n private populateNumWorkgroupsInPeriod(): void {\n let totalNumTeams = 0;\n for (const period of this.periods.slice(1)) {\n const numTeamsInPeriod = this.workgroupService.getWorkgroupsInPeriod(period.periodId).size;\n period.numWorkgroupsInPeriod = numTeamsInPeriod;\n totalNumTeams += numTeamsInPeriod;\n }\n this.periods[0].numWorkgroupsInPeriod = totalNumTeams; // all periods\n }\n\n // Don't show all periods if there is only one period in the run\n private tryHideAllPeriods(): void {\n if (this.periods.length === 2) {\n // this.periods contains all periods and the one period\n this.periods = this.periods.slice(1);\n }\n }\n\n protected currentPeriodChanged(): void {\n this.dataService.setCurrentPeriod(\n this.periods.find((period) => period.periodId === this.selectedPeriodId)\n );\n }\n\n private updateSelectedText(): void {\n this.selectedPeriodText =\n this.currentPeriod.periodId === -1\n ? $localize`All Periods`\n : $localize`Period: ${this.currentPeriod.periodName}`;\n }\n}\n", + "styleUrl": "select-period.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "workgroupService", + "type": "WorkgroupService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 21, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "workgroupService", + "type": "WorkgroupService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "\n \n {{ selectedPeriodText }}\n @for (period of periods; track period.periodId) {\n \n @if (period.periodId === -1) {\n All Periods\n } @else {\n Period: {{ period.periodName }}\n }\n \n @if (period.numWorkgroupsInPeriod === 0) {\n (0 teams)\n } @else if (period.numWorkgroupsInPeriod === 1) {\n (1 team)\n } @else {\n ({{ period.numWorkgroupsInPeriod }} teams)\n }\n \n \n }\n \n\n" + }, + { + "name": "SelectRunsControlsComponent", + "id": "component-SelectRunsControlsComponent-724c451d7a870ae9c1117e02313f602f3cc5ce49eda23f46f5096f9e040783c259a8479ebb7dd8005ec5e7a2e16af76255ee5278a47ca54634a794193155bb5f", + "file": "src/app/teacher/select-runs-controls/select-runs-controls.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [ + { + "name": "}" + } + ], + "selector": "select-runs-controls", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./select-runs-controls.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "runChangedEventEmitter", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 29, + "type": "EventEmitter", + "decorators": [] + }, + { + "name": "runs", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "line": 30, + "type": "TeacherRun[]", + "decorators": [] + }, + { + "name": "showArchive", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "line": 35, + "type": "boolean", + "decorators": [] + } + ], + "outputsClass": [ + { + "name": "archiveProjectsEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 27, + "type": "EventEmitter" + }, + { + "name": "selectRunsOptionChosenEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 34, + "type": "EventEmitter" + } + ], + "propertiesClass": [ + { + "name": "numSelectedRuns", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 28, + "modifierKind": [ + 124 + ] + }, + { + "name": "selectedAllRuns", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 31, + "modifierKind": [ + 124 + ] + }, + { + "name": "selectedProjects", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "Project[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 32, + "modifierKind": [ + 124 + ] + }, + { + "name": "selectedSomeRuns", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 33, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "ngOnChanges", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 43, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 37, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "selectAllRunsCheckboxClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 52, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "selectRunsOptionChosen", + "args": [ + { + "name": "value", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 58, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "value", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "ArchiveProjectsButtonComponent", + "type": "component" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatCheckboxModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatMenuModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { MAT_CHECKBOX_DEFAULT_OPTIONS, MatCheckboxModule } from '@angular/material/checkbox';\nimport { TeacherRun } from '../teacher-run';\nimport { Project } from '../../domain/project';\nimport { SelectRunsOption } from './select-runs-option';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { ArchiveProjectsButtonComponent } from '../archive-projects-button/archive-projects-button.component';\n\n@Component({\n imports: [\n ArchiveProjectsButtonComponent,\n MatButtonModule,\n MatCheckboxModule,\n MatIconModule,\n MatMenuModule,\n MatTooltipModule\n ],\n providers: [{ provide: MAT_CHECKBOX_DEFAULT_OPTIONS, useValue: { clickAction: 'noop' } }],\n selector: 'select-runs-controls',\n styleUrl: './select-runs-controls.component.scss',\n templateUrl: './select-runs-controls.component.html'\n})\nexport class SelectRunsControlsComponent {\n @Output() archiveProjectsEvent = new EventEmitter();\n protected numSelectedRuns: number = 0;\n @Input() runChangedEventEmitter: EventEmitter = new EventEmitter();\n @Input() runs: TeacherRun[] = [];\n protected selectedAllRuns: boolean = false;\n protected selectedProjects: Project[] = [];\n protected selectedSomeRuns: boolean = false;\n @Output() selectRunsOptionChosenEvent = new EventEmitter();\n @Input() showArchive: boolean = false;\n\n ngOnInit(): void {\n this.runChangedEventEmitter.subscribe(() => {\n this.ngOnChanges();\n });\n }\n\n ngOnChanges(): void {\n this.selectedProjects = this.runs\n .map((run: TeacherRun) => run.project)\n .filter((project: Project) => project.selected);\n this.numSelectedRuns = this.runs.filter((run: TeacherRun) => run.project.selected).length;\n this.selectedAllRuns = this.numSelectedRuns === this.runs.length;\n this.selectedSomeRuns = this.numSelectedRuns !== 0 && !this.selectedAllRuns;\n }\n\n protected selectAllRunsCheckboxClicked(): void {\n this.selectRunsOptionChosenEvent.emit(\n this.selectedAllRuns || this.selectedSomeRuns ? SelectRunsOption.None : SelectRunsOption.All\n );\n }\n\n protected selectRunsOptionChosen(value: string): void {\n this.selectRunsOptionChosenEvent.emit(value as SelectRunsOption);\n }\n}\n", + "styleUrl": "./select-runs-controls.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [], + "templateData": "
    \n \n
    \n \n arrow_drop_down\n \n \n \n \n \n \n \n \n
    \n @if (numSelectedRuns > 0) {\n
    {{ numSelectedRuns }} selected
    \n }\n @if (numSelectedRuns > 0) {\n \n }\n
    \n" + }, + { + "name": "SelectStepAndComponentCheckboxesComponent", + "id": "component-SelectStepAndComponentCheckboxesComponent-678ea5420ec3d7d9dd7ab19387b9273039cc6dba946025d09040682a043b75e72b21e6af1e9716954333321d3ce40d3bd97b6b528ef606065b35e2c3550a9078", + "file": "src/assets/wise5/classroomMonitor/dataExport/select-step-and-component-checkboxes/select-step-and-component-checkboxes.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "select-step-and-component-checkboxes", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./select-step-and-component-checkboxes.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "exportStepSelectionType", + "defaultValue": "'exportAllSteps'", + "deprecated": false, + "deprecationMessage": "", + "line": 29, + "type": "string", + "decorators": [] + }, + { + "name": "nodes", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "line": 32, + "type": "any[]", + "decorators": [] + }, + { + "name": "projectIdToOrder", + "deprecated": false, + "deprecationMessage": "", + "line": 34, + "type": "any", + "decorators": [] + } + ], + "outputsClass": [ + { + "name": "exportStepSelectionTypeChange", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 30, + "type": "EventEmitter" + } + ], + "propertiesClass": [ + { + "name": "configService", + "deprecated": false, + "deprecationMessage": "", + "type": "ConfigService", + "indexKey": "", + "optional": false, + "description": "", + "line": 37, + "modifierKind": [ + 125 + ] + }, + { + "name": "nodeIdToPositionAndTitle", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 31, + "modifierKind": [ + 124 + ] + }, + { + "name": "project", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 33, + "modifierKind": [ + 124 + ] + }, + { + "name": "projectService", + "deprecated": false, + "deprecationMessage": "", + "type": "TeacherProjectService", + "indexKey": "", + "optional": false, + "description": "", + "line": 38, + "modifierKind": [ + 125 + ] + } + ], + "methodsClass": [ + { + "name": "deselectAll", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 75, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "getNodePositionById", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 124, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getNodeTitleByNodeId", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 128, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isNodeInAnyBranchPath", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 120, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 41, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeItemClicked", + "args": [ + { + "name": "nodeItem", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 79, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodeItem", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "previewNode", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 132, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "previewProject", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 51, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "selectAll", + "args": [ + { + "name": "doSelect", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "true" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 55, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "doSelect", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "true", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatRadioGroup" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatRadioButton" + }, + { + "name": "MatButton" + }, + { + "name": "MatIconButton" + }, + { + "name": "MatTooltip" + }, + { + "name": "MatIcon" + }, + { + "name": "MatCheckbox" + }, + { + "name": "NgClass" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { TeacherProjectService } from '../../../services/teacherProjectService';\nimport { ConfigService } from '../../../services/configService';\nimport { MatRadioGroup, MatRadioButton } from '@angular/material/radio';\nimport { FormsModule } from '@angular/forms';\nimport { MatButton, MatIconButton } from '@angular/material/button';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatCheckbox } from '@angular/material/checkbox';\nimport { NgClass } from '@angular/common';\n\n@Component({\n imports: [\n MatRadioGroup,\n FormsModule,\n MatRadioButton,\n MatButton,\n MatIconButton,\n MatTooltip,\n MatIcon,\n MatCheckbox,\n NgClass\n ],\n selector: 'select-step-and-component-checkboxes',\n styleUrl: './select-step-and-component-checkboxes.component.scss',\n templateUrl: './select-step-and-component-checkboxes.component.html'\n})\nexport class SelectStepAndComponentCheckboxesComponent {\n @Input() exportStepSelectionType: string = 'exportAllSteps';\n @Output() exportStepSelectionTypeChange: EventEmitter = new EventEmitter();\n protected nodeIdToPositionAndTitle: any = {};\n @Input() nodes: any[] = [];\n protected project: any;\n @Input() projectIdToOrder: any;\n\n constructor(\n public configService: ConfigService,\n public projectService: TeacherProjectService\n ) {}\n\n ngOnInit(): void {\n this.project = this.projectService.project;\n for (const node of this.nodes) {\n const nodeId = node.node.id;\n const position = this.getNodePositionById(nodeId);\n const title = this.getNodeTitleByNodeId(nodeId);\n this.nodeIdToPositionAndTitle[nodeId] = `${position}: ${title}`;\n }\n }\n\n protected previewProject(): void {\n window.open(`${this.configService.getConfigParam('previewProjectURL')}`);\n }\n\n protected selectAll(doSelect: boolean = true): void {\n for (let nodeId in this.projectIdToOrder) {\n let projectItem = this.projectIdToOrder[nodeId];\n if (projectItem.order != 0) {\n projectItem.checked = doSelect;\n if (projectItem.node.type != 'group') {\n if (\n projectItem.node != null &&\n projectItem.node.components != null &&\n projectItem.node.components.length > 0\n ) {\n projectItem.node.components.map((componentItem) => {\n componentItem.checked = doSelect;\n });\n }\n }\n }\n }\n }\n\n protected deselectAll(): void {\n this.selectAll(false);\n }\n\n protected nodeItemClicked(nodeItem: any): void {\n if (nodeItem.node != null) {\n var node = nodeItem.node;\n if (node.ids != null) {\n for (var n = 0; n < node.ids.length; n++) {\n var nodeId = node.ids[n];\n var childNodeItem = this.projectIdToOrder[nodeId];\n childNodeItem.checked = nodeItem.checked;\n var components = childNodeItem.node.components;\n if (components != null) {\n for (var c = 0; c < components.length; c++) {\n components[c].checked = nodeItem.checked;\n }\n }\n }\n } else if (node.components != null) {\n if (nodeItem.checked) {\n if (\n nodeItem.node != null &&\n nodeItem.node.components != null &&\n nodeItem.node.components.length > 0\n ) {\n nodeItem.node.components.map((componentItem) => {\n componentItem.checked = true;\n });\n }\n } else {\n if (\n nodeItem.node != null &&\n nodeItem.node.components != null &&\n nodeItem.node.components.length > 0\n ) {\n nodeItem.node.components.map((componentItem) => {\n componentItem.checked = false;\n });\n }\n }\n }\n }\n }\n\n protected isNodeInAnyBranchPath(nodeId: string): boolean {\n return this.projectService.isNodeInAnyBranchPath(nodeId);\n }\n\n protected getNodePositionById(nodeId: string): string {\n return this.projectService.getNodePositionById(nodeId);\n }\n\n protected getNodeTitleByNodeId(nodeId: string): string {\n return this.projectService.getNodeTitle(nodeId);\n }\n\n protected previewNode(node: any): void {\n window.open(`${this.configService.getConfigParam('previewProjectURL')}/${node.id}`);\n }\n}\n", + "styleUrl": "./select-step-and-component-checkboxes.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 34, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "\n \n Export All Steps\n \n \n Select Steps To Export\n \n\n@if (exportStepSelectionType === 'exportSelectSteps') {\n
    \n \n Select All\n \n \n Deselect All\n \n
    \n
    \n

    {{ project.metadata.title }}

    \n \n preview\n \n
    \n @for (node of nodes; track node) {\n
    \n
    \n @if (node.order !== 0) {\n \n
    {{ nodeIdToPositionAndTitle[node.node.id] }}
    \n \n }\n @if (node.node.type !== 'group') {\n \n preview\n \n }\n
    \n
    \n @for (\n componentItem of node.node.components;\n track componentItem;\n let componentIndex = $index\n ) {\n @if (node.order !== 0 && node.node.type !== 'group' && node.node.components.length > 0) {\n
    \n \n {{ componentIndex + 1 }}. {{ componentItem.type }}\n \n
    \n }\n }\n
    \n
    \n }\n}\n" + }, + { + "name": "SelectStepAndComponentComponent", + "id": "component-SelectStepAndComponentComponent-3e82dc237ee9977b4df66bb17273ce8b8edd1c255770ea400f3bac7e955d95cc0aed3bc595d8d63312c279b760d77a31025c67c01ae83e420c0eaff9cb7c4c99", + "file": "src/app/authoring-tool/select-step-and-component/select-step-and-component.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "select-step-and-component", + "styleUrls": [], + "styles": [ + "select-step { margin-right: 20px; }" + ], + "template": "\n ", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "allowedComponentTypes", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "line": 23, + "type": "string[]", + "decorators": [] + }, + { + "name": "referenceComponent", + "deprecated": false, + "deprecationMessage": "", + "line": 25, + "type": "ReferenceComponent", + "decorators": [] + }, + { + "name": "thisComponentId", + "deprecated": false, + "deprecationMessage": "", + "line": 27, + "type": "string", + "decorators": [] + } + ], + "outputsClass": [ + { + "name": "componentChange", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 24, + "type": "EventEmitter" + }, + { + "name": "stepChange", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 26, + "type": "EventEmitter" + } + ], + "propertiesClass": [], + "methodsClass": [ + { + "name": "componentChanged", + "args": [ + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 37, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "stepChanged", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 31, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "SelectComponentComponent", + "type": "component" + }, + { + "name": "SelectStepComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { ChangeDetectorRef, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { ReferenceComponent } from '../../domain/referenceComponent';\nimport { SelectStepComponent } from '../select-step/select-step.component';\nimport { SelectComponentComponent } from '../select-component/select-component.component';\n\n@Component({\n imports: [SelectComponentComponent, SelectStepComponent],\n selector: 'select-step-and-component',\n styles: ['select-step { margin-right: 20px; }'],\n template: `\n `\n})\nexport class SelectStepAndComponentComponent {\n @Input() allowedComponentTypes: string[] = [];\n @Output() componentChange: EventEmitter = new EventEmitter();\n @Input() referenceComponent: ReferenceComponent;\n @Output() stepChange: EventEmitter = new EventEmitter();\n @Input() thisComponentId: string;\n\n constructor(private changeDetector: ChangeDetectorRef) {}\n\n protected stepChanged(nodeId: string): void {\n this.referenceComponent.nodeId = nodeId;\n this.changeDetector.detectChanges();\n this.stepChange.emit(this.referenceComponent);\n }\n\n protected componentChanged(componentId: string): void {\n this.referenceComponent.componentId = componentId;\n this.changeDetector.detectChanges();\n this.componentChange.emit(this.referenceComponent);\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "select-step { margin-right: 20px; }\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "changeDetector", + "type": "ChangeDetectorRef", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 27, + "jsdoctags": [ + { + "name": "changeDetector", + "type": "ChangeDetectorRef", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [] + }, + { + "name": "SelectStepComponent", + "id": "component-SelectStepComponent-8b6513247e8ea0dccd67ad6b898989578cc4f9efdd780d245f47b91abdce90ad26c4305caa03a40b6e43a801dc5899a6819557f952f9f43f7fa086500c20d31b", + "file": "src/app/authoring-tool/select-step/select-step.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "select-step", + "styleUrls": [], + "styles": [], + "template": " Step\n \n @for (nodeId of nodeIds; track nodeId) {\n {{ nodeToPositionAndTitle.get(nodeId) }}\n }\n \n ", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 20, + "type": "string", + "decorators": [] + } + ], + "outputsClass": [ + { + "name": "stepChangedEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 23, + "type": "EventEmitter" + } + ], + "propertiesClass": [ + { + "name": "nodeIds", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 21, + "modifierKind": [ + 124 + ] + }, + { + "name": "nodeToPositionAndTitle", + "defaultValue": "new Map()", + "deprecated": false, + "deprecationMessage": "", + "type": "Map", + "indexKey": "", + "optional": false, + "description": "", + "line": 22, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 27, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatSelectModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatSelectModule } from '@angular/material/select';\nimport { ProjectService } from '../../../assets/wise5/services/projectService';\n\n@Component({\n imports: [FormsModule, MatFormFieldModule, MatSelectModule],\n selector: 'select-step',\n template: `\n Step\n \n @for (nodeId of nodeIds; track nodeId) {\n {{ nodeToPositionAndTitle.get(nodeId) }}\n }\n \n `\n})\nexport class SelectStepComponent {\n @Input() nodeId: string;\n protected nodeIds: string[] = [];\n protected nodeToPositionAndTitle: Map = new Map();\n @Output() stepChangedEvent: EventEmitter = new EventEmitter();\n\n constructor(private projectService: ProjectService) {}\n\n ngOnInit(): void {\n this.nodeIds = this.projectService.getStepNodeIds();\n this.nodeIds.forEach((nodeId) =>\n this.nodeToPositionAndTitle.set(nodeId, this.projectService.getNodePositionAndTitle(nodeId))\n );\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 23, + "jsdoctags": [ + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [] + }, + { + "name": "SelectTagsComponent", + "id": "component-SelectTagsComponent-411653cb710d37c30dbf8ac91f911c1dd258371600a74dc98fc70a07573ec9a6a3bd45e086c532727481cbedf3f298b6175d90274542c2ed373749744c9b0490", + "file": "src/app/teacher/select-tags/select-tags.component.ts", + "encapsulation": [ + "ViewEncapsulation.None" + ], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "select-tags", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./select-tags.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "selectedTags", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "line": 30, + "type": "Tag[]", + "decorators": [] + } + ], + "outputsClass": [ + { + "name": "selectTagEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 31, + "type": "EventEmitter" + } + ], + "propertiesClass": [ + { + "name": "filteredTags", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "Tag[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractTagsMenuComponent" + } + }, + { + "name": "searchText", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractTagsMenuComponent" + } + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "AbstractTagsMenuComponent" + } + }, + { + "name": "tags", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "Tag[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractTagsMenuComponent" + } + } + ], + "methodsClass": [ + { + "name": "isSelected", + "args": [ + { + "name": "tag", + "type": "Tag", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 37, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "tag", + "type": "Tag", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "tagSearch", + "args": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "item", + "type": "Tag", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 33, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "term", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "item", + "type": "Tag", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "afterNewTag", + "args": [ + { + "name": "tag", + "type": "Tag", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 63, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "tag", + "type": "Tag", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractTagsMenuComponent" + } + }, + { + "name": "afterRetrieveUserTags", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 39, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractTagsMenuComponent" + } + }, + { + "name": "filterTags", + "args": [ + { + "name": "searchText", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 74, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "searchText", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractTagsMenuComponent" + } + }, + { + "name": "manageTags", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 81, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractTagsMenuComponent" + } + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 27, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractTagsMenuComponent" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 20, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractTagsMenuComponent" + } + }, + { + "name": "retrieveUserTags", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 31, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "AbstractTagsMenuComponent" + } + }, + { + "name": "subscribeToNewTag", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 52, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "AbstractTagsMenuComponent" + } + }, + { + "name": "subscribeToTagDeleted", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 65, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "AbstractTagsMenuComponent" + } + }, + { + "name": "subscribeToTagUpdated", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 41, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "AbstractTagsMenuComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatCheckboxModule", + "type": "module" + }, + { + "name": "MatDividerModule", + "type": "module" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatSelectModule", + "type": "module" + }, + { + "name": "NgSelectModule", + "type": "module" + }, + { + "name": "TagComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { AbstractTagsMenuComponent } from '../abstract-tags-menu/abstract-tags-menu.component';\nimport { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatSelectModule } from '@angular/material/select';\nimport { NgSelectModule } from '@ng-select/ng-select';\nimport { Tag } from '../../domain/tag';\nimport { TagComponent } from '../tag/tag.component';\n\n@Component({\n encapsulation: ViewEncapsulation.None,\n imports: [\n FormsModule,\n MatButtonModule,\n MatCheckboxModule,\n MatDividerModule,\n MatFormFieldModule,\n MatSelectModule,\n NgSelectModule,\n TagComponent\n ],\n selector: 'select-tags',\n styleUrl: './select-tags.component.scss',\n templateUrl: './select-tags.component.html'\n})\nexport class SelectTagsComponent extends AbstractTagsMenuComponent {\n @Input() selectedTags: Tag[] = [];\n @Output() selectTagEvent: EventEmitter = new EventEmitter();\n\n protected tagSearch(term: string, item: Tag): boolean {\n return item.text.toLowerCase().includes(term.toLowerCase());\n }\n\n protected isSelected(tag: Tag): boolean {\n return this.selectedTags.some((selectedTag) => selectedTag.text === tag.text);\n }\n}\n", + "styleUrl": "./select-tags.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [ + "AbstractTagsMenuComponent" + ], + "templateData": "\n \n \n \n \n \n \n \n \n \n \n \n\n" + }, + { + "name": "SelfDirectedInvestigationComponent", + "id": "component-SelfDirectedInvestigationComponent-ba6709ab1463161078441b1f9f79d320b5b812963bd8bed2579ef5052bd49fe350e6c7b2145ae3956022fae3cada3d560bf5c9d5d161dd6c74f6cf041a96f3e5", + "file": "src/assets/wise5/authoringTool/structure/self-directed-investigation/self-directed-investigation.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./self-directed-investigation.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "groupsPath", + "defaultValue": "`self-directed-investigation/groups.json`", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ConfigureStructureComponent" + } + }, + { + "name": "nodesPath", + "defaultValue": "`self-directed-investigation/nodes.json`", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ConfigureStructureComponent" + } + }, + { + "name": "structure", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ConfigureStructureComponent" + } + }, + { + "name": "structureDir", + "defaultValue": "'assets/wise5/authoringTool/structure'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ConfigureStructureComponent" + } + }, + { + "name": "submitting", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ConfigureStructureComponent" + } + }, + { + "name": "target", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ConfigureStructureComponent" + } + } + ], + "methodsClass": [ + { + "name": "addNodesToProject", + "args": [ + { + "name": "nodes", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 78, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodes", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ConfigureStructureComponent" + } + }, + { + "name": "chooseLocation", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 52, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ConfigureStructureComponent" + } + }, + { + "name": "fetchGroups", + "args": [ + { + "name": "groupsPath", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "this.groupsPath" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 40, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "groupsPath", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "this.groupsPath", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ConfigureStructureComponent" + } + }, + { + "name": "fetchNodes", + "args": [ + { + "name": "nodesPath", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "this.nodesPath" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 46, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodesPath", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "this.nodesPath", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ConfigureStructureComponent" + } + }, + { + "name": "injectGroup", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 32, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ConfigureStructureComponent" + } + }, + { + "name": "injectGroupAndNodes", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 27, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ConfigureStructureComponent" + } + }, + { + "name": "injectNodes", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 36, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ConfigureStructureComponent" + } + }, + { + "name": "injectUniqueIds", + "args": [ + { + "name": "structure", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 72, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "structure", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ConfigureStructureComponent" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ConfigureStructureComponent" + } + }, + { + "name": "saveAndGoBackToProjectHome", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 86, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ConfigureStructureComponent" + } + }, + { + "name": "submit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 59, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ConfigureStructureComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatDivider" + }, + { + "name": "MatButton" + }, + { + "name": "RouterLink" + }, + { + "name": "MatProgressBar" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { ConfigureStructureComponent } from '../configure-structure.component';\nimport { MatProgressBar } from '@angular/material/progress-bar';\nimport { RouterLink } from '@angular/router';\nimport { MatButton } from '@angular/material/button';\nimport { MatDivider } from '@angular/material/divider';\n\n@Component({\n imports: [MatDivider, MatButton, RouterLink, MatProgressBar],\n styleUrl: '../../add-content.scss',\n templateUrl: './self-directed-investigation.component.html'\n})\nexport class SelfDirectedInvestigationComponent extends ConfigureStructureComponent {\n protected groupsPath = `self-directed-investigation/groups.json`;\n protected nodesPath = `self-directed-investigation/nodes.json`;\n}\n", + "styleUrl": "../../add-content.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [ + "ConfigureStructureComponent" + ], + "templateData": "
    Self-Directed Investigation
    \n

    \n The Self-Directed Investigation KI lesson structure helps students ask research questions about a\n science topic, guides them through refining their initial questions to researchable questions, and\n supports them in finding and evaluating evidence using online resources of their choice. Students\n synthesize their findings into a product of your choice.\n

    \n
    \n \n
    \n \n \n \n \n @if (submitting) {\n \n }\n Submit\n \n
    \n
    \n" + }, + { + "name": "ShareProjectDialogComponent", + "id": "component-ShareProjectDialogComponent-c71ce984c8f81ecc5ad5e02ee4f5b12199e371d0b6bc4a80a8296efbc5ea247c68684c122f28843f893fd5469d4f7921402f2feb5ff6276a0c61bbdac560cfe2", + "file": "src/app/modules/library/share-project-dialog/share-project-dialog.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "app-share-project-dialog", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./share-project-dialog.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "data", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 23, + "decorators": [ + { + "name": "Inject", + "stringifiedArguments": "MAT_DIALOG_DATA" + } + ], + "modifierKind": [ + 171, + 125 + ], + "inheritance": { + "file": "ShareItemDialogComponent" + } + }, + { + "name": "dataSource", + "defaultValue": "new MatTableDataSource()", + "deprecated": false, + "deprecationMessage": "", + "type": "MatTableDataSource", + "indexKey": "", + "optional": false, + "description": "", + "line": 17 + }, + { + "name": "dialogRef", + "deprecated": false, + "deprecationMessage": "", + "type": "MatDialogRef", + "indexKey": "", + "optional": false, + "description": "", + "line": 22, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "ShareItemDialogComponent" + } + }, + { + "name": "displayedColumns", + "defaultValue": "['name', 'permissions']", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 18 + }, + { + "name": "duplicate", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 19 + }, + { + "name": "libraryService", + "deprecated": false, + "deprecationMessage": "", + "type": "LibraryService", + "indexKey": "", + "optional": false, + "description": "", + "line": 24, + "modifierKind": [ + 125 + ] + }, + { + "name": "snackBar", + "deprecated": false, + "deprecationMessage": "", + "type": "MatSnackBar", + "indexKey": "", + "optional": false, + "description": "", + "line": 26, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "ShareItemDialogComponent" + } + }, + { + "name": "teacherService", + "deprecated": false, + "deprecationMessage": "", + "type": "TeacherService", + "indexKey": "", + "optional": false, + "description": "", + "line": 25, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "ShareItemDialogComponent" + } + }, + { + "name": "allTeacherUsernames", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "inheritance": { + "file": "ShareItemDialogComponent" + } + }, + { + "name": "filteredTeacherUsernames", + "deprecated": false, + "deprecationMessage": "", + "type": "Observable", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "inheritance": { + "file": "ShareItemDialogComponent" + } + }, + { + "name": "owner", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "inheritance": { + "file": "ShareItemDialogComponent" + } + }, + { + "name": "project", + "deprecated": false, + "deprecationMessage": "", + "type": "Project", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "inheritance": { + "file": "ShareItemDialogComponent" + } + }, + { + "name": "projectId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "inheritance": { + "file": "ShareItemDialogComponent" + } + }, + { + "name": "runId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "inheritance": { + "file": "ShareItemDialogComponent" + } + }, + { + "name": "sharedOwners", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 20, + "inheritance": { + "file": "ShareItemDialogComponent" + } + }, + { + "name": "sharedOwners$", + "defaultValue": "new BehaviorSubject(this.sharedOwners)", + "deprecated": false, + "deprecationMessage": "", + "type": "BehaviorSubject", + "indexKey": "", + "optional": false, + "description": "", + "line": 21, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ShareItemDialogComponent" + } + }, + { + "name": "teacherSearchControl", + "defaultValue": "new FormControl()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "inheritance": { + "file": "ShareItemDialogComponent" + } + } + ], + "methodsClass": [ + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 37, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ShareItemDialogComponent" + } + }, + { + "name": "populatePermissions", + "args": [ + { + "name": "sharedOwner", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 52, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "sharedOwner", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ShareItemDialogComponent" + } + }, + { + "name": "setDefaultProjectPermissions", + "args": [ + { + "name": "sharedOwner", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 56, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "sharedOwner", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ShareItemDialogComponent" + } + }, + { + "name": "shareProject", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 64, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "unshareProject", + "args": [ + { + "name": "sharedOwner", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 86, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "sharedOwner", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "_filter", + "args": [ + { + "name": "value", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string[]", + "typeParameters": [], + "line": 45, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 125 + ], + "jsdoctags": [ + { + "name": "value", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ShareItemDialogComponent" + } + }, + { + "name": "addProjectPermissions", + "args": [ + { + "name": "sharedOwner", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 64, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "sharedOwner", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ShareItemDialogComponent" + } + }, + { + "name": "addProjectPermissionToSharedOwner", + "args": [ + { + "name": "sharedOwnerId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "permissionId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 112, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "sharedOwnerId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "permissionId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ShareItemDialogComponent" + } + }, + { + "name": "addSharedOwner", + "args": [ + { + "name": "sharedOwner", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 139, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "sharedOwner", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ShareItemDialogComponent" + } + }, + { + "name": "getSharedOwner", + "args": [ + { + "name": "sharedOwnerId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "sharedOwnerId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ShareItemDialogComponent" + } + }, + { + "name": "getSharedOwners", + "args": [], + "optional": false, + "returnType": "BehaviorSubject", + "typeParameters": [], + "line": 41, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ShareItemDialogComponent" + } + }, + { + "name": "getSharedProjectOwner", + "args": [ + { + "name": "userId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "item", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 74, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "userId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "item", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ShareItemDialogComponent" + } + }, + { + "name": "isSharedOwner", + "args": [ + { + "name": "username", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 130, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "username", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ShareItemDialogComponent" + } + }, + { + "name": "notifyRunPermissionChange", + "args": [ + { + "name": "sharedOwner", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 124, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "sharedOwner", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ShareItemDialogComponent" + } + }, + { + "name": "populateSharedOwners", + "args": [ + { + "name": "sharedOwners", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 53, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "sharedOwners", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ShareItemDialogComponent" + } + }, + { + "name": "projectPermissionChanged", + "args": [ + { + "name": "project", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "sharedOwnerId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "permissionId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isAddingPermission", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 92, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "project", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "sharedOwnerId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "permissionId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "isAddingPermission", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ShareItemDialogComponent" + } + }, + { + "name": "removeProjectPermissionFromSharedOwner", + "args": [ + { + "name": "sharedOwnerId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "permissionId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 118, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "sharedOwnerId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "permissionId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ShareItemDialogComponent" + } + }, + { + "name": "removeSharedOwner", + "args": [ + { + "name": "sharedOwner", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 147, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "sharedOwner", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ShareItemDialogComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Inject } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { MatTableDataSource } from '@angular/material/table';\nimport { TeacherService } from '../../../teacher/teacher.service';\nimport { LibraryService } from '../../../services/library.service';\nimport { ShareItemDialogComponent } from '../share-item-dialog/share-item-dialog.component';\nimport { Project } from '../../../domain/project';\n\n@Component({\n selector: 'app-share-project-dialog',\n standalone: false,\n styleUrl: './share-project-dialog.component.scss',\n templateUrl: './share-project-dialog.component.html'\n})\nexport class ShareProjectDialogComponent extends ShareItemDialogComponent {\n dataSource: MatTableDataSource = new MatTableDataSource();\n displayedColumns: string[] = ['name', 'permissions'];\n duplicate: boolean = false;\n\n constructor(\n public dialogRef: MatDialogRef,\n @Inject(MAT_DIALOG_DATA) public data: any,\n public libraryService: LibraryService,\n public teacherService: TeacherService,\n public snackBar: MatSnackBar\n ) {\n super(dialogRef, data, teacherService, snackBar);\n this.project = data.project;\n this.projectId = data.project.id;\n this.libraryService.getProjectInfo(this.projectId).subscribe((project: Project) => {\n this.project = project;\n this.populateSharedOwners(project.sharedOwners);\n });\n }\n\n ngOnInit() {\n super.ngOnInit();\n this.getSharedOwners().subscribe((sharedOwners) => {\n let owners = [...sharedOwners];\n owners.reverse();\n if (this.project.owner) {\n owners.unshift({\n sharedOwner: this.project.owner,\n isOwner: true\n });\n }\n this.dataSource = new MatTableDataSource(owners);\n });\n }\n\n populatePermissions(sharedOwner) {\n this.addProjectPermissions(sharedOwner);\n }\n\n setDefaultProjectPermissions(sharedOwner) {\n sharedOwner.projectPermissions = {\n 1: true, // View the project\n 2: false, // Edit the project\n 16: false // Admin (read, write, share)\n };\n }\n\n shareProject() {\n this.duplicate = false;\n const sharedOwnerUsername = this.teacherSearchControl.value;\n if (\n this.project.owner.username !== sharedOwnerUsername &&\n !this.isSharedOwner(sharedOwnerUsername)\n ) {\n this.teacherService\n .addSharedProjectOwner(this.project.id, sharedOwnerUsername)\n .subscribe((newSharedOwner) => {\n if (newSharedOwner != null) {\n this.setDefaultProjectPermissions(newSharedOwner);\n this.addSharedOwner(newSharedOwner);\n this.teacherSearchControl.setValue('');\n }\n });\n } else {\n this.duplicate = true;\n }\n document.getElementById('share-project-dialog-search').blur();\n }\n\n unshareProject(sharedOwner) {\n this.teacherService\n .removeSharedProjectOwner(this.project.id, sharedOwner.username)\n .subscribe((response) => {\n this.removeSharedOwner(sharedOwner);\n });\n }\n}\n", + "styleUrl": "./share-project-dialog.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "dialogRef", + "type": "MatDialogRef", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "libraryService", + "type": "LibraryService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "teacherService", + "type": "TeacherService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "snackBar", + "type": "MatSnackBar", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 19, + "jsdoctags": [ + { + "name": "dialogRef", + "type": "MatDialogRef", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "libraryService", + "type": "LibraryService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "teacherService", + "type": "TeacherService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "snackBar", + "type": "MatSnackBar", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "ShareItemDialogComponent" + ], + "templateData": "

    Share Unit

    \n\n

    \n {{ project.name }} (Unit ID: {{ project.id }})\n

    \n

    \n Sharing a curriculum unit allows other WISE teachers to use it with their own students and\n optionally edit the unit's content.\n

    \n

    Shared units appear in a teacher's \"My Units\" library.

    \n \n \n Find a teacher\n search\n \n \n close\n \n @if (duplicate && allTeacherUsernames.includes(teacherSearchControl.value)) {\n Teacher is already on shared list.\n }\n \n @for (teacherUsername of filteredTeacherUsernames | async; track teacherUsername) {\n \n {{ teacherUsername }}\n \n }\n \n \n \n \n \n \n \n \n \n \n \n \n \n
    Name\n @if (sharedOwner.isOwner) {\n {{ project.owner.firstName }} {{ project.owner.lastName }}\n } @else {\n {{ sharedOwner.firstName }} {{ sharedOwner.lastName }} (Revoke)\n }\n Permissions\n @if (sharedOwner.isOwner) {\n Owner. Full permissions.\n }\n @if (!sharedOwner.isOwner) {\n
    \n \n View & Use with Students\n \n \n Edit Unit Content\n \n
    \n }\n
    \n
    \n\n \n\n" + }, + { + "name": "ShareRunCodeDialogComponent", + "id": "component-ShareRunCodeDialogComponent-54eb5d24ef7a52968e948373c5464bf240ab505f13e03e1c6f14ee77346d555c9d0e0aafb02c2772301325bb62ba219552912bba6a89dbbf711ff3e7be603925", + "file": "src/app/teacher/share-run-code-dialog/share-run-code-dialog.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./share-run-code-dialog.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "accessLinks", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 28, + "modifierKind": [ + 124 + ] + }, + { + "name": "code", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 29, + "modifierKind": [ + 124 + ] + }, + { + "name": "link", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 30, + "modifierKind": [ + 124 + ] + }, + { + "name": "run", + "deprecated": false, + "deprecationMessage": "", + "type": "TeacherRun", + "indexKey": "", + "optional": false, + "description": "", + "line": 33, + "decorators": [ + { + "name": "Inject", + "stringifiedArguments": "MAT_DIALOG_DATA" + } + ], + "modifierKind": [ + 171, + 125 + ] + } + ], + "methodsClass": [ + { + "name": "checkClassroomAuthorization", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 63, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "copyMsg", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 51, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "getClassroomCourses", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 81, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "getPeriodFromAccessLink", + "args": [ + { + "name": "link", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 93, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "link", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isGoogleClassroomEnabled", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 59, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "isGoogleUser", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 55, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 42, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "ClipboardModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatDialogModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatSnackBarModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Inject } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialog, MatDialogModule } from '@angular/material/dialog';\nimport { MatSnackBar, MatSnackBarModule } from '@angular/material/snack-bar';\nimport { ConfigService } from '../../services/config.service';\nimport { UserService } from '../../services/user.service';\nimport { TeacherRun } from '../teacher-run';\nimport { TeacherService } from '../teacher.service';\nimport { ListClassroomCoursesDialogComponent } from '../list-classroom-courses-dialog/list-classroom-courses-dialog.component';\nimport { AccessLinkService } from '../../services/accessLinkService';\nimport { MatIconModule } from '@angular/material/icon';\nimport { ClipboardModule } from '@angular/cdk/clipboard';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n imports: [\n ClipboardModule,\n MatButtonModule,\n MatDialogModule,\n MatIconModule,\n MatSnackBarModule,\n MatTooltipModule\n ],\n styleUrl: './share-run-code-dialog.component.scss',\n templateUrl: './share-run-code-dialog.component.html'\n})\nexport class ShareRunCodeDialogComponent {\n protected accessLinks: string[] = [];\n protected code: string;\n protected link: string;\n\n constructor(\n @Inject(MAT_DIALOG_DATA) public run: TeacherRun,\n private accessLinkService: AccessLinkService,\n private dialog: MatDialog,\n private snackBar: MatSnackBar,\n private teacherService: TeacherService,\n private userService: UserService,\n private configService: ConfigService\n ) {}\n\n ngOnInit(): void {\n this.code = this.run.runCode;\n const host = this.configService.getWISEHostname() + this.configService.getContextPath();\n this.link = `${host}/login?accessCode=${this.code}`;\n if (this.run.isSurveyRun()) {\n this.accessLinks = this.accessLinkService.getAccessLinks(this.run.runCode, this.run.periods);\n }\n }\n\n protected copyMsg(): void {\n this.snackBar.open($localize`Copied to clipboard.`);\n }\n\n protected isGoogleUser(): boolean {\n return this.userService.isGoogleUser();\n }\n\n protected isGoogleClassroomEnabled(): boolean {\n return this.configService.isGoogleClassroomEnabled();\n }\n\n protected checkClassroomAuthorization(): void {\n this.teacherService\n .getClassroomAuthorizationUrl(this.userService.getUser().getValue().username)\n .subscribe(({ authorizationUrl }) => {\n if (authorizationUrl == null) {\n this.getClassroomCourses();\n } else {\n const authWindow = window.open(authorizationUrl, 'authorize', 'width=600,height=800');\n const timer = setInterval(() => {\n if (authWindow.closed) {\n clearInterval(timer);\n this.checkClassroomAuthorization();\n }\n }, 1000);\n }\n });\n }\n\n private getClassroomCourses(): void {\n this.teacherService\n .getClassroomCourses(this.userService.getUser().getValue().username)\n .subscribe((courses) => {\n const panelClass = courses.length ? 'dialog-md' : '';\n this.dialog.open(ListClassroomCoursesDialogComponent, {\n data: { run: this.run, courses },\n panelClass: panelClass\n });\n });\n }\n\n protected getPeriodFromAccessLink(link: string): string {\n return this.accessLinkService.getPeriodFromAccessLink(link);\n }\n}\n", + "styleUrl": "./share-run-code-dialog.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "run", + "type": "TeacherRun", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "accessLinkService", + "type": "AccessLinkService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "snackBar", + "type": "MatSnackBar", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "teacherService", + "type": "TeacherService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "userService", + "type": "UserService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 30, + "jsdoctags": [ + { + "name": "run", + "type": "TeacherRun", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "accessLinkService", + "type": "AccessLinkService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "snackBar", + "type": "MatSnackBar", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "teacherService", + "type": "TeacherService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "userService", + "type": "UserService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "@if (run.isSurveyRun()) {\n

    Share with Participants

    \n} @else {\n

    Share with Students

    \n}\n\n
    \n

    \n {{ run.project.name }} (Run ID: {{ run.id }})\n

    \n @if (run.isSurveyRun()) {\n

    \n This is a survey unit. Participants complete survey units anonymously and do not need a WISE\n account.\n

    \n

    Copy this link to share with participants:

    \n

    \n \n content_copy\n {{ accessLinks[0] }}\n \n

    \n } @else {\n

    Copy this link to share with your students:

    \n

    \n \n content_copy\n {{ link }}\n \n

    \n

    \n Students with WISE accounts can also select Add Unit+ and type the Access\n Code:\n

    \n

    \n \n content_copy\n {{ run.runCode }}\n \n

    \n @if (isGoogleUser() && isGoogleClassroomEnabled() && run.project.wiseVersion !== 4) {\n

    Add as an assignment in Google Classroom:

    \n

    \n \n \n \"Google\n Share to Google Classroom\n \n \n

    \n }\n }\n
    \n
    \n\n \n\n" + }, + { + "name": "ShareRunDialogComponent", + "id": "component-ShareRunDialogComponent-aea8f87b314819c6aa3d3b306fac9bc8afa037794d5dfea864c5f5e20feca2e974bd41745a1cffb46cd6267f0f15f1700a8fb89896c6affb30172780b9080901", + "file": "src/app/teacher/share-run-dialog/share-run-dialog.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [ + "\n table,\n .mat-mdc-form-field {\n width: 100%;\n }\n " + ], + "templateUrl": [ + "./share-run-dialog.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "data", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 68, + "decorators": [ + { + "name": "Inject", + "stringifiedArguments": "MAT_DIALOG_DATA" + } + ], + "modifierKind": [ + 171, + 125 + ], + "inheritance": { + "file": "ShareItemDialogComponent" + } + }, + { + "name": "dataSource", + "defaultValue": "new MatTableDataSource()", + "deprecated": false, + "deprecationMessage": "", + "type": "MatTableDataSource", + "indexKey": "", + "optional": false, + "description": "", + "line": 59 + }, + { + "name": "dialog", + "deprecated": false, + "deprecationMessage": "", + "type": "MatDialog", + "indexKey": "", + "optional": false, + "description": "", + "line": 73, + "modifierKind": [ + 125 + ] + }, + { + "name": "dialogRef", + "deprecated": false, + "deprecationMessage": "", + "type": "MatDialogRef", + "indexKey": "", + "optional": false, + "description": "", + "line": 67, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "ShareItemDialogComponent" + } + }, + { + "name": "displayedColumns", + "defaultValue": "['name', 'permissions']", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 60 + }, + { + "name": "isDuplicateSharedTeacher", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 61 + }, + { + "name": "isOwner", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 62 + }, + { + "name": "isTransfer", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 63 + }, + { + "name": "run", + "deprecated": false, + "deprecationMessage": "", + "type": "TeacherRun", + "indexKey": "", + "optional": false, + "description": "", + "line": 58 + }, + { + "name": "snackBar", + "deprecated": false, + "deprecationMessage": "", + "type": "MatSnackBar", + "indexKey": "", + "optional": false, + "description": "", + "line": 72, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "ShareItemDialogComponent" + } + }, + { + "name": "teacherService", + "deprecated": false, + "deprecationMessage": "", + "type": "TeacherService", + "indexKey": "", + "optional": false, + "description": "", + "line": 69, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "ShareItemDialogComponent" + } + }, + { + "name": "transferRunWarning", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 64 + }, + { + "name": "allTeacherUsernames", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "inheritance": { + "file": "ShareItemDialogComponent" + } + }, + { + "name": "filteredTeacherUsernames", + "deprecated": false, + "deprecationMessage": "", + "type": "Observable", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "inheritance": { + "file": "ShareItemDialogComponent" + } + }, + { + "name": "owner", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "inheritance": { + "file": "ShareItemDialogComponent" + } + }, + { + "name": "project", + "deprecated": false, + "deprecationMessage": "", + "type": "Project", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "inheritance": { + "file": "ShareItemDialogComponent" + } + }, + { + "name": "projectId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "inheritance": { + "file": "ShareItemDialogComponent" + } + }, + { + "name": "runId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "inheritance": { + "file": "ShareItemDialogComponent" + } + }, + { + "name": "sharedOwners", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 20, + "inheritance": { + "file": "ShareItemDialogComponent" + } + }, + { + "name": "sharedOwners$", + "defaultValue": "new BehaviorSubject(this.sharedOwners)", + "deprecated": false, + "deprecationMessage": "", + "type": "BehaviorSubject", + "indexKey": "", + "optional": false, + "description": "", + "line": 21, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ShareItemDialogComponent" + } + }, + { + "name": "teacherSearchControl", + "defaultValue": "new FormControl()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "inheritance": { + "file": "ShareItemDialogComponent" + } + } + ], + "methodsClass": [ + { + "name": "addRunPermissions", + "args": [ + { + "name": "sharedOwner", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 109, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "sharedOwner", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addRunPermissionToSharedOwner", + "args": [ + { + "name": "sharedOwnerId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "permissionId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 153, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "sharedOwnerId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "permissionId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "closeTransferRunDialog", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 229, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "completeRunOwnershipTransfer", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 190, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "copyProject", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 235, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 90, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ShareItemDialogComponent" + } + }, + { + "name": "openTransferRunDialog", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 225, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "populatePermissions", + "args": [ + { + "name": "sharedOwner", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 104, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "sharedOwner", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ShareItemDialogComponent" + } + }, + { + "name": "removeRunPermissionFromSharedOwner", + "args": [ + { + "name": "sharedOwnerId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "permissionId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 159, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "sharedOwnerId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "permissionId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "runPermissionChanged", + "args": [ + { + "name": "sharedOwnerId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "permissionId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isAddingPermission", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 133, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "sharedOwnerId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "permissionId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "isAddingPermission", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setDefaultProjectPermissions", + "args": [ + { + "name": "sharedOwner", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 125, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "sharedOwner", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ShareItemDialogComponent" + } + }, + { + "name": "setDefaultRunPermissions", + "args": [ + { + "name": "sharedOwner", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 116, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "sharedOwner", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "shareRun", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 165, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "transferRunOwnership", + "args": [ + { + "name": "run", + "type": "TeacherRun", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 206, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "run", + "type": "TeacherRun", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "unshareRun", + "args": [ + { + "name": "sharedOwner", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 217, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "sharedOwner", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "updateAllOwners", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 94, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "updateRunAndProjectPermissions", + "args": [ + { + "name": "run", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 201, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "run", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "_filter", + "args": [ + { + "name": "value", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string[]", + "typeParameters": [], + "line": 45, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 125 + ], + "jsdoctags": [ + { + "name": "value", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ShareItemDialogComponent" + } + }, + { + "name": "addProjectPermissions", + "args": [ + { + "name": "sharedOwner", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 64, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "sharedOwner", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ShareItemDialogComponent" + } + }, + { + "name": "addProjectPermissionToSharedOwner", + "args": [ + { + "name": "sharedOwnerId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "permissionId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 112, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "sharedOwnerId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "permissionId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ShareItemDialogComponent" + } + }, + { + "name": "addSharedOwner", + "args": [ + { + "name": "sharedOwner", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 139, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "sharedOwner", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ShareItemDialogComponent" + } + }, + { + "name": "getSharedOwner", + "args": [ + { + "name": "sharedOwnerId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "sharedOwnerId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ShareItemDialogComponent" + } + }, + { + "name": "getSharedOwners", + "args": [], + "optional": false, + "returnType": "BehaviorSubject", + "typeParameters": [], + "line": 41, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ShareItemDialogComponent" + } + }, + { + "name": "getSharedProjectOwner", + "args": [ + { + "name": "userId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "item", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 74, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "userId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "item", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ShareItemDialogComponent" + } + }, + { + "name": "isSharedOwner", + "args": [ + { + "name": "username", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 130, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "username", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ShareItemDialogComponent" + } + }, + { + "name": "notifyRunPermissionChange", + "args": [ + { + "name": "sharedOwner", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 124, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "sharedOwner", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ShareItemDialogComponent" + } + }, + { + "name": "populateSharedOwners", + "args": [ + { + "name": "sharedOwners", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 53, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "sharedOwners", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ShareItemDialogComponent" + } + }, + { + "name": "projectPermissionChanged", + "args": [ + { + "name": "project", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "sharedOwnerId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "permissionId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isAddingPermission", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 92, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "project", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "sharedOwnerId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "permissionId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "isAddingPermission", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ShareItemDialogComponent" + } + }, + { + "name": "removeProjectPermissionFromSharedOwner", + "args": [ + { + "name": "sharedOwnerId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "permissionId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 118, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "sharedOwnerId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "permissionId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ShareItemDialogComponent" + } + }, + { + "name": "removeSharedOwner", + "args": [ + { + "name": "sharedOwner", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 147, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "sharedOwner", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ShareItemDialogComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "ReactiveFormsModule", + "type": "module" + }, + { + "name": "MatDialogModule", + "type": "module" + }, + { + "name": "MatSnackBarModule", + "type": "module" + }, + { + "name": "MatTableModule", + "type": "module" + }, + { + "name": "MatCheckboxModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatInputModule", + "type": "module" + }, + { + "name": "MatAutocompleteModule", + "type": "module" + }, + { + "name": "MatOptionModule", + "type": "module" + }, + { + "name": "MatDividerModule", + "type": "module" + }, + { + "name": "RouterModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport {\n MatDialogModule,\n MAT_DIALOG_DATA,\n MatDialogRef,\n MatDialog\n} from '@angular/material/dialog';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatOptionModule } from '@angular/material/core';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { RouterModule } from '@angular/router';\nimport { TeacherService } from '../teacher.service';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { MatTableDataSource } from '@angular/material/table';\nimport { ShareItemDialogComponent } from '../../modules/library/share-item-dialog/share-item-dialog.component';\nimport { UserService } from '../../services/user.service';\nimport { UtilService } from '../../services/util.service';\nimport { TeacherRun } from '../teacher-run';\nimport { CopyProjectDialogComponent } from '../../modules/library/copy-project-dialog/copy-project-dialog.component';\n@Component({\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n MatDialogModule,\n MatSnackBarModule,\n MatTableModule,\n MatCheckboxModule,\n MatButtonModule,\n MatIconModule,\n MatFormFieldModule,\n MatInputModule,\n MatAutocompleteModule,\n MatOptionModule,\n MatDividerModule,\n RouterModule\n ],\n styles: [\n `\n table,\n .mat-mdc-form-field {\n width: 100%;\n }\n `\n ],\n templateUrl: './share-run-dialog.component.html'\n})\nexport class ShareRunDialogComponent extends ShareItemDialogComponent {\n run: TeacherRun;\n dataSource: MatTableDataSource = new MatTableDataSource();\n displayedColumns: string[] = ['name', 'permissions'];\n isDuplicateSharedTeacher: boolean = false;\n isOwner: boolean = false;\n isTransfer: boolean = false;\n transferRunWarning: boolean = false;\n\n constructor(\n public dialogRef: MatDialogRef,\n @Inject(MAT_DIALOG_DATA) public data: any,\n public teacherService: TeacherService,\n private userService: UserService,\n private utilService: UtilService,\n public snackBar: MatSnackBar,\n public dialog: MatDialog\n ) {\n super(dialogRef, data, teacherService, snackBar);\n this.teacherService.getRun(this.data.run.id).subscribe((run: TeacherRun) => {\n this.run = new TeacherRun(run);\n this.runId = this.run.id;\n this.project = this.run.project;\n this.owner = this.run.owner;\n this.isOwner = this.run.isOwner(this.userService.getUserId());\n this.populateSharedOwners(this.run.sharedOwners);\n this.getSharedOwners().subscribe((sharedOwners) => {\n this.sharedOwners = sharedOwners.sort(this.utilService.sortByUsername);\n this.updateAllOwners();\n });\n });\n }\n\n ngOnInit() {\n super.ngOnInit();\n }\n\n updateAllOwners() {\n let allOwners = [];\n allOwners.push({\n sharedOwner: this.run.owner,\n isOwner: true\n });\n allOwners = allOwners.concat(this.sharedOwners);\n this.dataSource = new MatTableDataSource(allOwners);\n }\n\n populatePermissions(sharedOwner) {\n this.addRunPermissions(sharedOwner);\n this.addProjectPermissions(sharedOwner);\n }\n\n addRunPermissions(sharedOwner) {\n this.setDefaultRunPermissions(sharedOwner);\n for (let permission of sharedOwner.permissions) {\n sharedOwner.runPermissions[permission] = true;\n }\n }\n\n setDefaultRunPermissions(sharedOwner) {\n sharedOwner.runPermissions = {\n 1: true, // View student work\n 2: false, // Grade and manage run\n 3: false, // View student names\n 16: false // Admin (read, write, share)\n };\n }\n\n setDefaultProjectPermissions(sharedOwner) {\n sharedOwner.projectPermissions = {\n 1: false, // View the project\n 2: false, // Edit the project\n 16: false // Admin (read, write, share)\n };\n }\n\n runPermissionChanged(sharedOwnerId, permissionId, isAddingPermission) {\n if (isAddingPermission) {\n this.teacherService\n .addSharedOwnerRunPermission(this.runId, sharedOwnerId, permissionId)\n .subscribe((response: any) => {\n if (response.status === 'success') {\n this.addRunPermissionToSharedOwner(sharedOwnerId, permissionId);\n }\n });\n } else {\n this.teacherService\n .removeSharedOwnerRunPermission(this.runId, sharedOwnerId, permissionId)\n .subscribe((response: any) => {\n if (response.status === 'success') {\n this.removeRunPermissionFromSharedOwner(sharedOwnerId, permissionId);\n }\n });\n }\n }\n\n addRunPermissionToSharedOwner(sharedOwnerId, permissionId) {\n const sharedOwner = this.getSharedOwner(sharedOwnerId);\n sharedOwner.runPermissions[permissionId] = true;\n this.notifyRunPermissionChange(sharedOwner);\n }\n\n removeRunPermissionFromSharedOwner(sharedOwnerId, permissionId) {\n const sharedOwner = this.getSharedOwner(sharedOwnerId);\n sharedOwner.runPermissions[permissionId] = false;\n this.notifyRunPermissionChange(sharedOwner);\n }\n\n shareRun() {\n this.isDuplicateSharedTeacher = false;\n const sharedOwnerUsername = this.teacherSearchControl.value;\n if (\n this.run.owner.username !== sharedOwnerUsername &&\n (!this.isSharedOwner(sharedOwnerUsername) || this.isTransfer)\n ) {\n if (this.isTransfer) {\n this.transferRunWarning = true;\n } else {\n this.teacherService\n .addSharedOwner(this.runId, sharedOwnerUsername)\n .subscribe((newSharedOwner) => {\n this.setDefaultRunPermissions(newSharedOwner);\n this.setDefaultProjectPermissions(newSharedOwner);\n this.addSharedOwner(newSharedOwner);\n this.teacherSearchControl.setValue('');\n });\n document.getElementById('share-run-dialog-search').blur();\n }\n } else {\n this.isDuplicateSharedTeacher = true;\n }\n }\n\n completeRunOwnershipTransfer() {\n const newOwnerUsername = this.teacherSearchControl.value;\n this.teacherService.transferRunOwnership(this.runId, newOwnerUsername).subscribe((run) => {\n if (run != null) {\n this.updateRunAndProjectPermissions(run);\n this.closeTransferRunDialog();\n }\n this.teacherSearchControl.setValue('');\n });\n }\n\n updateRunAndProjectPermissions(run) {\n this.run = new TeacherRun(run);\n this.transferRunOwnership(this.run);\n }\n\n transferRunOwnership(run: TeacherRun) {\n this.sharedOwners = [];\n this.project = run.project;\n this.owner = run.owner;\n this.isOwner = run.isOwner(this.userService.getUserId());\n this.populateSharedOwners(run.sharedOwners);\n this.snackBar.open(\n $localize`Transferred classroom unit ownership to ${run.owner.firstName}:firstName: ${run.owner.lastName}:lastName:.`\n );\n }\n\n unshareRun(sharedOwner) {\n this.teacherService\n .removeSharedOwner(this.runId, sharedOwner.username)\n .subscribe((response) => {\n this.removeSharedOwner(sharedOwner);\n });\n }\n\n openTransferRunDialog() {\n this.isTransfer = true;\n }\n\n closeTransferRunDialog() {\n this.isTransfer = false;\n this.transferRunWarning = false;\n this.teacherSearchControl.setValue('');\n }\n\n protected copyProject(): void {\n this.dialog.open(CopyProjectDialogComponent, {\n data: this.project,\n panelClass: 'dialog-sm'\n });\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "\n table,\n .mat-mdc-form-field {\n width: 100%;\n }\n \n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "dialogRef", + "type": "MatDialogRef", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "teacherService", + "type": "TeacherService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "userService", + "type": "UserService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "utilService", + "type": "UtilService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "snackBar", + "type": "MatSnackBar", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 64, + "jsdoctags": [ + { + "name": "dialogRef", + "type": "MatDialogRef", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "teacherService", + "type": "TeacherService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "userService", + "type": "UserService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "utilService", + "type": "UtilService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "snackBar", + "type": "MatSnackBar", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "ShareItemDialogComponent" + ], + "templateData": "@if (!isTransfer) {\n

    Share Classroom Access

    \n}\n@if (isTransfer) {\n \n Transfer Classroom Unit\n \n @if (transferRunWarning) {\n warning\n }\n \n}\n@if (run != null) {\n \n
    \n

    \n {{ run.name }} (Run ID: {{ run.id }})\n

    \n @if (!isTransfer) {\n

    \n Sharing access allows other WISE teachers to view student work and optionally view\n student names, grade, manage teams, and edit unit content.\n

    \n

    \n If you have customized the content in this unit and want to share so other teachers can\n use with their students, make a copy of the\n unit.\n

    \n \n }\n @if (!transferRunWarning) {\n \n Find a teacher\n search\n \n \n close\n \n @if (\n isDuplicateSharedTeacher && allTeacherUsernames.includes(teacherSearchControl.value)\n ) {\n \n Teacher is already on shared list.\n \n }\n \n @for (teacherUsername of filteredTeacherUsernames | async; track teacherUsername) {\n \n {{ teacherUsername }}\n \n }\n \n \n }\n @if (!isTransfer) {\n \n \n \n \n \n \n \n \n \n \n \n
    Name\n @if (sharedOwner.isOwner) {\n {{ run.owner.firstName }} {{ run.owner.lastName }}\n }\n @if (!sharedOwner.isOwner) {\n {{ sharedOwner.firstName }} {{ sharedOwner.lastName }} (Revoke)\n }\n Permissions\n @if (sharedOwner.isOwner) {\n Owner. Full permissions.\n }\n @if (!sharedOwner.isOwner) {\n
    \n \n View Student Work\n \n \n View Student Names\n \n \n Grade and Manage\n \n \n Edit Unit Content\n \n
    \n }\n
    \n }\n @if (transferRunWarning) {\n

    \n Are you sure you want to make {{ teacherSearchControl.value }} the new owner of this unit?\n

    \n

    \n You will still be able to access the unit but the new owner will have the ability to take\n away or change your access permissions.\n

    \n }\n
    \n
    \n}\n\n @if (isOwner && !isTransfer) {\n \n }\n @if (isTransfer) {\n \n }\n @if (transferRunWarning) {\n \n }\n @if (!isTransfer) {\n \n }\n\n" + }, + { + "name": "ShowGroupWorkAuthoringComponent", + "id": "component-ShowGroupWorkAuthoringComponent-2caf9b05c924a3f162051567b7e2d039a5ba60f3edb63cdd4a1cd6f3a01d11f2fcc877683e231f3eb91292f760ad8281f21ec2655c86046a1ffba973903bee20", + "file": "src/assets/wise5/components/showGroupWork/show-group-work-authoring/show-group-work-authoring.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "show-group-work-authoring", + "styleUrls": [], + "styles": [ + ".layout-select { margin: 8px 0 16px; } .bottom-spacing { margin-bottom: 10px; }" + ], + "templateUrl": [ + "./show-group-work-authoring.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "allowedShowWorkComponentTypes", + "defaultValue": "[\n 'Animation',\n 'AudioOscillator',\n 'ConceptMap',\n 'DialogGuidance',\n 'Discussion',\n 'Draw',\n 'Graph',\n 'Label',\n 'Match',\n 'MultipleChoice',\n 'OpenResponse',\n 'PeerChat',\n 'Table'\n ]", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "inheritance": { + "file": "ShowMyWorkAuthoringComponent" + } + }, + { + "name": "nodeIds", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 29, + "inheritance": { + "file": "ShowMyWorkAuthoringComponent" + } + }, + { + "name": "allowedConnectedComponentTypes", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "idToOrder", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "inputChange", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "promptChange", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + } + ], + "methodsClass": [ + { + "name": "getNodePositionAndTitle", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 40, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ShowMyWorkAuthoringComponent" + } + }, + { + "name": "isAllowedShowWorkComponent", + "args": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 58, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ShowMyWorkAuthoringComponent" + } + }, + { + "name": "isApplicationNode", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 36, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ShowMyWorkAuthoringComponent" + } + }, + { + "name": "isShowWorkComponentTypeAllowed", + "args": [ + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 44, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ShowMyWorkAuthoringComponent" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 31, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "showWorkNodeIdChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 48, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ShowMyWorkAuthoringComponent" + } + }, + { + "name": "assetSelected", + "args": [ + { + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 100, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "componentChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 73, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "confirmAndRemove", + "args": [ + { + "name": "message", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "array", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 110, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "message", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "array", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "deleteStarterState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 81, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "getComponent", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 106, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "getComponents", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 102, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "isForThisComponent", + "args": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 77, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "moveObjectDown", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 122, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "moveObjectUp", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 117, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 65, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "promptChanged", + "args": [ + { + "name": "prompt", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 69, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "prompt", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "saveStarterState", + "args": [ + { + "name": "starterState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "starterState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "setShowSubmitButtonValue", + "args": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 85, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "EditComponentPrompt", + "type": "component" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatSelectModule", + "type": "module" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "EditComponentPeerGroupingTagComponent", + "type": "component" + }, + { + "name": "MatCheckbox" + }, + { + "name": "MatRadioModule", + "type": "module" + }, + { + "name": "MatIcon" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatCheckbox } from '@angular/material/checkbox';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatSelectModule } from '@angular/material/select';\nimport { EditComponentPeerGroupingTagComponent } from '../../../../../app/authoring-tool/edit-component-peer-grouping-tag/edit-component-peer-grouping-tag.component';\nimport { EditComponentPrompt } from '../../../../../app/authoring-tool/edit-component-prompt/edit-component-prompt.component';\nimport { ProjectAssetService } from '../../../../../app/services/projectAssetService';\nimport { ConfigService } from '../../../services/configService';\nimport { TeacherNodeService } from '../../../services/teacherNodeService';\nimport { TeacherProjectService } from '../../../services/teacherProjectService';\nimport { ShowMyWorkAuthoringComponent } from '../../showMyWork/show-my-work-authoring/show-my-work-authoring.component';\n\n@Component({\n imports: [\n EditComponentPrompt,\n MatFormFieldModule,\n MatSelectModule,\n FormsModule,\n EditComponentPeerGroupingTagComponent,\n MatCheckbox,\n MatRadioModule,\n MatIcon\n ],\n selector: 'show-group-work-authoring',\n styles: ['.layout-select { margin: 8px 0 16px; } .bottom-spacing { margin-bottom: 10px; }'],\n templateUrl: './show-group-work-authoring.component.html'\n})\nexport class ShowGroupWorkAuthoringComponent extends ShowMyWorkAuthoringComponent {\n constructor(\n protected configService: ConfigService,\n protected nodeService: TeacherNodeService,\n protected projectAssetService: ProjectAssetService,\n protected projectService: TeacherProjectService\n ) {\n super(configService, nodeService, projectAssetService, projectService);\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": ".layout-select { margin: 8px 0 16px; } .bottom-spacing { margin-bottom: 10px; }\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeService", + "type": "TeacherNodeService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectAssetService", + "type": "ProjectAssetService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 31, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeService", + "type": "TeacherNodeService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectAssetService", + "type": "ProjectAssetService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "ShowMyWorkAuthoringComponent" + ], + "templateData": "\n
    \n \n Show Work Step\n \n (None)\n @for (nodeId of nodeIds; track nodeId) {\n @if (isApplicationNode(nodeId)) {\n \n {{ getNodePositionAndTitle(nodeId) }}\n \n }\n }\n \n \n \n Show Work Component\n \n (None)\n @for (\n component of getComponents(componentContent.showWorkNodeId);\n track component;\n let componentIndex = $index\n ) {\n \n {{ componentIndex + 1 }}. {{ component.type }} \n @if (component.id === componentId) {\n (This Component)\n }\n \n }\n \n \n \n \n Show My Work\n \n
    \n
    \n \n \n \n \n table_rows Stacked Vertically\n \n \n \n \n view_columns Side-by-Side\n \n \n \n
    \n" + }, + { + "name": "ShowGroupWorkDisplayComponent", + "id": "component-ShowGroupWorkDisplayComponent-c15a1c62cf1f67fe61a37bbe1222c86d45a9cd8c9069e71eebc31d8f98a36c734391535b52a17a26377dbab8919018ef24560b54c08dbc66e6a84b343fcf945d", + "file": "src/assets/wise5/components/showGroupWork/show-group-work-display/show-group-work-display.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "show-group-work-display", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./show-group-work-display.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "line": 19, + "type": "any", + "decorators": [] + }, + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "line": 20, + "type": "string", + "decorators": [] + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 24, + "type": "string", + "decorators": [] + }, + { + "name": "workgroupId", + "deprecated": false, + "deprecationMessage": "", + "line": 29, + "type": "number", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "flexLayout", + "defaultValue": "'column'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 21 + }, + { + "name": "isPeerGroupRetrieved", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 22 + }, + { + "name": "narrowComponentTypes", + "defaultValue": "['MultipleChoice', 'OpenResponse']", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 23 + }, + { + "name": "peerGroup", + "deprecated": false, + "deprecationMessage": "", + "type": "PeerGroup", + "indexKey": "", + "optional": false, + "description": "", + "line": 25 + }, + { + "name": "showWorkComponentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 26 + }, + { + "name": "widthLg", + "defaultValue": "100", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 27 + }, + { + "name": "widthMd", + "defaultValue": "100", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 28 + }, + { + "name": "workgroupIdToWork", + "defaultValue": "new Map()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 30 + }, + { + "name": "workgroupInfos", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 31 + } + ], + "methodsClass": [ + { + "name": "isNarrow", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 125, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 39, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "removeMyWorkgroup", + "args": [ + { + "name": "peerGroup", + "type": "PeerGroup", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "PeerGroup", + "typeParameters": [], + "line": 85, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "peerGroup", + "type": "PeerGroup", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "retrieveStudentWorkForPeerGroup", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 44, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "setLayout", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 107, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "setShowWorkComponentContent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 76, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "setStudentWorkFromGroupMembers", + "args": [ + { + "name": "studentWorkFromGroupMembers", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 70, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "studentWorkFromGroupMembers", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setWidths", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 114, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "setWorkgroupInfo", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 100, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setWorkgroupInfos", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 93, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "NgClass" + }, + { + "name": "MatCard" + }, + { + "name": "MatIcon" + }, + { + "name": "NgStyle" + }, + { + "name": "MatCardContent" + }, + { + "name": "ShowWorkStudentComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input, OnInit } from '@angular/core';\nimport { ConfigService } from '../../../services/configService';\nimport { PeerGroupService } from '../../../services/peerGroupService';\nimport { ProjectService } from '../../../services/projectService';\nimport { PeerGroup } from '../../peerChat/PeerGroup';\nimport { getAvatarColorForWorkgroupId } from '../../../common/workgroup/workgroup';\nimport { NgClass, NgStyle } from '@angular/common';\nimport { MatCard, MatCardContent } from '@angular/material/card';\nimport { MatIcon } from '@angular/material/icon';\nimport { ShowWorkStudentComponent } from '../../showWork/show-work-student/show-work-student.component';\n\n@Component({\n imports: [NgClass, MatCard, MatIcon, NgStyle, MatCardContent, ShowWorkStudentComponent],\n selector: 'show-group-work-display',\n styleUrl: './show-group-work-display.component.scss',\n templateUrl: './show-group-work-display.component.html'\n})\nexport class ShowGroupWorkDisplayComponent implements OnInit {\n @Input() componentContent: any;\n @Input() componentId: string;\n flexLayout: string = 'column';\n isPeerGroupRetrieved: boolean = false;\n narrowComponentTypes: string[] = ['MultipleChoice', 'OpenResponse'];\n @Input() nodeId: string;\n peerGroup: PeerGroup;\n showWorkComponentContent: any;\n widthLg: number = 100;\n widthMd: number = 100;\n @Input() workgroupId: number;\n workgroupIdToWork = new Map();\n workgroupInfos: any = {};\n\n constructor(\n private configService: ConfigService,\n private peerGroupService: PeerGroupService,\n private projectService: ProjectService\n ) {}\n\n ngOnInit(): void {\n this.retrieveStudentWorkForPeerGroup();\n this.setShowWorkComponentContent();\n }\n\n private retrieveStudentWorkForPeerGroup(): void {\n this.peerGroupService\n .retrievePeerGroup(this.componentContent.peerGroupingTag, this.workgroupId)\n .subscribe((peerGroup: PeerGroup) => {\n if (peerGroup != null) {\n this.peerGroup = this.componentContent.isShowMyWork\n ? peerGroup\n : this.removeMyWorkgroup(peerGroup);\n this.setWorkgroupInfos();\n this.peerGroupService\n .retrieveStudentWork(\n peerGroup,\n this.nodeId,\n this.componentId,\n this.componentContent.showWorkNodeId,\n this.componentContent.showWorkComponentId\n )\n .subscribe((studentWorkFromGroupMembers: any[]) => {\n this.setStudentWorkFromGroupMembers(studentWorkFromGroupMembers);\n this.setLayout();\n });\n }\n this.isPeerGroupRetrieved = true;\n });\n }\n\n private setStudentWorkFromGroupMembers(studentWorkFromGroupMembers: any[]): void {\n studentWorkFromGroupMembers.forEach((work) => {\n this.workgroupIdToWork.set(work.workgroupId, work);\n });\n }\n\n private setShowWorkComponentContent(): void {\n this.showWorkComponentContent = this.projectService.injectAssetPaths(\n this.projectService.getComponent(\n this.componentContent.showWorkNodeId,\n this.componentContent.showWorkComponentId\n )\n );\n }\n\n private removeMyWorkgroup(peerGroup: PeerGroup): PeerGroup {\n const myWorkgroupId = this.configService.getWorkgroupId();\n peerGroup.members = peerGroup.members.filter((workgroup) => {\n return workgroup.id !== myWorkgroupId;\n });\n return peerGroup;\n }\n\n setWorkgroupInfos(): void {\n this.workgroupInfos = {};\n for (const member of this.peerGroup.members) {\n this.setWorkgroupInfo(member.id);\n }\n }\n\n private setWorkgroupInfo(workgroupId: number): void {\n this.workgroupInfos[workgroupId] = {\n avatarColor: getAvatarColorForWorkgroupId(workgroupId),\n displayNames: this.configService.getUsernamesStringByWorkgroupId(workgroupId)\n };\n }\n\n setLayout(): void {\n if (this.componentContent.layout === 'row') {\n this.flexLayout = 'row wrap';\n this.setWidths();\n }\n }\n\n setWidths(): void {\n const numWorkgroups = this.peerGroup.members.length;\n if (numWorkgroups > 1) {\n this.widthMd = 50;\n this.widthLg = 50;\n }\n if (numWorkgroups > 2 && this.isNarrow()) {\n this.widthLg = 33.33;\n }\n }\n\n private isNarrow(): boolean {\n return this.narrowComponentTypes.includes(this.showWorkComponentContent.type);\n }\n}\n", + "styleUrl": "./show-group-work-display.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "peerGroupService", + "type": "PeerGroupService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 31, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "peerGroupService", + "type": "PeerGroupService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "@if (isPeerGroupRetrieved) {\n
    \n @if (peerGroup == null) {\n
    \n You have not been paired with a classmate yet. Please check back later.\n
    \n }\n @if (peerGroup != null) {\n \n @for (member of peerGroup.members; track member) {\n \n \n
    \n \n account_circle\n \n {{ workgroupInfos[member.id].displayNames }}\n
    \n \n @if (workgroupIdToWork.get(member.id) == null) {\n (Waiting for response...) \n }\n @if (workgroupIdToWork.get(member.id) != null) {\n \n }\n \n \n
    \n }\n \n }\n \n}\n" + }, + { + "name": "ShowGroupWorkGradingComponent", + "id": "component-ShowGroupWorkGradingComponent-246f6bc03c3169b2438598b377c5c4ce19c9b66afe901e30a2463a629eb31affae93fe7abc975cbeb6acba4b1814fce0b7137029bff025786e67fd1b6f1112fc", + "file": "src/assets/wise5/components/showGroupWork/show-group-work-grading/show-group-work-grading.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "show-group-work-grading", + "styleUrls": [], + "styles": [], + "template": "\n", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "workgroupId", + "deprecated": false, + "deprecationMessage": "", + "line": 18, + "type": "number", + "decorators": [] + }, + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "line": 8, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "componentState", + "deprecated": false, + "deprecationMessage": "", + "line": 9, + "type": "any", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "isRevision", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "line": 10, + "type": "boolean", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 7, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "inheritance": { + "file": "ComponentShowWorkDirective" + } + } + ], + "methodsClass": [ + { + "name": "ngAfterViewInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 33, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 19, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentShowWorkDirective" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "ShowGroupWorkDisplayComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input } from '@angular/core';\nimport { ComponentShowWorkDirective } from '../../component-show-work.directive';\nimport { ShowGroupWorkDisplayComponent } from '../show-group-work-display/show-group-work-display.component';\n\n@Component({\n imports: [ShowGroupWorkDisplayComponent],\n selector: 'show-group-work-grading',\n template: `\n \n `\n})\nexport class ShowGroupWorkGradingComponent extends ComponentShowWorkDirective {\n @Input() workgroupId: number;\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [ + "ComponentShowWorkDirective" + ] + }, + { + "name": "ShowGroupWorkStudentComponent", + "id": "component-ShowGroupWorkStudentComponent-7822572c7c3ec607a9c8ec02ccd6699c8155b5d10f891a37f4548e739328650465f539e576bc698b6a20c7067aaab51f15e863cbe7f213b06aa0cabb422fd797", + "file": "src/assets/wise5/components/showGroupWork/show-group-work-student/show-group-work-student.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "template": " ", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "component", + "deprecated": false, + "deprecationMessage": "", + "line": 24, + "type": "Component", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentState", + "deprecated": false, + "deprecationMessage": "", + "line": 25, + "type": "any", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isDisabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "line": 26, + "type": "boolean", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "mode", + "deprecated": false, + "deprecationMessage": "", + "line": 27, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 28, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "workgroupId", + "deprecated": false, + "deprecationMessage": "", + "line": 29, + "type": "number", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "outputsClass": [ + { + "name": "saveComponentStateEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 30, + "type": "EventEmitter", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "starterStateChangedEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 31, + "type": "EventEmitter", + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "propertiesClass": [ + { + "name": "annotationSavedToServerSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 53, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "attachments", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 33, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 34, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 35, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentType", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 36, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isDirty", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 45, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSaveButtonVisible", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 38, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSaveOrSubmitButtonVisible", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 41, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isShowAddToNotebookButton", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 39, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isStudentAttachmentEnabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 46, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmit", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 44, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmitButtonDisabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 42, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmitButtonVisible", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 40, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmitDirty", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 43, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "latestAnnotations", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 48, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "latestComponentState", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 50, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "nodeSubmitClickedSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 54, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "parentStudentWorkIds", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 49, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "prompt", + "deprecated": false, + "deprecationMessage": "", + "type": "SafeHtml", + "indexKey": "", + "optional": false, + "description": "", + "line": 37, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "requestComponentStateSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 52, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "showAddToNotebookButton", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 51, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "studentWorkSavedToServerSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 55, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "submitCounter", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 47, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 56, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "methodsClass": [ + { + "name": "addDefaultFeedback", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 688, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "attachStudentAsset", + "args": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 232, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "broadcastDoneRenderingComponent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 325, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "canSubmit", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 488, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "clearLatestComponentState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 555, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "confirmSubmit", + "args": [ + { + "name": "numberOfSubmitsLeft", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 468, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "numberOfSubmitsLeft", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "connectedComponentStudentDataSaved", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 796, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nThis function is called when a connected component of this component saves student data.\nThis was added to handle a race condition when a step has a connected component on a previous\nstep but the connected component student work on the previous step was not being imported\nbecause it wasn't being saved in time.\nHere is an example of what was happening\n- Student generates work on step 1 but does not click the save button\n- Student goes to step 2 which triggers a promise to save the student work on step 1\n- Step 2 is loaded and checks if there is any work it needs to import from step 1\n- The work in step 1 has not saved yet so step 2 does not import any work and loads without\n importing any work\n- The work from step 1 is then saved\nHere is the additional process that this function performs to fix this problem\n- Step 2 listens for when work is saved on step 1\n- When the work for step 1 is saved, step 2 checks to see if it needs to import that work\n", + "description": "

    This function is called when a connected component of this component saves student data.\nThis was added to handle a race condition when a step has a connected component on a previous\nstep but the connected component student work on the previous step was not being imported\nbecause it wasn't being saved in time.\nHere is an example of what was happening

    \n
      \n
    • Student generates work on step 1 but does not click the save button
    • \n
    • Student goes to step 2 which triggers a promise to save the student work on step 1
    • \n
    • Step 2 is loaded and checks if there is any work it needs to import from step 1
    • \n
    • The work in step 1 has not saved yet so step 2 does not import any work and loads without\nimporting any work
    • \n
    • The work from step 1 is then saved\nHere is the additional process that this function performs to fix this problem
    • \n
    • Step 2 listens for when work is saved on step 1
    • \n
    • When the work for step 1 is saved, step 2 checks to see if it needs to import that work
    • \n
    \n", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "copyAndAttachStudentAsset", + "args": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 218, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "copyPublicNotebookItem", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 632, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "copyPublicNotebookItemButtonClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 747, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createAutoCommentAnnotation", + "args": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 725, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createAutoScoreAnnotation", + "args": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 714, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createComponentState", + "args": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 568, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createComponentStateAdditionalProcessing", + "args": [ + { + "name": "promise", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 598, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "promise", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createComponentStateAndBroadcast", + "args": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 559, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createDefaultFeedbackAnnotation", + "args": [ + { + "name": "feedbackText", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 706, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "feedbackText", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createMergedComponentState", + "args": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 377, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createNewComponentState", + "args": [], + "optional": false, + "returnType": "Partial", + "typeParameters": [], + "line": 818, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "disableAllInput", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 492, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "disableComponentIfNecessary", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 332, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "disableSubmitButton", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 496, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "doAttachStudentAsset", + "args": [ + { + "name": "studentAssetRequest", + "type": "StudentAssetRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 212, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "studentAssetRequest", + "type": "StudentAssetRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 541, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentStudentDataChanged", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 572, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentSubmitDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 548, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentSubmitTriggered", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 512, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "generateImageFromComponentState", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 615, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nRender the component state and then generate an image from it.\n", + "description": "

    Render the component state and then generate an image from it.

    \n", + "jsdoctags": [ + { + "name": { + "pos": 18804, + "end": 18818, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 18798, + "end": 18803, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    The component state to render.

    \n" + }, + { + "tagName": { + "pos": 18856, + "end": 18862, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

    A promise that will return an image.

    \n" + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "generateStarterState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 216, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getAction", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 321, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getClientSaveTime", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 684, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getComponentStatePromise", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 309, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getComponentStateWrapper", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "ComponentStateWrapper", + "typeParameters": [], + "line": 301, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getDefaultFeedback", + "args": [ + { + "name": "submitCount", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 702, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "submitCount", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getElementById", + "args": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getFirstResult", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 758, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "getFirstResult", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getIsDirty", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 277, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getMaxScore", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 680, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getMaxSubmitCount", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 460, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getNumberOfSubmitsLeft", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 456, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "handleConnectedComponents", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 352, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "handleConnectedComponentsPostProcess", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 385, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "handleStudentWorkSavedToServer", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 263, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "handleStudentWorkSavedToServerAdditionalProcessing", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 287, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasAnySubmissions", + "args": [ + { + "name": "componentStates", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 344, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentStates", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasDefaultFeedback", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 695, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasMaxScore", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 676, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasMaxSubmitCount", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 437, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasMaxSubmitCountAndUsedAllSubmits", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 452, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasSubmitMessage", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 504, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasSubmitsLeft", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 500, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasUsedAllSubmits", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 441, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "importWorkAsBackground", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 658, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "importWorkByStudentWorkId", + "args": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 170, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "incrementSubmitCounter", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 389, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isAddToNotebookEnabled", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 624, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isForThisComponent", + "args": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 192, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isFromConnectedComponent", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 766, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isHandleConnectedComponentAfterConnectedComponentStudentDataSaved", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 802, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isLockAfterSubmit", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 348, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isNotebookEnabled", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 643, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isPreviewMode", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 109, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSameComponent", + "args": [ + { + "name": "component", + "type": "Component", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 188, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "component", + "type": "Component", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isStudentNoteClippingEnabled", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 647, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isWorkFromClassmate", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 196, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "lockIfNecessary", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 281, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 97, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 69, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "performSubmit", + "args": [ + { + "name": "submitTriggeredBy", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 472, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "submitTriggeredBy", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "processConnectedComponentState", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 184, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "processLatestStudentWork", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 580, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "registerNotebookItemChosenListener", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 736, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "removeAttachment", + "args": [ + { + "name": "attachment", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 245, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "attachment", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "saveButtonClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 393, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "saveForAuthoringPreviewMode", + "args": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 404, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setBackgroundImage", + "args": [ + { + "name": "image", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 674, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "image", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setComponentStateAsBackgroundImage", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 668, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 537, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsDirtyAndBroadcast", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 527, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsSubmit", + "args": [ + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 464, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsSubmitDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 508, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsSubmitDirtyAndBroadcast", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 532, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setParentStudentWorkIdToCurrentStudentWork", + "args": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 180, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setStudentWork", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 381, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setSubmitCounter", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 811, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "shouldCreateComponentState", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 317, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "showStudentAssets", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 651, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "studentDataChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 519, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "submit", + "args": [ + { + "name": "submitTriggeredBy", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 416, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "submitTriggeredBy", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "submitButtonClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 412, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToAnnotationSavedToServer", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 123, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToAttachStudentAsset", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 200, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToNodeSubmitClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 137, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToNotebookItemChosen", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 159, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToNotifyConnectedComponents", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 147, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToRequestComponentState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 289, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToStudentWorkSavedToServer", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 252, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToSubscriptions", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 113, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "tryDisableComponent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 445, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "ComponentHeaderComponent", + "type": "component" + }, + { + "name": "ShowGroupWorkDisplayComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { ComponentStudent } from '../../component-student.component';\nimport { ComponentHeaderComponent } from '../../../directives/component-header/component-header.component';\nimport { ShowGroupWorkDisplayComponent } from '../show-group-work-display/show-group-work-display.component';\n\n@Component({\n imports: [ComponentHeaderComponent, ShowGroupWorkDisplayComponent],\n styleUrl: './show-group-work-student.component.scss',\n template: `\n `\n})\nexport class ShowGroupWorkStudentComponent extends ComponentStudent {}\n", + "styleUrl": "./show-group-work-student.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [ + "ComponentStudent" + ] + }, + { + "name": "ShowMyWorkAuthoringComponent", + "id": "component-ShowMyWorkAuthoringComponent-bb9005062b4b6e0e7f042660d0185a95d5e952c8a3286651eb2e767240f68cebe8d91a94bef46a9223ea12fb1c7028b9ac51becde63b186d78ee1ab962c7d5ad", + "file": "src/assets/wise5/components/showMyWork/show-my-work-authoring/show-my-work-authoring.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "show-my-work-authoring", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./show-my-work-authoring.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "allowedShowWorkComponentTypes", + "defaultValue": "[\n 'Animation',\n 'AudioOscillator',\n 'ConceptMap',\n 'DialogGuidance',\n 'Discussion',\n 'Draw',\n 'Graph',\n 'Label',\n 'Match',\n 'MultipleChoice',\n 'OpenResponse',\n 'PeerChat',\n 'Table'\n ]", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 14 + }, + { + "name": "nodeIds", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 29 + }, + { + "name": "allowedConnectedComponentTypes", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "idToOrder", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "inputChange", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "promptChange", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + } + ], + "methodsClass": [ + { + "name": "getNodePositionAndTitle", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 40, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isAllowedShowWorkComponent", + "args": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 58, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "component", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isApplicationNode", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 36, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isShowWorkComponentTypeAllowed", + "args": [ + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 44, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 31, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "showWorkNodeIdChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 48, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "assetSelected", + "args": [ + { + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 100, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "componentChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 73, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "confirmAndRemove", + "args": [ + { + "name": "message", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "array", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 110, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "message", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "array", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "deleteStarterState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 81, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "getComponent", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 106, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "getComponents", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 102, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "isForThisComponent", + "args": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 77, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "moveObjectDown", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 122, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "moveObjectUp", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 117, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 65, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "promptChanged", + "args": [ + { + "name": "prompt", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 69, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "prompt", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "saveStarterState", + "args": [ + { + "name": "starterState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "starterState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "setShowSubmitButtonValue", + "args": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 85, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "EditComponentPrompt", + "type": "component" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatSelectModule", + "type": "module" + }, + { + "name": "FormsModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatSelectModule } from '@angular/material/select';\nimport { EditComponentPrompt } from '../../../../../app/authoring-tool/edit-component-prompt/edit-component-prompt.component';\nimport { AbstractComponentAuthoring } from '../../../authoringTool/components/AbstractComponentAuthoring';\n\n@Component({\n selector: 'show-my-work-authoring',\n templateUrl: './show-my-work-authoring.component.html',\n imports: [EditComponentPrompt, MatFormFieldModule, MatSelectModule, FormsModule]\n})\nexport class ShowMyWorkAuthoringComponent extends AbstractComponentAuthoring {\n allowedShowWorkComponentTypes: string[] = [\n 'Animation',\n 'AudioOscillator',\n 'ConceptMap',\n 'DialogGuidance',\n 'Discussion',\n 'Draw',\n 'Graph',\n 'Label',\n 'Match',\n 'MultipleChoice',\n 'OpenResponse',\n 'PeerChat',\n 'Table'\n ];\n nodeIds: string[];\n\n ngOnInit(): void {\n super.ngOnInit();\n this.nodeIds = this.projectService.getFlattenedProjectAsNodeIds();\n }\n\n isApplicationNode(nodeId: string): boolean {\n return this.projectService.isApplicationNode(nodeId);\n }\n\n getNodePositionAndTitle(nodeId: string): string {\n return this.projectService.getNodePositionAndTitle(nodeId);\n }\n\n isShowWorkComponentTypeAllowed(componentType: string): boolean {\n return this.allowedShowWorkComponentTypes.includes(componentType);\n }\n\n showWorkNodeIdChanged(): void {\n const components = this.projectService.getComponents(this.componentContent.showWorkNodeId);\n if (components.length === 1 && this.isAllowedShowWorkComponent(components[0])) {\n this.componentContent.showWorkComponentId = components[0].id;\n } else {\n this.componentContent.showWorkComponentId = '';\n }\n this.componentChanged();\n }\n\n isAllowedShowWorkComponent(component: any): boolean {\n return this.isShowWorkComponentTypeAllowed(component.type) && component.id != this.componentId;\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [ + "AbstractComponentAuthoring" + ], + "templateData": "\n
    \n \n Show Work Step\n \n (None)\n @for (nodeId of nodeIds; track nodeId) {\n @if (isApplicationNode(nodeId)) {\n \n {{ getNodePositionAndTitle(nodeId) }}\n \n }\n }\n \n \n \n Show Work Component\n \n (None)\n @for (\n component of getComponents(componentContent.showWorkNodeId);\n track component;\n let componentIndex = $index\n ) {\n \n {{ componentIndex + 1 }}. {{ component.type }} \n @if (component.id === componentId) {\n (This Component)\n }\n \n }\n \n \n
    \n" + }, + { + "name": "ShowMyWorkGradingComponent", + "id": "component-ShowMyWorkGradingComponent-b21e10ae7188c21428a379acea54c7f2ba4a83918283c634ce305328bc1a7b50d418b9876c03ce39a82c70c16ce8af5af950eca214984ec23b88889efbb804f2", + "file": "src/assets/wise5/components/showMyWork/show-my-work-grading/show-my-work-grading.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "template": "@if (componentState != null) {\n \n}\n", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "line": 19, + "type": "string", + "decorators": [] + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 21, + "type": "string", + "decorators": [] + }, + { + "name": "workgroupId", + "deprecated": false, + "deprecationMessage": "", + "line": 24, + "type": "number", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "componentState", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 20, + "modifierKind": [ + 124 + ] + }, + { + "name": "showWorkComponentId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 22, + "modifierKind": [ + 124 + ] + }, + { + "name": "showWorkNodeId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 23, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 31, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "ShowWorkStudentComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input, OnInit } from '@angular/core';\nimport { ProjectService } from '../../../services/projectService';\nimport { TeacherDataService } from '../../../services/teacherDataService';\nimport { ShowWorkStudentComponent } from '../../showWork/show-work-student/show-work-student.component';\n\n@Component({\n imports: [ShowWorkStudentComponent],\n template: `\n @if (componentState != null) {\n \n }\n `\n})\nexport class ShowMyWorkGradingComponent implements OnInit {\n @Input() componentId: string;\n protected componentState: any;\n @Input() nodeId: string;\n protected showWorkComponentId: string;\n protected showWorkNodeId: string;\n @Input() workgroupId: number;\n\n constructor(\n private dataService: TeacherDataService,\n private projectService: ProjectService\n ) {}\n\n ngOnInit(): void {\n const component: any = this.projectService.getComponent(this.nodeId, this.componentId);\n this.showWorkNodeId = component.showWorkNodeId;\n this.showWorkComponentId = component.showWorkComponentId;\n this.componentState = this.dataService.getLatestComponentStateByWorkgroupIdNodeIdAndComponentId(\n this.workgroupId,\n this.showWorkNodeId,\n this.showWorkComponentId\n );\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 24, + "jsdoctags": [ + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ] + }, + { + "name": "ShowMyWorkStudentComponent", + "id": "component-ShowMyWorkStudentComponent-167070ef08c8bc71212e66ade0b8cfa845bc19e032b94d2c40ee27dc0f9a438f5cd305dce0d975dbd88666cdeba8b0f1437932a30e7e3751ef6511a20d79670d", + "file": "src/assets/wise5/components/showMyWork/show-my-work-student/show-my-work-student.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./show-my-work-student.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "component", + "deprecated": false, + "deprecationMessage": "", + "line": 24, + "type": "Component", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentState", + "deprecated": false, + "deprecationMessage": "", + "line": 25, + "type": "any", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isDisabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "line": 26, + "type": "boolean", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "mode", + "deprecated": false, + "deprecationMessage": "", + "line": 27, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 28, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "workgroupId", + "deprecated": false, + "deprecationMessage": "", + "line": 29, + "type": "number", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "outputsClass": [ + { + "name": "saveComponentStateEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 30, + "type": "EventEmitter", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "starterStateChangedEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 31, + "type": "EventEmitter", + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "propertiesClass": [ + { + "name": "showWorkComponentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 22 + }, + { + "name": "showWorkComponentId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 23 + }, + { + "name": "showWorkNodeId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 24 + }, + { + "name": "studentWork", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 25 + }, + { + "name": "annotationSavedToServerSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 53, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "attachments", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 33, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 34, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 35, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentType", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 36, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isDirty", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 45, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSaveButtonVisible", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 38, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSaveOrSubmitButtonVisible", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 41, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isShowAddToNotebookButton", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 39, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isStudentAttachmentEnabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 46, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmit", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 44, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmitButtonDisabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 42, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmitButtonVisible", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 40, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmitDirty", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 43, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "latestAnnotations", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 48, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "latestComponentState", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 50, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "nodeSubmitClickedSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 54, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "parentStudentWorkIds", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 49, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "prompt", + "deprecated": false, + "deprecationMessage": "", + "type": "SafeHtml", + "indexKey": "", + "optional": false, + "description": "", + "line": 37, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "requestComponentStateSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 52, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "showAddToNotebookButton", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 51, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "studentWorkSavedToServerSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 55, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "submitCounter", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 47, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 56, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "methodsClass": [ + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 50, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "addDefaultFeedback", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 688, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "attachStudentAsset", + "args": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 232, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "broadcastDoneRenderingComponent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 325, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "canSubmit", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 488, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "clearLatestComponentState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 555, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "confirmSubmit", + "args": [ + { + "name": "numberOfSubmitsLeft", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 468, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "numberOfSubmitsLeft", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "connectedComponentStudentDataSaved", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 796, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nThis function is called when a connected component of this component saves student data.\nThis was added to handle a race condition when a step has a connected component on a previous\nstep but the connected component student work on the previous step was not being imported\nbecause it wasn't being saved in time.\nHere is an example of what was happening\n- Student generates work on step 1 but does not click the save button\n- Student goes to step 2 which triggers a promise to save the student work on step 1\n- Step 2 is loaded and checks if there is any work it needs to import from step 1\n- The work in step 1 has not saved yet so step 2 does not import any work and loads without\n importing any work\n- The work from step 1 is then saved\nHere is the additional process that this function performs to fix this problem\n- Step 2 listens for when work is saved on step 1\n- When the work for step 1 is saved, step 2 checks to see if it needs to import that work\n", + "description": "

    This function is called when a connected component of this component saves student data.\nThis was added to handle a race condition when a step has a connected component on a previous\nstep but the connected component student work on the previous step was not being imported\nbecause it wasn't being saved in time.\nHere is an example of what was happening

    \n
      \n
    • Student generates work on step 1 but does not click the save button
    • \n
    • Student goes to step 2 which triggers a promise to save the student work on step 1
    • \n
    • Step 2 is loaded and checks if there is any work it needs to import from step 1
    • \n
    • The work in step 1 has not saved yet so step 2 does not import any work and loads without\nimporting any work
    • \n
    • The work from step 1 is then saved\nHere is the additional process that this function performs to fix this problem
    • \n
    • Step 2 listens for when work is saved on step 1
    • \n
    • When the work for step 1 is saved, step 2 checks to see if it needs to import that work
    • \n
    \n", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "copyAndAttachStudentAsset", + "args": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 218, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "copyPublicNotebookItem", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 632, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "copyPublicNotebookItemButtonClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 747, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createAutoCommentAnnotation", + "args": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 725, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createAutoScoreAnnotation", + "args": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 714, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createComponentState", + "args": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 568, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createComponentStateAdditionalProcessing", + "args": [ + { + "name": "promise", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 598, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "promise", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createComponentStateAndBroadcast", + "args": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 559, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createDefaultFeedbackAnnotation", + "args": [ + { + "name": "feedbackText", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 706, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "feedbackText", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createMergedComponentState", + "args": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 377, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createNewComponentState", + "args": [], + "optional": false, + "returnType": "Partial", + "typeParameters": [], + "line": 818, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "disableAllInput", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 492, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "disableComponentIfNecessary", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 332, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "disableSubmitButton", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 496, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "doAttachStudentAsset", + "args": [ + { + "name": "studentAssetRequest", + "type": "StudentAssetRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 212, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "studentAssetRequest", + "type": "StudentAssetRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 541, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentStudentDataChanged", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 572, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentSubmitDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 548, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentSubmitTriggered", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 512, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "generateImageFromComponentState", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 615, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nRender the component state and then generate an image from it.\n", + "description": "

    Render the component state and then generate an image from it.

    \n", + "jsdoctags": [ + { + "name": { + "pos": 18804, + "end": 18818, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 18798, + "end": 18803, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    The component state to render.

    \n" + }, + { + "tagName": { + "pos": 18856, + "end": 18862, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

    A promise that will return an image.

    \n" + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "generateStarterState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 216, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getAction", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 321, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getClientSaveTime", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 684, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getComponentStatePromise", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 309, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getComponentStateWrapper", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "ComponentStateWrapper", + "typeParameters": [], + "line": 301, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getDefaultFeedback", + "args": [ + { + "name": "submitCount", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 702, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "submitCount", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getElementById", + "args": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getFirstResult", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 758, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "getFirstResult", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getIsDirty", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 277, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getMaxScore", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 680, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getMaxSubmitCount", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 460, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getNumberOfSubmitsLeft", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 456, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "handleConnectedComponents", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 352, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "handleConnectedComponentsPostProcess", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 385, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "handleStudentWorkSavedToServer", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 263, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "handleStudentWorkSavedToServerAdditionalProcessing", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 287, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasAnySubmissions", + "args": [ + { + "name": "componentStates", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 344, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentStates", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasDefaultFeedback", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 695, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasMaxScore", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 676, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasMaxSubmitCount", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 437, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasMaxSubmitCountAndUsedAllSubmits", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 452, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasSubmitMessage", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 504, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasSubmitsLeft", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 500, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasUsedAllSubmits", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 441, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "importWorkAsBackground", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 658, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "importWorkByStudentWorkId", + "args": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 170, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "incrementSubmitCounter", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 389, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isAddToNotebookEnabled", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 624, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isForThisComponent", + "args": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 192, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isFromConnectedComponent", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 766, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isHandleConnectedComponentAfterConnectedComponentStudentDataSaved", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 802, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isLockAfterSubmit", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 348, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isNotebookEnabled", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 643, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isPreviewMode", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 109, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSameComponent", + "args": [ + { + "name": "component", + "type": "Component", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 188, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "component", + "type": "Component", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isStudentNoteClippingEnabled", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 647, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isWorkFromClassmate", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 196, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "lockIfNecessary", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 281, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 97, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "performSubmit", + "args": [ + { + "name": "submitTriggeredBy", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 472, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "submitTriggeredBy", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "processConnectedComponentState", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 184, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "processLatestStudentWork", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 580, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "registerNotebookItemChosenListener", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 736, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "removeAttachment", + "args": [ + { + "name": "attachment", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 245, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "attachment", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "saveButtonClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 393, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "saveForAuthoringPreviewMode", + "args": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 404, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setBackgroundImage", + "args": [ + { + "name": "image", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 674, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "image", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setComponentStateAsBackgroundImage", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 668, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 537, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsDirtyAndBroadcast", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 527, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsSubmit", + "args": [ + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 464, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsSubmitDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 508, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsSubmitDirtyAndBroadcast", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 532, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setParentStudentWorkIdToCurrentStudentWork", + "args": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 180, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setStudentWork", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 381, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setSubmitCounter", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 811, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "shouldCreateComponentState", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 317, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "showStudentAssets", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 651, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "studentDataChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 519, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "submit", + "args": [ + { + "name": "submitTriggeredBy", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 416, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "submitTriggeredBy", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "submitButtonClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 412, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToAnnotationSavedToServer", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 123, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToAttachStudentAsset", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 200, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToNodeSubmitClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 137, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToNotebookItemChosen", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 159, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToNotifyConnectedComponents", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 147, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToRequestComponentState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 289, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToStudentWorkSavedToServer", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 252, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToSubscriptions", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 113, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "tryDisableComponent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 445, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "ComponentHeaderComponent", + "type": "component" + }, + { + "name": "MatCard" + }, + { + "name": "MatCardContent" + }, + { + "name": "ShowWorkStudentComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { AnnotationService } from '../../../services/annotationService';\nimport { ConfigService } from '../../../services/configService';\nimport { NodeService } from '../../../services/nodeService';\nimport { NotebookService } from '../../../services/notebookService';\nimport { ProjectService } from '../../../services/projectService';\nimport { StudentAssetService } from '../../../services/studentAssetService';\nimport { StudentDataService } from '../../../services/studentDataService';\nimport { ComponentStudent } from '../../component-student.component';\nimport { ComponentService } from '../../componentService';\nimport { ComponentHeaderComponent } from '../../../directives/component-header/component-header.component';\nimport { MatCard, MatCardContent } from '@angular/material/card';\nimport { ShowWorkStudentComponent } from '../../showWork/show-work-student/show-work-student.component';\n\n@Component({\n imports: [ComponentHeaderComponent, MatCard, MatCardContent, ShowWorkStudentComponent],\n styleUrl: './show-my-work-student.component.scss',\n templateUrl: './show-my-work-student.component.html'\n})\nexport class ShowMyWorkStudentComponent extends ComponentStudent {\n showWorkComponentContent: any;\n showWorkComponentId: string;\n showWorkNodeId: string;\n studentWork: any;\n\n constructor(\n protected annotationService: AnnotationService,\n protected componentService: ComponentService,\n protected configService: ConfigService,\n protected dialog: MatDialog,\n protected nodeService: NodeService,\n protected notebookService: NotebookService,\n protected projectService: ProjectService,\n protected studentAssetService: StudentAssetService,\n protected studentDataService: StudentDataService\n ) {\n super(\n annotationService,\n componentService,\n configService,\n dialog,\n nodeService,\n notebookService,\n studentAssetService,\n studentDataService\n );\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n this.showWorkComponentContent = this.projectService.getComponent(\n this.componentContent.showWorkNodeId,\n this.componentContent.showWorkComponentId\n );\n this.showWorkComponentContent = this.projectService.injectAssetPaths(\n this.showWorkComponentContent\n );\n this.showWorkComponentId = this.componentContent.showWorkComponentId;\n this.showWorkNodeId = this.componentContent.showWorkNodeId;\n this.studentWork = this.studentDataService.getLatestComponentStateByNodeIdAndComponentId(\n this.componentContent.showWorkNodeId,\n this.componentContent.showWorkComponentId\n );\n }\n}\n", + "styleUrl": "./show-my-work-student.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentService", + "type": "ComponentService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "notebookService", + "type": "NotebookService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentAssetService", + "type": "StudentAssetService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentDataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 25, + "jsdoctags": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentService", + "type": "ComponentService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "notebookService", + "type": "NotebookService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentAssetService", + "type": "StudentAssetService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentDataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "ComponentStudent" + ], + "templateData": "\n\n \n @if (studentWork == null) {\n (No response)\n } @else {\n \n }\n \n\n" + }, + { + "name": "ShowStudentInfoComponent", + "id": "component-ShowStudentInfoComponent-ec764587065b48375efb55810363f0f3f91d3ffd975415a842c17859613e6fadbeda465ae39df5aa519655524ca622b3f18e557868a9c2d1dd0793cb51006479", + "file": "src/assets/wise5/classroomMonitor/classroomMonitorComponents/manageStudents/show-student-info/show-student-info.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "show-student-info", + "styleUrls": [], + "styles": [], + "template": "@if (canViewStudentNames) {\n {{ user.name }} ({{ user.username }})\n} @else {\n Student {{ user.id }}\n}\n", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "user", + "deprecated": false, + "deprecationMessage": "", + "line": 20, + "type": "any", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "canViewStudentNames", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 24, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input, OnInit } from '@angular/core';\nimport { ConfigService } from '../../../../services/configService';\n\n@Component({\n selector: 'show-student-info',\n template: `\n @if (canViewStudentNames) {\n {{ user.name }} ({{ user.username }})\n } @else {\n Student {{ user.id }}\n }\n `\n})\nexport class ShowStudentInfoComponent implements OnInit {\n protected canViewStudentNames: boolean;\n @Input() user: any;\n\n constructor(private configService: ConfigService) {}\n\n ngOnInit(): void {\n this.canViewStudentNames = this.configService.getPermissions().canViewStudentNames;\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 20, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ] + }, + { + "name": "ShowWorkStudentComponent", + "id": "component-ShowWorkStudentComponent-0d239f9c76c042dc8cfbeb1bba81edfa4d0291c80ab5991465d2af7052b500c0771ae11e074907d52e53f8fb2f30944ec53daa1b20098a109adfa8ac3f15f399", + "file": "src/assets/wise5/components/showWork/show-work-student/show-work-student.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "show-work-student", + "styleUrls": [], + "styles": [], + "template": "
    ", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "line": 19, + "type": "any", + "decorators": [] + }, + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "line": 20, + "type": "string", + "decorators": [] + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 23, + "type": "string", + "decorators": [] + }, + { + "name": "studentWork", + "deprecated": false, + "deprecationMessage": "", + "line": 24, + "type": "any", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "componentElementRef", + "deprecated": false, + "deprecationMessage": "", + "type": "ElementRef", + "indexKey": "", + "optional": false, + "description": "", + "line": 21, + "decorators": [ + { + "name": "ViewChild", + "stringifiedArguments": "'component'" + } + ], + "modifierKind": [ + 171, + 123 + ] + }, + { + "name": "componentRef", + "deprecated": false, + "deprecationMessage": "", + "type": "ComponentRef", + "indexKey": "", + "optional": false, + "description": "", + "line": 22, + "modifierKind": [ + 123 + ] + } + ], + "methodsClass": [ + { + "name": "ngAfterViewInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 31, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnChanges", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 35, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 41, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "render", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 45, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import {\n ApplicationRef,\n Component,\n ComponentRef,\n createComponent,\n ElementRef,\n EnvironmentInjector,\n Input,\n ViewChild\n} from '@angular/core';\nimport { components } from '../../Components';\nimport { ComponentShowWorkDirective } from '../../component-show-work.directive';\n\n@Component({\n selector: 'show-work-student',\n template: '
    '\n})\nexport class ShowWorkStudentComponent {\n @Input() componentContent: any;\n @Input() componentId: string;\n @ViewChild('component') private componentElementRef: ElementRef;\n private componentRef: ComponentRef;\n @Input() nodeId: string;\n @Input() studentWork: any;\n\n constructor(\n private applicationRef: ApplicationRef,\n private injector: EnvironmentInjector\n ) {}\n\n ngAfterViewInit(): void {\n this.render();\n }\n\n ngOnChanges(): void {\n if (this.componentElementRef != null) {\n this.render();\n }\n }\n\n ngOnDestroy(): void {\n this.componentRef.destroy();\n }\n\n private render(): void {\n if (components[this.studentWork.componentType].showWork) {\n this.componentRef = createComponent(components[this.studentWork.componentType].showWork, {\n hostElement: this.componentElementRef.nativeElement,\n environmentInjector: this.injector\n });\n Object.assign(this.componentRef.instance, {\n componentId: this.componentId,\n componentState: this.studentWork,\n isDisabled: true,\n mode: 'student',\n nodeId: this.nodeId,\n workgroupId: this.studentWork.workgroupId\n });\n this.applicationRef.attachView(this.componentRef.hostView);\n }\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "applicationRef", + "type": "ApplicationRef", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "injector", + "type": "EnvironmentInjector", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 24, + "jsdoctags": [ + { + "name": "applicationRef", + "type": "ApplicationRef", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "injector", + "type": "EnvironmentInjector", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [] + }, + { + "name": "SideMenuComponent", + "id": "component-SideMenuComponent-c44561203f646f1429d22e1f789cf232bd6629497eb4817c23f9bc9c2b50a4d53482851ddbe024180674fd150cdd1ad2ad97eafc6bf8734092533aa3aec91e65", + "file": "src/assets/wise5/common/side-menu/side-menu.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [ + "views" + ], + "outputs": [], + "providers": [], + "selector": "side-menu", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./side-menu.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "title", + "deprecated": false, + "deprecationMessage": "", + "line": 16, + "type": "string", + "decorators": [], + "inheritance": { + "file": "MainMenuComponent" + } + }, + { + "name": "views", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "line": 17, + "type": "any", + "decorators": [], + "inheritance": { + "file": "MainMenuComponent" + } + } + ], + "outputsClass": [], + "propertiesClass": [], + "methodsClass": [ + { + "name": "goToView", + "args": [ + { + "name": "view", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 24, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "view", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "MainMenuComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { MainMenuComponent } from '../main-menu/main-menu.component';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n imports: [MatButtonModule, MatIconModule, MatTooltipModule],\n inputs: ['views'],\n selector: 'side-menu',\n styleUrl: './side-menu.component.scss',\n templateUrl: './side-menu.component.html'\n})\nexport class SideMenuComponent extends MainMenuComponent {}\n", + "styleUrl": "./side-menu.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [ + "MainMenuComponent" + ], + "templateData": "
    \n @for (view of views; track view.name) {\n @if (view.type === 'primary' && view.active) {\n \n {{ view.icon }}\n \n }\n }\n
    \n" + }, + { + "name": "SnackbarTriggerComponent", + "id": "component-SnackbarTriggerComponent-7515930b3feb4de25762ed5d19f05ef8be9a2b6f2e1091ed6325aed4203989ee0ab4b830af1a9ad41bc641e380d4d587d31b6e80a67a6f9eb070c1b252cd96fe", + "file": "src/stories/snackbar/snackbar-trigger/snackbar-trigger.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "snackbar-trigger", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./snackbar-trigger.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "action", + "defaultValue": "'Close'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 39, + "modifierKind": [ + 124 + ] + }, + { + "name": "duration", + "defaultValue": "10", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 40, + "modifierKind": [ + 124 + ] + }, + { + "name": "horizontalPosition", + "defaultValue": "'center'", + "deprecated": false, + "deprecationMessage": "", + "type": "MatSnackBarHorizontalPosition", + "indexKey": "", + "optional": false, + "description": "", + "line": 41, + "modifierKind": [ + 124 + ] + }, + { + "name": "message", + "defaultValue": "'Hello world!'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 38, + "modifierKind": [ + 124 + ] + }, + { + "name": "useCustomComponent", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 43, + "modifierKind": [ + 124 + ] + }, + { + "name": "verticalPosition", + "defaultValue": "'bottom'", + "deprecated": false, + "deprecationMessage": "", + "type": "MatSnackBarVerticalPosition", + "indexKey": "", + "optional": false, + "description": "", + "line": 42, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "openSnackBar", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 47, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatInputModule", + "type": "module" + }, + { + "name": "MatSelectModule", + "type": "module" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatCheckboxModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, inject, model } from '@angular/core';\nimport {\n MAT_SNACK_BAR_DATA,\n MatSnackBar,\n MatSnackBarAction,\n MatSnackBarActions,\n MatSnackBarHorizontalPosition,\n MatSnackBarLabel,\n MatSnackBarRef,\n MatSnackBarVerticalPosition\n} from '@angular/material/snack-bar';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatIconModule } from '@angular/material/icon';\n\nexport interface SnackbarData {\n message: string;\n action: string;\n}\n\n@Component({\n selector: 'snackbar-trigger',\n templateUrl: './snackbar-trigger.component.html',\n imports: [\n MatFormFieldModule,\n MatInputModule,\n MatSelectModule,\n FormsModule,\n MatButtonModule,\n MatCheckboxModule\n ]\n})\nexport class SnackbarTriggerComponent {\n protected message: string = 'Hello world!';\n protected action: string = 'Close';\n protected duration: number = 10;\n protected horizontalPosition: MatSnackBarHorizontalPosition = 'center';\n protected verticalPosition: MatSnackBarVerticalPosition = 'bottom';\n protected useCustomComponent: boolean = false;\n\n constructor(private _snackBar: MatSnackBar) {}\n\n openSnackBar() {\n if (this.useCustomComponent) {\n this._snackBar.openFromComponent(CustomSnackbarComponent, {\n duration: this.duration * 1000,\n horizontalPosition: this.horizontalPosition,\n verticalPosition: this.verticalPosition,\n data: { message: this.message, action: this.action }\n });\n } else {\n this._snackBar.open(this.message, this.action, {\n duration: this.duration * 1000,\n horizontalPosition: this.horizontalPosition,\n verticalPosition: this.verticalPosition\n });\n }\n }\n}\n\n@Component({\n selector: 'custom-snackbar',\n templateUrl: './custom-snackbar.html',\n styles: `\n :host {\n display: flex;\n\n .mat-icon {\n color: var(--mat-sys-error-container);\n }\n }\n `,\n imports: [MatButtonModule, MatIconModule, MatSnackBarLabel, MatSnackBarActions, MatSnackBarAction]\n})\nexport class CustomSnackbarComponent {\n readonly snackBarRef = inject(MatSnackBarRef);\n readonly data = inject(MAT_SNACK_BAR_DATA);\n readonly message = model(this.data.message);\n readonly action = model(this.data.action);\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "_snackBar", + "type": "MatSnackBar", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 43, + "jsdoctags": [ + { + "name": "_snackBar", + "type": "MatSnackBar", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "
    \n \n Message\n \n \n \n Action Text\n \n \n \n Duration (seconds)\n \n \n \n Horizontal Position\n \n Start\n Center\n End\n \n \n \n Vertical Position\n \n Top\n Bottom\n \n \n Use Custom Component\n \n
    \n" + }, + { + "name": "SpeechToTextComponent", + "id": "component-SpeechToTextComponent-89522dcba1373cef5477d3524ccde13f11fe3ce8edf5170fe917fe87e09e5594ff7d5481d1725555944084bcd386736bbc88e7028fd90b94557972a528bc7637", + "file": "src/assets/wise5/components/openResponse/speech-to-text/speech-to-text.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "speech-to-text", + "styleUrls": [ + "./speech-to-text.component.scss" + ], + "styles": [], + "templateUrl": [ + "./speech-to-text.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [ + { + "name": "newTextEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 25, + "type": "EventEmitter" + } + ], + "propertiesClass": [ + { + "name": "languages", + "defaultValue": "this.transcribeService.languages", + "deprecated": false, + "deprecationMessage": "", + "type": "Language[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 24, + "modifierKind": [ + 124 + ] + }, + { + "name": "recording", + "defaultValue": "this.transcribeService.recording", + "deprecated": false, + "deprecationMessage": "", + "type": "Signal", + "indexKey": "", + "optional": false, + "description": "", + "line": 26, + "modifierKind": [ + 124 + ] + }, + { + "name": "recordingRequester", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 27, + "modifierKind": [ + 124 + ] + }, + { + "name": "selectedLanguage", + "defaultValue": "this.transcribeService.selectedLanguage", + "deprecated": false, + "deprecationMessage": "", + "type": "Signal", + "indexKey": "", + "optional": false, + "description": "", + "line": 28, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "changeLanguage", + "args": [ + { + "name": "language", + "type": "Language", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 44, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "language", + "type": "Language", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 32, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "processTranscriptionText", + "args": [ + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 66, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "startRecording", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 48, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123, + 134 + ] + }, + { + "name": "stopRecording", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 61, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "toggleRecording", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 36, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatMenuModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, EventEmitter, Output, Signal } from '@angular/core';\nimport { Language, TranscribeService } from '../../../services/transcribeService';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatMenuModule } from '@angular/material/menu';\n\n@Component({\n selector: 'speech-to-text',\n imports: [\n FormsModule,\n MatButtonModule,\n MatFormFieldModule,\n MatIconModule,\n MatMenuModule,\n MatTooltipModule\n ],\n templateUrl: './speech-to-text.component.html',\n styleUrls: ['./speech-to-text.component.scss']\n})\nexport class SpeechToTextComponent {\n protected languages: Language[] = this.transcribeService.languages;\n @Output() newTextEvent: EventEmitter = new EventEmitter();\n protected recording: Signal = this.transcribeService.recording;\n protected recordingRequester = false;\n protected selectedLanguage: Signal = this.transcribeService.selectedLanguage;\n\n constructor(private transcribeService: TranscribeService) {}\n\n ngOnDestroy(): void {\n this.stopRecording();\n }\n\n protected toggleRecording(): void {\n if (!this.recording()) {\n this.startRecording();\n } else {\n this.stopRecording();\n }\n }\n\n protected changeLanguage(language: Language): void {\n this.transcribeService.setSelectedLanguage(language);\n }\n\n private async startRecording(): Promise {\n try {\n this.recordingRequester = true;\n await this.transcribeService.startRecording(\n this.selectedLanguage().code,\n this.processTranscriptionText.bind(this)\n );\n } catch (error) {\n alert($localize`An error occurred while recording: ${error.message}`);\n this.stopRecording();\n }\n }\n\n private stopRecording(): void {\n this.transcribeService.stopRecording();\n this.recordingRequester = false;\n }\n\n private processTranscriptionText(text: string): void {\n this.newTextEvent.emit(text);\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": [ + { + "data": "", + "styleUrl": "./speech-to-text.component.scss" + } + ], + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "transcribeService", + "type": "TranscribeService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 28, + "jsdoctags": [ + { + "name": "transcribeService", + "type": "TranscribeService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "
    \n Speak to add to your response:\n \n translate\n @if (selectedLanguage()) {\n {{ selectedLanguage().name }}\n }\n \n \n @for (language of languages; track language) {\n \n {{ language.name }}\n \n }\n \n @if (!(recording() && recordingRequester)) {\n \n mic\n \n }\n @if (recording() && recordingRequester) {\n \n stop_circle\n \n Recording...\n }\n
    \n" + }, + { + "name": "StandardsSelectMenuComponent", + "id": "component-StandardsSelectMenuComponent-35dcb44c274b75b6565e76e9baa680ab1d06b43362bba59b7480209866f870bb0a70bbf41cb5273bf3dfabc70f468048772eaab118f9bf13928b7609f15549ed", + "file": "src/app/modules/shared/standards-select-menu/standards-select-menu.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "standards-select-menu", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./standards-select-menu.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "possibleLabels", + "deprecated": false, + "deprecationMessage": "", + "line": 13, + "type": "StandardType[]", + "decorators": [] + }, + { + "name": "disable", + "deprecated": false, + "deprecationMessage": "", + "line": 22, + "type": "boolean", + "decorators": [], + "inheritance": { + "file": "SelectMenuComponent" + } + }, + { + "name": "multiple", + "deprecated": false, + "deprecationMessage": "", + "line": 23, + "type": "boolean", + "decorators": [], + "inheritance": { + "file": "SelectMenuComponent" + } + }, + { + "name": "options", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "line": 24, + "type": "any[]", + "decorators": [], + "inheritance": { + "file": "SelectMenuComponent" + } + }, + { + "name": "placeholderText", + "defaultValue": "$localize`Select an option`", + "deprecated": false, + "deprecationMessage": "", + "line": 25, + "type": "string", + "decorators": [], + "inheritance": { + "file": "SelectMenuComponent" + } + }, + { + "name": "value", + "deprecated": false, + "deprecationMessage": "", + "line": 27, + "type": "any", + "decorators": [], + "inheritance": { + "file": "SelectMenuComponent" + } + }, + { + "name": "valueProp", + "defaultValue": "'value'", + "deprecated": false, + "deprecationMessage": "", + "line": 28, + "type": "string", + "decorators": [], + "inheritance": { + "file": "SelectMenuComponent" + } + }, + { + "name": "viewValueProp", + "defaultValue": "'viewValue'", + "deprecated": false, + "deprecationMessage": "", + "line": 29, + "type": "string", + "decorators": [], + "inheritance": { + "file": "SelectMenuComponent" + } + } + ], + "outputsClass": [ + { + "name": "update", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 21, + "type": "EventEmitter", + "inheritance": { + "file": "SelectMenuComponent" + } + } + ], + "propertiesClass": [ + { + "name": "labels", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "StandardType[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "modifierKind": [ + 124 + ] + }, + { + "name": "standardOptions", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "object", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 124 + ] + }, + { + "name": "selectField", + "defaultValue": "new FormControl('')", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 26, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "SelectMenuComponent" + } + } + ], + "methodsClass": [ + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 17, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "SelectMenuComponent" + } + }, + { + "name": "ngOnChanges", + "args": [ + { + "name": "changes", + "type": "SimpleChanges", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 41, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "changes", + "type": "SimpleChanges", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SelectMenuComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatSelectModule", + "type": "module" + }, + { + "name": "ReactiveFormsModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input } from '@angular/core';\nimport { SelectMenuComponent } from '../select-menu/select-menu.component';\nimport { StandardType } from '../../library/standard';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatSelectModule } from '@angular/material/select';\n\n@Component({\n imports: [FormsModule, MatSelectModule, ReactiveFormsModule],\n selector: 'standards-select-menu',\n templateUrl: './standards-select-menu.component.html'\n})\nexport class StandardsSelectMenuComponent extends SelectMenuComponent {\n @Input() possibleLabels: StandardType[];\n protected labels: StandardType[] = [];\n protected standardOptions = {};\n\n ngOnInit(): void {\n super.ngOnInit();\n const uniqueLabels = new Set();\n this.options.forEach((option) => {\n uniqueLabels.add(option.type);\n if (!this.standardOptions[option.type]) {\n this.standardOptions[option.type] = [];\n }\n this.standardOptions[option.type].push(option);\n });\n this.labels = this.possibleLabels.filter((label) => uniqueLabels.has(label));\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [ + "SelectMenuComponent" + ], + "templateData": "\n {{ placeholderText }}\n \n @if (multiple) {\n \n {{ selectField.value ? selectField.value[0] : '' }}\n @if (selectField.value?.length > 1) {\n \n (+{{ selectField.value.length - 1 }} more)\n \n }\n \n }\n @for (label of labels; track label) {\n \n @for (option of standardOptions[label]; track option.id) {\n \n {{ option[valueProp] }} {{ option[viewValueProp] }}\n \n }\n \n }\n \n\n" + }, + { + "name": "StatusIconComponent", + "id": "component-StatusIconComponent-5ed5be1a26f6ddb8ea50856c27ba8d4e87e4905fe8a848a658d4d69e9b73402ccf67f013fe0b20f4ef2a902a645baa660c5bd7cc35776eb7fde947fc40db0281", + "file": "src/app/classroom-monitor/status-icon/status-icon.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "status-icon", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "status-icon.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "class", + "deprecated": false, + "deprecationMessage": "", + "line": 11, + "type": "string", + "decorators": [] + }, + { + "name": "name", + "deprecated": false, + "deprecationMessage": "", + "line": 12, + "type": "string", + "decorators": [] + }, + { + "name": "tooltip", + "deprecated": false, + "deprecationMessage": "", + "line": 13, + "type": "string", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [], + "methodsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@Component({\n imports: [MatIconModule, MatTooltipModule],\n selector: 'status-icon',\n templateUrl: 'status-icon.component.html'\n})\nexport class StatusIconComponent {\n @Input() class: string;\n @Input() name: string;\n @Input() tooltip: string;\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [], + "templateData": "\n {{ name }}\n\n" + }, + { + "name": "StepInfoComponent", + "id": "component-StepInfoComponent-ec9850b94a2627c481b6df6ca7b7805a6c155dfea16bc0be97b3c85cec55cd60bce37ead507316c87158f4ba46ce5ec9e15a59c912231abae4ea0fa39d1832ff", + "file": "src/app/classroom-monitor/step-info/step-info.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "step-info", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "step-info.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "hasAlert", + "deprecated": false, + "deprecationMessage": "", + "line": 15, + "type": "boolean", + "decorators": [] + }, + { + "name": "hasNewAlert", + "deprecated": false, + "deprecationMessage": "", + "line": 16, + "type": "boolean", + "decorators": [] + }, + { + "name": "hasNewWork", + "deprecated": false, + "deprecationMessage": "", + "line": 17, + "type": "boolean", + "decorators": [] + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 19, + "type": "string", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "alertIconClass", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "modifierKind": [ + 124 + ] + }, + { + "name": "alertIconLabel", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "modifierKind": [ + 124 + ] + }, + { + "name": "alertIconName", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "modifierKind": [ + 124 + ] + }, + { + "name": "hasRubrics", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "modifierKind": [ + 124 + ] + }, + { + "name": "rubricIconLabel", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 20, + "modifierKind": [ + 124 + ] + }, + { + "name": "stepTitle", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 21, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 25, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "NodeIconComponent", + "type": "component" + }, + { + "name": "StatusIconComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input } from '@angular/core';\nimport { TeacherProjectService } from '../../../assets/wise5/services/teacherProjectService';\nimport { StatusIconComponent } from '../status-icon/status-icon.component';\nimport { NodeIconComponent } from '../../../assets/wise5/vle/node-icon/node-icon.component';\n\n@Component({\n imports: [NodeIconComponent, StatusIconComponent],\n selector: 'step-info',\n templateUrl: 'step-info.component.html'\n})\nexport class StepInfoComponent {\n protected alertIconClass: string;\n protected alertIconLabel: string;\n protected alertIconName: string;\n @Input() hasAlert: boolean;\n @Input() hasNewAlert: boolean;\n @Input() hasNewWork: boolean;\n protected hasRubrics: boolean;\n @Input() nodeId: string;\n protected rubricIconLabel: string;\n protected stepTitle: string;\n\n constructor(private projectService: TeacherProjectService) {}\n\n ngOnInit(): void {\n this.stepTitle = this.projectService.getNodePositionAndTitle(this.nodeId);\n if (this.hasAlert) {\n this.alertIconClass = this.hasNewAlert ? 'warn' : 'text-disabled';\n this.alertIconName = 'notifications';\n this.alertIconLabel = this.hasNewAlert\n ? $localize`Has new alert(s)`\n : $localize`Has dismissed alert(s)`;\n }\n this.hasRubrics = this.projectService.getNode(this.nodeId).getNumRubrics() > 0;\n this.rubricIconLabel = $localize`Step has rubrics/teaching tips`;\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 21, + "jsdoctags": [ + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "
    \n \n   \n {{ stepTitle }}\n @if (hasAlert) {\n \n }\n @if (hasRubrics) {\n \n }\n @if (hasNewWork) {\n New\n }\n
    \n" + }, + { + "name": "StepItemComponent", + "id": "component-StepItemComponent-41451eb5e7918095fb7c9602afbd7070694f4c65f242693f5a1fb430726bc0eee48f59e788dbeb6b420293a87004381b862408ca2ff7d4880e68d73d36e84c4f", + "file": "src/assets/wise5/classroomMonitor/classroomMonitorComponents/studentGrading/step-item/step-item.component.ts", + "encapsulation": [ + "ViewEncapsulation.None" + ], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "step-item", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./step-item.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "expand", + "deprecated": false, + "deprecationMessage": "", + "line": 44, + "type": "boolean", + "decorators": [] + }, + { + "name": "inView", + "deprecated": false, + "deprecationMessage": "", + "line": 48, + "type": "boolean", + "decorators": [] + }, + { + "name": "maxScore", + "deprecated": false, + "deprecationMessage": "", + "line": 49, + "type": "number", + "decorators": [] + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 50, + "type": "string", + "decorators": [] + }, + { + "name": "showScore", + "deprecated": false, + "deprecationMessage": "", + "line": 53, + "type": "boolean", + "decorators": [] + }, + { + "name": "stepData", + "deprecated": false, + "deprecationMessage": "", + "line": 57, + "type": "any", + "decorators": [] + }, + { + "name": "workgroupId", + "deprecated": false, + "deprecationMessage": "", + "line": 58, + "type": "number", + "decorators": [] + } + ], + "outputsClass": [ + { + "name": "onUpdateExpand", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 51, + "type": "any" + } + ], + "propertiesClass": [ + { + "name": "componentIdToIsVisible", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "literal type", + "indexKey": "", + "optional": false, + "description": "", + "line": 41, + "modifierKind": [ + 124 + ] + }, + { + "name": "components", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 42, + "modifierKind": [ + 124 + ] + }, + { + "name": "disabled", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 43, + "modifierKind": [ + 124 + ] + }, + { + "name": "hasAlert", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 45, + "modifierKind": [ + 124 + ] + }, + { + "name": "hasNewAlert", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 46, + "modifierKind": [ + 124 + ] + }, + { + "name": "hasNewWork", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 47, + "modifierKind": [ + 124 + ] + }, + { + "name": "score", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 52, + "modifierKind": [ + 124 + ] + }, + { + "name": "status", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 54, + "modifierKind": [ + 123 + ] + }, + { + "name": "statusClass", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 55, + "modifierKind": [ + 124 + ] + }, + { + "name": "statusText", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 56, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "getComponentTypeLabel", + "args": [ + { + "name": "type", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 124, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "type", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnChanges", + "args": [ + { + "name": "changesObj", + "type": "SimpleChanges", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 65, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "changesObj", + "type": "SimpleChanges", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "toggleExpand", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 117, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "update", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 85, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "ComponentNewWorkBadgeComponent", + "type": "component" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatListModule", + "type": "module" + }, + { + "name": "StepInfoComponent", + "type": "component" + }, + { + "name": "WorkgroupComponentGradingComponent", + "type": "component" + }, + { + "name": "WorkgroupNodeStatusComponent", + "type": "component" + }, + { + "name": "WorkgroupNodeScoreComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import {\n Component,\n EventEmitter,\n Input,\n Output,\n SimpleChanges,\n ViewEncapsulation\n} from '@angular/core';\nimport { copy } from '../../../../common/object/object';\nimport { ComponentServiceLookupService } from '../../../../services/componentServiceLookupService';\nimport { TeacherProjectService } from '../../../../services/teacherProjectService';\nimport { calculateComponentVisibility } from '../../shared/grading-helpers/grading-helpers';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatListModule } from '@angular/material/list';\nimport { CommonModule } from '@angular/common';\nimport { StepInfoComponent } from '../../../../../../app/classroom-monitor/step-info/step-info.component';\nimport { ComponentNewWorkBadgeComponent } from '../../../../../../app/classroom-monitor/component-new-work-badge/component-new-work-badge.component';\nimport { WorkgroupNodeStatusComponent } from '../../../../../../app/classroom-monitor/workgroup-node-status/workgroup-node-status.component';\nimport { WorkgroupNodeScoreComponent } from '../../shared/workgroupNodeScore/workgroup-node-score.component';\nimport { WorkgroupComponentGradingComponent } from '../../workgroup-component-grading/workgroup-component-grading.component';\n\n@Component({\n imports: [\n CommonModule,\n ComponentNewWorkBadgeComponent,\n MatButtonModule,\n MatIconModule,\n MatListModule,\n StepInfoComponent,\n WorkgroupComponentGradingComponent,\n WorkgroupNodeStatusComponent,\n WorkgroupNodeScoreComponent\n ],\n selector: 'step-item',\n templateUrl: './step-item.component.html',\n styleUrl: './step-item.component.scss',\n encapsulation: ViewEncapsulation.None\n})\nexport class StepItemComponent {\n protected componentIdToIsVisible: { [componentId: string]: boolean } = {};\n protected components: any[];\n protected disabled: boolean;\n @Input() expand: boolean;\n protected hasAlert: boolean;\n protected hasNewAlert: boolean;\n protected hasNewWork: boolean;\n @Input() inView: boolean;\n @Input() maxScore: number;\n @Input() nodeId: string;\n @Output() onUpdateExpand: any = new EventEmitter();\n protected score: any;\n @Input() showScore: boolean;\n private status: any;\n protected statusClass: string;\n protected statusText: string = '';\n @Input() stepData: any;\n @Input() workgroupId: number;\n\n constructor(\n private componentServiceLookupService: ComponentServiceLookupService,\n private projectService: TeacherProjectService\n ) {}\n\n ngOnChanges(changesObj: SimpleChanges): void {\n if (changesObj.maxScore) {\n this.maxScore =\n typeof changesObj.maxScore.currentValue === 'number' ? changesObj.maxScore.currentValue : 0;\n }\n if (changesObj.stepData) {\n const stepData = copy(changesObj.stepData.currentValue);\n this.hasAlert = stepData.hasAlert;\n this.hasNewAlert = stepData.hasNewAlert;\n this.status = stepData.completionStatus;\n this.score = stepData.score >= 0 ? stepData.score : '-';\n this.components = this.projectService.getComponents(this.nodeId);\n this.componentIdToIsVisible = calculateComponentVisibility(\n this.projectService.calculateComponentIdToHasWork(this.components),\n stepData.nodeStatus.componentStatuses\n );\n }\n this.update();\n }\n\n private update(): void {\n switch (this.status) {\n case -1:\n this.statusClass = ' ';\n this.statusText = $localize`Not Assigned`;\n break;\n case 2:\n this.statusClass = 'success';\n if (this.showScore) {\n this.statusText = $localize`Completed`;\n } else {\n this.statusText = $localize`Visited`;\n }\n break;\n case 1:\n this.statusClass = 'text';\n this.statusText = $localize`Partially Completed`;\n break;\n default:\n this.statusClass = 'text-secondary';\n if (this.showScore) {\n this.statusText = $localize`No Work`;\n } else {\n this.statusText = $localize`Not Visited`;\n }\n }\n if (this.hasNewAlert) {\n this.statusClass = 'warn';\n }\n this.disabled = this.status === -1;\n }\n\n protected toggleExpand(): void {\n if (this.showScore) {\n const expand = !this.expand;\n this.onUpdateExpand.emit({ nodeId: this.nodeId, value: expand });\n }\n }\n\n protected getComponentTypeLabel(type: string): string {\n return this.componentServiceLookupService.getService(type).getComponentTypeLabel();\n }\n}\n", + "styleUrl": "./step-item.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "componentServiceLookupService", + "type": "ComponentServiceLookupService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 58, + "jsdoctags": [ + { + "name": "componentServiceLookupService", + "type": "ComponentServiceLookupService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "\n
    \n \n
    \n \n \n \n
    \n @if (showScore) {\n
    \n \n
    \n }\n
    \n \n \n @if (expand && !disabled) {\n \n
    \n @for (component of components; track component.id; let i = $index) {\n @if (componentIdToIsVisible[component.id]) {\n \n

    \n {{ i + 1 + '. ' + getComponentTypeLabel(component.type) }} \n \n

    \n \n
    \n }\n }\n \n
    \n }\n\n" + }, + { + "name": "StepToolsComponent", + "id": "component-StepToolsComponent-18f191107e995596f4846e828b95b22fe393d127f73be0b1a18d96c3fedac372cc5cd6c78ecfac9f3cd0115b611d9f93a3404fdf0a01d5b67730ec74ca831795", + "file": "src/assets/wise5/common/stepTools/step-tools.component.ts", + "encapsulation": [ + "ViewEncapsulation.None" + ], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "step-tools", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "step-tools.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "icons", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 35, + "modifierKind": [ + 124 + ] + }, + { + "name": "nextId", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 36, + "modifierKind": [ + 124 + ] + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 37, + "modifierKind": [ + 124 + ] + }, + { + "name": "nodeIds", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 38, + "modifierKind": [ + 124 + ] + }, + { + "name": "prevId", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 39, + "modifierKind": [ + 124 + ] + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 40, + "modifierKind": [ + 123 + ] + } + ], + "methodsClass": [ + { + "name": "calculateNodeIds", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 73, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "getNextNodeId", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 105, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "getNodeId", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 97, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "getNodePositionAndTitle", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 109, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getPrevNodeId", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 101, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "goToNextNode", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 122, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "goToPrevNode", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 117, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "isGroupNode", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 113, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 69, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 49, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 78, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "updateModel", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 82, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatInputModule", + "type": "module" + }, + { + "name": "MatSelectModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + }, + { + "name": "NodeIconComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { CommonModule } from '@angular/common';\nimport { Component, ViewEncapsulation } from '@angular/core';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { NodeIconComponent } from '../../vle/node-icon/node-icon.component';\nimport { NodeService } from '../../services/nodeService';\nimport { Subscription } from 'rxjs';\nimport { TeacherDataService } from '../../services/teacherDataService';\nimport { TeacherProjectService } from '../../services/teacherProjectService';\n\n@Component({\n encapsulation: ViewEncapsulation.None,\n imports: [\n CommonModule,\n FormsModule,\n MatButtonModule,\n MatFormFieldModule,\n MatIconModule,\n MatInputModule,\n MatSelectModule,\n MatTooltipModule,\n NodeIconComponent\n ],\n selector: 'step-tools',\n styleUrl: 'step-tools.component.scss',\n templateUrl: 'step-tools.component.html'\n})\nexport class StepToolsComponent {\n protected icons: any;\n protected nextId: any;\n protected nodeId: string;\n protected nodeIds: string[];\n protected prevId: any;\n private subscriptions: Subscription = new Subscription();\n\n constructor(\n protected dataService: TeacherDataService,\n protected dir: Directionality,\n protected nodeService: NodeService,\n protected projectService: TeacherProjectService\n ) {}\n\n ngOnInit(): void {\n this.calculateNodeIds();\n this.updateModel();\n if (this.dir.value === 'rtl') {\n this.icons = { prev: 'chevron_right', next: 'chevron_left' };\n } else {\n this.icons = { prev: 'chevron_left', next: 'chevron_right' };\n }\n this.subscriptions.add(\n this.dataService.currentNodeChanged$.subscribe(() => {\n this.updateModel();\n })\n );\n this.subscriptions.add(\n this.projectService.projectParsed$.subscribe(() => {\n this.calculateNodeIds();\n })\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n protected calculateNodeIds(): void {\n this.nodeIds = Object.keys(this.projectService.idToOrder);\n this.nodeIds.shift(); // remove the 'group0' master root node from consideration\n }\n\n protected nodeChanged(): void {\n this.dataService.setCurrentNodeByNodeId(this.nodeId);\n }\n\n protected updateModel(): void {\n this.nodeId = this.getNodeId();\n if (this.nodeId == null) {\n this.prevId = null;\n this.nextId = null;\n } else {\n if (!this.projectService.isGroupNode(this.nodeId)) {\n this.prevId = this.getPrevNodeId();\n this.getNextNodeId().then((nextId) => {\n this.nextId = nextId;\n });\n }\n }\n }\n\n protected getNodeId(): string {\n return this.dataService.getCurrentNodeId();\n }\n\n protected getPrevNodeId(): string {\n return this.nodeService.getPrevNodeId(this.nodeId);\n }\n\n protected getNextNodeId(): Promise {\n return this.nodeService.getNextNodeId(this.nodeId);\n }\n\n protected getNodePositionAndTitle(nodeId: string): string {\n return this.projectService.getNodePositionAndTitle(nodeId);\n }\n\n protected isGroupNode(nodeId: string): boolean {\n return this.projectService.isGroupNode(nodeId);\n }\n\n protected goToPrevNode(): void {\n this.nodeService.goToPrevNode();\n this.nodeId = this.dataService.getCurrentNodeId();\n }\n\n protected goToNextNode(): Promise {\n return this.nodeService.goToNextNode().then((nodeId: string) => {\n this.nodeId = nodeId;\n });\n }\n}\n", + "styleUrl": "step-tools.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dir", + "type": "Directionality", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 40, + "jsdoctags": [ + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dir", + "type": "Directionality", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "
    \n \n {{ icons.prev }}\n \n @if (nodeId) {\n \n }\n  \n \n \n \n @if (nodeId) {\n {{ getNodePositionAndTitle(nodeId) }}\n } @else {\n Select a Step \n }\n \n @for (nodeId of nodeIds; track nodeId) {\n \n
    \n \n {{\n getNodePositionAndTitle(nodeId)\n }}\n
    \n
    \n }\n \n
    \n \n {{ icons.next }}\n \n
    \n" + }, + { + "name": "StepToolsComponent", + "id": "component-StepToolsComponent-f8353ccd6c33f050a4441f7b511b769e63d1d4a1b72ef49706822eac569ed6727208f5f88baaf243a294318aaafd02d96bc78232b4d3c93802e843ec0fce5085-1", + "file": "src/assets/wise5/themes/default/themeComponents/stepTools/step-tools.component.ts", + "encapsulation": [ + "ViewEncapsulation.None" + ], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "step-tools", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./step-tools.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "icons", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 35, + "modifierKind": [ + 124 + ] + }, + { + "name": "is_rtl", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 37, + "modifierKind": [ + 124 + ] + }, + { + "name": "isSurvey", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 36, + "modifierKind": [ + 124 + ] + }, + { + "name": "nextId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 38, + "modifierKind": [ + 124 + ] + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 39, + "modifierKind": [ + 124 + ] + }, + { + "name": "nodeIds", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 40, + "modifierKind": [ + 124 + ] + }, + { + "name": "nodeStatus", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 41, + "modifierKind": [ + 124 + ] + }, + { + "name": "nodeStatuses", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 42, + "modifierKind": [ + 124 + ] + }, + { + "name": "prevId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 43, + "modifierKind": [ + 124 + ] + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 44, + "modifierKind": [ + 123 + ] + }, + { + "name": "toNodeId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 45, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "calculateNodeIds", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "closeNode", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 122, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "getNodePositionAndTitle", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 106, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "goToNextNode", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 118, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "goToPrevNode", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 114, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "isGroupNode", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 110, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 79, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 54, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "subscribeToChanges", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 66, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "toNodeIdChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 88, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "updateModel", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 92, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatSelectModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + }, + { + "name": "NodeIconComponent", + "type": "component" + }, + { + "name": "NodeStatusIconComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { CommonModule } from '@angular/common';\nimport { Component, OnInit, ViewEncapsulation } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { NodeIconComponent } from '../../../../vle/node-icon/node-icon.component';\nimport { NodeService } from '../../../../services/nodeService';\nimport { NodeStatusIconComponent } from '../nodeStatusIcon/node-status-icon.component';\nimport { NodeStatusService } from '../../../../services/nodeStatusService';\nimport { ProjectService } from '../../../../services/projectService';\nimport { StudentDataService } from '../../../../services/studentDataService';\nimport { Subscription } from 'rxjs';\n\n@Component({\n encapsulation: ViewEncapsulation.None,\n imports: [\n CommonModule,\n FormsModule,\n MatButtonModule,\n MatFormFieldModule,\n MatIconModule,\n MatSelectModule,\n MatTooltipModule,\n NodeIconComponent,\n NodeStatusIconComponent\n ],\n selector: 'step-tools',\n styleUrl: './step-tools.component.scss',\n templateUrl: './step-tools.component.html'\n})\nexport class StepToolsComponent implements OnInit {\n protected icons: any;\n protected isSurvey: boolean;\n protected is_rtl: boolean;\n protected nextId: string;\n protected nodeId: string;\n protected nodeIds: string[];\n protected nodeStatus: any;\n protected nodeStatuses: any;\n protected prevId: string;\n private subscriptions: Subscription = new Subscription();\n protected toNodeId: string;\n\n constructor(\n private nodeService: NodeService,\n private nodeStatusService: NodeStatusService,\n private projectService: ProjectService,\n private studentDataService: StudentDataService\n ) {}\n\n ngOnInit(): void {\n this.is_rtl = $('html').attr('dir') == 'rtl';\n this.icons = { prev: 'chevron_left', next: 'chevron_right' };\n if (this.is_rtl) {\n this.icons = { prev: 'chevron_right', next: 'chevron_left' };\n }\n this.calculateNodeIds();\n this.nodeStatuses = this.nodeStatusService.getNodeStatuses();\n this.updateModel();\n this.subscribeToChanges();\n }\n\n private subscribeToChanges(): void {\n this.subscriptions.add(\n this.studentDataService.currentNodeChanged$.subscribe(() => {\n this.updateModel();\n })\n );\n this.subscriptions.add(\n this.studentDataService.nodeStatusesChanged$.subscribe(() => {\n this.updateModel();\n })\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n private calculateNodeIds(): void {\n this.nodeIds = Object.keys(this.projectService.idToOrder);\n this.nodeIds.shift(); // remove the 'group0' master root node from consideration\n }\n\n protected toNodeIdChanged(): void {\n this.nodeService.setCurrentNode(this.toNodeId);\n }\n\n private updateModel(): void {\n const nodeId = this.studentDataService.getCurrentNodeId();\n if (!this.projectService.isGroupNode(nodeId)) {\n this.nodeId = nodeId;\n this.nodeStatus = this.nodeStatuses[this.nodeId];\n this.prevId = this.nodeService.getPrevNodeId();\n this.nextId = null;\n this.nodeService.getNextNodeId().then((nodeId: string) => {\n this.nextId = nodeId;\n });\n this.toNodeId = this.nodeId;\n }\n }\n\n protected getNodePositionAndTitle(nodeId: string): string {\n return this.projectService.getNodePositionAndTitle(nodeId);\n }\n\n protected isGroupNode(nodeId: string): boolean {\n return this.projectService.isGroupNode(nodeId);\n }\n\n protected goToPrevNode(): void {\n this.nodeService.goToPrevNode();\n }\n\n protected goToNextNode(): void {\n this.nodeService.goToNextNode();\n }\n\n protected closeNode(): void {\n this.nodeService.closeNode();\n }\n}\n", + "styleUrl": "./step-tools.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeStatusService", + "type": "NodeStatusService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentDataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 45, + "jsdoctags": [ + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeStatusService", + "type": "NodeStatusService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentDataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ], + "isDuplicate": true, + "duplicateId": 1, + "duplicateName": "StepToolsComponent-1", + "templateData": "
    \n
    \n \n {{ icons.prev }}\n \n
    \n \n
    \n  \n \n \n \n {{ getNodePositionAndTitle(nodeId) }}\n \n @for (nodeId of nodeIds; track nodeId) {\n @if (nodeStatuses[nodeId].isVisible) {\n \n
    \n \n {{\n getNodePositionAndTitle(nodeId)\n }}\n
    \n
    \n }\n }\n \n
    \n
    \n \n
    \n \n {{ icons.next }}\n \n
    \n
    \n \n view_list\n \n
    \n
    \n" + }, + { + "name": "StudentAccountMenuComponent", + "id": "component-StudentAccountMenuComponent-414d881073a31d26b138fab297dd77cdf59cd4c0f070b97e41e4b3394080fd3141c73ef598427026ac126f0a83690af4f0f3082d4ae7269e82fcd12bb94bce2c", + "file": "src/assets/wise5/vle/student-account-menu/student-account-menu.component.ts", + "encapsulation": [ + "ViewEncapsulation.None" + ], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "student-account-menu", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./student-account-menu.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "hideTotalScores", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 25 + }, + { + "name": "isAuthenticated", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 26 + }, + { + "name": "maxScore", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 27 + }, + { + "name": "menu", + "deprecated": false, + "deprecationMessage": "", + "type": "MatMenu", + "indexKey": "", + "optional": false, + "description": "", + "line": 23, + "decorators": [ + { + "name": "ViewChild", + "stringifiedArguments": "MatMenu, {static: true}" + } + ], + "modifierKind": [ + 171 + ] + }, + { + "name": "nodeStatuses", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 28 + }, + { + "name": "rootNode", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 29 + }, + { + "name": "rootNodeStatus", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 30 + }, + { + "name": "scorePercentage", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 31 + }, + { + "name": "showScore", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 32 + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 33 + }, + { + "name": "themeSettings", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 34 + }, + { + "name": "totalScore", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 36 + }, + { + "name": "totalScoreNum", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 35 + }, + { + "name": "usernamesDisplay", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 37 + }, + { + "name": "usersInWorkgroup", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 38 + }, + { + "name": "workgroupId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 39 + } + ], + "methodsClass": [ + { + "name": "getAvatarColorForWorkgroupId", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 113, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getMaxScore", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 82, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the max possible score for the project\nto the current workgroup or null if none of the visible components has max scores.\n", + "description": "

    Get the max possible score for the project\nto the current workgroup or null if none of the visible components has max scores.

    \n", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "tagName": { + "pos": 2944, + "end": 2951, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

    the sum of the max scores for all the nodes in the project visible\nto the current workgroup or null if none of the visible components has max scores.

    \n" + } + ] + }, + { + "name": "getUsernamesDisplay", + "args": [ + { + "name": "users", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 102, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "users", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "goHome", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 117, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "logOut", + "args": [ + { + "name": "eventName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "'logOut'" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 128, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "eventName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "'logOut'", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 66, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 48, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "updateScores", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 70, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatMenu" + }, + { + "name": "MatIcon" + }, + { + "name": "MatDivider" + }, + { + "name": "MatProgressBar" + }, + { + "name": "MatButton" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, OnDestroy, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { MatMenu } from '@angular/material/menu';\nimport { Subscription } from 'rxjs';\nimport { ConfigService } from '../../services/configService';\nimport { ProjectService } from '../../services/projectService';\nimport { SessionService } from '../../services/sessionService';\nimport { StudentDataService } from '../../services/studentDataService';\nimport { getAvatarColorForWorkgroupId } from '../../common/workgroup/workgroup';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatDivider } from '@angular/material/divider';\nimport { MatProgressBar } from '@angular/material/progress-bar';\nimport { MatButton } from '@angular/material/button';\n\n@Component({\n encapsulation: ViewEncapsulation.None,\n imports: [MatMenu, MatIcon, MatDivider, MatProgressBar, MatButton],\n selector: 'student-account-menu',\n styleUrl: './student-account-menu.component.scss',\n templateUrl: './student-account-menu.component.html'\n})\nexport class StudentAccountMenuComponent implements OnInit, OnDestroy {\n @ViewChild(MatMenu, { static: true })\n menu: MatMenu;\n\n hideTotalScores: boolean;\n isAuthenticated: boolean;\n maxScore: number;\n nodeStatuses: any;\n rootNode: any;\n rootNodeStatus: any;\n scorePercentage: number;\n showScore: boolean;\n subscriptions: Subscription = new Subscription();\n themeSettings: any;\n totalScoreNum: number;\n totalScore: string;\n usernamesDisplay: string;\n usersInWorkgroup: any[];\n workgroupId: number;\n\n constructor(\n private configService: ConfigService,\n private dataService: StudentDataService,\n private projectService: ProjectService,\n private sessionService: SessionService\n ) {}\n\n ngOnInit(): void {\n this.isAuthenticated = this.sessionService.isAuthenticated();\n this.nodeStatuses = this.dataService.nodeStatuses;\n this.rootNode = this.projectService.getProjectRootNode();\n this.rootNodeStatus = this.nodeStatuses[this.rootNode.id];\n this.workgroupId = this.configService.getWorkgroupId();\n this.usersInWorkgroup = this.configService.getUsernamesByWorkgroupId(this.workgroupId);\n this.usernamesDisplay = this.getUsernamesDisplay(this.usersInWorkgroup);\n this.maxScore = this.getMaxScore();\n this.showScore = this.maxScore != null;\n if (this.showScore) {\n this.updateScores();\n this.subscriptions.add(\n this.dataService.nodeStatusesChanged$.subscribe(() => this.updateScores())\n );\n }\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n private updateScores(): void {\n this.totalScoreNum = this.dataService.getTotalScore();\n this.totalScore = typeof this.totalScoreNum === 'number' ? this.totalScoreNum.toString() : '-';\n this.maxScore = this.getMaxScore();\n this.scorePercentage = Math.ceil((100 * this.totalScoreNum) / this.maxScore);\n }\n\n /**\n * Get the max possible score for the project\n * @returns the sum of the max scores for all the nodes in the project visible\n * to the current workgroup or null if none of the visible components has max scores.\n */\n private getMaxScore(): number {\n let maxScore = null;\n for (const property in this.nodeStatuses) {\n if (this.nodeStatuses.hasOwnProperty(property)) {\n const nodeStatus = this.nodeStatuses[property];\n const nodeId = nodeStatus.nodeId;\n if (nodeStatus.isVisible && !this.projectService.isGroupNode(nodeId)) {\n const nodeMaxScore = this.projectService.getMaxScoreForNode(nodeId);\n if (nodeMaxScore) {\n if (maxScore == null) {\n maxScore = 0;\n }\n maxScore += nodeMaxScore;\n }\n }\n }\n }\n return maxScore;\n }\n\n getUsernamesDisplay(users: any[]): string {\n let usernamesDisplay = '';\n for (const user of users) {\n if (usernamesDisplay !== '') {\n usernamesDisplay += ', ';\n }\n usernamesDisplay += user.name;\n }\n return usernamesDisplay;\n }\n\n getAvatarColorForWorkgroupId(workgroupId: number): string {\n return getAvatarColorForWorkgroupId(workgroupId);\n }\n\n goHome() {\n const nodeId = null;\n const componentId = null;\n const componentType = null;\n const category = 'Navigation';\n const event = 'goHomeButtonClicked';\n const eventData = {};\n this.dataService.saveVLEEvent(nodeId, componentId, componentType, category, event, eventData);\n this.sessionService.goHome();\n }\n\n logOut(eventName = 'logOut') {\n const nodeId = null;\n const componentId = null;\n const componentType = null;\n const category = 'Navigation';\n const event = eventName;\n const eventData = {};\n this.dataService\n .saveVLEEvent(nodeId, componentId, componentType, category, event, eventData)\n .then(() => {\n this.sessionService.logOut();\n });\n }\n}\n", + "styleUrl": "./student-account-menu.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "sessionService", + "type": "SessionService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 39, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "sessionService", + "type": "SessionService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit", + "OnDestroy" + ], + "templateData": "\n" + }, + { + "name": "StudentAssetsComponent", + "id": "component-StudentAssetsComponent-06b9fd1a3b458f88c4e339b0164eed74a7a083b8067f3689ab301febd4e5f1d0c1a11ded664af212f300be434e4d0730343bc069583a408330be90551762ca85", + "file": "src/assets/wise5/vle/studentAsset/student-assets/student-assets.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "student-assets", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./student-assets.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "component", + "deprecated": false, + "deprecationMessage": "", + "line": 15, + "type": "WISEComponent", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "mode", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "modifierKind": [ + 124 + ] + }, + { + "name": "studentAssets", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "attachStudentAsset", + "args": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 54, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "attachStudentAssetToComponent", + "args": [ + { + "name": "$event", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 47, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "$event", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 24, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "retrieveStudentAssets", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 32, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "uploadStudentAssets", + "args": [ + { + "name": "files", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 38, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "files", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "DragAndDropDirective", + "type": "directive" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input, OnInit } from '@angular/core';\nimport { ConfigService } from '../../../services/configService';\nimport { StudentAssetService } from '../../../services/studentAssetService';\nimport { Component as WISEComponent } from '../../../common/Component';\nimport { CommonModule } from '@angular/common';\nimport { DragAndDropDirective } from '../../../common/drag-and-drop/drag-and-drop.directive';\n\n@Component({\n imports: [CommonModule, DragAndDropDirective],\n selector: 'student-assets',\n styleUrl: './student-assets.component.scss',\n templateUrl: './student-assets.component.html'\n})\nexport class StudentAssetsComponent implements OnInit {\n @Input() component: WISEComponent;\n protected mode: string;\n protected studentAssets: any = [];\n\n constructor(\n private configService: ConfigService,\n private studentAssetService: StudentAssetService\n ) {}\n\n ngOnInit(): void {\n this.mode = this.configService.getMode();\n this.studentAssets = this.studentAssetService.allAssets;\n if (!this.configService.isPreview()) {\n this.retrieveStudentAssets();\n }\n }\n\n private retrieveStudentAssets(): void {\n this.studentAssetService\n .retrieveAssets()\n .then((studentAssets) => (this.studentAssets = studentAssets));\n }\n\n protected uploadStudentAssets(files: any[]): void {\n for (const file of files) {\n this.studentAssetService.uploadAsset(file).then((studentAsset) => {\n this.attachStudentAsset(studentAsset);\n this.studentAssets = this.studentAssetService.allAssets;\n });\n }\n }\n\n protected attachStudentAssetToComponent($event, studentAsset: any): void {\n // prevents parent student asset list item from getting the onclick event so this item won't be\n // re-selected.\n $event.stopPropagation();\n this.attachStudentAsset(studentAsset);\n }\n\n private attachStudentAsset(studentAsset: any): void {\n if (this.component.isAcceptsAssets()) {\n this.studentAssetService.broadcastAttachStudentAsset(this.component, studentAsset);\n }\n }\n}\n", + "styleUrl": "./student-assets.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentAssetService", + "type": "StudentAssetService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 17, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentAssetService", + "type": "StudentAssetService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "@if (studentAssets.length > 0) {\n
    \n @for (studentAsset of studentAssets; track studentAsset) {\n \n }\n
    \n}\n@if (mode === 'preview') {\n
    The student assets will appear here once you set up a classroom run.
    \n} @else {\n
    \n \n
    Drop image or file here or click to upload!
    \n
    \n}\n" + }, + { + "name": "StudentAssetsDialogComponent", + "id": "component-StudentAssetsDialogComponent-95382f97a125efacf0295737c0cc5559b544b76724ad4405e0a927f188cc84e87af821b9cf89cf047cb8cddf511ed79103d70d723d0c17bcdcc78d2d16417dae", + "file": "src/assets/wise5/vle/studentAsset/student-assets-dialog/student-assets-dialog.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "student-assets-dialog.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [], + "methodsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatDialogModule", + "type": "module" + }, + { + "name": "StudentAssetsComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Inject } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';\nimport { Component as WISEComponent } from '../../../common/Component';\nimport { StudentAssetsComponent } from '../student-assets/student-assets.component';\nimport { MatButtonModule } from '@angular/material/button';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n imports: [CommonModule, MatButtonModule, MatDialogModule, StudentAssetsComponent],\n templateUrl: 'student-assets-dialog.component.html'\n})\nexport class StudentAssetsDialogComponent {\n constructor(@Inject(MAT_DIALOG_DATA) protected component: WISEComponent) {}\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "component", + "type": "WISEComponent", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 12, + "jsdoctags": [ + { + "name": "component", + "type": "WISEComponent", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "

    My Files

    \n\n \n\n\n \n\n" + }, + { + "name": "StudentComponent", + "id": "component-StudentComponent-2919781b723633f51ee264d019b6e4d89eb6b8374911a047e4ab06b1dcd0d344b2ce34037c9b24fa53f1c3b62feb0c01fcc1b3c47f0cef63bc3d6049ada6be9c", + "file": "src/app/student/student.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [ + ".full-height { height: 100%; }" + ], + "templateUrl": [ + "./student.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [], + "methodsClass": [ + { + "name": "isShowingAngularJSApp", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 12, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { Router } from '@angular/router';\n\n@Component({\n standalone: false,\n styles: ['.full-height { height: 100%; }'],\n templateUrl: './student.component.html'\n})\nexport class StudentComponent {\n constructor(private router: Router) {}\n\n protected isShowingAngularJSApp(): boolean {\n return (\n this.router.url.includes('/student/unit') ||\n this.router.url.includes('/preview/unit') ||\n this.router.url.includes('/survey')\n );\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": ".full-height { height: 100%; }\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 9, + "jsdoctags": [ + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "
    \n
    \n \n
    \n
    \n" + }, + { + "name": "StudentEditProfileComponent", + "id": "component-StudentEditProfileComponent-69d2775eae3835861eb172038fba3925030c76a0b9d34787540b94d7a9e5112ff6d97570f2f6229af0e6bd59ec1cc1410fd275661cf4ab0d766be934936eae4a", + "file": "src/app/student/account/edit-profile/edit-profile.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "student-edit-profile", + "styleUrls": [ + "../../../common/edit-profile/edit-profile.component.scss", + "./edit-profile.component.scss" + ], + "styles": [], + "templateUrl": [ + "./edit-profile.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "dialog", + "deprecated": false, + "deprecationMessage": "", + "type": "MatDialog", + "indexKey": "", + "optional": false, + "description": "", + "line": 38, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "EditProfileComponent" + } + }, + { + "name": "editProfileFormGroup", + "defaultValue": "this.fb.group({\n firstName: new FormControl({ value: '', disabled: true }, [Validators.required]),\n lastName: new FormControl({ value: '', disabled: true }, [Validators.required]),\n username: new FormControl({ value: '', disabled: true }, [Validators.required]),\n language: new FormControl('', [Validators.required])\n })", + "deprecated": false, + "deprecationMessage": "", + "type": "FormGroup", + "indexKey": "", + "optional": false, + "description": "", + "line": 27 + }, + { + "name": "isGoogleUser", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 25 + }, + { + "name": "isSaving", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 24 + }, + { + "name": "languages", + "deprecated": false, + "deprecationMessage": "", + "type": "object[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 23 + }, + { + "name": "snackBar", + "deprecated": false, + "deprecationMessage": "", + "type": "MatSnackBar", + "indexKey": "", + "optional": false, + "description": "", + "line": 39, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "EditProfileComponent" + } + }, + { + "name": "user", + "deprecated": false, + "deprecationMessage": "", + "type": "Student", + "indexKey": "", + "optional": false, + "description": "", + "line": 22 + }, + { + "name": "userSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 26 + }, + { + "name": "changed", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "inheritance": { + "file": "EditProfileComponent" + } + } + ], + "methodsClass": [ + { + "name": "getControlFieldValue", + "args": [ + { + "name": "fieldName", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 90, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "fieldName", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getUser", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 52, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 69, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 60, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "saveChanges", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 73, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "setControlFieldValue", + "args": [ + { + "name": "name", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "value", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 56, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "name", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "value", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "handleUpdateProfileResponse", + "args": [ + { + "name": "response", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 17, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "response", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditProfileComponent" + } + }, + { + "name": "unlinkGoogleAccount", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditProfileComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { FormGroup, FormControl, Validators, FormBuilder } from '@angular/forms';\nimport { finalize } from 'rxjs/operators';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { Student } from '../../../domain/student';\nimport { UserService } from '../../../services/user.service';\nimport { StudentService } from '../../student.service';\nimport { Subscription } from 'rxjs';\nimport { MatDialog } from '@angular/material/dialog';\nimport { EditProfileComponent } from '../../../common/edit-profile/edit-profile.component';\n\n@Component({\n selector: 'student-edit-profile',\n standalone: false,\n styleUrls: [\n '../../../common/edit-profile/edit-profile.component.scss',\n './edit-profile.component.scss'\n ],\n templateUrl: './edit-profile.component.html'\n})\nexport class StudentEditProfileComponent extends EditProfileComponent {\n user: Student;\n languages: object[];\n isSaving: boolean = false;\n isGoogleUser: boolean = false;\n userSubscription: Subscription;\n editProfileFormGroup: FormGroup = this.fb.group({\n firstName: new FormControl({ value: '', disabled: true }, [Validators.required]),\n lastName: new FormControl({ value: '', disabled: true }, [Validators.required]),\n username: new FormControl({ value: '', disabled: true }, [Validators.required]),\n language: new FormControl('', [Validators.required])\n });\n\n constructor(\n private fb: FormBuilder,\n private studentService: StudentService,\n private userService: UserService,\n public dialog: MatDialog,\n public snackBar: MatSnackBar\n ) {\n super(dialog, snackBar);\n this.user = this.getUser().getValue();\n this.setControlFieldValue('firstName', this.user.firstName);\n this.setControlFieldValue('lastName', this.user.lastName);\n this.setControlFieldValue('username', this.user.username);\n this.setControlFieldValue('language', this.user.language);\n this.userService.getLanguages().subscribe((response) => {\n this.languages = response;\n });\n }\n\n getUser() {\n return this.userService.getUser();\n }\n\n setControlFieldValue(name: string, value: string) {\n this.editProfileFormGroup.controls[name].setValue(value);\n }\n\n ngOnInit() {\n this.editProfileFormGroup.valueChanges.subscribe(() => {\n this.changed = true;\n });\n this.userSubscription = this.userService.getUser().subscribe((user) => {\n this.isGoogleUser = user.isGoogleUser;\n });\n }\n\n ngOnDestroy() {\n this.userSubscription.unsubscribe();\n }\n\n saveChanges() {\n this.isSaving = true;\n const username = this.user.username;\n const language = this.getControlFieldValue('language');\n this.studentService\n .updateProfile(username, language)\n .pipe(\n finalize(() => {\n this.isSaving = false;\n })\n )\n .subscribe((response) => {\n this.handleUpdateProfileResponse(response);\n this.userService.updateStudentUser(language);\n });\n }\n\n getControlFieldValue(fieldName) {\n return this.editProfileFormGroup.get(fieldName).value;\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": [ + { + "data": ".google-icon {\n height: 1.8em;\n width: auto;\n}\n\n.unlink {\n margin: 8px 0;\n}\n", + "styleUrl": "../../../common/edit-profile/edit-profile.component.scss" + }, + { + "data": "@use 'style/abstracts/functions';\n\n.inputs {\n max-width: functions.breakpoint('sm.min');\n}\n", + "styleUrl": "./edit-profile.component.scss" + } + ], + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "fb", + "type": "FormBuilder", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentService", + "type": "StudentService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "userService", + "type": "UserService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "snackBar", + "type": "MatSnackBar", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 32, + "jsdoctags": [ + { + "name": "fb", + "type": "FormBuilder", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentService", + "type": "StudentService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "userService", + "type": "UserService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "snackBar", + "type": "MatSnackBar", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "EditProfileComponent" + ], + "templateData": "
    \n
    \n

    \n \n First Name\n \n @if (editProfileFormGroup.controls['firstName'].hasError('required')) {\n First Name required\n }\n \n

    \n

    \n \n Last Name\n \n @if (editProfileFormGroup.controls['lastName'].hasError('required')) {\n Last Name required\n }\n \n

    \n

    \n \n Username\n \n @if (editProfileFormGroup.controls['username'].hasError('required')) {\n User Name required\n }\n \n

    \n

    \n \n Language\n \n @for (language of languages; track language) {\n \n {{ language.language }}\n \n }\n \n @if (editProfileFormGroup.controls['language'].hasError('required')) {\n Language required\n }\n \n

    \n
    \n \n \n @if (isSaving) {\n \n }\n Save Changes\n \n @if (isGoogleUser) {\n
    \n
    \n \n This profile is linked to a Google account.\n
    \n \n
    \n }\n \n\n" + }, + { + "name": "StudentFaqComponent", + "id": "component-StudentFaqComponent-c95ba61a335cfb069daf1f9206c017150a8372662dbb414eff8546f8b3206458aba126d2b00d1bf0d9f3503c53c33b2c9b81653f5a18fba3320512477eccbfcf", + "file": "src/app/help/faq/student-faq/student-faq.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./student-faq.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "contextPath", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 7, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "FaqComponent" + } + } + ], + "methodsClass": [ + { + "name": "ngAfterViewInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 20, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "FaqComponent" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 18, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "FaqComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CallToActionComponent", + "type": "component" + }, + { + "name": "MatDividerModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "RouterModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { FaqComponent } from '../faq.component';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatIconModule } from '@angular/material/icon';\nimport { CallToActionComponent } from '../../../modules/shared/call-to-action/call-to-action.component';\nimport { RouterModule } from '@angular/router';\n\n@Component({\n imports: [CallToActionComponent, MatDividerModule, MatIconModule, RouterModule],\n templateUrl: './student-faq.component.html'\n})\nexport class StudentFaqComponent extends FaqComponent {}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [ + "FaqComponent" + ], + "templateData": "
    \n

    \n faceStudent Frequently Asked Questions\n

    \n \n

    Table of Contents

    \n \n \n

    General Questions

    \n

    How do I create an account?

    \n
      \n
    1. Go to the Register page.
    2. \n
    3. Click on Student.
    4. \n
    5. Choose to sign up with your email or with your Google Account.
    6. \n
    7. Fill out the form and submit it.
    8. \n
    9. \n If you created an account using your email, you will be given a username that you will need to\n remember. Your username will be your first name and your last name with no space inbetween.\n There may be a number added at the end of your username if someone has the same name as you.\n
    10. \n
    \n

    I forgot my username, how can I find it?

    \n
      \n
    • \n Go to the forgot username page and follow the instructions to retrieve your username.\n
    • \n
    \n

    I forgot my password, how can I change it?

    \n
      \n
    • Go to the forgot password page and follow the instructions to reset your password.
    • \n
    \n

    How do I start working on a project?

    \n

    \n In order to start working on a project you must obtain an Access Code from your teacher. Once\n you have an Access Code, follow the directions below.\n

    \n
      \n
    1. Log into WISE with your student account.
    2. \n
    3. \n Click on the \"Add Unit\" button at the top right of the\n Student Home Page.\n
    4. \n
    5. Enter the Access Code from your teacher.
    6. \n
    7. Choose your period.
    8. \n
    9. Click \"Add\".
    10. \n
    11. The run will be added to your list of runs.
    12. \n
    13. Click \"Launch\" to open the project.
    14. \n
    \n

    I chose the wrong period, how can I change it?

    \n
      \n
    • Only your teacher can change your period. Please ask them for assistance.
    • \n
    \n \n

    Technical Questions

    \n

    The WISE web site won't load on my web browser. What do I do?

    \n \n

    What if I have trouble logging in?

    \n
      \n
    • \n If you do not remember your username or password click the Lost Username or Password link and\n follow the instructions.\n
    • \n
    \n

    Can I use WISE in another language?

    \n

    Yes!

    \n
      \n
    1. Sign into WISE with your student account.
    2. \n
    3. \n Click on your account icon at the top right of the page. This should open a drop down with\n options.\n
    4. \n
    5. \n Click the\n \"Edit Profile\" option.\n
    6. \n
    7. Near the bottom there will be a \"Language\" setting.
    8. \n
    9. Change the language to the language of your choice.
    10. \n
    11. \n Note 1: If your language is not listed as an option, or you'd like to help us improve the\n translation, please contact us and we'll help you get started!\n
    12. \n
    13. \n Note 2: Changing the language will change the language of the website but will not change the\n language of the projects. Projects must be independently translated which means that if you\n want to use a project in another language, you must translate it yourself or find a version of\n the project that has been translated by someone else.\n
    14. \n
    \n

    Who do I contact when I have a problem I can't solve?

    \n
      \n
    • \n The Contact WISE form will send an\n email to the WISE technology group. You can find a link to the form at the bottom of the home\n page. Be sure to include as much information as you can about the problem. We will respond as\n quickly as we can.\n
    • \n
    \n
    \n
    \n
    \n
    \n \n \n
    \n
    \n" + }, + { + "name": "StudentGradingComponent", + "id": "component-StudentGradingComponent-c5e009bcf3e83838aac3397d204b53bc7f8eb2741e6ea6fb111d8e5ad0ca9246728845f60f1a3cfef7054b3e8d98acaa8c7e1a2d936a8f618dde2e3a142c0964", + "file": "src/assets/wise5/classroomMonitor/student-grading/student-grading.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "student-grading", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./student-grading.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "workgroupId", + "deprecated": false, + "deprecationMessage": "", + "line": 47, + "type": "number", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "isExpandAll", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 33 + }, + { + "name": "maxScore", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 34 + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 35 + }, + { + "name": "nodeIds", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 36 + }, + { + "name": "nodesById", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 37 + }, + { + "name": "nodesInViewById", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 38 + }, + { + "name": "nodeVisibilityById", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 39 + }, + { + "name": "permissions", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 40 + }, + { + "name": "projectCompletion", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 41 + }, + { + "name": "showNonWorkNodes", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 42 + }, + { + "name": "sort", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 43 + }, + { + "name": "sortedNodes", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 44 + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 45 + }, + { + "name": "totalScore", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 46 + } + ], + "methodsClass": [ + { + "name": "collapseAll", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 530, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCollapse all nodes to hide student work\n", + "description": "

    Collapse all nodes to hide student work

    \n" + }, + { + "name": "expandAll", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 514, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nExpand all nodes to show student work\n", + "description": "

    Expand all nodes to show student work

    \n" + }, + { + "name": "getAlertNotificationsByNodeId", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 233, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getLatestAnnotationTimeByNodeId", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 333, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getLatestWorkTimeByNodeId", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 316, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getNodeCompletionStatus", + "args": [ + { + "name": "completionStatus", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 296, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nReturns a numerical status value for a given completion status object depending on node\ncompletion\nAvailable status values are:\n0 (not visited/no work; default)\n1 (partially completed)\n2 (completed)\n", + "description": "

    Returns a numerical status value for a given completion status object depending on node\ncompletion\nAvailable status values are:\n0 (not visited/no work; default)\n1 (partially completed)\n2 (completed)

    \n", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": { + "pos": 10750, + "end": 10766, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "completionStatus" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 10744, + "end": 10749, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    Object

    \n" + }, + { + "tagName": { + "pos": 10780, + "end": 10787, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

    Integer status value

    \n" + } + ] + }, + { + "name": "getNodeCompletionStatusByNodeId", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 251, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nReturns an object with node completion status, latest work time, and latest annotation time\nfor a workgroup for the current node\n", + "description": "

    Returns an object with node completion status, latest work time, and latest annotation time\nfor a workgroup for the current node

    \n", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": { + "pos": 9207, + "end": 9213, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 9201, + "end": 9206, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    a node ID number

    \n" + }, + { + "tagName": { + "pos": 9237, + "end": 9244, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

    Object with completion, latest work time, latest annotation time

    \n" + } + ] + }, + { + "name": "getNodeScoreByNodeId", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 358, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nReturns the score for the current workgroup for a given nodeId\n", + "description": "

    Returns the score for the current workgroup for a given nodeId

    \n", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": { + "pos": 12654, + "end": 12660, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 12648, + "end": 12653, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    a node ID number

    \n" + }, + { + "tagName": { + "pos": 12684, + "end": 12691, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

    Number score value (defaults to -1 if node has no score)

    \n" + } + ] + }, + { + "name": "initialize", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 75, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "isNodeShown", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 368, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nChecks whether a node should be shown\n", + "description": "

    Checks whether a node should be shown

    \n", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": { + "pos": 13027, + "end": 13033, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "nodeId" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 13021, + "end": 13026, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    the node Id to look for

    \n" + }, + { + "tagName": { + "pos": 13064, + "end": 13071, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

    boolean whether the workgroup should be shown

    \n" + } + ] + }, + { + "name": "ngOnChanges", + "args": [ + { + "name": "changes", + "type": "SimpleChanges", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 69, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "changes", + "type": "SimpleChanges", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 180, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 58, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeHasNewAlert", + "args": [ + { + "name": "alertNotifications", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 241, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "alertNotifications", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "onIntersection", + "args": [ + { + "name": "nodeId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "intersectionObserverEntries", + "type": "IntersectionObserverEntry[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 544, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "intersectionObserverEntries", + "type": "IntersectionObserverEntry[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "onUpdateExpand", + "args": [ + { + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 540, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setNodesById", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 188, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nBuild the nodesById object; don't include group nodes\n", + "description": "

    Build the nodesById object; don't include group nodes

    \n", + "modifierKind": [ + 123 + ] + }, + { + "name": "setSort", + "args": [ + { + "name": "value", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 375, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "value", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "sortNodes", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 384, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "sortScoreAscending", + "args": [ + { + "name": "nodeA", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeB", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 455, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeA", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeB", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "sortScoreDescending", + "args": [ + { + "name": "nodeA", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeB", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 483, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeA", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeB", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "sortStatusAscending", + "args": [ + { + "name": "nodeA", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeB", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 423, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeA", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeB", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "sortStatusDescending", + "args": [ + { + "name": "nodeA", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeB", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 439, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeA", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeB", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "sortStepAscending", + "args": [ + { + "name": "nodeA", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeB", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 407, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeA", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeB", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "sortStepDescending", + "args": [ + { + "name": "nodeA", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeB", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 415, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeA", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeB", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "subscribeToAnnotationReceived", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 118, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "subscribeToCurrentPeriodChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 160, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "subscribeToCurrentWorkgroupChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 146, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "subscribeToNotificationChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 105, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "subscribeToProjectSaved", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 96, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "subscribeToStudentWorkReceived", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 131, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "trackNode", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 553, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "updateNode", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 204, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nUpdate statuses, scores, notifications, etc. for a node object\n", + "description": "

    Update statuses, scores, notifications, etc. for a node object

    \n", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatList" + }, + { + "name": "MatListItem" + }, + { + "name": "MatButton" + }, + { + "name": "MatIcon" + }, + { + "name": "NgClass" + }, + { + "name": "IntersectionObserverModule", + "type": "module" + }, + { + "name": "StepItemComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input, OnInit, SimpleChanges } from '@angular/core';\nimport { Subscription, filter } from 'rxjs';\nimport { copy } from '../../common/object/object';\nimport { AnnotationService } from '../../services/annotationService';\nimport { ClassroomStatusService } from '../../services/classroomStatusService';\nimport { ConfigService } from '../../services/configService';\nimport { NotificationService } from '../../services/notificationService';\nimport { TeacherDataService } from '../../services/teacherDataService';\nimport { TeacherProjectService } from '../../services/teacherProjectService';\nimport { Annotation } from '../../common/Annotation';\nimport { MatList, MatListItem } from '@angular/material/list';\nimport { MatButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\nimport { NgClass } from '@angular/common';\nimport { IntersectionObserverModule } from '@ng-web-apis/intersection-observer';\nimport { StepItemComponent } from '../classroomMonitorComponents/studentGrading/step-item/step-item.component';\n\n@Component({\n imports: [\n MatList,\n MatListItem,\n MatButton,\n MatIcon,\n NgClass,\n IntersectionObserverModule,\n StepItemComponent\n ],\n selector: 'student-grading',\n styleUrl: './student-grading.component.scss',\n templateUrl: './student-grading.component.html'\n})\nexport class StudentGradingComponent implements OnInit {\n isExpandAll: boolean;\n maxScore: any;\n nodeId: string;\n nodeIds: any;\n nodesById: any = {}; // object that will hold node names, statuses, scores, notifications, etc.\n nodesInViewById: any = {}; // object that holds whether the node is in view or not\n nodeVisibilityById: any = {}; // object that specifies whether student work is visible for node\n permissions: any;\n projectCompletion: any;\n showNonWorkNodes: any = false;\n sort: any;\n sortedNodes: any[];\n subscriptions: Subscription = new Subscription();\n totalScore: number;\n @Input() workgroupId: number;\n\n constructor(\n private annotationService: AnnotationService,\n private classroomStatusService: ClassroomStatusService,\n private configService: ConfigService,\n private dataService: TeacherDataService,\n private notificationService: NotificationService,\n private projectService: TeacherProjectService\n ) {}\n\n ngOnInit(): void {\n this.subscribeToProjectSaved();\n this.subscribeToNotificationChanged();\n this.subscribeToAnnotationReceived();\n this.subscribeToStudentWorkReceived();\n this.subscribeToCurrentWorkgroupChanged();\n this.subscribeToCurrentPeriodChanged();\n this.workgroupId = Number(this.workgroupId);\n this.initialize();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.workgroupId && !changes.workgroupId.isFirstChange()) {\n this.initialize();\n }\n }\n\n private initialize(): void {\n document.body.scrollTop = document.documentElement.scrollTop = 0;\n this.sort = this.dataService.studentGradingSort;\n this.dataService.nodeGradingSort = this.sort;\n this.permissions = this.configService.getPermissions();\n const workgroup = this.configService.getUserInfoByWorkgroupId(this.workgroupId);\n this.dataService.setCurrentWorkgroup(workgroup);\n let maxScore = this.classroomStatusService.getMaxScoreForWorkgroupId(this.workgroupId);\n this.maxScore = maxScore ? maxScore : 0;\n this.totalScore = this.dataService.getTotalScoreByWorkgroupId(this.workgroupId);\n this.projectCompletion = this.classroomStatusService.getStudentProjectCompletion(\n this.workgroupId\n );\n this.nodeIds = this.projectService.getFlattenedProjectAsNodeIds();\n this.setNodesById();\n this.sortedNodes = Object.values(this.nodesById);\n this.sortNodes();\n this.collapseAll();\n document.querySelector('.view-content').scrollIntoView();\n }\n\n private subscribeToProjectSaved(): void {\n this.subscriptions.add(\n this.projectService.projectSaved$.subscribe(() => {\n this.maxScore = this.classroomStatusService.getMaxScoreForWorkgroupId(this.workgroupId);\n this.setNodesById();\n })\n );\n }\n\n private subscribeToNotificationChanged(): void {\n this.notificationService.notificationChanged$.subscribe((notification) => {\n if (notification.type === 'CRaterResult') {\n // TODO: expand to encompass other notification types that should be shown to teacher\n let workgroupId = notification.toWorkgroupId;\n let nodeId = notification.nodeId;\n if (workgroupId === this.workgroupId && this.nodesById[nodeId]) {\n this.updateNode(nodeId);\n }\n }\n });\n }\n\n private subscribeToAnnotationReceived(): void {\n this.subscriptions.add(\n this.annotationService.annotationReceived$.subscribe((annotation: Annotation) => {\n const workgroupId = annotation.toWorkgroupId;\n const nodeId = annotation.nodeId;\n if (workgroupId === this.workgroupId && this.nodesById[nodeId]) {\n this.totalScore = this.dataService.getTotalScoreByWorkgroupId(workgroupId);\n this.updateNode(nodeId);\n }\n })\n );\n }\n\n private subscribeToStudentWorkReceived(): void {\n this.subscriptions.add(\n this.dataService.studentWorkReceived$.subscribe((args: any) => {\n const studentWork = args.studentWork;\n if (studentWork != null) {\n let workgroupId = studentWork.workgroupId;\n let nodeId = studentWork.nodeId;\n if (workgroupId === this.workgroupId && this.nodesById[nodeId]) {\n this.updateNode(nodeId);\n }\n }\n })\n );\n }\n\n private subscribeToCurrentWorkgroupChanged(): void {\n this.subscriptions.add(\n this.dataService.currentWorkgroupChanged$\n .pipe(filter(({ currentWorkgroup }) => currentWorkgroup != null))\n .subscribe(({ currentWorkgroup }) => {\n const workgroupId = currentWorkgroup.workgroupId;\n if (this.workgroupId !== workgroupId) {\n this.workgroupId = workgroupId;\n this.initialize();\n }\n })\n );\n }\n\n private subscribeToCurrentPeriodChanged(): void {\n this.subscriptions.add(\n this.dataService.currentPeriodChanged$.subscribe(({ currentPeriod }) => {\n let periodId = currentPeriod.periodId;\n let currentWorkgroup = this.dataService.getCurrentWorkgroup();\n if (!currentWorkgroup) {\n let workgroups = copy(this.configService.getClassmateUserInfos());\n let n = workgroups.length;\n for (let i = 0; i < n; i++) {\n let workgroup = workgroups[i];\n if (workgroup.periodId === periodId) {\n this.dataService.setCurrentWorkgroup(workgroup);\n break;\n }\n }\n }\n })\n );\n }\n\n ngOnDestroy(): void {\n this.dataService.setCurrentWorkgroup(null);\n this.subscriptions.unsubscribe();\n }\n\n /**\n * Build the nodesById object; don't include group nodes\n */\n private setNodesById(): void {\n this.nodesById = {};\n for (let i = 0; i < this.nodeIds.length; i++) {\n const id = this.nodeIds[i];\n if (this.projectService.isApplicationNode(id)) {\n let node = copy(this.projectService.getNodeById(id));\n this.nodesById[id] = node;\n this.updateNode(id);\n }\n }\n }\n\n /**\n * Update statuses, scores, notifications, etc. for a node object\n * @param nodeID a node ID number\n */\n private updateNode(nodeId: string): void {\n const node = this.nodesById[nodeId];\n if (node) {\n let alertNotifications = this.getAlertNotificationsByNodeId(nodeId);\n node.hasAlert = alertNotifications.length > 0;\n node.hasNewAlert = this.nodeHasNewAlert(alertNotifications);\n let completionStatus = this.getNodeCompletionStatusByNodeId(nodeId);\n node.hasWork = this.projectService.nodeHasWork(nodeId);\n //node.hasNewWork = completionStatus.hasNewWork;\n node.isVisible = completionStatus.isVisible ? 1 : 0;\n node.completionStatus = this.getNodeCompletionStatus(completionStatus);\n node.score = this.getNodeScoreByNodeId(nodeId);\n node.hasScore = node.score > -1;\n node.maxScore = this.projectService.getMaxScoreForNode(nodeId);\n if (node.maxScore > 0) {\n node.hasMaxScore = true;\n node.scorePct = node.score > -1 ? +(node.score / node.maxScore).toFixed(2) : 0;\n } else {\n node.hasMaxScore = false;\n node.scorePct = 0;\n }\n node.order = this.projectService.getOrderById(nodeId);\n node.show = this.isNodeShown(nodeId);\n node.nodeStatus = this.classroomStatusService.getStudentStatusForWorkgroupId(\n this.workgroupId\n )?.nodeStatuses[nodeId];\n }\n }\n\n private getAlertNotificationsByNodeId(nodeId: string): any[] {\n const args = {\n nodeId: nodeId,\n toWorkgroupId: this.workgroupId\n };\n return this.notificationService.getAlertNotifications(args);\n }\n\n private nodeHasNewAlert(alertNotifications: any[]): boolean {\n return alertNotifications.some((notification) => !notification.timeDismissed);\n }\n\n /**\n * Returns an object with node completion status, latest work time, and latest annotation time\n * for a workgroup for the current node\n * @param nodeId a node ID number\n * @returns Object with completion, latest work time, latest annotation time\n */\n private getNodeCompletionStatusByNodeId(nodeId: string): any {\n let isCompleted = false;\n let isVisible = false;\n\n // TODO: store this info in the nodeStatus so we don't have to calculate every time?\n let latestWorkTime = this.getLatestWorkTimeByNodeId(nodeId);\n\n let latestAnnotationTime = this.getLatestAnnotationTimeByNodeId(nodeId);\n let studentStatus = this.classroomStatusService.getStudentStatusForWorkgroupId(\n this.workgroupId\n );\n if (studentStatus != null) {\n let nodeStatus = studentStatus.nodeStatuses[nodeId];\n if (nodeStatus) {\n isVisible = nodeStatus.isVisible;\n if (latestWorkTime) {\n // workgroup has at least one componentState for this node, so check if node is completed\n isCompleted = nodeStatus.isCompleted;\n }\n\n if (!this.projectService.nodeHasWork(nodeId)) {\n // the step does not generate any work so completion = visited\n isCompleted = nodeStatus.isVisited;\n }\n }\n }\n\n return {\n isCompleted: isCompleted,\n isVisible: isVisible,\n latestWorkTime: latestWorkTime,\n latestAnnotationTime: latestAnnotationTime\n };\n }\n\n /**\n * Returns a numerical status value for a given completion status object depending on node\n * completion\n * Available status values are:\n * 0 (not visited/no work; default)\n * 1 (partially completed)\n * 2 (completed)\n * @param completionStatus Object\n * @returns Integer status value\n */\n private getNodeCompletionStatus(completionStatus: any): number {\n let hasWork = completionStatus.latestWorkTime !== null;\n let isCompleted = completionStatus.isCompleted;\n let isVisible = completionStatus.isVisible;\n\n // TODO: store this info in the nodeStatus so we don't have to calculate every time (and can use\n // more widely)?\n let status = 0; // default\n\n if (!isVisible) {\n status = -1;\n } else if (isCompleted) {\n status = 2;\n } else if (hasWork) {\n status = 1;\n }\n\n return status;\n }\n\n private getLatestWorkTimeByNodeId(nodeId: string): number {\n let time = null;\n const componentStates = this.dataService.getComponentStatesByNodeId(nodeId);\n\n // loop through component states for this node, starting with most recent\n for (let i = componentStates.length - 1; i > -1; i--) {\n let componentState = componentStates[i];\n if (componentState.workgroupId === this.workgroupId) {\n // componentState is for given workgroupId\n time = componentState.serverSaveTime;\n break;\n }\n }\n\n return time;\n }\n\n private getLatestAnnotationTimeByNodeId(nodeId: string): number {\n let time = null;\n const annotations = this.dataService.getAnnotationsByNodeId(nodeId);\n\n // loop through annotations for this node, starting with most recent\n for (let i = annotations.length - 1; i > -1; i--) {\n let annotation = annotations[i];\n // TODO: support checking for annotations from shared teachers\n if (\n annotation.toWorkgroupId === this.workgroupId &&\n annotation.fromWorkgroupId === this.configService.getWorkgroupId()\n ) {\n time = annotation.serverSaveTime;\n break;\n }\n }\n\n return time;\n }\n\n /**\n * Returns the score for the current workgroup for a given nodeId\n * @param nodeId a node ID number\n * @returns Number score value (defaults to -1 if node has no score)\n */\n private getNodeScoreByNodeId(nodeId: string): number {\n const score = this.annotationService.getTotalNodeScoreForWorkgroup(this.workgroupId, nodeId);\n return typeof score === 'number' ? score : -1;\n }\n\n /**\n * Checks whether a node should be shown\n * @param nodeId the node Id to look for\n * @returns boolean whether the workgroup should be shown\n */\n private isNodeShown(nodeId: string): boolean {\n return (\n this.nodesById[nodeId].isVisible &&\n (this.projectService.nodeHasWork(nodeId) || this.showNonWorkNodes)\n );\n }\n\n protected setSort(value: string): void {\n this.sort = this.sort === value ? `-${value}` : value;\n\n // update value in the teacher data service so we can persist across view instances and\n // workgroup changes\n this.dataService.studentGradingSort = this.sort;\n this.sortNodes();\n }\n\n private sortNodes(): void {\n switch (this.sort) {\n case 'step':\n this.sortedNodes.sort(this.sortStepAscending);\n break;\n case '-step':\n this.sortedNodes.sort(this.sortStepDescending);\n break;\n case 'status':\n this.sortedNodes.sort(this.sortStatusAscending);\n break;\n case '-status':\n this.sortedNodes.sort(this.sortStatusDescending);\n break;\n case 'score':\n this.sortedNodes.sort(this.sortScoreAscending);\n break;\n case '-score':\n this.sortedNodes.sort(this.sortScoreDescending);\n break;\n }\n }\n\n private sortStepAscending(nodeA: any, nodeB: any): number {\n if (nodeA.isVisible === nodeB.isVisible) {\n return nodeA.order - nodeB.order;\n } else {\n return nodeB.isVisible - nodeA.isVisible;\n }\n }\n\n private sortStepDescending(nodeA: any, nodeB: any): number {\n if (nodeA.isVisible === nodeB.isVisible) {\n return nodeB.order - nodeA.order;\n } else {\n return nodeB.isVisible - nodeA.isVisible;\n }\n }\n\n private sortStatusAscending(nodeA: any, nodeB: any): number {\n if (nodeA.isVisible === nodeB.isVisible) {\n if (nodeA.completionStatus === nodeB.completionStatus) {\n if (nodeA.hasNewAlert === nodeB.hasNewAlert) {\n return nodeA.order - nodeB.order;\n } else {\n return nodeB.hasNewAlert - nodeA.hasNewAlert;\n }\n } else {\n return nodeA.completionStatus - nodeB.completionStatus;\n }\n } else {\n return nodeB.isVisible - nodeA.isVisible;\n }\n }\n\n private sortStatusDescending(nodeA: any, nodeB: any): number {\n if (nodeA.isVisible === nodeB.isVisible) {\n if (nodeA.completionStatus === nodeB.completionStatus) {\n if (nodeA.hasNewAlert === nodeB.hasNewAlert) {\n return nodeA.order - nodeB.order;\n } else {\n return nodeB.hasNewAlert - nodeA.hasNewAlert;\n }\n } else {\n return nodeB.completionStatus - nodeA.completionStatus;\n }\n } else {\n return nodeB.isVisible - nodeA.isVisible;\n }\n }\n\n private sortScoreAscending(nodeA: any, nodeB: any): number {\n if (nodeA.isVisible === nodeB.isVisible) {\n if (nodeA.hasScore === nodeB.hasScore) {\n if (nodeA.hasMaxScore === nodeB.hasMaxScore) {\n if (nodeA.scorePct === nodeB.scorePct) {\n if (nodeA.maxScore === nodeB.maxScore) {\n if (nodeA.score === nodeB.score) {\n return nodeA.order - nodeB.order;\n } else {\n return nodeA.score - nodeB.score;\n }\n } else {\n return nodeB.maxScore - nodeA.maxScore;\n }\n } else {\n return nodeA.scorePct - nodeB.scorePct;\n }\n } else {\n return nodeB.hasMaxScore - nodeA.hasMaxScore;\n }\n } else {\n return nodeB.hasScore - nodeA.hasScore;\n }\n } else {\n return nodeB.isVisible - nodeA.isVisible;\n }\n }\n\n private sortScoreDescending(nodeA: any, nodeB: any): number {\n if (nodeA.isVisible === nodeB.isVisible) {\n if (nodeA.hasScore === nodeB.hasScore) {\n if (nodeA.hasMaxScore === nodeB.hasMaxScore) {\n if (nodeA.scorePct === nodeB.scorePct) {\n if (nodeA.maxScore === nodeB.maxScore) {\n if (nodeA.score === nodeB.score) {\n return nodeA.order - nodeB.order;\n } else {\n return nodeA.score - nodeB.score;\n }\n } else {\n return nodeB.maxScore - nodeA.maxScore;\n }\n } else {\n return nodeB.scorePct - nodeA.scorePct;\n }\n } else {\n return nodeB.hasMaxScore - nodeA.hasMaxScore;\n }\n } else {\n return nodeB.hasScore - nodeA.hasScore;\n }\n } else {\n return nodeB.isVisible - nodeA.isVisible;\n }\n }\n\n /**\n * Expand all nodes to show student work\n */\n expandAll(): void {\n for (let i = 0; i < this.nodeIds.length; i++) {\n const id = this.nodeIds[i];\n if (this.nodesInViewById[id]) {\n // the node is currently in view so we will expand it\n this.nodeVisibilityById[id] = true;\n }\n }\n\n // set the boolean flag to denote that we are currently expanding all the nodes\n this.isExpandAll = true;\n }\n\n /**\n * Collapse all nodes to hide student work\n */\n collapseAll(): void {\n for (let i = 0; i < this.nodeIds.length; i++) {\n const id = this.nodeIds[i];\n this.nodeVisibilityById[id] = false;\n }\n\n // set the boolean flag to denote that we are not currently expanding\n this.isExpandAll = false;\n }\n\n onUpdateExpand({ nodeId, value }): void {\n this.nodeVisibilityById[nodeId] = value;\n }\n\n onIntersection(nodeId: number, intersectionObserverEntries: IntersectionObserverEntry[]): void {\n for (const entry of intersectionObserverEntries) {\n this.nodesInViewById[nodeId] = entry.isIntersecting;\n if (this.isExpandAll && entry.isIntersecting) {\n this.nodeVisibilityById[nodeId] = true;\n }\n }\n }\n\n trackNode(index: number, node: any): string {\n return `${node.id}-${node.score}-${node.maxScore}`;\n }\n}\n", + "styleUrl": "./student-grading.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "classroomStatusService", + "type": "ClassroomStatusService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "notificationService", + "type": "NotificationService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 47, + "jsdoctags": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "classroomStatusService", + "type": "ClassroomStatusService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "notificationService", + "type": "NotificationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "
    \n
    \n \n
    \n
    \n

    \n {{ projectCompletion.completionPct }}%\n Completion\n

    \n

    \n {{ totalScore }}/{{ maxScore }}\n Total Score\n

    \n
    \n
    \n
    \n \n \n
    \n \n + Expand All\n \n \n - Collapse All\n \n
    \n
    \n \n
    \n \n Step\n @if (sort === 'step' || sort === '-step') {\n \n arrow_drop_up\n \n }\n \n \n Status\n @if (sort === 'status' || sort === '-status') {\n \n arrow_drop_up\n \n }\n \n \n Score\n @if (sort === 'score' || sort === '-score') {\n \n arrow_drop_up\n \n }\n \n
    \n
    \n
    \n @for (node of sortedNodes; track trackNode($index, node)) {\n @if (node.show) {\n \n }\n }\n
    \n
    \n
    \n\n" + }, + { + "name": "StudentGradingToolsComponent", + "id": "component-StudentGradingToolsComponent-2c3a120424ef2f609cee9a1b9f84b036d8166459bc19991000f445a143b38ca9c56fe613dcd220d9647f6ecec69b51454817683074af9e3886adf809704cab60", + "file": "src/assets/wise5/classroomMonitor/classroomMonitorComponents/studentGrading/student-grading-tools/student-grading-tools.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "student-grading-tools", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./student-grading-tools.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "avatarColor", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 25, + "modifierKind": [ + 124 + ] + }, + { + "name": "nextWorkgroup", + "deprecated": false, + "deprecationMessage": "", + "type": "Workgroup", + "indexKey": "", + "optional": false, + "description": "", + "line": 26, + "modifierKind": [ + 124 + ] + }, + { + "name": "periodId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 27, + "modifierKind": [ + 123 + ] + }, + { + "name": "prevWorkgroup", + "deprecated": false, + "deprecationMessage": "", + "type": "Workgroup", + "indexKey": "", + "optional": false, + "description": "", + "line": 28, + "modifierKind": [ + 124 + ] + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 29, + "modifierKind": [ + 123 + ] + }, + { + "name": "workgroupId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 30, + "modifierKind": [ + 123 + ] + }, + { + "name": "workgroups", + "deprecated": false, + "deprecationMessage": "", + "type": "Workgroup[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 31, + "modifierKind": [ + 123 + ] + } + ], + "methodsClass": [ + { + "name": "filterWorkgroups", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 77, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "getNextWorkgroup", + "args": [ + { + "name": "currentWorkgroupIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Workgroup", + "typeParameters": [], + "line": 99, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "currentWorkgroupIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getPreviousWorkgroup", + "args": [ + { + "name": "currentWorkgroupIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Workgroup", + "typeParameters": [], + "line": 95, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "currentWorkgroupIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "goToTeam", + "args": [ + { + "name": "workgroup", + "type": "Workgroup", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 105, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "workgroup", + "type": "Workgroup", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnChanges", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 65, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 61, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 40, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "setNextAndPrev", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 87, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "sortWorkgroups", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "updateModel", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 69, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + }, + { + "name": "WorkgroupSelectAutocompleteComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, OnInit } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { Subscription } from 'rxjs/internal/Subscription';\nimport { copy } from '../../../../common/object/object';\nimport { ConfigService } from '../../../../services/configService';\nimport { TeacherDataService } from '../../../../services/teacherDataService';\nimport { getAvatarColorForWorkgroupId } from '../../../../common/workgroup/workgroup';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { filter } from 'rxjs';\nimport { WorkgroupSelectAutocompleteComponent } from '../../../../../../app/classroom-monitor/workgroup-select/workgroup-select-autocomplete/workgroup-select-autocomplete.component';\n\nclass Workgroup {\n periodId: number;\n workgroupId: number;\n}\n\n@Component({\n imports: [MatButtonModule, MatIconModule, MatTooltipModule, WorkgroupSelectAutocompleteComponent],\n selector: 'student-grading-tools',\n templateUrl: './student-grading-tools.component.html'\n})\nexport class StudentGradingToolsComponent implements OnInit {\n protected avatarColor: string;\n protected nextWorkgroup: Workgroup;\n private periodId: number;\n protected prevWorkgroup: Workgroup;\n private subscriptions: Subscription = new Subscription();\n private workgroupId: number;\n private workgroups: Workgroup[];\n\n constructor(\n private configService: ConfigService,\n private dataService: TeacherDataService,\n private route: ActivatedRoute,\n private router: Router\n ) {}\n\n ngOnInit(): void {\n if (/unit\\/(\\d*)\\/team\\/(\\w*)$/.test(this.router.url)) {\n this.workgroupId = parseInt(this.router.url.match(/\\/team\\/(\\d+)$/)[1]);\n }\n this.updateModel();\n this.subscriptions.add(\n this.dataService.currentPeriodChanged$.subscribe(() => {\n this.updateModel();\n })\n );\n this.subscriptions.add(\n this.dataService.currentWorkgroupChanged$\n .pipe(filter((workgroup) => workgroup.currentWorkgroup != null))\n .subscribe(({ currentWorkgroup }) => {\n this.workgroupId = currentWorkgroup.workgroupId;\n this.updateModel();\n this.router.navigate(['team', this.workgroupId], { relativeTo: this.route });\n })\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n ngOnChanges(): void {\n this.updateModel();\n }\n\n private updateModel(): void {\n this.avatarColor = getAvatarColorForWorkgroupId(this.workgroupId);\n this.periodId = this.dataService.getCurrentPeriod().periodId;\n this.filterWorkgroups();\n this.sortWorkgroups();\n this.setNextAndPrev();\n }\n\n private filterWorkgroups(): void {\n this.workgroups = copy(this.configService.getClassmateUserInfos())\n .filter((workgroup) => this.periodId === -1 || workgroup.periodId === this.periodId)\n .filter((workgroup) => workgroup.workgroupId != null);\n }\n\n private sortWorkgroups(): void {\n this.workgroups = this.workgroups.sort((a, b) => a.workgroupId - b.workgroupId);\n }\n\n private setNextAndPrev(): void {\n const currentWorkgroupIndex = this.workgroups.findIndex(\n (workgroup) => workgroup.workgroupId === this.workgroupId\n );\n this.prevWorkgroup = this.getPreviousWorkgroup(currentWorkgroupIndex);\n this.nextWorkgroup = this.getNextWorkgroup(currentWorkgroupIndex);\n }\n\n private getPreviousWorkgroup(currentWorkgroupIndex: number): Workgroup {\n return currentWorkgroupIndex > 0 ? this.workgroups[currentWorkgroupIndex - 1] : null;\n }\n\n private getNextWorkgroup(currentWorkgroupIndex: number): Workgroup {\n return currentWorkgroupIndex < this.workgroups.length - 1\n ? this.workgroups[currentWorkgroupIndex + 1]\n : null;\n }\n\n protected goToTeam(workgroup: Workgroup): void {\n this.dataService.setCurrentWorkgroup(workgroup);\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 31, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "
    \n \n chevron_left\n \n \n \n \n chevron_right\n \n
    \n" + }, + { + "name": "StudentHomeComponent", + "id": "component-StudentHomeComponent-32724a8bc22eba0030301eb5a0a14e4094a7e7d5a55bcf8eceacc9abdf32be13544c988e287e0bc02f6aaab01cea54efdc3ce52c1beb9c75f6259035a98e6613", + "file": "src/app/student/student-home/student-home.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "app-student-home", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./student-home.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "dialog", + "deprecated": false, + "deprecationMessage": "", + "type": "MatDialog", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "modifierKind": [ + 125 + ] + }, + { + "name": "user", + "defaultValue": "new User()", + "deprecated": false, + "deprecationMessage": "", + "type": "User", + "indexKey": "", + "optional": false, + "description": "", + "line": 14 + } + ], + "methodsClass": [ + { + "name": "getUser", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 25, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 21, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "showAddRun", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 31, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, OnInit } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { UserService } from '../../services/user.service';\nimport { User } from '../../domain/user';\nimport { AddProjectDialogComponent } from '../add-project-dialog/add-project-dialog.component';\n\n@Component({\n selector: 'app-student-home',\n standalone: false,\n styleUrl: './student-home.component.scss',\n templateUrl: './student-home.component.html'\n})\nexport class StudentHomeComponent implements OnInit {\n user: User = new User();\n\n constructor(\n private userService: UserService,\n public dialog: MatDialog\n ) {}\n\n ngOnInit(): void {\n this.getUser();\n }\n\n getUser(): void {\n this.userService.getUser().subscribe((user) => {\n this.user = user;\n });\n }\n\n showAddRun(): void {\n this.dialog.open(AddProjectDialogComponent);\n }\n}\n", + "styleUrl": "./student-home.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "userService", + "type": "UserService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 14, + "jsdoctags": [ + { + "name": "userService", + "type": "UserService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "
    \n \n
    \n homeStudent Home\n
    \n \n add\n Add Unit\n \n \n
    \n
    \n \n
    \n" + }, + { + "name": "StudentProgressComponent", + "id": "component-StudentProgressComponent-407fa689331e284c5d27e40227c94ae246d0f66d641592b2a2c2a616fcab791bb9461aff682b7bae9d68d907da0e7bc323d2d97a2b6c2050e8d36eec4802da4a", + "file": "src/assets/wise5/classroomMonitor/student-progress/student-progress.component.ts", + "encapsulation": [ + "ViewEncapsulation.None" + ], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "student-progress", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./student-progress.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "permissions", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 32, + "modifierKind": [ + 124 + ] + }, + { + "name": "sort", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 33, + "modifierKind": [ + 124 + ] + }, + { + "name": "sortedStudents", + "deprecated": false, + "deprecationMessage": "", + "type": "StudentProgress[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 34, + "modifierKind": [ + 124 + ] + }, + { + "name": "sortOptions", + "defaultValue": "{\n team: {\n label: $localize`Team`,\n fieldName: 'workgroupId',\n isNumeric: true\n },\n student: {\n label: $localize`Student`,\n fieldName: 'username',\n isNumeric: false\n },\n firstName: {\n label: $localize`First Name`,\n fieldName: 'firstName',\n isNumeric: false\n },\n lastName: {\n label: $localize`Last Name`,\n fieldName: 'lastName',\n isNumeric: false\n },\n location: {\n label: $localize`Location`,\n fieldName: 'order',\n isNumeric: true\n },\n completion: {\n label: $localize`Completion`,\n fieldName: 'completionPct',\n isNumeric: true\n },\n score: {\n label: $localize`Score`,\n fieldName: 'scorePct',\n isNumeric: true\n }\n }", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 36, + "modifierKind": [ + 124 + ] + }, + { + "name": "students", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "StudentProgress[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 73, + "modifierKind": [ + 123 + ] + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 35, + "modifierKind": [ + 123 + ] + } + ], + "methodsClass": [ + { + "name": "createSort", + "args": [ + { + "name": "fieldName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "direction", + "type": "\"asc\" | \"desc\"", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isNumeric", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 155, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "fieldName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "direction", + "type": "\"asc\" | \"desc\"", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "isNumeric", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getStudentTotalScore", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 142, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "initializeStudents", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 99, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "isWorkgroupShown", + "args": [ + { + "name": "workgroup", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 187, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "workgroup", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "localeCompareBy", + "args": [ + { + "name": "fieldName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentA", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentB", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "direction", + "type": "\"asc\" | \"desc\"", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isNumeric", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 170, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "fieldName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentA", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentB", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "direction", + "type": "\"asc\" | \"desc\"", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "isNumeric", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 95, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "setSort", + "args": [ + { + "name": "value", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 197, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "value", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "showStudentGradingView", + "args": [ + { + "name": "workgroup", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 191, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "workgroup", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "sortWorkgroups", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 146, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "updateTeam", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 124, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatListModule", + "type": "module" + }, + { + "name": "MatTableModule", + "type": "module" + }, + { + "name": "ProjectProgressComponent", + "type": "component" + }, + { + "name": "WorkgroupSelectAutocompleteComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, OnInit, ViewEncapsulation } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { ConfigService } from '../../services/configService';\nimport { ClassroomStatusService } from '../../services/classroomStatusService';\nimport { TeacherDataService } from '../../services/teacherDataService';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { ProjectCompletion } from '../../common/ProjectCompletion';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatListModule } from '@angular/material/list';\nimport { MatTableModule } from '@angular/material/table';\nimport { CommonModule } from '@angular/common';\nimport { WorkgroupSelectAutocompleteComponent } from '../../../../app/classroom-monitor/workgroup-select/workgroup-select-autocomplete/workgroup-select-autocomplete.component';\nimport { ProjectProgressComponent } from '../classroomMonitorComponents/studentProgress/project-progress/project-progress.component';\n\n@Component({\n encapsulation: ViewEncapsulation.None,\n imports: [\n CommonModule,\n MatButtonModule,\n MatIconModule,\n MatListModule,\n MatTableModule,\n ProjectProgressComponent,\n WorkgroupSelectAutocompleteComponent\n ],\n selector: 'student-progress',\n styleUrl: './student-progress.component.scss',\n templateUrl: './student-progress.component.html'\n})\nexport class StudentProgressComponent implements OnInit {\n protected permissions: any;\n protected sort: any;\n protected sortedStudents: StudentProgress[];\n private subscriptions: Subscription = new Subscription();\n protected sortOptions: any = {\n team: {\n label: $localize`Team`,\n fieldName: 'workgroupId',\n isNumeric: true\n },\n student: {\n label: $localize`Student`,\n fieldName: 'username',\n isNumeric: false\n },\n firstName: {\n label: $localize`First Name`,\n fieldName: 'firstName',\n isNumeric: false\n },\n lastName: {\n label: $localize`Last Name`,\n fieldName: 'lastName',\n isNumeric: false\n },\n location: {\n label: $localize`Location`,\n fieldName: 'order',\n isNumeric: true\n },\n completion: {\n label: $localize`Completion`,\n fieldName: 'completionPct',\n isNumeric: true\n },\n score: {\n label: $localize`Score`,\n fieldName: 'scorePct',\n isNumeric: true\n }\n };\n private students: StudentProgress[] = [];\n\n constructor(\n private classroomStatusService: ClassroomStatusService,\n private configService: ConfigService,\n private dataService: TeacherDataService,\n private route: ActivatedRoute,\n private router: Router\n ) {}\n\n ngOnInit(): void {\n this.sort = this.dataService.studentProgressSort;\n this.permissions = this.configService.getPermissions();\n this.initializeStudents();\n this.sortWorkgroups();\n this.subscriptions.add(\n this.classroomStatusService.studentStatusReceived$.subscribe((args) => {\n this.updateTeam(args.studentStatus.workgroupId);\n })\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n private initializeStudents(): void {\n this.configService\n .getClassmateUserInfos()\n .filter((workgroup: any) => workgroup.workgroupId != null)\n .forEach((workgroup: any) => {\n const workgroupId = workgroup.workgroupId;\n const userNames = this.configService\n .getDisplayUsernamesByWorkgroupId(workgroupId)\n .split(', ');\n userNames.forEach((user: any) => {\n const names = user.split(' ');\n const student = new StudentProgress({\n periodId: workgroup.periodId,\n periodName: workgroup.periodName,\n workgroupId: workgroupId,\n username: names[0] + ' ' + names[1],\n firstName: names[0],\n lastName: names[1]\n });\n this.students.push(student);\n this.updateTeam(workgroupId);\n });\n });\n }\n\n private updateTeam(workgroupId: number): void {\n const location = this.classroomStatusService.getCurrentNodeLocationForWorkgroupId(workgroupId);\n const completion = this.classroomStatusService.getStudentProjectCompletion(workgroupId);\n const score = this.getStudentTotalScore(workgroupId) || 0;\n const maxScore = this.classroomStatusService.getMaxScoreForWorkgroupId(workgroupId) ?? 0;\n this.students\n .filter((student) => student.workgroupId === workgroupId)\n .forEach((student) => {\n student.position = location?.position || '';\n student.order = location?.order || 0;\n student.completion = completion;\n student.completionPct = completion.completionPct || 0;\n student.score = score;\n student.maxScore = maxScore;\n student.scorePct = maxScore ? score / maxScore : score;\n });\n }\n\n private getStudentTotalScore(workgroupId: number): number {\n return this.dataService.getTotalScoreByWorkgroupId(workgroupId);\n }\n\n private sortWorkgroups(): void {\n this.sortedStudents = [...this.students];\n const dir = this.sort.charAt(0) === '-' ? 'desc' : 'asc';\n const sort = this.sort.charAt(0) === '-' ? this.sort.slice(1) : this.sort;\n this.sortedStudents.sort(\n this.createSort(this.sortOptions[sort].fieldName, dir, this.sortOptions[sort].isNumeric)\n );\n }\n\n private createSort(fieldName: string, direction: 'asc' | 'desc', isNumeric: boolean): any {\n return (studentA: StudentProgress, studentB: StudentProgress): number => {\n const localeCompare = this.localeCompareBy(\n fieldName,\n studentA,\n studentB,\n direction,\n isNumeric\n );\n return fieldName !== 'workgroupId' && localeCompare === 0\n ? this.localeCompareBy('workgroupId', studentA, studentB, 'asc', true)\n : localeCompare;\n };\n }\n\n private localeCompareBy(\n fieldName: string,\n studentA: any,\n studentB: any,\n direction: 'asc' | 'desc',\n isNumeric: boolean\n ): number {\n const valueA = studentA[fieldName];\n const valueB = studentB[fieldName];\n if (isNumeric) {\n const numA = parseFloat(valueA);\n const numB = parseFloat(valueB);\n return direction === 'asc' ? numA - numB : numB - numA;\n }\n return direction === 'asc' ? valueA.localeCompare(valueB) : valueB.localeCompare(valueA);\n }\n\n protected isWorkgroupShown(workgroup: number): boolean {\n return this.dataService.isWorkgroupShown(workgroup);\n }\n\n protected showStudentGradingView(workgroup: any): void {\n if (this.classroomStatusService.hasStudentStatus(workgroup.workgroupId)) {\n this.router.navigate([workgroup.workgroupId], { relativeTo: this.route });\n }\n }\n\n protected setSort(value: string): void {\n this.sort = this.sort === value ? `-${value}` : value;\n this.dataService.studentProgressSort = this.sort;\n this.sortWorkgroups();\n }\n}\n\nexport class StudentProgress {\n periodId: string;\n periodName: string;\n workgroupId: number;\n username: string;\n firstName: string;\n lastName: string;\n position: string;\n order: number;\n completion: ProjectCompletion;\n completionPct: number;\n score: number;\n maxScore: number;\n scorePct: number;\n\n constructor(jsonObject: any = {}) {\n for (const key of Object.keys(jsonObject)) {\n this[key] = jsonObject[key];\n }\n }\n}\n", + "styleUrl": "./student-progress.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "classroomStatusService", + "type": "ClassroomStatusService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 73, + "jsdoctags": [ + { + "name": "classroomStatusService", + "type": "ClassroomStatusService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "\n \n \n {{ sortOptions[sortBy].label }}\n @if (sort === sortBy || sort === '-' + sortBy) {\n \n arrow_drop_up\n \n }\n \n \n\n\n
    \n
    \n \n \n
    \n \n
    \n
    \n \n \n \n \n @if (permissions.canViewStudentNames) {\n \n \n } @else {\n \n }\n \n \n \n \n \n \n @for (student of sortedStudents; track $index) {\n @if (isWorkgroupShown(student)) {\n \n \n @if (permissions.canViewStudentNames) {\n \n \n } @else {\n \n }\n \n \n \n \n }\n }\n \n
    {{ student.workgroupId }}{{ student.firstName }}{{ student.lastName }}{{ student.username }}{{ student.position }}\n \n \n \n {{ student.score }} \n /{{ student.maxScore }}\n \n
    \n
    \n
    \n
    \n" + }, + { + "name": "StudentRunListComponent", + "id": "component-StudentRunListComponent-db6c689b5d8ddc568ecb7036389e77e1abf55151c02452246902273808bd39ddd0271b320d23bc6dcf8219ce14dd937d490cf545ff211320a6362ba72df836d6", + "file": "src/app/student/student-run-list/student-run-list.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "app-student-run-list", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./student-run-list.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "filteredRuns", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "StudentRun[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 19 + }, + { + "name": "loaded", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 21 + }, + { + "name": "runs", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "StudentRun[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 18 + }, + { + "name": "search", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 20 + }, + { + "name": "showAll", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 22 + } + ], + "methodsClass": [ + { + "name": "getRunIndex", + "args": [ + { + "name": "run", + "type": "StudentRun", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 70, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "run", + "type": "StudentRun", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getRuns", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 50, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getRunTotal", + "args": [ + { + "name": "type", + "type": "\"isActive\" | \"isScheduled\"", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "type", + "type": "\"isActive\" | \"isScheduled\"", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "handleClassroomAccessCode", + "args": [ + { + "name": "accessCode", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 113, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "accessCode", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isRunActive", + "args": [ + { + "name": "run", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 128, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "run", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 46, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "performFilter", + "args": [ + { + "name": "filterValue", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 93, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "filterValue", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "reset", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 124, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "runSpansDays", + "args": [ + { + "name": "run", + "type": "StudentRun", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 79, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "run", + "type": "StudentRun", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "searchUpdated", + "args": [ + { + "name": "value", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 88, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "value", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "sortByStartTimeDesc", + "args": [ + { + "name": "a", + "type": "StudentRun", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "b", + "type": "StudentRun", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 66, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "a", + "type": "StudentRun", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "b", + "type": "StudentRun", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Inject, LOCALE_ID, OnInit } from '@angular/core';\nimport { StudentRun } from '../student-run';\nimport { StudentService } from '../student.service';\nimport { ConfigService } from '../../services/config.service';\nimport { ActivatedRoute } from '@angular/router';\nimport { MatDialog } from '@angular/material/dialog';\nimport { AddProjectDialogComponent } from '../add-project-dialog/add-project-dialog.component';\nimport { runSpansDays } from '../../../assets/wise5/common/datetime/datetime';\nimport { sortByRunStartTimeDesc } from '../../domain/run';\n\n@Component({\n selector: 'app-student-run-list',\n standalone: false,\n styleUrl: './student-run-list.component.scss',\n templateUrl: './student-run-list.component.html'\n})\nexport class StudentRunListComponent implements OnInit {\n runs: StudentRun[] = [];\n filteredRuns: StudentRun[] = [];\n search: string = '';\n loaded: boolean = false;\n showAll: boolean = false;\n\n constructor(\n private studentService: StudentService,\n private configService: ConfigService,\n private route: ActivatedRoute,\n private dialog: MatDialog,\n @Inject(LOCALE_ID) private localeID: string\n ) {\n studentService.newRunSource$.subscribe((run) => {\n run.isHighlighted = true;\n this.runs.unshift(new StudentRun(run));\n if (!this.showAll) {\n let index = this.getRunIndex(run);\n if (index > 9) {\n this.showAll = true;\n }\n }\n setTimeout(() => {\n document.getElementById(`run${run.id}`).scrollIntoView();\n }, 1000);\n });\n }\n\n ngOnInit(): void {\n this.getRuns();\n }\n\n getRuns(): void {\n this.studentService.getRuns().subscribe((runs) => {\n for (let run of runs) {\n this.runs.push(new StudentRun(run));\n }\n this.filteredRuns = runs;\n this.searchUpdated(this.search);\n this.loaded = true;\n this.route.queryParams.subscribe((params) => {\n if (params['accessCode'] != null) {\n this.handleClassroomAccessCode(params['accessCode']);\n }\n });\n });\n }\n\n protected sortByStartTimeDesc(a: StudentRun, b: StudentRun): number {\n return sortByRunStartTimeDesc(a, b);\n }\n\n getRunIndex(run: StudentRun): number {\n for (let i = 0; i < this.runs.length; i++) {\n if (this.runs[i].id === run.id) {\n return i;\n }\n }\n return null;\n }\n\n runSpansDays(run: StudentRun): boolean {\n return runSpansDays(run, this.localeID);\n }\n\n protected getRunTotal(type: 'isActive' | 'isScheduled'): number {\n const now = this.configService.getCurrentServerTime();\n return this.filteredRuns.filter((run) => run[type](now)).length;\n }\n\n searchUpdated(value: string) {\n this.search = value;\n this.filteredRuns = this.search ? this.performFilter(this.search) : this.runs;\n }\n\n performFilter(filterValue: string): any {\n filterValue = this.search.toLocaleLowerCase();\n // TODO: extract this for global use?\n return this.runs.filter((run: StudentRun) =>\n Object.keys(run).some((prop) => {\n let value: any;\n if (prop === 'owner') {\n value = run[prop].displayName;\n } else {\n value = run[prop];\n }\n if (typeof value === 'undefined' || value === null) {\n return false;\n } else {\n return value.toString().toLocaleLowerCase().indexOf(filterValue) !== -1;\n }\n })\n );\n }\n\n handleClassroomAccessCode(accessCode: string): any {\n for (const run of this.runs) {\n if (accessCode.toLowerCase() === run.runCode.toLowerCase()) {\n return setTimeout(() => {\n document.getElementById(`run${run.id}`).scrollIntoView();\n }, 1500);\n }\n }\n this.dialog.open(AddProjectDialogComponent);\n }\n\n reset(): void {\n this.searchUpdated('');\n }\n\n isRunActive(run): boolean {\n return run.isActive(this.configService.getCurrentServerTime());\n }\n}\n", + "styleUrl": "./student-run-list.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "studentService", + "type": "StudentService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "localeID", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 22, + "jsdoctags": [ + { + "name": "studentService", + "type": "StudentService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "localeID", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "
    \n @if (!runs.length && loaded) {\n
    \n

    Hey there! Looks like you don't have any WISE units yet.

    \n

    \n Ask your teacher for an Access Code and then tap the Add Unit button to get\n started.\n

    \n
    \n }\n @if (runs.length) {\n
    \n
    \n \n
    \n @if (loaded) {\n
    \n

    \n @if (search) {\n Units found: {{ filteredRuns.length }}\n } @else {\n My WISE units: {{ filteredRuns.length }}\n }\n @if (filteredRuns.length) {\n \n @if (getRunTotal('isScheduled')) {\n ({{ getRunTotal('isScheduled') }} scheduled,\n {{ getRunTotal('isActive') }} active)\n } @else {\n ({{ getRunTotal('isActive') }} active)\n }\n \n }\n @if (search) {\n |\n Clear search\n }\n

    \n
    \n }\n \n @for (run of filteredRuns.sort(sortByStartTimeDesc); track run; let i = $index) {\n @if (i < 10 || showAll) {\n \n \n {{ run.startTime | date: 'mediumDate' }}\n @if (run.endTime && runSpansDays(run)) {\n - {{ run.endTime | date: 'mediumDate' }}\n }\n \n \n \n \n \n }\n }\n \n @if (filteredRuns.length > 10 && !showAll) {\n \n }\n
    \n }\n
    \n" + }, + { + "name": "StudentRunListItemComponent", + "id": "component-StudentRunListItemComponent-522b0ff8f97a52c7d1fd349e15efaa1fe240c8d8651f6d28aea193bbf18c622bdaf48dd7b4877ad94ae9a974eff396deaf528e5f9828a775a608b70186f56563", + "file": "src/app/student/student-run-list-item/student-run-list-item.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "app-student-run-list-item", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./student-run-list-item.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "run", + "defaultValue": "new StudentRun()", + "deprecated": false, + "deprecationMessage": "", + "line": 21, + "type": "StudentRun", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "animateDelay", + "defaultValue": "'0s'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 26 + }, + { + "name": "animateDuration", + "defaultValue": "'0s'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 25 + }, + { + "name": "dialog", + "deprecated": false, + "deprecationMessage": "", + "type": "MatDialog", + "indexKey": "", + "optional": false, + "description": "", + "line": 31, + "modifierKind": [ + 125 + ] + }, + { + "name": "problemLink", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 23 + }, + { + "name": "thumbStyle", + "deprecated": false, + "deprecationMessage": "", + "type": "SafeStyle", + "indexKey": "", + "optional": false, + "description": "", + "line": 24 + } + ], + "methodsClass": [ + { + "name": "getThumbStyle", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 36, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isRunActive", + "args": [ + { + "name": "run", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 81, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "run", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isRunCompleted", + "args": [ + { + "name": "run", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 85, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "run", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "launchRun", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 54, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 42, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "reviewRun", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 66, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "skipTeamSignIn", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 70, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, OnInit, Input } from '@angular/core';\nimport { StudentRun } from '../student-run';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { SafeStyle } from '@angular/platform-browser';\nimport { ConfigService } from '../../services/config.service';\nimport { MatDialog } from '@angular/material/dialog';\nimport { TeamSignInDialogComponent } from '../team-sign-in-dialog/team-sign-in-dialog.component';\nimport { Student } from '../../domain/student';\nimport { StudentService } from '../student.service';\nimport { UserService } from '../../services/user.service';\nimport { flash } from '../../animations';\n\n@Component({\n animations: [flash],\n standalone: false,\n selector: 'app-student-run-list-item',\n styleUrl: './student-run-list-item.component.scss',\n templateUrl: './student-run-list-item.component.html'\n})\nexport class StudentRunListItemComponent implements OnInit {\n @Input() run: StudentRun = new StudentRun();\n\n problemLink: string = '';\n thumbStyle: SafeStyle;\n animateDuration: string = '0s';\n animateDelay: string = '0s';\n\n constructor(\n private sanitizer: DomSanitizer,\n private configService: ConfigService,\n public dialog: MatDialog,\n private studentService: StudentService,\n private userService: UserService\n ) {}\n\n getThumbStyle() {\n const DEFAULT_THUMB = 'assets/img/default-picture.svg';\n const STYLE = `url(${this.run.project.projectThumb}), url(${DEFAULT_THUMB})`;\n return this.sanitizer.bypassSecurityTrustStyle(STYLE);\n }\n\n ngOnInit() {\n this.thumbStyle = this.getThumbStyle();\n this.problemLink = `${this.configService.getContextPath()}/contact?runId=${this.run.id}`;\n if (this.run.isHighlighted) {\n this.animateDuration = '2s';\n this.animateDelay = '1s';\n setTimeout(() => {\n this.run.isHighlighted = false;\n }, 7000);\n }\n }\n\n launchRun() {\n if (this.run.maxStudentsPerTeam === 1) {\n this.skipTeamSignIn();\n } else {\n this.dialog.open(TeamSignInDialogComponent, {\n data: { run: this.run },\n panelClass: 'dialog-sm',\n disableClose: true\n });\n }\n }\n\n reviewRun() {\n this.skipTeamSignIn();\n }\n\n skipTeamSignIn() {\n const user = this.userService.getUser().getValue();\n const presentUserIds = [user.id];\n const absentUserIds = [];\n this.studentService\n .launchRun(this.run.id, this.run.workgroupId, presentUserIds, absentUserIds)\n .subscribe((response: any) => {\n window.location.href = response.startProjectUrl;\n });\n }\n\n isRunActive(run) {\n return run.isActive(this.configService.getCurrentServerTime());\n }\n\n isRunCompleted(run) {\n return run.isCompleted(this.configService.getCurrentServerTime());\n }\n}\n", + "styleUrl": "./student-run-list-item.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "sanitizer", + "type": "DomSanitizer", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentService", + "type": "StudentService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "userService", + "type": "UserService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 26, + "jsdoctags": [ + { + "name": "sanitizer", + "type": "DomSanitizer", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentService", + "type": "StudentService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "userService", + "type": "UserService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "\n
    \n Teacher: {{ run.owner.displayName }} |\n Period: {{ run.periodName }} |\n Code: {{ run.runCode }}\n
    \n
    \n Teacher: {{ run.owner.displayName }}
    \n Period: {{ run.periodName }}
    \n Code: {{ run.runCode }}
    \n
    \n @if (run.workgroupMembers) {\n
    \n Team:\n @for (user of run.workgroupMembers; track user; let isLast = $last) {\n {{ user.firstName }}{{ isLast ? '' : ', ' }} \n }\n
    \n }\n
    \n\n\n \n \n
    \n
    \n \n {{ run.project.name }}\n \n \n \n \n
    \n
    \n
    \n \n
    \n \n
    \n
    \n \n \n Report Problem\n \n @if (!isRunActive(run) && !isRunCompleted(run)) {\n \n }\n @if (isRunActive(run)) {\n \n }\n @if (isRunCompleted(run)) {\n \n }\n \n\n" + }, + { + "name": "StudentSummaryDisplay", + "id": "component-StudentSummaryDisplay-2997192d29222849aa3c02c2134314b5ee5570ffdcb36e92db045b9b02d306d0a0834a95cf0727c762634dd620b295ae8aa9be81256c7fa463697074d1f19940", + "file": "src/assets/wise5/directives/student-summary-display/student-summary-display.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "student-summary-display", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "../summary-display/summary-display.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "chartType", + "deprecated": false, + "deprecationMessage": "", + "line": 70, + "type": "string", + "decorators": [], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "line": 65, + "type": "string", + "decorators": [], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "customLabelColors", + "deprecated": false, + "deprecationMessage": "", + "line": 73, + "type": "any[]", + "decorators": [], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "doRender", + "deprecated": false, + "deprecationMessage": "", + "line": 74, + "type": "boolean", + "decorators": [], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "hasWarning", + "deprecated": false, + "deprecationMessage": "", + "line": 71, + "type": "boolean", + "decorators": [], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "highlightCorrectAnswer", + "deprecated": false, + "deprecationMessage": "", + "line": 66, + "type": "boolean", + "decorators": [], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 64, + "type": "string", + "decorators": [], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "periodId", + "deprecated": false, + "deprecationMessage": "", + "line": 69, + "type": "number", + "decorators": [], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "source", + "deprecated": false, + "deprecationMessage": "", + "line": 68, + "type": "string", + "decorators": [], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "studentDataType", + "deprecated": false, + "deprecationMessage": "", + "line": 67, + "type": "string", + "decorators": [], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "warningMessage", + "deprecated": false, + "deprecationMessage": "", + "line": 72, + "type": "string", + "decorators": [], + "inheritance": { + "file": "SummaryDisplayComponent" + } + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "numDummySamples", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 24 + }, + { + "name": "studentWorkSavedToServerSubscription", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 23, + "modifierKind": [ + 123 + ] + }, + { + "name": "chartConfig", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 26, + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "colors", + "defaultValue": "{\n palette: [\n '#1a237e',\n '#701e82',\n '#aa187b',\n '#d72c6c',\n '#f65158',\n '#ff7d43',\n '#ffab32',\n '#fdd835',\n '#ffee58',\n '#ade563',\n '#50d67f',\n '#00c29d',\n '#00aab3',\n '#0090bc',\n '#0074b4',\n '#01579b'\n ],\n singleHue: 'rgb(170, 24, 123)',\n correct: '#00C853',\n incorrect: '#C62828'\n }", + "deprecated": false, + "deprecationMessage": "", + "type": "object", + "indexKey": "", + "optional": false, + "description": "", + "line": 27, + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "defaultMaxScore", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 50, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "hasCorrectness", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 51, + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "Highcharts", + "defaultValue": "Highcharts", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 52, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "maxScore", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 53, + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "meanScore", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 56, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "numResponses", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 58, + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "otherComponent", + "deprecated": false, + "deprecationMessage": "", + "type": "ComponentContent", + "indexKey": "", + "optional": false, + "description": "", + "line": 59, + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "otherComponentType", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 60, + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "percentResponded", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 61, + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "studentMaxScore", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 54, + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "studentMinScore", + "defaultValue": "1", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 55, + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "totalWorkgroups", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 62, + "inheritance": { + "file": "SummaryDisplayComponent" + } + } + ], + "methodsClass": [ + { + "name": "createDummyComponentState", + "args": [], + "optional": false, + "returnType": "DummyComponentState", + "typeParameters": [], + "line": 125, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "createDummyComponentStates", + "args": [], + "optional": false, + "returnType": "DummyComponentState[]", + "typeParameters": [], + "line": 117, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "createDummyMultipleChoiceComponentState", + "args": [ + { + "name": "componentState", + "type": "MultipleChoiceContent", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 135, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentState", + "type": "MultipleChoiceContent", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createDummyScoreAnnotation", + "args": [], + "optional": false, + "returnType": "DummyAnnotation", + "typeParameters": [], + "line": 197, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "createDummyScoreAnnotations", + "args": [], + "optional": false, + "returnType": "DummyAnnotation[]", + "typeParameters": [], + "line": 189, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "createDummyTableComponentState", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 144, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "getDummyStudentScoresForAuthoringPreview", + "args": [], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 113, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "getDummyStudentScoresForVLEPreview", + "args": [], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 100, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "getDummyStudentWorkForAuthoringPreview", + "args": [], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 109, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "getDummyStudentWorkForVLEPreview", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 86, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getDummyTableData", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 160, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "getDummyTableDataSimilarToLatestComponentState", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 169, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "getLatestScores", + "args": [], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 64, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "getLatestWork", + "args": [], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 76, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "getRandomChoice", + "args": [ + { + "name": "choices", + "type": "Choice[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 185, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "choices", + "type": "Choice[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getRandomScore", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 207, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "getRandomSimilarNumber", + "args": [ + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 181, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getResponseForSelf", + "args": [], + "optional": false, + "returnType": "ComponentState", + "typeParameters": [], + "line": 232, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "getScoreForSelf", + "args": [], + "optional": false, + "returnType": "Annotation", + "typeParameters": [], + "line": 253, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "initializeChangeListeners", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 50, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 46, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "renderSelfDisplay", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 211, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "renderSelfResponse", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 222, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "renderSelfScore", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 243, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "setNumDummySamples", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 32, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "calculateCountsAndPercentage", + "args": [ + { + "name": "dataCount", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 558, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "dataCount", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "convertObjectToArray", + "args": [ + { + "name": "obj", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 219, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "obj", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "createChartConfig", + "args": [ + { + "name": "chartType", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "title", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "xAxisType", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "total", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "series", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "colors", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 456, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "chartType", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "title", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "xAxisType", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "total", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "series", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "colors", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "createChoicesSeriesData", + "args": [ + { + "name": "component", + "type": "MultipleChoiceContent", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "summaryData", + "type": "MultipleChoiceSummaryData", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "SeriesData", + "typeParameters": [], + "line": 286, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "component", + "type": "MultipleChoiceContent", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "summaryData", + "type": "MultipleChoiceSummaryData", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "createScoresSeriesData", + "args": [ + { + "name": "summaryData", + "type": "ScoreSummaryData", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "unknown", + "typeParameters": [], + "line": 325, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "summaryData", + "type": "ScoreSummaryData", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "createSeries", + "args": [ + { + "name": "seriesData", + "type": "SeriesData", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 350, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "seriesData", + "type": "SeriesData", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "createTableSeriesData", + "args": [ + { + "name": "summaryData", + "type": "TableSummaryData", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "SeriesData", + "typeParameters": [], + "line": 247, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "summaryData", + "type": "TableSummaryData", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "filterLatestScoreAnnotations", + "args": [ + { + "name": "annotations", + "type": "Annotation[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 201, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "annotations", + "type": "Annotation[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "getChartColors", + "args": [], + "optional": false, + "returnType": "string[]", + "typeParameters": [], + "line": 405, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "getDataPointColor", + "args": [ + { + "name": "choice", + "type": "Choice", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string | null", + "typeParameters": [], + "line": 309, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "choice", + "type": "Choice", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "getGraphTitle", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 375, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "getGraphTitleForClass", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 395, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "getGraphTitleForSelf", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 387, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "getIndexByName", + "args": [ + { + "name": "series", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "name", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 431, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "series", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "name", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "getLatestScoreAnnotationForWorkgroup", + "args": [], + "optional": false, + "returnType": "Annotation", + "typeParameters": [], + "line": 169, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "getLatestStudentScores", + "args": [], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 153, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "getLatestStudentWork", + "args": [], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 191, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "getPercentResponded", + "args": [ + { + "name": "numResponses", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "totalWorkgroups", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 573, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "numResponses", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "totalWorkgroups", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "getScoreFromAnnotation", + "args": [ + { + "name": "annotation", + "type": "Annotation", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 321, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "annotation", + "type": "Annotation", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "getSummaryDataCount", + "args": [ + { + "name": "summaryData", + "type": "SummaryData", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "id", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 577, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "summaryData", + "type": "SummaryData", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "id", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "getTotalTableCount", + "args": [ + { + "name": "seriesData", + "type": "SeriesData", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 260, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "seriesData", + "type": "SeriesData", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "getTotalWorkgroups", + "args": [ + { + "name": "dataCount", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 564, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "dataCount", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "hasCorrectAnswer", + "args": [ + { + "name": "component", + "type": "MultipleChoiceContent", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 305, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "component", + "type": "MultipleChoiceContent", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "initializeCustomLabelColors", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 100, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "initializeOtherComponent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 93, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "isAuthoringPreview", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 120, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "isSourceSelf", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 581, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "isStudentDataType", + "args": [ + { + "name": "studentDataType", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 452, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "studentDataType", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "isStudentDataTypeResponses", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 444, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "isStudentDataTypeScores", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 448, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "isStudentRun", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 124, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "isVLEPreview", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 116, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "ngOnChanges", + "args": [ + { + "name": "changes", + "type": "SimpleChanges", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 106, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "changes", + "type": "SimpleChanges", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "processComponentStates", + "args": [ + { + "name": "componentStates", + "type": "ComponentState[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "unknown", + "typeParameters": [], + "line": 225, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "componentStates", + "type": "ComponentState[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "processScoreAnnotations", + "args": [ + { + "name": "annotations", + "type": "Annotation[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 266, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "annotations", + "type": "Annotation[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "renderClassResponses", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 144, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "renderClassScores", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 177, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "renderDisplay", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 128, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "renderGraph", + "args": [ + { + "name": "seriesData", + "type": "SeriesData", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "total", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 340, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "seriesData", + "type": "SeriesData", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "total", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "setCustomLabelColors", + "args": [ + { + "name": "series", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "colors", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "customLabelColors", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 422, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "series", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "colors", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "customLabelColors", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "setLatestAnnotationIfNewer", + "args": [ + { + "name": "latestAnnotations", + "type": "Annotation", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "annotation", + "type": "Annotation", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 211, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "latestAnnotations", + "type": "Annotation", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "annotation", + "type": "Annotation", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "setMaxScore", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 182, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "setMinMaxScore", + "args": [ + { + "name": "annotations", + "type": "Annotation[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 274, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "annotations", + "type": "Annotation[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "HighchartsChartModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { SummaryDisplayComponent } from '../summary-display/summary-display.component';\nimport { StudentDataService } from '../../services/studentDataService';\nimport { Observable, Subscription } from 'rxjs';\nimport { CommonModule } from '@angular/common';\nimport { HighchartsChartModule } from 'highcharts-angular';\nimport { Annotation } from '../../common/Annotation';\nimport { ComponentState } from '../../../../app/domain/componentState';\nimport { of } from 'rxjs';\nimport { copy } from '../../common/object/object';\nimport { DummyAnnotation } from '../../common/DummyAnnotation';\nimport { DummyComponentState } from '../../../../app/domain/dummyComponentState';\nimport { Choice } from '../../components/multipleChoice/Choice';\nimport { MultipleChoiceContent } from '../../components/multipleChoice/MultipleChoiceContent';\n\n@Component({\n imports: [CommonModule, HighchartsChartModule],\n selector: 'student-summary-display',\n styleUrl: '../summary-display/summary-display.component.scss',\n templateUrl: '../summary-display/summary-display.component.html'\n})\nexport class StudentSummaryDisplay extends SummaryDisplayComponent {\n private studentWorkSavedToServerSubscription: Subscription = new Subscription();\n numDummySamples: number;\n\n ngOnInit(): void {\n this.setNumDummySamples();\n super.ngOnInit();\n this.initializeChangeListeners();\n }\n\n setNumDummySamples(): void {\n switch (this.source) {\n case 'period':\n this.numDummySamples = 10;\n break;\n case 'allPeriods':\n this.numDummySamples = 20;\n break;\n default:\n this.numDummySamples = 1;\n break;\n }\n }\n\n ngOnDestroy(): void {\n this.studentWorkSavedToServerSubscription.unsubscribe();\n }\n\n private initializeChangeListeners(): void {\n this.studentWorkSavedToServerSubscription = (\n this.dataService as StudentDataService\n ).studentWorkSavedToServer$.subscribe((componentState) => {\n if (\n this.doRender &&\n componentState.nodeId === this.nodeId &&\n componentState.componentId === this.componentId\n ) {\n this.renderDisplay();\n }\n });\n }\n\n protected getLatestScores(): Observable {\n let latestScores: Observable;\n if (this.isVLEPreview()) {\n latestScores = this.getDummyStudentScoresForVLEPreview();\n } else if (this.isAuthoringPreview()) {\n latestScores = this.getDummyStudentScoresForAuthoringPreview();\n } else {\n latestScores = this.getLatestStudentScores();\n }\n return latestScores;\n }\n\n protected getLatestWork(): Observable {\n if (this.isVLEPreview()) {\n return this.getDummyStudentWorkForVLEPreview(this.nodeId, this.componentId);\n } else if (this.isAuthoringPreview()) {\n return this.getDummyStudentWorkForAuthoringPreview();\n } else {\n return this.getLatestStudentWork();\n }\n }\n\n private getDummyStudentWorkForVLEPreview(\n nodeId: string,\n componentId: string\n ): Observable {\n const componentStates = this.createDummyComponentStates();\n const componentState = (\n this.dataService as StudentDataService\n ).getLatestComponentStateByNodeIdAndComponentId(nodeId, componentId);\n if (componentState != null) {\n componentStates.push(componentState);\n }\n return of(componentStates);\n }\n\n private getDummyStudentScoresForVLEPreview(): Observable {\n const annotations = this.createDummyScoreAnnotations();\n const annotation = this.getLatestScoreAnnotationForWorkgroup();\n if (annotation != null) {\n annotations.push(annotation);\n }\n return of(annotations);\n }\n\n private getDummyStudentWorkForAuthoringPreview(): Observable {\n return of(this.createDummyComponentStates());\n }\n\n private getDummyStudentScoresForAuthoringPreview(): Observable {\n return of(this.createDummyScoreAnnotations());\n }\n\n private createDummyComponentStates(): DummyComponentState[] {\n const dummyComponentStates = [];\n for (let dummyCounter = 0; dummyCounter < this.numDummySamples; dummyCounter++) {\n dummyComponentStates.push(this.createDummyComponentState());\n }\n return dummyComponentStates;\n }\n\n private createDummyComponentState(): DummyComponentState {\n if (this.otherComponentType === 'MultipleChoice') {\n return this.createDummyMultipleChoiceComponentState(\n this.otherComponent as MultipleChoiceContent\n );\n } else if (this.otherComponentType === 'Table') {\n return this.createDummyTableComponentState();\n }\n }\n\n private createDummyMultipleChoiceComponentState(componentState: MultipleChoiceContent): any {\n const choices = componentState.choices;\n return {\n studentData: {\n studentChoices: [{ id: this.getRandomChoice(choices).id }]\n }\n };\n }\n\n private createDummyTableComponentState(): any {\n if (this.isAuthoringPreview()) {\n return {\n studentData: {\n tableData: this.getDummyTableData()\n }\n };\n } else {\n return {\n studentData: {\n tableData: this.getDummyTableDataSimilarToLatestComponentState()\n }\n };\n }\n }\n\n private getDummyTableData(): any[] {\n return [\n [{ text: 'Trait' }, { text: 'Count' }],\n [{ text: 'Blue' }, { text: '3' }],\n [{ text: 'Green' }, { text: '2' }],\n [{ text: 'Red' }, { text: '1' }]\n ];\n }\n\n private getDummyTableDataSimilarToLatestComponentState(): any[] {\n let tableData = [];\n const componentState = (\n this.dataService as StudentDataService\n ).getLatestComponentStateByNodeIdAndComponentId(this.nodeId, this.componentId);\n tableData = copy(componentState.studentData.tableData);\n for (let r = 1; r < tableData.length; r++) {\n tableData[r][1].text = this.getRandomSimilarNumber(tableData[r][1].text);\n }\n return tableData;\n }\n\n private getRandomSimilarNumber(text: string): number {\n return Math.ceil(this.summaryService.convertToNumber(text) * Math.random());\n }\n\n private getRandomChoice(choices: Choice[]): any {\n return choices[Math.floor(Math.random() * choices.length)];\n }\n\n private createDummyScoreAnnotations(): DummyAnnotation[] {\n const dummyScoreAnnotations = [];\n for (let dummyCounter = 0; dummyCounter < this.numDummySamples; dummyCounter++) {\n dummyScoreAnnotations.push(this.createDummyScoreAnnotation());\n }\n return dummyScoreAnnotations;\n }\n\n private createDummyScoreAnnotation(): DummyAnnotation {\n const json = {\n data: {\n value: this.getRandomScore()\n },\n type: 'score'\n };\n return new DummyAnnotation(json);\n }\n\n private getRandomScore(): number {\n return Math.ceil(Math.random() * this.maxScore);\n }\n\n protected renderSelfDisplay(): void {\n switch (this.studentDataType) {\n case 'responses':\n this.renderSelfResponse();\n break;\n case 'scores':\n this.renderSelfScore();\n break;\n }\n }\n\n private renderSelfResponse(): void {\n const componentStates = [];\n const componentState = this.getResponseForSelf();\n if (componentState != null) {\n componentStates.push(componentState);\n }\n const [seriesData, count] = this.processComponentStates(componentStates);\n this.renderGraph(seriesData, count);\n }\n\n private getResponseForSelf(): ComponentState {\n if (this.isVLEPreview() || this.isStudentRun()) {\n return (this.dataService as StudentDataService).getLatestComponentStateByNodeIdAndComponentId(\n this.nodeId,\n this.componentId\n );\n } else if (this.isAuthoringPreview()) {\n return this.createDummyComponentState();\n }\n }\n\n private renderSelfScore(): void {\n this.setMaxScore();\n const annotation = this.getScoreForSelf();\n const annotations = [];\n if (annotation != null) {\n annotations.push(annotation);\n }\n this.processScoreAnnotations(annotations);\n }\n\n private getScoreForSelf(): Annotation {\n let score: Annotation;\n if (this.isVLEPreview() || this.isStudentRun()) {\n score = this.getLatestScoreAnnotationForWorkgroup();\n } else if (this.isAuthoringPreview()) {\n score = this.createDummyScoreAnnotation();\n }\n return score;\n }\n}\n", + "styleUrl": "../summary-display/summary-display.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [ + "SummaryDisplayComponent" + ], + "templateData": "@if (hasWarning) {\n

    {{ warningMessage }}

    \n}\n@if (doRender && chartConfig != null) {\n \n}\n" + }, + { + "name": "SubmitSurveyComponent", + "id": "component-SubmitSurveyComponent-f665203bbc73f5ecde13d9f2a3eb5a999aa5ee9236c25e1b7049841e76a33afd8527f6a789e5fa370941bc20dab63e30280acdad96d5f3aeae6ba53514535666", + "file": "src/assets/wise5/vle/submit-survey/submit-survey.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "submit-survey", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./submit-survey.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "genericSubmitWarning", + "defaultValue": "$localize`Are you sure you want to submit your final responses?`", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "modifierKind": [ + 123 + ] + } + ], + "methodsClass": [ + { + "name": "getIncompleteNodeIds", + "args": [], + "optional": false, + "returnType": "string[]", + "typeParameters": [], + "line": 35, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "getIncompleteUnitSubmitWarning", + "args": [ + { + "name": "incompleteNodeIds", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 43, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "incompleteNodeIds", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "logOut", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 54, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "submitSurvey", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { ProjectService } from '../../services/projectService';\nimport { NodeStatusService } from '../../services/nodeStatusService';\nimport { SessionService } from '../../services/sessionService';\n\n@Component({\n imports: [MatButtonModule, MatIconModule],\n selector: 'submit-survey',\n templateUrl: './submit-survey.component.html'\n})\nexport class SubmitSurveyComponent {\n private genericSubmitWarning = $localize`Are you sure you want to submit your final responses?`;\n\n constructor(\n private nodeStatusService: NodeStatusService,\n private projectService: ProjectService,\n private sessionService: SessionService\n ) {}\n\n protected submitSurvey(): void {\n const incompleteNodeIds: string[] = this.getIncompleteNodeIds();\n if (\n confirm(\n incompleteNodeIds.length > 0\n ? this.getIncompleteUnitSubmitWarning(incompleteNodeIds)\n : this.genericSubmitWarning\n )\n ) {\n this.logOut();\n }\n }\n\n private getIncompleteNodeIds(): string[] {\n return Object.keys(this.projectService.idToOrder).filter(\n (nodeId) =>\n this.projectService.isApplicationNode(nodeId) &&\n !this.nodeStatusService.getNodeStatusByNodeId(nodeId).isCompleted\n );\n }\n\n private getIncompleteUnitSubmitWarning(incompleteNodeIds: string[]): string {\n const incompleteNodePositions = incompleteNodeIds\n .map((nodeId) => this.projectService.getNodePositionById(nodeId))\n .reduce((acc, nodePos) => `${acc} ${nodePos},`, '')\n .slice(0, -1);\n return (\n $localize`You have not completed the following steps: ` +\n `${incompleteNodePositions}\\n\\n${this.genericSubmitWarning}`\n );\n }\n\n private logOut(): void {\n this.sessionService\n .logOutWithoutHomeRedirect()\n .subscribe(() => (window.location.href = `/survey/completed`));\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "nodeStatusService", + "type": "NodeStatusService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "sessionService", + "type": "SessionService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 14, + "jsdoctags": [ + { + "name": "nodeStatusService", + "type": "NodeStatusService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "sessionService", + "type": "SessionService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "

    Thank you for taking the time to provide your responses!

    \n

    When you have finished answering all the questions, press the button below to exit.

    \n\n" + }, + { + "name": "SummaryAuthoring", + "id": "component-SummaryAuthoring-0f75509c3e58249cdf86105d3659f745f21e7b385cf5ce98cf8f19808126408eb61ccb63d13c67f75fabb6bf8d96b77fa50879e7db256e1ca8e9a4074f0d51f1", + "file": "src/assets/wise5/components/summary/summary-authoring/summary-authoring.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "summary-authoring", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "summary-authoring.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "isHighlightCorrectAnswerAvailable", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 40 + }, + { + "name": "isPieChartAllowed", + "defaultValue": "true", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 41 + }, + { + "name": "isResponsesOptionAvailable", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 39 + }, + { + "name": "stepNodesDetails", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 42 + }, + { + "name": "allowedConnectedComponentTypes", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "idToOrder", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "inputChange", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "promptChange", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + } + ], + "methodsClass": [ + { + "name": "addCustomLabelColor", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 184, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentAllowsMultipleResponses", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 172, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentHasCorrectAnswer", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 159, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "deleteCustomLabelColor", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 192, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getComponents", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 200, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "isComponentTypeAllowed", + "args": [ + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 79, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentType", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isStudentDataTypeAvailableForComponent", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentDataType", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 143, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentDataType", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 56, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "performUpdatesIfNecessary", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 94, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentDataTypeChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 88, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "summaryComponentIdChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "summaryNodeIdChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 63, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "updateChartTypeOptionsIfNecessary", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 134, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "updateHasCorrectAnswerIfNecessary", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 126, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "updateStudentDataTypeIfNecessary", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 111, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "updateStudentDataTypeOptionsIfNecessary", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 101, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "assetSelected", + "args": [ + { + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 100, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "componentChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 73, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "confirmAndRemove", + "args": [ + { + "name": "message", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "array", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 110, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "message", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "array", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "deleteStarterState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 81, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "getComponent", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 106, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "isForThisComponent", + "args": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 77, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "moveObjectDown", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 122, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "moveObjectUp", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 117, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 65, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "promptChanged", + "args": [ + { + "name": "prompt", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 69, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "prompt", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "saveStarterState", + "args": [ + { + "name": "starterState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "starterState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "setShowSubmitButtonValue", + "args": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 85, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "EditComponentPrompt", + "type": "component" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatSelectModule", + "type": "module" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatCheckbox" + }, + { + "name": "MatButton" + }, + { + "name": "MatTooltip" + }, + { + "name": "MatIcon" + }, + { + "name": "TranslatableInputComponent", + "type": "component" + }, + { + "name": "MatInput" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatButton } from '@angular/material/button';\nimport { MatCheckbox } from '@angular/material/checkbox';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInput } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { EditComponentPrompt } from '../../../../../app/authoring-tool/edit-component-prompt/edit-component-prompt.component';\nimport { ProjectAssetService } from '../../../../../app/services/projectAssetService';\nimport { AbstractComponentAuthoring } from '../../../authoringTool/components/AbstractComponentAuthoring';\nimport { TranslatableInputComponent } from '../../../authoringTool/components/translatable-input/translatable-input.component';\nimport { ComponentServiceLookupService } from '../../../services/componentServiceLookupService';\nimport { ConfigService } from '../../../services/configService';\nimport { TeacherNodeService } from '../../../services/teacherNodeService';\nimport { TeacherProjectService } from '../../../services/teacherProjectService';\nimport { MultipleChoiceContent } from '../../multipleChoice/MultipleChoiceContent';\nimport { SummaryService } from '../summaryService';\n\n@Component({\n imports: [\n EditComponentPrompt,\n MatFormFieldModule,\n MatSelectModule,\n FormsModule,\n MatCheckbox,\n MatButton,\n MatTooltip,\n MatIcon,\n TranslatableInputComponent,\n MatInput\n ],\n selector: 'summary-authoring',\n styleUrl: 'summary-authoring.component.scss',\n templateUrl: 'summary-authoring.component.html'\n})\nexport class SummaryAuthoring extends AbstractComponentAuthoring {\n isResponsesOptionAvailable: boolean = false;\n isHighlightCorrectAnswerAvailable: boolean = false;\n isPieChartAllowed: boolean = true;\n stepNodesDetails: string[];\n\n constructor(\n private componentServiceLookupService: ComponentServiceLookupService,\n protected configService: ConfigService,\n protected nodeService: TeacherNodeService,\n protected projectAssetService: ProjectAssetService,\n protected projectService: TeacherProjectService,\n private summaryService: SummaryService\n ) {\n super(configService, nodeService, projectAssetService, projectService);\n this.stepNodesDetails = this.projectService.getStepNodesDetailsInOrder();\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n this.updateStudentDataTypeOptionsIfNecessary();\n this.updateHasCorrectAnswerIfNecessary();\n this.updateChartTypeOptionsIfNecessary();\n }\n\n summaryNodeIdChanged(): void {\n this.componentContent.summaryComponentId = null;\n const components = this.getComponents(this.componentContent.summaryNodeId);\n const allowedComponents = [];\n for (const component of components) {\n if (this.isComponentTypeAllowed(component.type) && component.id != this.componentId) {\n allowedComponents.push(component);\n }\n }\n if (allowedComponents.length === 1) {\n this.componentContent.summaryComponentId = allowedComponents[0].id;\n }\n this.performUpdatesIfNecessary();\n this.componentChanged();\n }\n\n isComponentTypeAllowed(componentType: string): boolean {\n return this.summaryService.isComponentTypeAllowed(componentType);\n }\n\n summaryComponentIdChanged(): void {\n this.performUpdatesIfNecessary();\n this.componentChanged();\n }\n\n studentDataTypeChanged(): void {\n this.updateHasCorrectAnswerIfNecessary();\n this.updateChartTypeOptionsIfNecessary();\n this.componentChanged();\n }\n\n performUpdatesIfNecessary(): void {\n this.updateStudentDataTypeOptionsIfNecessary();\n this.updateStudentDataTypeIfNecessary();\n this.updateHasCorrectAnswerIfNecessary();\n this.updateChartTypeOptionsIfNecessary();\n }\n\n updateStudentDataTypeOptionsIfNecessary(): void {\n const nodeId = this.componentContent.summaryNodeId;\n const componentId = this.componentContent.summaryComponentId;\n this.isResponsesOptionAvailable = this.isStudentDataTypeAvailableForComponent(\n nodeId,\n componentId,\n 'responses'\n );\n }\n\n updateStudentDataTypeIfNecessary(): void {\n const nodeId = this.componentContent.summaryNodeId;\n const componentId = this.componentContent.summaryComponentId;\n const studentDataType = this.componentContent.studentDataType;\n if (!this.isStudentDataTypeAvailableForComponent(nodeId, componentId, studentDataType)) {\n if (this.isStudentDataTypeAvailableForComponent(nodeId, componentId, 'responses')) {\n this.componentContent.studentDataType = 'responses';\n } else if (this.isStudentDataTypeAvailableForComponent(nodeId, componentId, 'scores')) {\n this.componentContent.studentDataType = 'scores';\n } else {\n this.componentContent.studentDataType = null;\n }\n }\n }\n\n updateHasCorrectAnswerIfNecessary(): void {\n this.isHighlightCorrectAnswerAvailable =\n this.componentHasCorrectAnswer() && this.componentContent.studentDataType === 'responses';\n if (!this.isHighlightCorrectAnswerAvailable) {\n this.componentContent.highlightCorrectAnswer = false;\n }\n }\n\n updateChartTypeOptionsIfNecessary(): void {\n this.isPieChartAllowed =\n this.componentContent.studentDataType === 'scores' ||\n !this.componentAllowsMultipleResponses();\n if (!this.isPieChartAllowed && this.componentContent.chartType === 'pie') {\n this.componentContent.chartType = 'column';\n }\n }\n\n isStudentDataTypeAvailableForComponent(\n nodeId: string,\n componentId: string,\n studentDataType: string\n ): boolean {\n const component = this.projectService.getComponent(nodeId, componentId);\n if (component != null) {\n if (studentDataType === 'scores') {\n return this.summaryService.isScoresSummaryAvailableForComponentType(component.type);\n } else if (studentDataType === 'responses') {\n return this.summaryService.isResponsesSummaryAvailableForComponentType(component.type);\n }\n }\n return false;\n }\n\n componentHasCorrectAnswer(): boolean {\n const nodeId = this.componentContent.summaryNodeId;\n const componentId = this.componentContent.summaryComponentId;\n if (nodeId != null && componentId != null) {\n const component = this.projectService.getComponent(nodeId, componentId);\n if (component != null) {\n const componentService = this.componentServiceLookupService.getService(component.type);\n return componentService.componentHasCorrectAnswer(component);\n }\n }\n return false;\n }\n\n componentAllowsMultipleResponses(): boolean {\n const nodeId = this.componentContent.summaryNodeId;\n const componentId = this.componentContent.summaryComponentId;\n if (nodeId != null && componentId != null) {\n const component = this.projectService.getComponent(nodeId, componentId);\n if (component != null) {\n return (component as MultipleChoiceContent).choiceType === 'checkbox';\n }\n }\n return false;\n }\n\n addCustomLabelColor(): void {\n if (this.componentContent.customLabelColors == null) {\n this.componentContent.customLabelColors = [];\n }\n this.componentContent.customLabelColors.push({ label: '', color: '' });\n this.componentChanged();\n }\n\n deleteCustomLabelColor(index: number): void {\n this.confirmAndRemove(\n $localize`Are you sure you want to delete this custom label color?`,\n this.componentContent.customLabelColors,\n index\n );\n }\n\n getComponents(nodeId: string): any[] {\n return this.projectService.getComponents(nodeId);\n }\n}\n", + "styleUrl": "summary-authoring.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "componentServiceLookupService", + "type": "ComponentServiceLookupService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeService", + "type": "TeacherNodeService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectAssetService", + "type": "ProjectAssetService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "summaryService", + "type": "SummaryService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 42, + "jsdoctags": [ + { + "name": "componentServiceLookupService", + "type": "ComponentServiceLookupService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeService", + "type": "TeacherNodeService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectAssetService", + "type": "ProjectAssetService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "summaryService", + "type": "SummaryService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "AbstractComponentAuthoring" + ], + "templateData": "\n

    Choose the step and component to show the summary data for:

    \n
    \n \n Step\n \n @for (stepNodeDetails of stepNodesDetails; track stepNodeDetails) {\n \n {{ stepNodeDetails.nodePositionAndTitle }}\n \n }\n \n \n \n Component\n \n @for (\n component of getComponents(componentContent.summaryNodeId);\n track component;\n let componentIndex = $index\n ) {\n \n {{ componentIndex + 1 }}. {{ component.type }}\n @if (component.id === componentId) {\n (This Component)\n }\n \n }\n \n \n \n Student Data Type\n \n @if (isResponsesOptionAvailable) {\n Responses \n }\n Scores \n \n \n \n Source\n \n Only Self \n Only Students In Period \n Students In All Periods \n \n \n \n Chart Type\n \n Bar \n @if (isPieChartAllowed) {\n Pie \n }\n \n \n \n Required to View Summary\n \n Complete Component \n Submit Work \n None \n \n \n
    \n
    \n @if (isHighlightCorrectAnswerAvailable) {\n
    \n \n Highlight Correct Answer\n \n
    \n }\n
    \n \n Show Prompt From Source Component\n \n
    \n
    \n
    \n Custom Label Colors (Optional)\n \n add\n \n
    \n@if (componentContent.customLabelColors.length === 0) {\n
    \n There are no custom label colors. Click the \"Add Custom Label Color\" button to give a label a\n specific color.\n
    \n}\n@for (\n customLabelColor of componentContent.customLabelColors;\n track customLabelColor;\n let customLabelColorIndex = $index;\n let isFirst = $first;\n let isLast = $last\n) {\n
    \n \n \n Color\n \n \n
    \n \n arrow_upward\n \n \n arrow_downward\n \n \n delete\n \n
    \n
    \n}\n" + }, + { + "name": "SummaryStudent", + "id": "component-SummaryStudent-adbeb834ed72c7afdc30b22f8416ca58284071913ac7465e91b621c91ede684e42792b2a3c3feb2a67aefdccf0734b07e99bc75f315018cd06e29528e800d6dc", + "file": "src/assets/wise5/components/summary/summary-student/summary-student.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [ + ".prompt { font-weight: 500; padding-bottom: 8px; }" + ], + "templateUrl": [ + "summary-student.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "periodId", + "deprecated": false, + "deprecationMessage": "", + "line": 28, + "type": "number", + "decorators": [] + }, + { + "name": "component", + "deprecated": false, + "deprecationMessage": "", + "line": 24, + "type": "Component", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentState", + "deprecated": false, + "deprecationMessage": "", + "line": 25, + "type": "any", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isDisabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "line": 26, + "type": "boolean", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "mode", + "deprecated": false, + "deprecationMessage": "", + "line": 27, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 28, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "workgroupId", + "deprecated": false, + "deprecationMessage": "", + "line": 29, + "type": "number", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "outputsClass": [ + { + "name": "saveComponentStateEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 30, + "type": "EventEmitter", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "starterStateChangedEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 31, + "type": "EventEmitter", + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "propertiesClass": [ + { + "name": "chartType", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 21 + }, + { + "name": "customLabelColors", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 22 + }, + { + "name": "highlightCorrectAnswer", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 23 + }, + { + "name": "isShowDisplay", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 24 + }, + { + "name": "isStudent", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 25 + }, + { + "name": "otherPrompt", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 26 + }, + { + "name": "otherStepTitle", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 27 + }, + { + "name": "prompt", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 29, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "source", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 30 + }, + { + "name": "studentDataType", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 31 + }, + { + "name": "summaryComponentId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 33 + }, + { + "name": "summaryNodeId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 32 + }, + { + "name": "warningMessage", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 34 + }, + { + "name": "annotationSavedToServerSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 53, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "attachments", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 33, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 34, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 35, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentType", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 36, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isDirty", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 45, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSaveButtonVisible", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 38, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSaveOrSubmitButtonVisible", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 41, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isShowAddToNotebookButton", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 39, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isStudentAttachmentEnabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 46, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmit", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 44, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmitButtonDisabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 42, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmitButtonVisible", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 40, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmitDirty", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 43, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "latestAnnotations", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 48, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "latestComponentState", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 50, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "nodeSubmitClickedSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 54, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "parentStudentWorkIds", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 49, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "requestComponentStateSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 52, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "showAddToNotebookButton", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 51, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "studentWorkSavedToServerSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 55, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "submitCounter", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 47, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 56, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "methodsClass": [ + { + "name": "calculateIsShowDisplay", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 106, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getOtherPrompt", + "args": [ + { + "name": "nodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 90, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getOtherStepTitle", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 189, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getWarningMessage", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 116, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getWarningMessageForSourceClass", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 144, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getWarningMessageForSourceSelf", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 136, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "handleStudentWorkSavedToServerAdditionalProcessing", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 203, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isRequirementToSeeSummaryCompleteComponent", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 156, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isRequirementToSeeSummaryNone", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 160, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isRequirementToSeeSummarySubmitWork", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 152, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isSourceAllPeriods", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 132, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isSourcePeriod", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 128, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isSourceSelf", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 124, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isStudentHasWork", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 98, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 86, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 60, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setPeriodIdIfNecessary", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 193, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentHasCompletedComponent", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 185, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentHasSavedWork", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 177, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentHasSubmittedWork", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 164, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "addDefaultFeedback", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 688, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "attachStudentAsset", + "args": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 232, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "broadcastDoneRenderingComponent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 325, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "canSubmit", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 488, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "clearLatestComponentState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 555, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "confirmSubmit", + "args": [ + { + "name": "numberOfSubmitsLeft", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 468, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "numberOfSubmitsLeft", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "connectedComponentStudentDataSaved", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 796, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nThis function is called when a connected component of this component saves student data.\nThis was added to handle a race condition when a step has a connected component on a previous\nstep but the connected component student work on the previous step was not being imported\nbecause it wasn't being saved in time.\nHere is an example of what was happening\n- Student generates work on step 1 but does not click the save button\n- Student goes to step 2 which triggers a promise to save the student work on step 1\n- Step 2 is loaded and checks if there is any work it needs to import from step 1\n- The work in step 1 has not saved yet so step 2 does not import any work and loads without\n importing any work\n- The work from step 1 is then saved\nHere is the additional process that this function performs to fix this problem\n- Step 2 listens for when work is saved on step 1\n- When the work for step 1 is saved, step 2 checks to see if it needs to import that work\n", + "description": "

    This function is called when a connected component of this component saves student data.\nThis was added to handle a race condition when a step has a connected component on a previous\nstep but the connected component student work on the previous step was not being imported\nbecause it wasn't being saved in time.\nHere is an example of what was happening

    \n
      \n
    • Student generates work on step 1 but does not click the save button
    • \n
    • Student goes to step 2 which triggers a promise to save the student work on step 1
    • \n
    • Step 2 is loaded and checks if there is any work it needs to import from step 1
    • \n
    • The work in step 1 has not saved yet so step 2 does not import any work and loads without\nimporting any work
    • \n
    • The work from step 1 is then saved\nHere is the additional process that this function performs to fix this problem
    • \n
    • Step 2 listens for when work is saved on step 1
    • \n
    • When the work for step 1 is saved, step 2 checks to see if it needs to import that work
    • \n
    \n", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "copyAndAttachStudentAsset", + "args": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 218, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "copyPublicNotebookItem", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 632, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "copyPublicNotebookItemButtonClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 747, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createAutoCommentAnnotation", + "args": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 725, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createAutoScoreAnnotation", + "args": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 714, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createComponentState", + "args": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 568, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createComponentStateAdditionalProcessing", + "args": [ + { + "name": "promise", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 598, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "promise", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createComponentStateAndBroadcast", + "args": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 559, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createDefaultFeedbackAnnotation", + "args": [ + { + "name": "feedbackText", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 706, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "feedbackText", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createMergedComponentState", + "args": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 377, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createNewComponentState", + "args": [], + "optional": false, + "returnType": "Partial", + "typeParameters": [], + "line": 818, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "disableAllInput", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 492, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "disableComponentIfNecessary", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 332, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "disableSubmitButton", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 496, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "doAttachStudentAsset", + "args": [ + { + "name": "studentAssetRequest", + "type": "StudentAssetRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 212, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "studentAssetRequest", + "type": "StudentAssetRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 541, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentStudentDataChanged", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 572, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentSubmitDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 548, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentSubmitTriggered", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 512, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "generateImageFromComponentState", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 615, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nRender the component state and then generate an image from it.\n", + "description": "

    Render the component state and then generate an image from it.

    \n", + "jsdoctags": [ + { + "name": { + "pos": 18804, + "end": 18818, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 18798, + "end": 18803, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    The component state to render.

    \n" + }, + { + "tagName": { + "pos": 18856, + "end": 18862, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

    A promise that will return an image.

    \n" + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "generateStarterState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 216, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getAction", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 321, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getClientSaveTime", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 684, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getComponentStatePromise", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 309, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getComponentStateWrapper", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "ComponentStateWrapper", + "typeParameters": [], + "line": 301, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getDefaultFeedback", + "args": [ + { + "name": "submitCount", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 702, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "submitCount", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getElementById", + "args": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getFirstResult", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 758, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "getFirstResult", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getIsDirty", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 277, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getMaxScore", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 680, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getMaxSubmitCount", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 460, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getNumberOfSubmitsLeft", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 456, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "handleConnectedComponents", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 352, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "handleConnectedComponentsPostProcess", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 385, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "handleStudentWorkSavedToServer", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 263, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasAnySubmissions", + "args": [ + { + "name": "componentStates", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 344, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentStates", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasDefaultFeedback", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 695, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasMaxScore", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 676, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasMaxSubmitCount", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 437, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasMaxSubmitCountAndUsedAllSubmits", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 452, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasSubmitMessage", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 504, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasSubmitsLeft", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 500, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasUsedAllSubmits", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 441, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "importWorkAsBackground", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 658, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "importWorkByStudentWorkId", + "args": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 170, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "incrementSubmitCounter", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 389, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isAddToNotebookEnabled", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 624, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isForThisComponent", + "args": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 192, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isFromConnectedComponent", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 766, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isHandleConnectedComponentAfterConnectedComponentStudentDataSaved", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 802, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isLockAfterSubmit", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 348, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isNotebookEnabled", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 643, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isPreviewMode", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 109, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSameComponent", + "args": [ + { + "name": "component", + "type": "Component", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 188, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "component", + "type": "Component", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isStudentNoteClippingEnabled", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 647, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isWorkFromClassmate", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 196, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "lockIfNecessary", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 281, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "performSubmit", + "args": [ + { + "name": "submitTriggeredBy", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 472, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "submitTriggeredBy", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "processConnectedComponentState", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 184, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "processLatestStudentWork", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 580, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "registerNotebookItemChosenListener", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 736, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "removeAttachment", + "args": [ + { + "name": "attachment", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 245, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "attachment", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "saveButtonClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 393, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "saveForAuthoringPreviewMode", + "args": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 404, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setBackgroundImage", + "args": [ + { + "name": "image", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 674, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "image", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setComponentStateAsBackgroundImage", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 668, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 537, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsDirtyAndBroadcast", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 527, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsSubmit", + "args": [ + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 464, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsSubmitDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 508, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsSubmitDirtyAndBroadcast", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 532, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setParentStudentWorkIdToCurrentStudentWork", + "args": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 180, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setStudentWork", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 381, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setSubmitCounter", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 811, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "shouldCreateComponentState", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 317, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "showStudentAssets", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 651, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "studentDataChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 519, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "submit", + "args": [ + { + "name": "submitTriggeredBy", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 416, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "submitTriggeredBy", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "submitButtonClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 412, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToAnnotationSavedToServer", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 123, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToAttachStudentAsset", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 200, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToNodeSubmitClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 137, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToNotebookItemChosen", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 159, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToNotifyConnectedComponents", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 147, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToRequestComponentState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 289, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToStudentWorkSavedToServer", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 252, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToSubscriptions", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 113, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "tryDisableComponent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 445, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "StudentSummaryDisplay" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { AnnotationService } from '../../../services/annotationService';\nimport { ConfigService } from '../../../services/configService';\nimport { NodeService } from '../../../services/nodeService';\nimport { NotebookService } from '../../../services/notebookService';\nimport { ProjectService } from '../../../services/projectService';\nimport { StudentAssetService } from '../../../services/studentAssetService';\nimport { StudentDataService } from '../../../services/studentDataService';\nimport { ComponentStudent } from '../../component-student.component';\nimport { ComponentService } from '../../componentService';\nimport { CompletionService } from '../../../services/completionService';\nimport { StudentSummaryDisplay } from '../../../directives/student-summary-display/student-summary-display.component';\n\n@Component({\n imports: [StudentSummaryDisplay],\n styles: ['.prompt { font-weight: 500; padding-bottom: 8px; }'],\n templateUrl: 'summary-student.component.html'\n})\nexport class SummaryStudent extends ComponentStudent {\n chartType: string;\n customLabelColors: any[];\n highlightCorrectAnswer: boolean;\n isShowDisplay: boolean;\n isStudent: boolean;\n otherPrompt: string;\n otherStepTitle: string;\n @Input() periodId: number;\n prompt: string;\n source: string;\n studentDataType: string;\n summaryNodeId: string;\n summaryComponentId: string;\n warningMessage: string = '';\n\n constructor(\n protected annotationService: AnnotationService,\n private completionService: CompletionService,\n protected componentService: ComponentService,\n protected configService: ConfigService,\n protected dialog: MatDialog,\n protected nodeService: NodeService,\n protected notebookService: NotebookService,\n private projectService: ProjectService,\n protected studentAssetService: StudentAssetService,\n protected studentDataService: StudentDataService\n ) {\n super(\n annotationService,\n componentService,\n configService,\n dialog,\n nodeService,\n notebookService,\n studentAssetService,\n studentDataService\n );\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n this.summaryNodeId = this.componentContent.summaryNodeId;\n this.summaryComponentId = this.componentContent.summaryComponentId;\n this.studentDataType = this.componentContent.studentDataType;\n this.chartType = this.componentContent.chartType;\n this.prompt = this.componentContent.prompt;\n this.highlightCorrectAnswer = this.componentContent.highlightCorrectAnswer;\n this.source = this.componentContent.source;\n this.customLabelColors = this.componentContent.customLabelColors;\n if (this.componentContent.showPromptFromOtherComponent) {\n this.otherPrompt = this.getOtherPrompt(this.summaryNodeId, this.summaryComponentId);\n }\n this.isStudent = this.configService.isPreview() || this.configService.isStudentRun();\n if (this.isStudent) {\n this.otherStepTitle = this.getOtherStepTitle();\n this.isShowDisplay = this.calculateIsShowDisplay();\n } else {\n this.isShowDisplay = true;\n }\n if (!this.isShowDisplay) {\n this.warningMessage = this.getWarningMessage();\n }\n this.setPeriodIdIfNecessary();\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n\n getOtherPrompt(nodeId, componentId) {\n const otherComponent = this.projectService.getComponent(nodeId, componentId);\n if (otherComponent != null) {\n return otherComponent.prompt;\n }\n return null;\n }\n\n isStudentHasWork() {\n const componentStates = this.studentDataService.getComponentStatesByNodeIdAndComponentId(\n this.summaryNodeId,\n this.summaryComponentId\n );\n return componentStates.length > 0;\n }\n\n calculateIsShowDisplay() {\n if (this.isRequirementToSeeSummarySubmitWork()) {\n return this.studentHasSubmittedWork();\n } else if (this.isRequirementToSeeSummaryCompleteComponent()) {\n return this.studentHasCompletedComponent();\n } else if (this.isRequirementToSeeSummaryNone()) {\n return true;\n }\n }\n\n getWarningMessage() {\n if (this.isSourceSelf()) {\n return this.getWarningMessageForSourceSelf();\n } else if (this.isSourcePeriod() || this.isSourceAllPeriods()) {\n return this.getWarningMessageForSourceClass();\n }\n }\n\n isSourceSelf() {\n return this.source === 'self';\n }\n\n isSourcePeriod() {\n return this.source === 'period';\n }\n\n isSourceAllPeriods() {\n return this.source === 'allPeriods';\n }\n\n getWarningMessageForSourceSelf() {\n if (this.isRequirementToSeeSummarySubmitWork()) {\n return $localize`You must submit work on \"${this.otherStepTitle}\" to view the summary.`;\n } else if (this.isRequirementToSeeSummaryCompleteComponent()) {\n return $localize`You must complete \"${this.otherStepTitle}\" to view the summary.`;\n }\n }\n\n getWarningMessageForSourceClass() {\n if (this.isRequirementToSeeSummarySubmitWork()) {\n return $localize`You must submit work on \"${this.otherStepTitle}\" to view the class summary.`;\n } else if (this.isRequirementToSeeSummaryCompleteComponent()) {\n return $localize`You must complete \"${this.otherStepTitle}\" to view the class summary.`;\n }\n }\n\n isRequirementToSeeSummarySubmitWork() {\n return this.componentContent.requirementToSeeSummary === 'submitWork';\n }\n\n isRequirementToSeeSummaryCompleteComponent() {\n return this.componentContent.requirementToSeeSummary === 'completeComponent';\n }\n\n isRequirementToSeeSummaryNone() {\n return this.componentContent.requirementToSeeSummary === 'none';\n }\n\n studentHasSubmittedWork() {\n const componentStates = this.studentDataService.getComponentStatesByNodeIdAndComponentId(\n this.summaryNodeId,\n this.summaryComponentId\n );\n for (const componentState of componentStates) {\n if (componentState.isSubmit) {\n return true;\n }\n }\n return false;\n }\n\n studentHasSavedWork() {\n const componentStates = this.studentDataService.getComponentStatesByNodeIdAndComponentId(\n this.summaryNodeId,\n this.summaryComponentId\n );\n return componentStates.length > 0;\n }\n\n studentHasCompletedComponent() {\n return this.completionService.isCompleted(this.summaryNodeId, this.summaryComponentId);\n }\n\n getOtherStepTitle() {\n return this.projectService.getNodePositionAndTitle(this.summaryNodeId);\n }\n\n setPeriodIdIfNecessary() {\n if (this.configService.isStudentRun()) {\n if (this.source === 'period' && this.periodId == null) {\n this.periodId = this.configService.getPeriodId();\n } else if (this.source === 'allPeriods') {\n this.periodId = null;\n }\n }\n }\n\n handleStudentWorkSavedToServerAdditionalProcessing(componentState: any) {\n if (this.isStudent) {\n this.isShowDisplay = this.calculateIsShowDisplay();\n }\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": ".prompt { font-weight: 500; padding-bottom: 8px; }\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "completionService", + "type": "CompletionService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentService", + "type": "ComponentService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "notebookService", + "type": "NotebookService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentAssetService", + "type": "StudentAssetService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentDataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 34, + "jsdoctags": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "completionService", + "type": "CompletionService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentService", + "type": "ComponentService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "notebookService", + "type": "NotebookService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentAssetService", + "type": "StudentAssetService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentDataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "ComponentStudent" + ], + "templateData": "
    \n @if (componentContent.prompt) {\n
    \n }\n @if (componentContent.showPromptFromOtherComponent) {\n
    \n }\n \n
    \n" + }, + { + "name": "SurveyCompletedComponent", + "id": "component-SurveyCompletedComponent-83fac9e149e2531842587ef4a999af9febc1224f9b5fc1d84e60049c5e30b87a80e1a1b636c7af21b9c821095881dc797adf3b9e95d5005e5273055ca98bd141", + "file": "src/app/student/survey/survey-completed/survey-completed.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "survey-completed", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./survey-completed.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [], + "methodsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatCardModule", + "type": "module" + }, + { + "name": "RouterModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { MatCardModule } from '@angular/material/card';\nimport { RouterModule } from '@angular/router';\n\n@Component({\n imports: [MatCardModule, RouterModule],\n templateUrl: './survey-completed.component.html',\n selector: 'survey-completed',\n styleUrl: './survey-completed.component.scss'\n})\nexport class SurveyCompletedComponent {}\n", + "styleUrl": "./survey-completed.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [], + "templateData": "
    \n \n \n \n

    Your responses have been submitted. You can close this window.

    \n

    Thank you!

    \n
    \n
    \n
    \n" + }, + { + "name": "TableAuthoring", + "id": "component-TableAuthoring-ef75d2c2c8c2dc2fb625f56bb5b83acb6548265700e92374767255101db9761bad4692741c3072e21efd1cf55b6bb6981264b580ee1542edbe787aa580a97ab3", + "file": "src/assets/wise5/components/table/table-authoring/table-authoring.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "table-authoring", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "table-authoring.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "columnCellSizes", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 40, + "modifierKind": [ + 124 + ] + }, + { + "name": "dimensionsForm", + "deprecated": false, + "deprecationMessage": "", + "type": "FormGroup", + "indexKey": "", + "optional": false, + "description": "", + "line": 41, + "modifierKind": [ + 124 + ] + }, + { + "name": "frozenColumns", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 42, + "modifierKind": [ + 124 + ] + }, + { + "name": "frozenColumnsLimitReached", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 43, + "modifierKind": [ + 124 + ] + }, + { + "name": "globalCellSizeChange", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 44, + "modifierKind": [ + 124 + ] + }, + { + "name": "numColumnsFormControl", + "deprecated": false, + "deprecationMessage": "", + "type": "FormControl", + "indexKey": "", + "optional": false, + "description": "", + "line": 45, + "modifierKind": [ + 123 + ] + }, + { + "name": "numRowsFormControl", + "deprecated": false, + "deprecationMessage": "", + "type": "FormControl", + "indexKey": "", + "optional": false, + "description": "", + "line": 46, + "modifierKind": [ + 123 + ] + }, + { + "name": "allowedConnectedComponentTypes", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "idToOrder", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "inputChange", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "promptChange", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "inheritance": { + "file": "AbstractComponentAuthoring" + } + } + ], + "methodsClass": [ + { + "name": "areColumnsAfterEmpty", + "args": [ + { + "name": "columnIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 165, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "columnIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "areRowsAfterEmpty", + "args": [ + { + "name": "rowIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 127, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "rowIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "automaticallySetConnectedComponentFieldsIfPossible", + "args": [ + { + "name": "connectedComponent", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 418, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "columnSizeChanged", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 366, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "connectedComponentTypeChanged", + "args": [ + { + "name": "connectedComponent", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 426, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "connectedComponent", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createDimensionFormControl", + "args": [ + { + "name": "initialValue", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "FormControl", + "typeParameters": [], + "line": 97, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "initialValue", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createEmptyCell", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 237, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "deleteColumn", + "args": [ + { + "name": "columnIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 290, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "columnIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "deleteRow", + "args": [ + { + "name": "rowIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 263, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "rowIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "frozenColumnsChanged", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 395, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getCellObjectFromTableData", + "args": [ + { + "name": "x", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "y", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 225, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the cell object at the given x, y location\n", + "description": "

    Get the cell object at the given x, y location

    \n", + "jsdoctags": [ + { + "name": { + "pos": 6849, + "end": 6850, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "x" + }, + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 6843, + "end": 6848, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    the column number (zero indexed)

    \n" + }, + { + "name": { + "pos": 6896, + "end": 6897, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "y" + }, + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 6890, + "end": 6895, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    the row number (zero indexed)

    \n" + }, + { + "tagName": { + "pos": 6934, + "end": 6941, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

    the cell at the given x, y location or null if there is none

    \n" + } + ] + }, + { + "name": "getNumColumnsInTableData", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 324, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the number of columns in the table data. This is slightly different from just getting the\nnumColumns field in the component content. Usually the number of columns will be the same. In\nsome cases it can be different such as during authoring immediately after the author changes\nthe number of columns using the number of columns input.\n", + "description": "

    Get the number of columns in the table data. This is slightly different from just getting the\nnumColumns field in the component content. Usually the number of columns will be the same. In\nsome cases it can be different such as during authoring immediately after the author changes\nthe number of columns using the number of columns input.

    \n", + "jsdoctags": [ + { + "tagName": { + "pos": 10481, + "end": 10487, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

    The number of columns in the table data.

    \n", + "returnType": "number" + } + ] + }, + { + "name": "getNumRowsInTableData", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 313, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the number of rows in the table data. This is slightly different from just getting the\nnumRows field in the component content. Usually the number of rows will be the same. In some\ncases it can be different such as during authoring immediately after the author changes the\nnumber of rows using the number of rows input.\n", + "description": "

    Get the number of rows in the table data. This is slightly different from just getting the\nnumRows field in the component content. Usually the number of rows will be the same. In some\ncases it can be different such as during authoring immediately after the author changes the\nnumber of rows using the number of rows input.

    \n", + "jsdoctags": [ + { + "tagName": { + "pos": 9959, + "end": 9965, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

    The number of rows in the table data.

    \n", + "returnType": "number" + } + ] + }, + { + "name": "getUpdatedTable", + "args": [ + { + "name": "newNumRows", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "newNumColumns", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 203, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCreate a table with the given dimensions. Populate the cells with the cells from the old table.\n", + "description": "

    Create a table with the given dimensions. Populate the cells with the cells from the old table.

    \n", + "jsdoctags": [ + { + "name": { + "pos": 6193, + "end": 6203, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "newNumRows" + }, + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 6187, + "end": 6192, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    the number of rows in the new table

    \n" + }, + { + "name": { + "pos": 6252, + "end": 6265, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "newNumColumns" + }, + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 6246, + "end": 6251, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    the number of columns in the new table

    \n" + }, + { + "tagName": { + "pos": 6311, + "end": 6318, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

    a new table

    \n" + } + ] + }, + { + "name": "initializeColumnInput", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 69, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "initializeDimensionInputs", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 60, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "initializeRowInput", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "insertColumn", + "args": [ + { + "name": "columnIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 275, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "columnIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "insertRow", + "args": [ + { + "name": "rowIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 245, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "rowIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isColumnEmpty", + "args": [ + { + "name": "columnIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 175, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "columnIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isEmpty", + "args": [ + { + "name": "txt", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 185, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "txt", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isfrozenColumnsLimitReached", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 406, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "isNumberChar", + "args": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 431, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isRowEmpty", + "args": [ + { + "name": "rowIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 137, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "rowIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 48, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "parseColumnCellSizes", + "args": [ + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 355, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nParse the column cell sizes. We will get the column cell sizes by looking at the size value of\neach cell in the first row.\n", + "description": "

    Parse the column cell sizes. We will get the column cell sizes by looking at the size value of\neach cell in the first row.

    \n", + "jsdoctags": [ + { + "name": { + "pos": 11288, + "end": 11304, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentContent" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 11282, + "end": 11287, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    the component content

    \n" + } + ] + }, + { + "name": "parseFrozenColumns", + "args": [ + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 384, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentContent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "positiveNumberValidator", + "args": [], + "optional": false, + "returnType": "ValidatorFn", + "typeParameters": [], + "line": 101, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "setAllCellsEditable", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 337, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "setAllCellsIsEditable", + "args": [ + { + "name": "isEditable", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 342, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isEditable", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setAllCellsUneditable", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 332, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "setColumnCellSize", + "args": [ + { + "name": "column", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "size", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 374, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "column", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "size", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "tableNumColumnsChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 147, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "tableNumRowsChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 109, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "tableSizeChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 189, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "assetSelected", + "args": [ + { + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 100, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "componentChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 73, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "confirmAndRemove", + "args": [ + { + "name": "message", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "array", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 110, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "message", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "array", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "deleteStarterState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 81, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "getComponent", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 106, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "getComponents", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 102, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "isForThisComponent", + "args": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 77, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "moveObjectDown", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 122, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "moveObjectUp", + "args": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 117, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "objects", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 65, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "promptChanged", + "args": [ + { + "name": "prompt", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 69, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "prompt", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "saveStarterState", + "args": [ + { + "name": "starterState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "starterState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + }, + { + "name": "setShowSubmitButtonValue", + "args": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 85, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "show", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractComponentAuthoring" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "EditComponentPrompt", + "type": "component" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "ReactiveFormsModule", + "type": "module" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatInput" + }, + { + "name": "MatButton" + }, + { + "name": "MatTooltip" + }, + { + "name": "MatIcon" + }, + { + "name": "TranslatableInputComponent", + "type": "component" + }, + { + "name": "MatCheckbox" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport {\n FormControl,\n FormGroup,\n FormsModule,\n ReactiveFormsModule,\n ValidatorFn,\n Validators\n} from '@angular/forms';\nimport { MatButton } from '@angular/material/button';\nimport { MatCheckbox } from '@angular/material/checkbox';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInput } from '@angular/material/input';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { Subject } from 'rxjs';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport { EditComponentPrompt } from '../../../../../app/authoring-tool/edit-component-prompt/edit-component-prompt.component';\nimport { AbstractComponentAuthoring } from '../../../authoringTool/components/AbstractComponentAuthoring';\nimport { TranslatableInputComponent } from '../../../authoringTool/components/translatable-input/translatable-input.component';\n\n@Component({\n selector: 'table-authoring',\n templateUrl: 'table-authoring.component.html',\n styleUrl: 'table-authoring.component.scss',\n imports: [\n EditComponentPrompt,\n FormsModule,\n ReactiveFormsModule,\n MatFormFieldModule,\n MatInput,\n MatButton,\n MatTooltip,\n MatIcon,\n TranslatableInputComponent,\n MatCheckbox\n ]\n})\nexport class TableAuthoring extends AbstractComponentAuthoring {\n protected columnCellSizes: any;\n protected dimensionsForm: FormGroup;\n protected frozenColumns: any;\n protected frozenColumnsLimitReached: boolean = false;\n protected globalCellSizeChange: Subject = new Subject();\n private numColumnsFormControl: FormControl;\n private numRowsFormControl: FormControl;\n\n ngOnInit(): void {\n super.ngOnInit();\n this.initializeDimensionInputs();\n this.subscriptions.add(\n this.globalCellSizeChange.pipe(debounceTime(1000), distinctUntilChanged()).subscribe(() => {\n this.componentChanged();\n })\n );\n this.columnCellSizes = this.parseColumnCellSizes(this.componentContent);\n this.frozenColumns = this.parseFrozenColumns(this.componentContent);\n }\n\n private initializeDimensionInputs(): void {\n this.initializeColumnInput();\n this.initializeRowInput();\n this.dimensionsForm = new FormGroup({\n numColumnsFormControl: this.numColumnsFormControl,\n numRowsFormControl: this.numRowsFormControl\n });\n }\n\n private initializeColumnInput(): void {\n this.numColumnsFormControl = this.createDimensionFormControl(this.componentContent.numColumns);\n this.subscriptions.add(\n this.numColumnsFormControl.valueChanges\n .pipe(debounceTime(1000), distinctUntilChanged())\n .subscribe((value: number): void => {\n if (this.numColumnsFormControl.valid) {\n this.componentContent.numColumns = value;\n this.tableNumColumnsChanged();\n }\n })\n );\n }\n\n private initializeRowInput(): void {\n this.numRowsFormControl = this.createDimensionFormControl(this.componentContent.numRows);\n this.subscriptions.add(\n this.numRowsFormControl.valueChanges\n .pipe(debounceTime(1000), distinctUntilChanged())\n .subscribe((value: number): void => {\n if (this.numRowsFormControl.valid) {\n this.componentContent.numRows = value;\n this.tableNumRowsChanged();\n }\n })\n );\n }\n\n private createDimensionFormControl(initialValue: number): FormControl {\n return new FormControl(initialValue, [Validators.required, this.positiveNumberValidator()]);\n }\n\n private positiveNumberValidator(): ValidatorFn {\n return (control: FormControl) => {\n if (control.value < 1) {\n return { invalid: true };\n }\n };\n }\n\n tableNumRowsChanged(): void {\n const oldValue = this.getNumRowsInTableData();\n const newValue = this.componentContent.numRows;\n if (newValue < oldValue) {\n if (this.areRowsAfterEmpty(newValue)) {\n this.tableSizeChanged();\n } else {\n if (confirm($localize`Are you sure you want to decrease the number of rows?`)) {\n this.tableSizeChanged();\n } else {\n this.componentContent.numRows = oldValue;\n }\n }\n } else {\n this.tableSizeChanged();\n }\n }\n\n areRowsAfterEmpty(rowIndex: number): boolean {\n const oldNumRows = this.getNumRowsInTableData();\n for (let r = rowIndex; r < oldNumRows; r++) {\n if (!this.isRowEmpty(r)) {\n return false;\n }\n }\n return true;\n }\n\n isRowEmpty(rowIndex: number): boolean {\n const tableData = this.componentContent.tableData;\n for (const cell of tableData[rowIndex]) {\n if (!this.isEmpty(cell.text)) {\n return false;\n }\n }\n return true;\n }\n\n tableNumColumnsChanged(): void {\n const oldValue = this.getNumColumnsInTableData();\n const newValue = this.componentContent.numColumns;\n if (newValue < oldValue) {\n if (this.areColumnsAfterEmpty(newValue)) {\n this.tableSizeChanged();\n } else {\n if (confirm($localize`Are you sure you want to decrease the number of columns?`)) {\n this.tableSizeChanged();\n } else {\n this.componentContent.numColumns = oldValue;\n }\n }\n } else {\n this.tableSizeChanged();\n }\n }\n\n areColumnsAfterEmpty(columnIndex: number): boolean {\n const oldNumColumns = this.getNumColumnsInTableData();\n for (let c = columnIndex; c < oldNumColumns; c++) {\n if (!this.isColumnEmpty(c)) {\n return false;\n }\n }\n return true;\n }\n\n isColumnEmpty(columnIndex: number): boolean {\n for (const row of this.componentContent.tableData) {\n const cell = row[columnIndex];\n if (!this.isEmpty(cell.text)) {\n return false;\n }\n }\n return true;\n }\n\n isEmpty(txt: string): boolean {\n return txt == null || txt == '';\n }\n\n tableSizeChanged(): void {\n this.componentContent.tableData = this.getUpdatedTable(\n this.componentContent.numRows,\n this.componentContent.numColumns\n );\n this.componentChanged();\n }\n\n /**\n * Create a table with the given dimensions. Populate the cells with the cells from the old table.\n * @param newNumRows the number of rows in the new table\n * @param newNumColumns the number of columns in the new table\n * @returns a new table\n */\n getUpdatedTable(newNumRows: number, newNumColumns: number): any {\n const newTable = [];\n for (let r = 0; r < newNumRows; r++) {\n const newRow = [];\n for (let c = 0; c < newNumColumns; c++) {\n let cell = this.getCellObjectFromTableData(c, r);\n if (cell == null) {\n cell = this.createEmptyCell();\n }\n newRow.push(cell);\n }\n newTable.push(newRow);\n }\n return newTable;\n }\n\n /**\n * Get the cell object at the given x, y location\n * @param x the column number (zero indexed)\n * @param y the row number (zero indexed)\n * @returns the cell at the given x, y location or null if there is none\n */\n getCellObjectFromTableData(x: number, y: number): any {\n let cellObject = null;\n const tableData = this.componentContent.tableData;\n if (tableData != null) {\n const row = tableData[y];\n if (row != null) {\n cellObject = row[x];\n }\n }\n return cellObject;\n }\n\n createEmptyCell(): any {\n return {\n text: '',\n editable: true,\n size: null\n };\n }\n\n insertRow(rowIndex: number): void {\n const tableData = this.componentContent.tableData;\n const newRow = [];\n const numColumns = this.componentContent.numColumns;\n for (let c = 0; c < numColumns; c++) {\n const newCell = this.createEmptyCell();\n const cellSize = this.columnCellSizes[c];\n if (cellSize != null) {\n newCell.size = cellSize;\n }\n newRow.push(newCell);\n }\n tableData.splice(rowIndex, 0, newRow);\n this.componentContent.numRows++;\n this.numRowsFormControl.setValue(this.componentContent.numRows);\n this.componentChanged();\n }\n\n deleteRow(rowIndex: number): void {\n if (confirm($localize`Are you sure you want to delete this row?`)) {\n const tableData = this.componentContent.tableData;\n if (tableData != null) {\n tableData.splice(rowIndex, 1);\n this.componentContent.numRows--;\n }\n this.numRowsFormControl.setValue(this.componentContent.numRows);\n this.componentChanged();\n }\n }\n\n insertColumn(columnIndex: number): void {\n const tableData = this.componentContent.tableData;\n const numRows = this.componentContent.numRows;\n for (let r = 0; r < numRows; r++) {\n const row = tableData[r];\n const newCell = this.createEmptyCell();\n row.splice(columnIndex, 0, newCell);\n }\n this.componentContent.numColumns++;\n this.parseColumnCellSizes(this.componentContent);\n this.parseFrozenColumns(this.componentContent);\n this.numColumnsFormControl.setValue(this.componentContent.numColumns);\n this.componentChanged();\n }\n\n deleteColumn(columnIndex: number): void {\n if (confirm($localize`Are you sure you want to delete this column?`)) {\n const tableData = this.componentContent.tableData;\n const numRows = this.componentContent.numRows;\n for (let r = 0; r < numRows; r++) {\n const row = tableData[r];\n row.splice(columnIndex, 1);\n }\n this.componentContent.numColumns--;\n this.parseColumnCellSizes(this.componentContent);\n this.parseFrozenColumns(this.componentContent);\n this.numColumnsFormControl.setValue(this.componentContent.numColumns);\n this.componentChanged();\n }\n }\n\n /**\n * Get the number of rows in the table data. This is slightly different from just getting the\n * numRows field in the component content. Usually the number of rows will be the same. In some\n * cases it can be different such as during authoring immediately after the author changes the\n * number of rows using the number of rows input.\n * @return {number} The number of rows in the table data.\n */\n getNumRowsInTableData(): number {\n return this.componentContent.tableData.length;\n }\n\n /**\n * Get the number of columns in the table data. This is slightly different from just getting the\n * numColumns field in the component content. Usually the number of columns will be the same. In\n * some cases it can be different such as during authoring immediately after the author changes\n * the number of columns using the number of columns input.\n * @return {number} The number of columns in the table data.\n */\n getNumColumnsInTableData(): number {\n const tableData = this.componentContent.tableData;\n if (tableData.length > 0) {\n return tableData[0].length;\n }\n return 0;\n }\n\n setAllCellsUneditable(): void {\n this.setAllCellsIsEditable(false);\n this.componentChanged();\n }\n\n setAllCellsEditable(): void {\n this.setAllCellsIsEditable(true);\n this.componentChanged();\n }\n\n setAllCellsIsEditable(isEditable: boolean): void {\n for (const row of this.componentContent.tableData) {\n for (const cell of row) {\n cell.editable = isEditable;\n }\n }\n }\n\n /**\n * Parse the column cell sizes. We will get the column cell sizes by looking at the size value of\n * each cell in the first row.\n * @param componentContent the component content\n */\n parseColumnCellSizes(componentContent: any): any {\n const columnCellSizes = {};\n const tableData = componentContent.tableData;\n const firstRow = tableData[0];\n for (let x = 0; x < firstRow.length; x++) {\n const cell = firstRow[x];\n columnCellSizes[x] = cell.size;\n }\n return columnCellSizes;\n }\n\n columnSizeChanged(index: number): void {\n let cellSize = this.columnCellSizes[index];\n if (cellSize == '') {\n cellSize = null;\n }\n this.setColumnCellSize(index, cellSize);\n }\n\n private setColumnCellSize(column: number, size: number): void {\n const tableData = this.componentContent.tableData;\n const firstRow = tableData[0];\n const cell = firstRow[column];\n if (cell != null) {\n cell.size = size;\n }\n this.componentChanged();\n }\n\n private parseFrozenColumns(componentContent: any): any {\n const frozenColumns = {};\n const firstRow = componentContent.tableData[0];\n for (const key in firstRow) {\n const cell = firstRow[key];\n frozenColumns[key] = cell.frozen;\n }\n this.frozenColumnsLimitReached = this.isfrozenColumnsLimitReached();\n return frozenColumns;\n }\n\n frozenColumnsChanged(index: number): void {\n let frozen = this.frozenColumns[index];\n const firstRow = this.componentContent.tableData[0];\n const cell = firstRow[index];\n if (cell != null) {\n cell.frozen = frozen;\n }\n this.componentChanged();\n this.frozenColumnsLimitReached = this.isfrozenColumnsLimitReached();\n }\n\n private isfrozenColumnsLimitReached(): boolean {\n const firstRow = this.componentContent.tableData[0];\n let count = 0;\n for (const key in firstRow) {\n if (firstRow[key].frozen) {\n count++;\n }\n }\n const maxFrozen = firstRow.length - 1;\n return count === maxFrozen;\n }\n\n automaticallySetConnectedComponentFieldsIfPossible(connectedComponent) {\n if (connectedComponent.type === 'importWork' && connectedComponent.action == null) {\n connectedComponent.action = 'merge';\n } else if (connectedComponent.type === 'showWork') {\n connectedComponent.action = null;\n }\n }\n\n connectedComponentTypeChanged(connectedComponent) {\n this.automaticallySetConnectedComponentFieldsIfPossible(connectedComponent);\n this.componentChanged();\n }\n\n protected isNumberChar(event: any): boolean {\n return event.charCode >= 48 && event.charCode <= 57;\n }\n}\n", + "styleUrl": "table-authoring.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [ + "AbstractComponentAuthoring" + ], + "templateData": "\n
    \n
    \n \n Columns\n \n @if (dimensionsForm.controls['numColumnsFormControl'].hasError('invalid')) {\n Invalid Value\n }\n \n \n Rows\n \n @if (dimensionsForm.controls['numRowsFormControl'].hasError('invalid')) {\n Invalid Value\n }\n \n
    \n \n Global Cell Size\n \n \n
    \n
    \n \n \n \n @for (\n x of [].constructor(getNumColumnsInTableData());\n track x;\n let columnIndex = $index;\n let isLast = $last\n ) {\n \n }\n \n @for (row of componentContent.tableData; track row; let rowIndex = $index; let isLast = $last) {\n \n \n @for (cell of row; track cell) {\n \n }\n \n }\n \n \n @for (x of [].constructor(getNumColumnsInTableData()); track x) {\n \n }\n \n \n \n @for (x of [].constructor(getNumColumnsInTableData()); track x; let cellIndex = $index) {\n \n }\n \n
    \n
    \n \n loupe\n \n \n delete\n \n @if (isLast) {\n \n loupe\n \n }\n @if (!isLast) {\n
    \n }\n
    \n
    \n \n loupe\n \n \n delete\n \n @if (isLast) {\n \n loupe\n \n }\n \n
    \n \n \n Editable\n \n
    \n
    \n
    Optional
    \n
    \n
    \n \n Column Cell Size\n \n \n
    \n
    \n \n Freeze\n \n
    \n
    \n
    \n
    \n \n Make All Cells Editable\n \n \n Make All Cells Uneditable\n \n
    \n" + }, + { + "name": "TableShowWorkComponent", + "id": "component-TableShowWorkComponent-2934673769fadb026444e04eb57da145bcd33d75913618174c3f9e9863e013d79a1216c737c6e4dd53b99fb6a4ecc698805c2286cc219db40bd94a32bb2cd978", + "file": "src/assets/wise5/components/table/table-show-work/table-show-work.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "table-show-work", + "styleUrls": [], + "styles": [ + ".table-container { margin-top: 0; padding: 0; }" + ], + "templateUrl": [ + "table-show-work.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "line": 8, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "componentState", + "deprecated": false, + "deprecationMessage": "", + "line": 9, + "type": "any", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "isRevision", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "line": 10, + "type": "boolean", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 7, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentShowWorkDirective" + } + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "columnNames", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 38 + }, + { + "name": "dataExplorerGraphType", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 31 + }, + { + "name": "dataExplorerSeries", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 32 + }, + { + "name": "dataExplorerXAxisLabel", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 33 + }, + { + "name": "dataExplorerYAxisLabel", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 34 + }, + { + "name": "dataExplorerYAxisLabels", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 35 + }, + { + "name": "noneText", + "defaultValue": "$localize`(None)`", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 39 + }, + { + "name": "selectedRowIndices", + "deprecated": false, + "deprecationMessage": "", + "type": "number[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 36 + }, + { + "name": "tableData", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 30 + }, + { + "name": "tabulatorData", + "deprecated": false, + "deprecationMessage": "", + "type": "TabulatorData", + "indexKey": "", + "optional": false, + "description": "", + "line": 40 + }, + { + "name": "tabulatorSorters", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 41 + }, + { + "name": "xColumnIndex", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 37 + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "inheritance": { + "file": "ComponentShowWorkDirective" + } + } + ], + "methodsClass": [ + { + "name": "calculateColumnNames", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string[]", + "typeParameters": [], + "line": 73, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "calculateXColumnIndex", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 69, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 51, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "setupTable", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 83, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "tabulatorRendered", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 90, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "ngAfterViewInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentShowWorkDirective" + } + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 33, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentShowWorkDirective" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatInputModule", + "type": "module" + }, + { + "name": "MatSelectModule", + "type": "module" + }, + { + "name": "MatOptionModule", + "type": "module" + }, + { + "name": "TabulatorTableComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { NodeService } from '../../../services/nodeService';\nimport { ProjectService } from '../../../services/projectService';\nimport { ComponentShowWorkDirective } from '../../component-show-work.directive';\nimport { TabulatorDataService } from '../tabulatorDataService';\nimport { TabulatorData } from '../TabulatorData';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatOptionModule } from '@angular/material/core';\nimport { TabulatorTableComponent } from '../tabulator-table/tabulator-table.component';\n\n@Component({\n imports: [\n CommonModule,\n FormsModule,\n MatFormFieldModule,\n MatInputModule,\n MatSelectModule,\n MatOptionModule,\n TabulatorTableComponent\n ],\n selector: 'table-show-work',\n styles: ['.table-container { margin-top: 0; padding: 0; }'],\n templateUrl: 'table-show-work.component.html'\n})\nexport class TableShowWorkComponent extends ComponentShowWorkDirective {\n tableData: any[] = [];\n dataExplorerGraphType: string;\n dataExplorerSeries: any[];\n dataExplorerXAxisLabel: string;\n dataExplorerYAxisLabel: string;\n dataExplorerYAxisLabels: string[];\n selectedRowIndices: number[];\n xColumnIndex: number;\n columnNames: string[] = [];\n noneText: string = $localize`(None)`;\n tabulatorData: TabulatorData;\n tabulatorSorters: any[];\n\n constructor(\n protected nodeService: NodeService,\n protected projectService: ProjectService,\n private tabulatorDataService: TabulatorDataService\n ) {\n super(nodeService, projectService);\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n const studentData = this.componentState.studentData;\n this.tableData = studentData.tableData;\n this.selectedRowIndices = studentData.selectedRowIndices ? studentData.selectedRowIndices : [];\n this.tabulatorSorters = studentData.tabulatorSorters ? studentData.tabulatorSorters : [];\n if (studentData.isDataExplorerEnabled) {\n this.dataExplorerGraphType = studentData.dataExplorerGraphType;\n this.dataExplorerSeries = studentData.dataExplorerSeries;\n this.dataExplorerXAxisLabel = studentData.dataExplorerXAxisLabel;\n this.dataExplorerYAxisLabel = studentData.dataExplorerYAxisLabel;\n this.dataExplorerYAxisLabels = studentData.dataExplorerYAxisLabels;\n this.xColumnIndex = this.calculateXColumnIndex(this.componentState);\n this.columnNames = this.calculateColumnNames(this.componentState);\n }\n this.setupTable();\n }\n\n private calculateXColumnIndex(componentState: any): number {\n return componentState.studentData.dataExplorerSeries[0].xColumn;\n }\n\n private calculateColumnNames(componentState: any): string[] {\n const tableData: any = componentState.studentData.tableData;\n const firstRow: any = tableData[0];\n const columnNames: string[] = [];\n for (const cell of firstRow) {\n columnNames.push(cell.text);\n }\n return columnNames;\n }\n\n private setupTable(): void {\n this.tabulatorData = this.tabulatorDataService.convertTableDataToTabulator(\n this.tableData,\n this.componentContent.globalCellSize\n );\n }\n\n protected tabulatorRendered(): void {\n this.nodeService.broadcastDoneRenderingComponent({\n nodeId: this.nodeId,\n componentId: this.componentId\n });\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": ".table-container { margin-top: 0; padding: 0; }\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "tabulatorDataService", + "type": "TabulatorDataService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 41, + "jsdoctags": [ + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "tabulatorDataService", + "type": "TabulatorDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "ComponentShowWorkDirective" + ], + "templateData": "
    \n \n
    \n@if (componentContent.isDataExplorerEnabled) {\n
    \n @if (componentContent.dataExplorerGraphTypes.length > 1) {\n \n Graph Type\n \n @for (graphType of componentContent.dataExplorerGraphTypes; track graphType) {\n \n {{ graphType.name }}\n \n }\n \n \n }\n
    \n \n X Data\n \n {{ noneText }}\n @for (columnName of columnNames; track columnName; let i = $index) {\n \n {{ columnName }}\n \n }\n \n \n @for (\n singleDataExplorerSeries of dataExplorerSeries;\n track singleDataExplorerSeries;\n let i = $index\n ) {\n \n Y Data {{ dataExplorerSeries.length > 1 ? i + 1 : '' }}\n \n {{ noneText }}\n @for (columnName of columnNames; track columnName; let i = $index) {\n \n {{ columnName }}\n \n }\n \n \n }\n
    \n @if (componentContent.isDataExplorerAxisLabelsEditable) {\n
    \n \n X Axis Label\n @if (dataExplorerXAxisLabel == null || dataExplorerXAxisLabel == '') {\n \n }\n @if (dataExplorerXAxisLabel != null && dataExplorerXAxisLabel != '') {\n \n }\n \n @if (componentContent.numDataExplorerYAxis === 1) {\n \n Y Axis Label\n @if (dataExplorerYAxisLabel == null || dataExplorerYAxisLabel == '') {\n \n }\n @if (dataExplorerYAxisLabel != null && dataExplorerYAxisLabel != '') {\n \n }\n \n }\n @if (componentContent.numDataExplorerYAxis > 1) {\n
    \n @for (\n yAxisLabel of [].constructor(componentContent.numDataExplorerYAxis);\n track yAxisLabel;\n let i = $index\n ) {\n \n Y Axis {{ i + 1 }} Label\n @if (dataExplorerYAxisLabels[i] == null || dataExplorerYAxisLabels[i] == '') {\n \n }\n @if (dataExplorerYAxisLabels[i] != null && dataExplorerYAxisLabels[i] != '') {\n \n }\n \n }\n
    \n }\n
    \n }\n}\n" + }, + { + "name": "TableStudentComponent", + "id": "component-TableStudentComponent-a8cce33a778e9505c12f610354860a457875e855730583bfaee1a398c09ed10df131eba2bb23f9a4a7510c24ed4ec9b1fa9ed8c49890f4b625a07f6332788c68", + "file": "src/assets/wise5/components/table/table-student/table-student.component.ts", + "encapsulation": [ + "ViewEncapsulation.None" + ], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [ + ".tools { margin-bottom: 8px; }" + ], + "templateUrl": [ + "table-student.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "component", + "deprecated": false, + "deprecationMessage": "", + "line": 24, + "type": "Component", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentState", + "deprecated": false, + "deprecationMessage": "", + "line": 25, + "type": "any", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isDisabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "line": 26, + "type": "boolean", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "mode", + "deprecated": false, + "deprecationMessage": "", + "line": 27, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 28, + "type": "string", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "workgroupId", + "deprecated": false, + "deprecationMessage": "", + "line": 29, + "type": "number", + "decorators": [], + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "outputsClass": [ + { + "name": "saveComponentStateEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 30, + "type": "EventEmitter", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "starterStateChangedEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 31, + "type": "EventEmitter", + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "propertiesClass": [ + { + "name": "columnIndexToIsUsed", + "defaultValue": "new Map()", + "deprecated": false, + "deprecationMessage": "", + "type": "Map", + "indexKey": "", + "optional": false, + "description": "", + "line": 52 + }, + { + "name": "columnNames", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 53 + }, + { + "name": "dataExplorerColumnToIsDisabled", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 54 + }, + { + "name": "dataExplorerGraphType", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 56 + }, + { + "name": "dataExplorerGraphTypes", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 55 + }, + { + "name": "dataExplorerSeries", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 57 + }, + { + "name": "dataExplorerSeriesParams", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 58 + }, + { + "name": "dataExplorerTooltipHeaderColumn", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 59 + }, + { + "name": "dataExplorerXAxisLabel", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 60 + }, + { + "name": "dataExplorerXColumn", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 61 + }, + { + "name": "dataExplorerYAxisLabel", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 62 + }, + { + "name": "dataExplorerYAxisLabels", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 63 + }, + { + "name": "isDataExplorerEnabled", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 64 + }, + { + "name": "isDataExplorerScatterPlotRegressionLineEnabled", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 65 + }, + { + "name": "latestConnectedComponentParams", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 67 + }, + { + "name": "latestConnectedComponentState", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 68 + }, + { + "name": "notebookConfig", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 69 + }, + { + "name": "numDataExplorerSeries", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 70 + }, + { + "name": "resetTableButtonVisible", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 66, + "modifierKind": [ + 124 + ] + }, + { + "name": "selectedRowIndices", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "number[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 71 + }, + { + "name": "sortOrder", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "number[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 72 + }, + { + "name": "tableData", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 73 + }, + { + "name": "tableId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 74 + }, + { + "name": "tabulatorData", + "deprecated": false, + "deprecationMessage": "", + "type": "TabulatorData", + "indexKey": "", + "optional": false, + "description": "", + "line": 75 + }, + { + "name": "tabulatorSorters", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 76 + }, + { + "name": "annotationSavedToServerSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 53, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "attachments", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 33, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentContent", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 34, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 35, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "componentType", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 36, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isDirty", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 45, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSaveButtonVisible", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 38, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSaveOrSubmitButtonVisible", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 41, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isShowAddToNotebookButton", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 39, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isStudentAttachmentEnabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 46, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmit", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 44, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmitButtonDisabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 42, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmitButtonVisible", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 40, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSubmitDirty", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 43, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "latestAnnotations", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 48, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "latestComponentState", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 50, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "nodeSubmitClickedSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 54, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "parentStudentWorkIds", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 49, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "prompt", + "deprecated": false, + "deprecationMessage": "", + "type": "SafeHtml", + "indexKey": "", + "optional": false, + "description": "", + "line": 37, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "requestComponentStateSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 52, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "showAddToNotebookButton", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 51, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "studentWorkSavedToServerSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 55, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "submitCounter", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 47, + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 56, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "methodsClass": [ + { + "name": "appendComponentState", + "args": [ + { + "name": "componentState", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "connectedComponent", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 803, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentState", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "connectedComponent", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "attachStudentAsset", + "args": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 951, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createComponentState", + "args": [ + { + "name": "action", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 372, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCreate a new component state populated with the student data\ne.g. 'submit', 'save', 'change'\n", + "description": "

    Create a new component state populated with the student data\ne.g. 'submit', 'save', 'change'

    \n", + "jsdoctags": [ + { + "name": { + "pos": 13248, + "end": 13254, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "action" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 13242, + "end": 13247, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    the action that is triggering creating of this component state\ne.g. 'submit', 'save', 'change'

    \n" + }, + { + "tagName": { + "pos": 13361, + "end": 13367, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

    a promise that will return a component state

    \n" + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createDataExplorerSeries", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 891, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "createTableCell", + "args": [ + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "''" + }, + { + "name": "editable", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + }, + { + "name": "size", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + } + ], + "optional": false, + "returnType": "{ text: string; editable: boolean; size: any; }", + "typeParameters": [], + "line": 525, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCreate a cell object.\ncell.\n", + "description": "

    Create a cell object.\ncell.

    \n", + "jsdoctags": [ + { + "name": { + "pos": 18580, + "end": 18584, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "text" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "''", + "tagName": { + "pos": 18574, + "end": 18579, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    The text to show in the cell.

    \n" + }, + { + "name": { + "pos": 18627, + "end": 18635, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "editable" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "pos": 18621, + "end": 18626, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    Whether the student is allowed to edit the contents in the\ncell.

    \n" + }, + { + "name": { + "pos": 18718, + "end": 18722, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "size" + }, + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "pos": 18712, + "end": 18717, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    The with of the cell.

    \n" + }, + { + "tagName": { + "pos": 18751, + "end": 18757, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

    An object.

    \n" + } + ] + }, + { + "name": "createTableRow", + "args": [ + { + "name": "columns", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 534, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nCreate a row.\n", + "description": "

    Create a row.

    \n", + "jsdoctags": [ + { + "name": { + "pos": 18938, + "end": 18945, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "columns" + }, + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 18932, + "end": 18937, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    An array of strings or objects.

    \n" + }, + { + "tagName": { + "pos": 18984, + "end": 18990, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

    An array of objects.

    \n" + } + ] + }, + { + "name": "dataExplorerXColumnChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 856, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dataExplorerYColumnChanged", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 864, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getClosestDataPoint", + "args": [ + { + "name": "dataPoints", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "x", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 552, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the data point that has the closest x value to the given argument x.\n", + "description": "

    Get the data point that has the closest x value to the given argument x.

    \n", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": { + "pos": 19479, + "end": 19489, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "dataPoints" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 19473, + "end": 19478, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    An array of data points. Each data point can be an object or an array.

    \n" + }, + { + "name": { + "pos": 19573, + "end": 19574, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "x" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 19567, + "end": 19572, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    The argument x.

    \n" + }, + { + "tagName": { + "pos": 19597, + "end": 19603, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

    A data point which can be an object or array.

    \n" + } + ] + }, + { + "name": "getConnectedComponentsAndTheirComponentStates", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 765, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getDataExplorerDataToColumn", + "args": [ + { + "name": "dataLabel", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 272, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\n", + "description": "", + "jsdoctags": [ + { + "name": { + "pos": 10072, + "end": 10081, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "dataLabel" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 10066, + "end": 10071, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    The data label such as x, y, y2, y3, etc.

    \n" + }, + { + "tagName": { + "pos": 10130, + "end": 10136, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

    The column index (0 indexed)

    \n" + } + ] + }, + { + "name": "getDataExplorerYDataColumn", + "args": [ + { + "name": "ySeriesNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 260, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\n", + "description": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": { + "pos": 9735, + "end": 9748, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "ySeriesNumber" + }, + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 9729, + "end": 9734, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    (1 indexed)

    \n" + }, + { + "tagName": { + "pos": 9767, + "end": 9773, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

    The column index (0 indexed)

    \n" + } + ] + }, + { + "name": "getTableDataCellValue", + "args": [ + { + "name": "x", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "y", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "table", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + } + ], + "optional": false, + "returnType": "string | number", + "typeParameters": [], + "line": 695, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the value of a cell in the table\nwhen we want to look up the value in the default authored table\n", + "description": "

    Get the value of a cell in the table\nwhen we want to look up the value in the default authored table

    \n", + "jsdoctags": [ + { + "name": { + "pos": 23419, + "end": 23420, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "x" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 23413, + "end": 23418, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    the x coordinate

    \n" + }, + { + "name": { + "pos": 23450, + "end": 23451, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "y" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 23444, + "end": 23449, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    the y coordinate

    \n" + }, + { + "name": { + "pos": 23481, + "end": 23486, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "table" + }, + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "pos": 23475, + "end": 23480, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    (optional) table data to get the value from. this is used\nwhen we want to look up the value in the default authored table

    \n" + }, + { + "tagName": { + "pos": 23620, + "end": 23627, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

    the cell value (text or a number)

    \n" + } + ] + }, + { + "name": "getXFromDataPoint", + "args": [ + { + "name": "dataPoint", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 572, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the x value from the data point.\n", + "description": "

    Get the x value from the data point.

    \n", + "jsdoctags": [ + { + "name": { + "pos": 20263, + "end": 20272, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "dataPoint" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 20257, + "end": 20262, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    An object or array.

    \n" + }, + { + "tagName": { + "pos": 20299, + "end": 20305, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

    The x value of the data point.

    \n" + } + ] + }, + { + "name": "getYAxisForDataExplorerSeries", + "args": [ + { + "name": "index", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 903, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "index", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getYFromDataPoint", + "args": [ + { + "name": "dataPoint", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 585, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the y value from the data point.\n", + "description": "

    Get the y value from the data point.

    \n", + "jsdoctags": [ + { + "name": { + "pos": 20619, + "end": 20628, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "dataPoint" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 20613, + "end": 20618, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    An object or array.

    \n" + }, + { + "tagName": { + "pos": 20655, + "end": 20661, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

    The y value of the data point.

    \n" + } + ] + }, + { + "name": "handleConnectedComponents", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 723, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "importTableComponentState", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 752, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "connectedComponent", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "initializeDataExplorer", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 185, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isColumnUsed", + "args": [ + { + "name": "columnIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 839, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "columnIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isDataExplorerOneYAxis", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 874, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "isDataExplorerXAxisLabelEmpty", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 218, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isDataExplorerYAxisLabelEmpty", + "args": [ + { + "name": "dataExplorerSeriesIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 235, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "dataExplorerSeriesIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "mergeComponentState", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 781, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "mergeTableData", + "args": [ + { + "name": "tableData", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 792, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "tableData", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 181, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 104, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "processConnectedComponentState", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 921, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "repopulateDataExplorerData", + "args": [ + { + "name": "componentState", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 910, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "resetTable", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 305, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nReset the table data to its initial state from the component content\n", + "description": "

    Reset the table data to its initial state from the component content

    \n" + }, + { + "name": "setDataExplorerDataToColumn", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 198, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "setDataExplorerSeriesYAxis", + "args": [ + { + "name": "index", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 881, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "index", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setDataExplorerXColumnIsDisabled", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 276, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "setDataExplorerYColumnIsDisabled", + "args": [ + { + "name": "yColumnNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 280, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "yColumnNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setGraphDataIntoTableData", + "args": [ + { + "name": "componentState", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "params", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 426, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nSet the graph data into the table data\nand rows to overwrite in the table data\n", + "description": "

    Set the graph data into the table data\nand rows to overwrite in the table data

    \n", + "jsdoctags": [ + { + "name": { + "pos": 15328, + "end": 15342, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 15322, + "end": 15327, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    the component state to get the graph data from

    \n" + }, + { + "name": { + "pos": 15402, + "end": 15408, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "params" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 15396, + "end": 15401, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    (optional) the params to specify what columns\nand rows to overwrite in the table data

    \n" + } + ] + }, + { + "name": "setSeriesIntoTable", + "args": [ + { + "name": "series", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "params", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 598, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nSet the series data into the table\n", + "description": "

    Set the series data into the table

    \n", + "jsdoctags": [ + { + "name": { + "pos": 20973, + "end": 20979, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "series" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 20967, + "end": 20972, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    an object that contains the data for a single series

    \n" + }, + { + "name": { + "pos": 21045, + "end": 21051, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "params" + }, + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "pos": 21039, + "end": 21044, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    the parameters for where to place the points in the table

    \n" + } + ] + }, + { + "name": "setStudentWork", + "args": [ + { + "name": "componentState", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 337, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nPopulate the student work into the component\n", + "description": "

    Populate the student work into the component

    \n", + "jsdoctags": [ + { + "name": { + "pos": 12198, + "end": 12212, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 12192, + "end": 12197, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    the component state to populate into the component

    \n" + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setTableDataCellValue", + "args": [ + { + "name": "x", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "y", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "table", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "value", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 671, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nSet the table data cell value\n", + "description": "

    Set the table data cell value

    \n", + "jsdoctags": [ + { + "name": { + "pos": 22881, + "end": 22882, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "x" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 22875, + "end": 22880, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    the x index (0 indexed)

    \n" + }, + { + "name": { + "pos": 22919, + "end": 22920, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "y" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 22913, + "end": 22918, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    the y index (0 indexed)

    \n" + }, + { + "name": "table", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": { + "pos": 22957, + "end": 22962, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "value" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 22951, + "end": 22956, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    the value to set in the cell

    \n" + } + ] + }, + { + "name": "setTabulatorData", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 955, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "setupTable", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 291, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nSetup the table\n", + "description": "

    Setup the table

    \n" + }, + { + "name": "setXDataToColumn", + "args": [ + { + "name": "dataExplorerSeriesIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 211, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "dataExplorerSeriesIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setYDataToColumn", + "args": [ + { + "name": "dataExplorerSeriesIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 226, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "dataExplorerSeriesIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "showDataAtMouseX", + "args": [ + { + "name": "componentState", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "params", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 480, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nShow the data at x for all the series.\n", + "description": "

    Show the data at x for all the series.

    \n", + "jsdoctags": [ + { + "name": { + "pos": 17009, + "end": 17023, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 17003, + "end": 17008, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    The Graph component state.

    \n" + }, + { + "name": { + "pos": 17063, + "end": 17069, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "params" + }, + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 17057, + "end": 17062, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    The connected component params.

    \n" + } + ] + }, + { + "name": "snipTable", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 712, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "studentDataChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 814, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "tabulatorCellChanged", + "args": [ + { + "name": "cell", + "type": "Tabulator.CellComponent", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 962, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "cell", + "type": "Tabulator.CellComponent", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "tabulatorRowSelectionChanged", + "args": [ + { + "name": "rows", + "type": "Tabulator.RowComponent[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 969, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "rows", + "type": "Tabulator.RowComponent[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "tabulatorRowSortChanged", + "args": [ + { + "name": "sortData", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 977, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "sortData", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "updateColumnNames", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 827, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "updateColumnsUsed", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 832, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "updateDataExplorerSeriesNames", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 848, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "updateDataExplorerXAxisLabel", + "args": [ + { + "name": "columnIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 222, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "columnIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "updateDataExplorerYAxisLabel", + "args": [ + { + "name": "dataExplorerSeriesIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "columnIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 246, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "dataExplorerSeriesIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "columnIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "addDefaultFeedback", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 688, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "broadcastDoneRenderingComponent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 325, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "canSubmit", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 488, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "clearLatestComponentState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 555, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "confirmSubmit", + "args": [ + { + "name": "numberOfSubmitsLeft", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 468, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "numberOfSubmitsLeft", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "connectedComponentStudentDataSaved", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 796, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nThis function is called when a connected component of this component saves student data.\nThis was added to handle a race condition when a step has a connected component on a previous\nstep but the connected component student work on the previous step was not being imported\nbecause it wasn't being saved in time.\nHere is an example of what was happening\n- Student generates work on step 1 but does not click the save button\n- Student goes to step 2 which triggers a promise to save the student work on step 1\n- Step 2 is loaded and checks if there is any work it needs to import from step 1\n- The work in step 1 has not saved yet so step 2 does not import any work and loads without\n importing any work\n- The work from step 1 is then saved\nHere is the additional process that this function performs to fix this problem\n- Step 2 listens for when work is saved on step 1\n- When the work for step 1 is saved, step 2 checks to see if it needs to import that work\n", + "description": "

    This function is called when a connected component of this component saves student data.\nThis was added to handle a race condition when a step has a connected component on a previous\nstep but the connected component student work on the previous step was not being imported\nbecause it wasn't being saved in time.\nHere is an example of what was happening

    \n
      \n
    • Student generates work on step 1 but does not click the save button
    • \n
    • Student goes to step 2 which triggers a promise to save the student work on step 1
    • \n
    • Step 2 is loaded and checks if there is any work it needs to import from step 1
    • \n
    • The work in step 1 has not saved yet so step 2 does not import any work and loads without\nimporting any work
    • \n
    • The work from step 1 is then saved\nHere is the additional process that this function performs to fix this problem
    • \n
    • Step 2 listens for when work is saved on step 1
    • \n
    • When the work for step 1 is saved, step 2 checks to see if it needs to import that work
    • \n
    \n", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "copyAndAttachStudentAsset", + "args": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 218, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "studentAsset", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "copyPublicNotebookItem", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 632, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "copyPublicNotebookItemButtonClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 747, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createAutoCommentAnnotation", + "args": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 725, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createAutoScoreAnnotation", + "args": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 714, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createComponentStateAdditionalProcessing", + "args": [ + { + "name": "promise", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 598, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "promise", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createComponentStateAndBroadcast", + "args": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 559, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createDefaultFeedbackAnnotation", + "args": [ + { + "name": "feedbackText", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 706, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "feedbackText", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createMergedComponentState", + "args": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 377, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentStates", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "createNewComponentState", + "args": [], + "optional": false, + "returnType": "Partial", + "typeParameters": [], + "line": 818, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "disableAllInput", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 492, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "disableComponentIfNecessary", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 332, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "disableSubmitButton", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 496, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "doAttachStudentAsset", + "args": [ + { + "name": "studentAssetRequest", + "type": "StudentAssetRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 212, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "studentAssetRequest", + "type": "StudentAssetRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 541, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentStudentDataChanged", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 572, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentSubmitDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 548, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "emitComponentSubmitTriggered", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 512, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "generateImageFromComponentState", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 615, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nRender the component state and then generate an image from it.\n", + "description": "

    Render the component state and then generate an image from it.

    \n", + "jsdoctags": [ + { + "name": { + "pos": 18804, + "end": 18818, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "componentState" + }, + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 18798, + "end": 18803, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    The component state to render.

    \n" + }, + { + "tagName": { + "pos": 18856, + "end": 18862, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

    A promise that will return an image.

    \n" + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "generateStarterState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 216, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getAction", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 321, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getClientSaveTime", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 684, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getComponentStatePromise", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 309, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getComponentStateWrapper", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "ComponentStateWrapper", + "typeParameters": [], + "line": 301, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getDefaultFeedback", + "args": [ + { + "name": "submitCount", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 702, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "submitCount", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getElementById", + "args": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getFirstResult", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 758, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "id", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "getFirstResult", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getIsDirty", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 277, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getMaxScore", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 680, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getMaxSubmitCount", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 460, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "getNumberOfSubmitsLeft", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 456, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "handleConnectedComponentsPostProcess", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 385, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "handleStudentWorkSavedToServer", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 263, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "handleStudentWorkSavedToServerAdditionalProcessing", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 287, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasAnySubmissions", + "args": [ + { + "name": "componentStates", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 344, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "componentStates", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasDefaultFeedback", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 695, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasMaxScore", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 676, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasMaxSubmitCount", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 437, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasMaxSubmitCountAndUsedAllSubmits", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 452, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasSubmitMessage", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 504, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasSubmitsLeft", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 500, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "hasUsedAllSubmits", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 441, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "importWorkAsBackground", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 658, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "importWorkByStudentWorkId", + "args": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 170, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "incrementSubmitCounter", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 389, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isAddToNotebookEnabled", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 624, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isForThisComponent", + "args": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 192, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "object", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isFromConnectedComponent", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 766, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isHandleConnectedComponentAfterConnectedComponentStudentDataSaved", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 802, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isLockAfterSubmit", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 348, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isNotebookEnabled", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 643, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isPreviewMode", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 109, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isSameComponent", + "args": [ + { + "name": "component", + "type": "Component", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 188, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "component", + "type": "Component", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isStudentNoteClippingEnabled", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 647, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "isWorkFromClassmate", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 196, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "lockIfNecessary", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 281, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "performSubmit", + "args": [ + { + "name": "submitTriggeredBy", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 472, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "submitTriggeredBy", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "processLatestStudentWork", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 580, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "registerNotebookItemChosenListener", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 736, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "removeAttachment", + "args": [ + { + "name": "attachment", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 245, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "attachment", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "saveButtonClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 393, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "saveForAuthoringPreviewMode", + "args": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 404, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "action", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setBackgroundImage", + "args": [ + { + "name": "image", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 674, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "image", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setComponentStateAsBackgroundImage", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 668, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 537, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsDirtyAndBroadcast", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 527, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsSubmit", + "args": [ + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 464, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isSubmit", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsSubmitDirty", + "args": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 508, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "isDirty", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setIsSubmitDirtyAndBroadcast", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 532, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setParentStudentWorkIdToCurrentStudentWork", + "args": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 180, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "studentWorkId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "setSubmitCounter", + "args": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 811, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "componentState", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "shouldCreateComponentState", + "args": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 317, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "request", + "type": "ComponentStateRequest", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "showStudentAssets", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 651, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "submit", + "args": [ + { + "name": "submitTriggeredBy", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 416, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "submitTriggeredBy", + "type": "null", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "submitButtonClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 412, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToAnnotationSavedToServer", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 123, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToAttachStudentAsset", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 200, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToNodeSubmitClicked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 137, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToNotebookItemChosen", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 159, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToNotifyConnectedComponents", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 147, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToRequestComponentState", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 289, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToStudentWorkSavedToServer", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 252, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "subscribeToSubscriptions", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 113, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + }, + { + "name": "tryDisableComponent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 445, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "ComponentStudent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "ComponentHeaderComponent", + "type": "component" + }, + { + "name": "MatButton" + }, + { + "name": "MatIcon" + }, + { + "name": "TabulatorTableComponent", + "type": "component" + }, + { + "name": "MatFormField" + }, + { + "name": "MatLabel" + }, + { + "name": "MatSelect" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatOption" + }, + { + "name": "MatInput" + }, + { + "name": "ComponentSaveSubmitButtonsComponent", + "type": "component" + }, + { + "name": "ComponentAnnotationsComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import html2canvas from 'html2canvas';\nimport { ChangeDetectorRef, Component, ViewEncapsulation } from '@angular/core';\nimport { Tabulator } from 'tabulator-tables';\nimport { AnnotationService } from '../../../services/annotationService';\nimport { ConfigService } from '../../../services/configService';\nimport { NodeService } from '../../../services/nodeService';\nimport { NotebookService } from '../../../services/notebookService';\nimport { ProjectService } from '../../../services/projectService';\nimport { StudentAssetService } from '../../../services/studentAssetService';\nimport { StudentDataService } from '../../../services/studentDataService';\nimport { ComponentStudent } from '../../component-student.component';\nimport { ComponentService } from '../../componentService';\nimport { TableService } from '../tableService';\nimport { MatDialog } from '@angular/material/dialog';\nimport { TabulatorData } from '../TabulatorData';\nimport { TabulatorDataService } from '../tabulatorDataService';\nimport { copy } from '../../../common/object/object';\nimport { convertToPNGFile } from '../../../common/canvas/canvas';\nimport { hasConnectedComponent } from '../../../common/ComponentContent';\nimport { ComponentHeaderComponent } from '../../../directives/component-header/component-header.component';\nimport { MatButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\nimport { TabulatorTableComponent } from '../tabulator-table/tabulator-table.component';\nimport { MatFormField, MatLabel } from '@angular/material/form-field';\nimport { MatSelect } from '@angular/material/select';\nimport { FormsModule } from '@angular/forms';\nimport { MatOption } from '@angular/material/autocomplete';\nimport { MatInput } from '@angular/material/input';\nimport { ComponentSaveSubmitButtonsComponent } from '../../../directives/component-save-submit-buttons/component-save-submit-buttons.component';\nimport { ComponentAnnotationsComponent } from '../../../directives/componentAnnotations/component-annotations.component';\n\n@Component({\n encapsulation: ViewEncapsulation.None,\n imports: [\n ComponentHeaderComponent,\n MatButton,\n MatIcon,\n TabulatorTableComponent,\n MatFormField,\n MatLabel,\n MatSelect,\n FormsModule,\n MatOption,\n MatInput,\n ComponentSaveSubmitButtonsComponent,\n ComponentAnnotationsComponent\n ],\n styles: ['.tools { margin-bottom: 8px; }'],\n templateUrl: 'table-student.component.html'\n})\nexport class TableStudentComponent extends ComponentStudent {\n columnIndexToIsUsed: Map = new Map();\n columnNames: string[];\n dataExplorerColumnToIsDisabled: any = {};\n dataExplorerGraphTypes: any[];\n dataExplorerGraphType: string;\n dataExplorerSeries: any[];\n dataExplorerSeriesParams: any[];\n dataExplorerTooltipHeaderColumn: number;\n dataExplorerXAxisLabel: string;\n dataExplorerXColumn: number;\n dataExplorerYAxisLabel: string;\n dataExplorerYAxisLabels: string[];\n isDataExplorerEnabled: boolean;\n isDataExplorerScatterPlotRegressionLineEnabled: boolean;\n protected resetTableButtonVisible: boolean;\n latestConnectedComponentParams: any;\n latestConnectedComponentState: any;\n notebookConfig: any;\n numDataExplorerSeries: number;\n selectedRowIndices: number[] = [];\n sortOrder: number[] = [];\n tableData: any;\n tableId: string;\n tabulatorData: TabulatorData;\n tabulatorSorters: any[] = [];\n\n constructor(\n protected annotationService: AnnotationService,\n private changeDetectorRef: ChangeDetectorRef,\n protected componentService: ComponentService,\n protected configService: ConfigService,\n protected dialog: MatDialog,\n protected nodeService: NodeService,\n protected notebookService: NotebookService,\n private projectService: ProjectService,\n protected studentAssetService: StudentAssetService,\n protected studentDataService: StudentDataService,\n private tableService: TableService,\n private tabulatorDataService: TabulatorDataService\n ) {\n super(\n annotationService,\n componentService,\n configService,\n dialog,\n nodeService,\n notebookService,\n studentAssetService,\n studentDataService\n );\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n\n // holds the the table data\n this.tableData = null;\n\n // the label for the notebook in thos project\n this.notebookConfig = this.notebookService.getNotebookConfig();\n\n this.latestConnectedComponentState = null;\n this.latestConnectedComponentParams = null;\n\n this.tableId = this.tableService.getTableId(this.nodeId, this.componentId);\n\n this.isDataExplorerEnabled = this.componentContent.isDataExplorerEnabled;\n if (this.isDataExplorerEnabled) {\n this.initializeDataExplorer();\n }\n\n this.isSaveButtonVisible = this.componentContent.showSaveButton;\n this.isSubmitButtonVisible = this.componentContent.showSubmitButton;\n\n if (hasConnectedComponent(this.componentContent, 'showWork')) {\n // we will show work from another component\n this.handleConnectedComponents();\n } else if (\n this.tableService.componentStateHasStudentWork(this.componentState, this.componentContent)\n ) {\n // the student has work so we will populate the work into this component\n this.setStudentWork(this.componentState);\n } else if (this.component.hasConnectedComponent()) {\n // we will import work from another component\n this.handleConnectedComponents();\n } else if (this.componentState == null) {\n // check if we need to import work\n\n if (this.component.hasConnectedComponent()) {\n /*\n * the student does not have any work and there are connected\n * components so we will get the work from the connected\n * components\n */\n this.handleConnectedComponents();\n }\n }\n\n this.setupTable();\n\n if (this.isDataExplorerEnabled) {\n this.updateColumnNames();\n if (this.componentState == null) {\n this.createDataExplorerSeries();\n } else {\n this.repopulateDataExplorerData(this.componentState);\n }\n if (this.componentContent.dataExplorerDataToColumn != null) {\n this.setDataExplorerDataToColumn();\n }\n this.updateColumnsUsed();\n }\n\n if (this.hasMaxSubmitCountAndUsedAllSubmits()) {\n this.isDisabled = true;\n }\n\n this.resetTableButtonVisible = this.tableService.componentHasEditableCells(\n this.componentContent\n );\n this.disableComponentIfNecessary();\n\n if (this.isDataExplorerEnabled && this.componentContent.dataExplorerDataToColumn != null) {\n setTimeout(() => {\n this.studentDataChanged();\n }, 1000);\n }\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n\n initializeDataExplorer() {\n this.numDataExplorerSeries = this.componentContent.numDataExplorerSeries;\n this.dataExplorerGraphTypes = this.componentContent.dataExplorerGraphTypes;\n if (this.dataExplorerGraphTypes.length > 0) {\n this.dataExplorerGraphType = this.dataExplorerGraphTypes[0].value;\n }\n this.isDataExplorerScatterPlotRegressionLineEnabled =\n this.componentContent.isDataExplorerScatterPlotRegressionLineEnabled;\n this.dataExplorerYAxisLabels = Array(this.componentContent.numDataExplorerYAxis).fill('');\n this.dataExplorerSeriesParams = this.componentContent.dataExplorerSeriesParams;\n this.dataExplorerTooltipHeaderColumn = this.componentContent.dataExplorerTooltipHeaderColumn;\n }\n\n setDataExplorerDataToColumn(): void {\n for (let index = 0; index < this.dataExplorerSeries.length; index++) {\n const xColumn = this.getDataExplorerDataToColumn('x');\n if (xColumn != null) {\n this.setXDataToColumn(index, xColumn);\n }\n const yColumn = this.getDataExplorerYDataColumn(index + 1);\n if (yColumn != null) {\n this.setYDataToColumn(index, yColumn);\n }\n }\n }\n\n setXDataToColumn(dataExplorerSeriesIndex: number, columnIndex: number): void {\n this.dataExplorerSeries[dataExplorerSeriesIndex].xColumn = columnIndex;\n this.dataExplorerXColumn = columnIndex;\n this.setDataExplorerXColumnIsDisabled();\n this.updateDataExplorerXAxisLabel(columnIndex);\n }\n\n isDataExplorerXAxisLabelEmpty(): boolean {\n return this.dataExplorerXAxisLabel == null || this.dataExplorerXAxisLabel === '';\n }\n\n updateDataExplorerXAxisLabel(columnIndex: number): void {\n this.dataExplorerXAxisLabel = this.columnNames[columnIndex];\n }\n\n setYDataToColumn(dataExplorerSeriesIndex: number, columnIndex: number): void {\n this.dataExplorerSeries[dataExplorerSeriesIndex].yColumn = columnIndex;\n this.dataExplorerSeries[dataExplorerSeriesIndex].name = this.columnNames[columnIndex];\n this.setDataExplorerYColumnIsDisabled(dataExplorerSeriesIndex + 1);\n if (this.isDataExplorerYAxisLabelEmpty(dataExplorerSeriesIndex)) {\n this.updateDataExplorerYAxisLabel(dataExplorerSeriesIndex, columnIndex);\n }\n }\n\n isDataExplorerYAxisLabelEmpty(dataExplorerSeriesIndex: number): boolean {\n let yAxisLabel = '';\n if (this.isDataExplorerOneYAxis()) {\n yAxisLabel = this.dataExplorerYAxisLabel;\n } else {\n yAxisLabel =\n this.dataExplorerYAxisLabels[this.dataExplorerSeriesParams[dataExplorerSeriesIndex].yAxis];\n }\n return yAxisLabel == null || yAxisLabel === '';\n }\n\n updateDataExplorerYAxisLabel(dataExplorerSeriesIndex: number, columnIndex: number): void {\n const columnName = this.columnNames[columnIndex];\n if (this.isDataExplorerOneYAxis()) {\n this.dataExplorerYAxisLabel = columnName;\n } else {\n const yAxisIndex = this.dataExplorerSeries[dataExplorerSeriesIndex].yAxis;\n this.dataExplorerYAxisLabels[yAxisIndex] = columnName;\n }\n }\n\n /**\n * @param ySeriesNumber (1 indexed)\n * @return The column index (0 indexed)\n */\n private getDataExplorerYDataColumn(ySeriesNumber: number): number {\n if (ySeriesNumber === 1) {\n return this.getDataExplorerDataToColumn('y');\n } else {\n return this.getDataExplorerDataToColumn(`y${ySeriesNumber}`);\n }\n }\n\n /**\n * @param dataLabel The data label such as x, y, y2, y3, etc.\n * @return The column index (0 indexed)\n */\n getDataExplorerDataToColumn(dataLabel: string): number {\n return this.componentContent.dataExplorerDataToColumn[dataLabel];\n }\n\n setDataExplorerXColumnIsDisabled(): void {\n this.dataExplorerColumnToIsDisabled['x'] = true;\n }\n\n setDataExplorerYColumnIsDisabled(yColumnNumber: number): void {\n if (yColumnNumber === 1) {\n this.dataExplorerColumnToIsDisabled['y'] = true;\n } else {\n this.dataExplorerColumnToIsDisabled[`y${yColumnNumber}`] = true;\n }\n }\n\n /**\n * Setup the table\n */\n setupTable() {\n if (this.tableData == null) {\n /*\n * the student does not have any table data so we will use\n * the table data from the component content\n */\n this.tableData = copy(this.componentContent.tableData);\n }\n this.setTabulatorData();\n }\n\n /**\n * Reset the table data to its initial state from the component content\n */\n resetTable() {\n if (this.component.hasConnectedComponent()) {\n // this component imports work so we will import the work again\n this.tableData = copy(this.componentContent.tableData);\n this.handleConnectedComponents();\n } else {\n // get the original table from the step content\n this.tableData = copy(this.componentContent.tableData);\n if (this.isDataExplorerEnabled) {\n this.dataExplorerGraphType = null;\n this.dataExplorerXColumn = null;\n this.dataExplorerXAxisLabel = null;\n this.dataExplorerYAxisLabel = null;\n if (this.componentContent.numDataExplorerYAxis > 1) {\n this.dataExplorerYAxisLabels = Array(this.componentContent.numDataExplorerYAxis).fill('');\n } else {\n this.dataExplorerYAxisLabels = null;\n }\n this.createDataExplorerSeries();\n if (this.componentContent.dataExplorerDataToColumn != null) {\n this.setDataExplorerDataToColumn();\n }\n }\n this.setTabulatorData();\n this.studentDataChanged();\n }\n }\n\n /**\n * Populate the student work into the component\n * @param componentState the component state to populate into the component\n */\n setStudentWork(componentState) {\n if (componentState != null) {\n // get the student data from the component state\n const studentData = componentState.studentData;\n\n if (studentData != null && studentData.tableData != null) {\n // set the table into the controller\n this.tableData = studentData.tableData;\n\n const submitCounter = studentData.submitCounter;\n\n if (submitCounter != null) {\n // populate the submit counter\n this.submitCounter = submitCounter;\n }\n\n this.selectedRowIndices = studentData.selectedRowIndices\n ? studentData.selectedRowIndices\n : [];\n\n this.sortOrder = studentData.sortOrder ? studentData.sortOrder : [];\n\n this.tabulatorSorters = studentData.tabulatorSorters ? studentData.tabulatorSorters : [];\n\n this.processLatestStudentWork();\n }\n }\n }\n\n /**\n * Create a new component state populated with the student data\n * @param action the action that is triggering creating of this component state\n * e.g. 'submit', 'save', 'change'\n * @return a promise that will return a component state\n */\n createComponentState(action) {\n const componentState: any = this.createNewComponentState();\n const studentData: any = {};\n studentData.tableData = copy(this.tableData);\n studentData.selectedRowIndices = this.componentContent.enableRowSelection\n ? this.selectedRowIndices\n : [];\n studentData.sortOrder = this.sortOrder;\n studentData.tabulatorSorters = this.tabulatorSorters;\n studentData.isDataExplorerEnabled = this.isDataExplorerEnabled;\n studentData.dataExplorerGraphType = this.dataExplorerGraphType;\n studentData.dataExplorerXAxisLabel = this.dataExplorerXAxisLabel;\n studentData.dataExplorerTooltipHeaderColumn = this.dataExplorerTooltipHeaderColumn;\n if (this.dataExplorerYAxisLabel != null) {\n studentData.dataExplorerYAxisLabel = this.dataExplorerYAxisLabel;\n }\n if (this.dataExplorerYAxisLabels) {\n studentData.dataExplorerYAxisLabels = this.dataExplorerYAxisLabels;\n }\n studentData.isDataExplorerScatterPlotRegressionLineEnabled =\n this.isDataExplorerScatterPlotRegressionLineEnabled;\n studentData.dataExplorerSeries = copy(this.dataExplorerSeries);\n\n studentData.submitCounter = this.submitCounter;\n componentState.isSubmit = this.isSubmit;\n componentState.studentData = studentData;\n componentState.componentType = 'Table';\n componentState.nodeId = this.nodeId;\n componentState.componentId = this.componentId;\n\n if (this.isSubmit && this.hasDefaultFeedback()) {\n this.addDefaultFeedback(componentState);\n }\n\n this.isSubmit = false;\n if (this.hasMaxSubmitCountAndUsedAllSubmits()) {\n this.isDisabled = true;\n }\n\n return new Promise((resolve, reject) => {\n this.createComponentStateAdditionalProcessing(\n { resolve: resolve, reject: reject },\n componentState,\n action\n );\n });\n }\n\n /**\n * Set the graph data into the table data\n * @param componentState the component state to get the graph data from\n * @param params (optional) the params to specify what columns\n * and rows to overwrite in the table data\n */\n setGraphDataIntoTableData(componentState, params) {\n let trialIndex = 0;\n let seriesIndex = 0;\n\n if (params != null) {\n if (params.trialIndex != null) {\n trialIndex = params.trialIndex;\n }\n\n if (params.seriesIndex != null) {\n seriesIndex = params.seriesIndex;\n }\n\n if (params.showDataAtMouseX) {\n this.showDataAtMouseX(componentState, params);\n return;\n }\n }\n\n if (componentState != null && componentState.studentData != null) {\n const studentData = componentState.studentData;\n const studentDataVersion = studentData.version;\n\n if (studentDataVersion == null || studentDataVersion == 1) {\n // this is the old student data format that can't contain trials\n\n const series = studentData.series;\n if (series != null && series.length > 0) {\n const tempSeries = series[seriesIndex];\n this.setSeriesIntoTable(tempSeries);\n }\n } else {\n // this is the new student data format that can contain trials\n\n const trials = studentData.trials;\n if (trials != null) {\n const trial = trials[trialIndex];\n if (trial != null) {\n const multipleSeries = trial.series;\n if (multipleSeries != null) {\n const series = multipleSeries[seriesIndex];\n this.setSeriesIntoTable(series);\n }\n }\n }\n }\n }\n }\n\n /**\n * Show the data at x for all the series.\n * @param componentState The Graph component state.\n * @param params The connected component params.\n */\n showDataAtMouseX(componentState, params) {\n let studentData = componentState.studentData;\n let mouseOverPoints = studentData.mouseOverPoints;\n let x = null;\n\n // get the x value from the latest mouse over point\n if (mouseOverPoints != null && mouseOverPoints.length > 0) {\n let latestMouseOverPoint = mouseOverPoints[mouseOverPoints.length - 1];\n x = Math.round(latestMouseOverPoint[0]);\n }\n let xUnits = studentData.xAxis.units;\n let yUnits = studentData.yAxis.units;\n let xAxisTitle = studentData.xAxis.title.text;\n let yAxisTitle = studentData.yAxis.title.text;\n this.tableData = [];\n this.tableData.push(this.createTableRow(['Series Name', xAxisTitle, yAxisTitle]));\n for (let trial of studentData.trials) {\n if (trial.show) {\n let multipleSeries = trial.series;\n for (let singleSeries of multipleSeries) {\n if (singleSeries.show !== false) {\n let closestDataPoint = this.getClosestDataPoint(singleSeries.data, x);\n if (closestDataPoint != null) {\n this.tableData.push(\n this.createTableRow([\n singleSeries.name,\n Math.round(this.getXFromDataPoint(closestDataPoint)) + ' ' + xUnits,\n Math.round(this.getYFromDataPoint(closestDataPoint)) + ' ' + yUnits\n ])\n );\n }\n }\n }\n }\n }\n }\n\n /**\n * Create a cell object.\n * @param text The text to show in the cell.\n * @param editable Whether the student is allowed to edit the contents in the\n * cell.\n * @param size The with of the cell.\n * @return An object.\n */\n createTableCell(text = '', editable = false, size = null) {\n return { text: text, editable: editable, size: size };\n }\n\n /**\n * Create a row.\n * @param columns An array of strings or objects.\n * @return An array of objects.\n */\n createTableRow(columns: any[]): any[] {\n let row = [];\n for (let column of columns) {\n if (column.constructor.name == 'String') {\n row.push(this.createTableCell(column));\n } else if (column.constructor.name == 'Object') {\n row.push(this.createTableCell(column.text, column.editable, column.size));\n }\n }\n return row;\n }\n\n /**\n * Get the data point that has the closest x value to the given argument x.\n * @param dataPoints An array of data points. Each data point can be an object or an array.\n * @param x The argument x.\n * @return A data point which can be an object or array.\n */\n private getClosestDataPoint(dataPoints, x): any {\n let closestDataPoint = null;\n let minNumericalXDifference = Infinity;\n for (let dataPoint of dataPoints) {\n let dataPointX = this.getXFromDataPoint(dataPoint);\n let numericalDifference = Math.abs(x - dataPointX);\n if (numericalDifference < minNumericalXDifference) {\n // we have found a new data point that is closer to x\n closestDataPoint = dataPoint;\n minNumericalXDifference = numericalDifference;\n }\n }\n return closestDataPoint;\n }\n\n /**\n * Get the x value from the data point.\n * @param dataPoint An object or array.\n * @return The x value of the data point.\n */\n getXFromDataPoint(dataPoint: any): number {\n if (dataPoint.constructor.name == 'Object') {\n return dataPoint.x;\n } else if (dataPoint.constructor.name == 'Array') {\n return dataPoint[0];\n }\n }\n\n /**\n * Get the y value from the data point.\n * @param dataPoint An object or array.\n * @return The y value of the data point.\n */\n getYFromDataPoint(dataPoint: any): number {\n if (dataPoint.constructor.name == 'Object') {\n return dataPoint.y;\n } else if (dataPoint.constructor.name == 'Array') {\n return dataPoint[1];\n }\n }\n\n /**\n * Set the series data into the table\n * @param series an object that contains the data for a single series\n * @param params the parameters for where to place the points in the table\n */\n setSeriesIntoTable(series, params = null) {\n /*\n * the default is set to not skip the first row and for the\n * x column to be the first column and the y column to be the\n * second column\n */\n let skipFirstRow = true;\n let xColumn = 0;\n let yColumn = 1;\n\n if (params != null) {\n if (params.skipFirstRow != null) {\n // determine whether to skip the first row\n skipFirstRow = params.skipFirstRow;\n }\n\n if (params.xColumn != null) {\n // get the x column\n xColumn = params.xColumn;\n }\n\n if (params.yColumn != null) {\n // get the y column\n yColumn = params.yColumn;\n }\n }\n\n if (series != null) {\n const tableDataRows = this.tableData;\n\n // get the data from the series\n const data = series.data;\n\n if (data != null) {\n // our counter for traversing the data rows\n let dataRowCounter = 0;\n\n // loop through all the table data rows\n for (let r = 0; r < tableDataRows.length; r++) {\n if (skipFirstRow && r === 0) {\n // skip the first table data row\n continue;\n }\n\n let x = '';\n let y = '';\n\n // get the data row\n const dataRow = data[dataRowCounter];\n\n if (dataRow != null) {\n // get the x and y values from the data row\n x = dataRow[0];\n y = dataRow[1];\n }\n\n // set the x and y values into the table data\n this.setTableDataCellValue(xColumn, r, null, x);\n this.setTableDataCellValue(yColumn, r, null, y);\n\n // increment the data row counter\n dataRowCounter++;\n }\n }\n }\n }\n\n /**\n * Set the table data cell value\n * @param x the x index (0 indexed)\n * @param y the y index (0 indexed)\n * @param value the value to set in the cell\n */\n setTableDataCellValue(x, y, table, value): void {\n let tableDataRows = table;\n if (table == null) {\n tableDataRows = this.tableData;\n }\n if (tableDataRows != null) {\n const row = tableDataRows[y];\n if (row != null) {\n const cell = row[x];\n if (cell != null) {\n cell.text = value;\n }\n }\n }\n }\n\n /**\n * Get the value of a cell in the table\n * @param x the x coordinate\n * @param y the y coordinate\n * @param table (optional) table data to get the value from. this is used\n * when we want to look up the value in the default authored table\n * @returns the cell value (text or a number)\n */\n getTableDataCellValue(x, y, table = null): string | number {\n let cellValue = null;\n if (table == null) {\n table = this.tableData;\n }\n if (table != null) {\n const row = table[y];\n if (row != null) {\n const cell = row[x];\n if (cell != null) {\n cellValue = cell.text;\n }\n }\n }\n return cellValue;\n }\n\n protected snipTable(): void {\n const tableElement = this.getElementById(\n this.tableService.getTableId(this.nodeId, this.componentId),\n true\n );\n html2canvas(tableElement).then((canvas: any) => {\n const pngFile = convertToPNGFile(canvas);\n this.notebookService.addNote(this.studentDataService.getCurrentNodeId(), pngFile);\n });\n }\n\n handleConnectedComponents() {\n let isStudentDataChanged = false;\n for (const connectedComponentAndComponentState of this.getConnectedComponentsAndTheirComponentStates()) {\n const connectedComponent = connectedComponentAndComponentState.connectedComponent;\n const componentState = connectedComponentAndComponentState.componentState;\n if (componentState != null) {\n switch (componentState.componentType) {\n case 'Table':\n this.importTableComponentState(componentState, connectedComponent);\n isStudentDataChanged = true;\n break;\n case 'Graph':\n this.tableData = copy(this.componentContent.tableData);\n this.setGraphDataIntoTableData(componentState, connectedComponent);\n isStudentDataChanged = true;\n break;\n case 'Embedded':\n this.setStudentWork(componentState);\n isStudentDataChanged = true;\n break;\n }\n }\n }\n if (isStudentDataChanged) {\n this.setTabulatorData();\n this.studentDataChanged();\n }\n }\n\n private importTableComponentState(componentState: any, connectedComponent: any): void {\n if (connectedComponent.type === 'showWork') {\n this.tableData = componentState.studentData.tableData;\n this.isDisabled = true;\n } else {\n if (connectedComponent.action === 'append') {\n this.appendComponentState(componentState, connectedComponent);\n } else {\n this.mergeComponentState(componentState);\n }\n }\n }\n\n getConnectedComponentsAndTheirComponentStates(): any[] {\n const connectedComponentsAndTheirComponentStates = [];\n for (const connectedComponent of this.componentContent.connectedComponents) {\n const componentState = this.studentDataService.getLatestComponentStateByNodeIdAndComponentId(\n connectedComponent.nodeId,\n connectedComponent.componentId\n );\n const connectedComponentsAndComponentState = {\n connectedComponent: connectedComponent,\n componentState: copy(componentState)\n };\n connectedComponentsAndTheirComponentStates.push(connectedComponentsAndComponentState);\n }\n return connectedComponentsAndTheirComponentStates;\n }\n\n private mergeComponentState(componentState: any): void {\n if (this.tableData == null) {\n this.tableData = copy(this.componentContent.tableData);\n }\n if (this.componentContent.numRows === 0 || this.componentContent.numColumns === 0) {\n this.tableData = componentState.studentData.tableData;\n } else {\n this.mergeTableData(componentState.studentData.tableData);\n }\n }\n\n mergeTableData(tableData: any): void {\n for (let y = 0; y < this.componentContent.numRows; y++) {\n for (let x = 0; x < this.componentContent.numColumns; x++) {\n const cellValue = this.getTableDataCellValue(x, y, tableData);\n if (cellValue != null && cellValue !== '') {\n this.setTableDataCellValue(x, y, this.tableData, cellValue);\n }\n }\n }\n }\n\n private appendComponentState(componentState, connectedComponent): void {\n if (this.tableData == null) {\n this.tableData = copy(this.componentContent.tableData);\n }\n let tableData = componentState.studentData.tableData;\n if (connectedComponent.excludeFirstRow) {\n tableData = tableData.slice(1);\n }\n this.tableData = this.tableData.concat(tableData);\n }\n\n studentDataChanged() {\n if (this.isDataExplorerEnabled) {\n this.updateColumnNames();\n this.updateColumnsUsed();\n this.updateDataExplorerSeriesNames();\n }\n this.setIsDirtyAndBroadcast();\n this.setIsSubmitDirtyAndBroadcast();\n this.clearLatestComponentState();\n const action = 'change';\n this.createComponentStateAndBroadcast(action);\n }\n\n updateColumnNames(): void {\n const firstRow = this.tableData[0];\n this.columnNames = firstRow.map((cell: any): string => cell.text);\n }\n\n private updateColumnsUsed(): void {\n const firstRow = this.tableData[0];\n for (let c = 0; c < firstRow.length; c++) {\n this.columnIndexToIsUsed.set(c, this.isColumnUsed(c));\n }\n }\n\n private isColumnUsed(columnIndex: number): boolean {\n return (\n columnIndex === this.dataExplorerXColumn ||\n this.dataExplorerSeries.some((series) => {\n return series.yColumn === columnIndex;\n })\n );\n }\n\n updateDataExplorerSeriesNames(): void {\n for (const singleSeries of this.dataExplorerSeries) {\n if (singleSeries.yColumn != null) {\n singleSeries.name = this.columnNames[singleSeries.yColumn];\n }\n }\n }\n\n dataExplorerXColumnChanged(): void {\n for (const singleSeries of this.dataExplorerSeries) {\n singleSeries.xColumn = this.dataExplorerXColumn;\n }\n this.updateDataExplorerXAxisLabel(this.dataExplorerXColumn);\n this.studentDataChanged();\n }\n\n dataExplorerYColumnChanged(index: number): void {\n const yColumn = this.dataExplorerSeries[index].yColumn;\n this.dataExplorerSeries[index].name = this.columnNames[yColumn];\n if (!this.isDataExplorerOneYAxis()) {\n this.setDataExplorerSeriesYAxis(index);\n }\n this.updateDataExplorerYAxisLabel(index, yColumn);\n this.studentDataChanged();\n }\n\n private isDataExplorerOneYAxis(): boolean {\n return (\n this.componentContent.numDataExplorerYAxis == null ||\n this.componentContent.numDataExplorerYAxis === 1\n );\n }\n\n setDataExplorerSeriesYAxis(index) {\n if (\n this.dataExplorerSeriesParams != null &&\n this.dataExplorerSeriesParams[index] != null &&\n this.dataExplorerSeriesParams[index].yAxis != null\n ) {\n this.dataExplorerSeries[index].yAxis = this.dataExplorerSeriesParams[index].yAxis;\n }\n }\n\n createDataExplorerSeries() {\n this.dataExplorerSeries = [];\n for (let index = 0; index < this.numDataExplorerSeries; index++) {\n const dataExplorerSeries = {\n xColumn: null,\n yColumn: null,\n yAxis: this.getYAxisForDataExplorerSeries(index)\n };\n this.dataExplorerSeries.push(dataExplorerSeries);\n }\n }\n\n getYAxisForDataExplorerSeries(index) {\n if (this.dataExplorerSeriesParams != null) {\n return this.dataExplorerSeriesParams[index].yAxis;\n }\n return null;\n }\n\n repopulateDataExplorerData(componentState) {\n this.dataExplorerGraphType = componentState.studentData.dataExplorerGraphType;\n this.dataExplorerXAxisLabel = componentState.studentData.dataExplorerXAxisLabel;\n this.dataExplorerYAxisLabel = componentState.studentData.dataExplorerYAxisLabel;\n this.dataExplorerYAxisLabels = componentState.studentData.dataExplorerYAxisLabels;\n if (componentState.studentData.dataExplorerSeries != null) {\n this.dataExplorerSeries = copy(componentState.studentData.dataExplorerSeries);\n this.dataExplorerXColumn = this.dataExplorerSeries[0].xColumn;\n }\n }\n\n processConnectedComponentState(componentState: any): void {\n const connectedComponent = this.component.getConnectedComponent(\n componentState.nodeId,\n componentState.componentId\n );\n const componentType = this.projectService.getComponentType(\n connectedComponent.nodeId,\n connectedComponent.componentId\n );\n const componentStateCopy = copy(componentState);\n if (componentType === 'Table') {\n this.setStudentWork(componentStateCopy);\n this.isDirty = true;\n } else if (componentType === 'Graph') {\n this.setGraphDataIntoTableData(componentStateCopy, connectedComponent);\n this.isDirty = true;\n } else if (componentType === 'Embedded') {\n this.setStudentWork(componentStateCopy);\n this.isDirty = true;\n this.studentDataService.broadcastComponentSaveTriggered({\n nodeId: this.nodeId,\n componentId: this.componentId\n });\n }\n this.setTabulatorData();\n if (componentType === 'Embedded') {\n this.changeDetectorRef.detectChanges();\n }\n }\n\n attachStudentAsset(studentAsset: any): void {\n // TODO: make sure the asset is a csv file then populate the csv data into the table\n }\n\n private setTabulatorData(): void {\n this.tabulatorData = this.tabulatorDataService.convertTableDataToTabulator(\n this.tableData,\n this.componentContent.globalCellSize\n );\n }\n\n tabulatorCellChanged(cell: Tabulator.CellComponent): void {\n const columnIndex = parseInt(cell.getColumn().getField());\n const rowIndex = cell.getRow().getIndex() + 1;\n this.tableData[rowIndex][columnIndex].text = cell.getValue();\n this.studentDataChanged();\n }\n\n tabulatorRowSelectionChanged(rows: Tabulator.RowComponent[]): void {\n this.selectedRowIndices = [];\n for (const row of rows) {\n this.selectedRowIndices.push(row.getIndex());\n }\n this.studentDataChanged();\n }\n\n tabulatorRowSortChanged(sortData: any): void {\n this.sortOrder = sortData.sortOrder;\n this.tabulatorSorters = sortData.tabSorters;\n this.studentDataChanged();\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": ".tools { margin-bottom: 8px; }\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "changeDetectorRef", + "type": "ChangeDetectorRef", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentService", + "type": "ComponentService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "notebookService", + "type": "NotebookService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentAssetService", + "type": "StudentAssetService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentDataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "tableService", + "type": "TableService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "tabulatorDataService", + "type": "TabulatorDataService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 76, + "jsdoctags": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "changeDetectorRef", + "type": "ChangeDetectorRef", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentService", + "type": "ComponentService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeService", + "type": "NodeService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "notebookService", + "type": "NotebookService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentAssetService", + "type": "StudentAssetService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentDataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "tableService", + "type": "TableService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "tabulatorDataService", + "type": "TabulatorDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "ComponentStudent" + ], + "templateData": "\n
    \n @if (resetTableButtonVisible) {\n \n }\n @if (isAddToNotebookEnabled()) {\n \n }\n @if (isStudentAttachmentEnabled) {\n \n }\n
    \n\n@if (isDataExplorerEnabled) {\n
    \n
    \n @if (componentContent.dataExplorerGraphTypes.length > 1) {\n \n Graph Type\n \n @for (dataExplorerGraphType of dataExplorerGraphTypes; track dataExplorerGraphType) {\n \n {{ dataExplorerGraphType.name }}\n \n }\n \n \n }\n
    \n

    Choose the table data you want to graph:

    \n
    \n \n X Data\n \n (None)\n @for (columnName of columnNames; track columnName; let columnIndex = $index) {\n @if (!columnIndexToIsUsed.get(columnIndex) || columnIndex === dataExplorerXColumn) {\n \n {{ columnName }}\n \n }\n }\n \n \n @for (\n singleDataExplorerSeries of dataExplorerSeries;\n track singleDataExplorerSeries;\n let seriesIndex = $index\n ) {\n \n Y Data {{ dataExplorerSeries.length > 1 ? seriesIndex + 1 : '' }}\n 0 ? seriesIndex + 1 : '')]\n \"\n >\n (None)\n @for (columnName of columnNames; track columnName; let columnIndex = $index) {\n @if (\n !columnIndexToIsUsed.get(columnIndex) ||\n columnIndex === singleDataExplorerSeries.yColumn\n ) {\n \n {{ columnName }}\n \n }\n }\n \n \n }\n
    \n @if (componentContent.isDataExplorerAxisLabelsEditable) {\n
    \n \n X Axis Label\n \n \n @if (componentContent.numDataExplorerYAxis === 1) {\n \n Y Axis Label\n \n \n }\n @if (componentContent.numDataExplorerYAxis > 1) {\n
    \n @for (\n x of [].constructor(dataExplorerYAxisLabels.length);\n track x;\n let yAxisIndex = $index\n ) {\n \n Y Axis {{ yAxisIndex + 1 }} Label\n \n \n }\n
    \n }\n
    \n }\n
    \n}\n@if (isSaveOrSubmitButtonVisible) {\n \n}\n@if (mode === 'student') {\n \n}\n" + }, + { + "name": "TabulatorTableComponent", + "id": "component-TabulatorTableComponent-a33b0cb9f1cfadcaf0154c4cf167a9cae7d7c47fb4dbcf81520a554d777a70f153f2c00d874e3120f894996e784fffa1f78043a0326e66f32b052849a6d85d7b", + "file": "src/assets/wise5/components/table/tabulator-table/tabulator-table.component.ts", + "encapsulation": [ + "ViewEncapsulation.None" + ], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "tabulator-table", + "styleUrls": [], + "styles": [], + "template": "
    ", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "disabled", + "deprecated": false, + "deprecationMessage": "", + "line": 36, + "type": "boolean", + "decorators": [] + }, + { + "name": "editableCells", + "deprecated": false, + "deprecationMessage": "", + "line": 37, + "type": "any", + "decorators": [] + }, + { + "name": "enableRowSelection", + "deprecated": false, + "deprecationMessage": "", + "line": 38, + "type": "boolean", + "decorators": [] + }, + { + "name": "selectedRowIndices", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "line": 42, + "type": "number[]", + "decorators": [] + }, + { + "name": "tabColumns", + "deprecated": false, + "deprecationMessage": "", + "line": 43, + "type": "TabulatorColumn[]", + "decorators": [] + }, + { + "name": "tabData", + "deprecated": false, + "deprecationMessage": "", + "line": 45, + "type": "any[]", + "decorators": [] + }, + { + "name": "tabOptions", + "deprecated": false, + "deprecationMessage": "", + "line": 46, + "type": "any", + "decorators": [] + }, + { + "name": "tabSorters", + "deprecated": false, + "deprecationMessage": "", + "line": 47, + "type": "any", + "decorators": [] + } + ], + "outputsClass": [ + { + "name": "cellChanged", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 35, + "type": "EventEmitter" + }, + { + "name": "ready", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 39, + "type": "EventEmitter" + }, + { + "name": "rowSelectionChanged", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 40, + "type": "EventEmitter" + }, + { + "name": "rowSortChanged", + "defaultValue": "new EventEmitter<{ sortOrder: number[]; tabSorters: [] }>()", + "deprecated": false, + "deprecationMessage": "", + "line": 41, + "type": "EventEmitter" + } + ], + "propertiesClass": [ + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 49, + "modifierKind": [ + 123 + ] + }, + { + "name": "table", + "deprecated": false, + "deprecationMessage": "", + "type": "Tabulator", + "indexKey": "", + "optional": false, + "description": "", + "line": 50, + "modifierKind": [ + 123 + ] + }, + { + "name": "tableContainer", + "deprecated": false, + "deprecationMessage": "", + "type": "ElementRef", + "indexKey": "", + "optional": false, + "description": "", + "line": 44, + "decorators": [ + { + "name": "ViewChild", + "stringifiedArguments": "'table', {static: false}" + } + ], + "modifierKind": [ + 171 + ] + }, + { + "name": "tableEl", + "defaultValue": "document.createElement('div')", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 51, + "modifierKind": [ + 123 + ] + }, + { + "name": "viewInit$", + "defaultValue": "new ReplaySubject()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 52, + "modifierKind": [ + 123 + ] + } + ], + "methodsClass": [ + { + "name": "cellFormatter", + "args": [ + { + "name": "cell", + "type": "Tabulator.CellComponent", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 120, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "cell", + "type": "Tabulator.CellComponent", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "initializeRowSelection", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 127, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "isCellEditable", + "args": [ + { + "name": "cell", + "type": "Tabulator.CellComponent", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 113, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "cell", + "type": "Tabulator.CellComponent", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngAfterViewInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 67, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnChanges", + "args": [ + { + "name": "changes", + "type": "SimpleChanges", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 88, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "changes", + "type": "SimpleChanges", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 92, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "processChanges", + "args": [ + { + "name": "changes", + "type": "SimpleChanges", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 142, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "changes", + "type": "SimpleChanges", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setupColumns", + "args": [ + { + "name": "columns", + "type": "TabulatorColumn[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "TabulatorColumn[]", + "typeParameters": [], + "line": 96, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "columns", + "type": "TabulatorColumn[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setupRowSelection", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 151, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "setupSorting", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 160, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "sortersToJson", + "args": [ + { + "name": "sorters", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 173, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "sorters", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import {\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { ReplaySubject, Subscription } from 'rxjs';\nimport {\n Tabulator,\n EditModule,\n FormatModule,\n FrozenColumnsModule,\n InteractionModule,\n KeybindingsModule,\n ReactiveDataModule,\n SelectRowModule,\n SortModule\n} from 'tabulator-tables';\nimport { copy } from '../../../common/object/object';\nimport { TabulatorColumn } from '../TabulatorData';\n\n@Component({\n encapsulation: ViewEncapsulation.None,\n selector: 'tabulator-table',\n styleUrl: './tabulator-table.component.scss',\n template: `
    `\n})\nexport class TabulatorTableComponent implements OnChanges, AfterViewInit {\n @Output() cellChanged = new EventEmitter();\n @Input() disabled: boolean;\n @Input() editableCells: any;\n @Input() enableRowSelection: boolean;\n @Output() ready = new EventEmitter();\n @Output() rowSelectionChanged = new EventEmitter();\n @Output() rowSortChanged = new EventEmitter<{ sortOrder: number[]; tabSorters: [] }>();\n @Input() selectedRowIndices: number[] = [];\n @Input() tabColumns: TabulatorColumn[]; // see http://tabulator.info/docs/5.3/columns\n @ViewChild('table', { static: false }) tableContainer: ElementRef;\n @Input() tabData: any[]; // see http://tabulator.info/docs/5.3/data\n @Input() tabOptions: any; // see http://tabulator.info/docs/5.3/options\n @Input() tabSorters: any; // see https://tabulator.info/docs/5.4/sort#intial\n\n private subscriptions: Subscription = new Subscription();\n private table: Tabulator;\n private tableEl = document.createElement('div');\n private viewInit$ = new ReplaySubject();\n\n constructor() {\n Tabulator.registerModule([\n EditModule,\n FormatModule,\n FrozenColumnsModule,\n InteractionModule,\n KeybindingsModule,\n ReactiveDataModule,\n SelectRowModule,\n SortModule\n ]);\n }\n\n ngAfterViewInit(): void {\n this.tabOptions.columns = this.setupColumns(this.tabColumns);\n this.initializeRowSelection();\n this.tabOptions.data = this.tabData;\n this.tabOptions.initialSort = copy(this.tabSorters);\n this.table = new Tabulator(this.tableEl, this.tabOptions);\n this.table.on('cellEdited', (cell) => {\n this.cellChanged.emit(cell);\n });\n this.table.on('tableBuilt', () => {\n if (this.enableRowSelection) {\n this.setupRowSelection();\n }\n this.setupSorting();\n this.table.setSort();\n this.ready.emit();\n });\n this.tableContainer.nativeElement.appendChild(this.tableEl);\n this.viewInit$.next();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n this.subscriptions.add(this.viewInit$.subscribe(() => this.processChanges(changes)));\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n private setupColumns(columns: TabulatorColumn[]): TabulatorColumn[] {\n columns.forEach((column: TabulatorColumn) => {\n column.editor = 'input';\n column.editable = (cell) => {\n return this.disabled ? false : this.isCellEditable(cell);\n };\n column.formatter = (cell) => {\n return this.cellFormatter(cell);\n };\n column.sorter = 'alphanum';\n column.sorterParams = {\n alignEmptyValues: 'bottom'\n };\n });\n return columns;\n }\n\n private isCellEditable(cell: Tabulator.CellComponent): boolean {\n const rowIndex = cell.getRow().getIndex() + 1;\n const field = cell.getColumn().getField();\n const row = this.editableCells[rowIndex];\n return row && row.includes(field);\n }\n\n private cellFormatter(cell: Tabulator.CellComponent): any {\n if (this.isCellEditable(cell)) {\n cell.getElement().classList.add('tabulator-cell-editable');\n }\n return cell.getValue();\n }\n\n private initializeRowSelection(): void {\n if (this.enableRowSelection && !this.disabled) {\n this.tabOptions.columns.unshift({\n formatter: 'rowSelection',\n titleFormatter: 'rowSelection',\n hozAlign: 'center',\n headerSort: false,\n frozen: true,\n cellClick: (e, cell) => {\n cell.getRow().toggleSelect();\n }\n });\n }\n }\n\n private processChanges(changes: SimpleChanges): void {\n if (changes['tabColumns'] && !changes['tabColumns'].isFirstChange()) {\n this.table.setColumns(this.setupColumns(this.tabColumns));\n }\n if (changes['tabData'] && !changes['tabData'].isFirstChange()) {\n this.table.setData(this.tabData);\n }\n }\n\n private setupRowSelection(): void {\n if (this.selectedRowIndices.length > 0) {\n this.table.selectRow(this.selectedRowIndices);\n }\n this.table.on('rowSelectionChanged', (data, rows) => {\n this.rowSelectionChanged.emit(rows);\n });\n }\n\n private setupSorting(): void {\n this.table.on('dataSorted', (sorters, rows) => {\n const prevRowIndices: number[] = [];\n for (const row of rows) {\n prevRowIndices.push(row.getIndex());\n }\n this.rowSortChanged.emit({\n sortOrder: prevRowIndices,\n tabSorters: this.sortersToJson(sorters)\n });\n });\n }\n\n private sortersToJson(sorters: any[]): any {\n const sortersJson = [];\n for (const sorter of sorters) {\n sortersJson.push({\n column: sorter.field,\n dir: sorter.dir,\n params: sorter.params\n });\n }\n return sortersJson;\n }\n}\n", + "styleUrl": "./tabulator-table.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [], + "line": 52 + }, + "extends": [], + "implements": [ + "OnChanges", + "AfterViewInit" + ] + }, + { + "name": "TagComponent", + "id": "component-TagComponent-b3a03c2ac4606c4ff4006b0cdaa7c4dcbc3bd17023fc540d656b46fc562a8893636cb048708c092a04983465e7413cd62b7acfcfe57375b94deaaa06c6e907a4", + "file": "src/app/teacher/tag/tag.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "tag", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./tag.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "allowRemove", + "deprecated": false, + "deprecationMessage": "", + "line": 15, + "type": "boolean", + "decorators": [] + }, + { + "name": "color", + "deprecated": false, + "deprecationMessage": "", + "line": 16, + "type": "string", + "decorators": [] + }, + { + "name": "text", + "deprecated": false, + "deprecationMessage": "", + "line": 18, + "type": "string", + "decorators": [] + } + ], + "outputsClass": [ + { + "name": "removeTagEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 17, + "type": "EventEmitter" + } + ], + "propertiesClass": [ + { + "name": "textColor", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "ngOnChanges", + "args": [ + { + "name": "changes", + "type": "SimpleChanges", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 23, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "changes", + "type": "SimpleChanges", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatDividerModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\nimport { ColorService } from '../../../assets/wise5/services/colorService';\nimport { CommonModule } from '@angular/common';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDividerModule } from '@angular/material/divider';\n\n@Component({\n imports: [CommonModule, MatButtonModule, MatDividerModule, MatIconModule],\n selector: 'tag',\n templateUrl: './tag.component.html',\n styleUrl: './tag.component.scss'\n})\nexport class TagComponent implements OnChanges {\n @Input() allowRemove: boolean;\n @Input() color: string;\n @Output() removeTagEvent: EventEmitter = new EventEmitter();\n @Input() text: string;\n protected textColor: string;\n\n constructor(private colorService: ColorService) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.color?.currentValue) {\n this.textColor = this.colorService.getContrastColor(this.color);\n }\n }\n}\n", + "styleUrl": "./tag.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "colorService", + "type": "ColorService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 19, + "jsdoctags": [ + { + "name": "colorService", + "type": "ColorService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnChanges" + ], + "templateData": "\n {{ text }}\n @if (allowRemove) {\n \n \n cancel\n \n }\n\n" + }, + { + "name": "TeacherComponent", + "id": "component-TeacherComponent-680c0620c4ad75aa3ea80ddd0eeffaae243040f6f3fc4106d4b9f5ecabdf8d2d0155396e97f61150a42cb74a2a2371ac1a7748ac2e7c227f82b12b66ca477de4", + "file": "src/app/teacher/teacher.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [ + "\n .teacher {\n height: 100%;\n }\n " + ], + "template": "
    \n \n
    \n", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [], + "methodsClass": [ + { + "name": "isTeacherApp", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 23, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "RouterModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { Router, RouterModule } from '@angular/router';\n\n@Component({\n imports: [CommonModule, RouterModule],\n styles: [\n `\n .teacher {\n height: 100%;\n }\n `\n ],\n template: `\n
    \n \n
    \n `\n})\nexport class TeacherComponent {\n constructor(private router: Router) {}\n\n protected isTeacherApp(): boolean {\n return this.router.url.includes('/teacher/edit') || this.router.url.includes('/teacher/manage');\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "\n .teacher {\n height: 100%;\n }\n \n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 20, + "jsdoctags": [ + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [] + }, + { + "name": "TeacherEditProfileComponent", + "id": "component-TeacherEditProfileComponent-3d1b45b42564b5437cbcad0b706d806dcfe48fa0bcc74da7ebb87e0d1d5bc87a2ac384ae2167eeed0d657e08098bfc40295416d4ed652d1e2ffd45ffd5308f5a", + "file": "src/app/teacher/account/edit-profile/edit-profile.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "teacher-edit-profile", + "styleUrls": [ + "../../../common/edit-profile/edit-profile.component.scss", + "./edit-profile.component.scss" + ], + "styles": [], + "templateUrl": [ + "./edit-profile.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "dialog", + "deprecated": false, + "deprecationMessage": "", + "type": "MatDialog", + "indexKey": "", + "optional": false, + "description": "", + "line": 72, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "EditProfileComponent" + } + }, + { + "name": "editProfileFormGroup", + "defaultValue": "this.fb.group({\n firstName: new FormControl({ value: '', disabled: true }, [Validators.required]),\n lastName: new FormControl({ value: '', disabled: true }, [Validators.required]),\n username: new FormControl({ value: '', disabled: true }, [Validators.required]),\n displayName: new FormControl('', [Validators.required]),\n email: new FormControl('', [Validators.required]),\n city: new FormControl('', [Validators.required]),\n state: new FormControl('', [Validators.required]),\n country: new FormControl('', [Validators.required]),\n schoolName: new FormControl('', [Validators.required]),\n schoolLevel: new FormControl('', [Validators.required]),\n language: new FormControl('', [Validators.required])\n })", + "deprecated": false, + "deprecationMessage": "", + "type": "FormGroup", + "indexKey": "", + "optional": false, + "description": "", + "line": 54 + }, + { + "name": "isSaving", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 51 + }, + { + "name": "languages", + "deprecated": false, + "deprecationMessage": "", + "type": "object[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 50 + }, + { + "name": "schoolLevels", + "defaultValue": "schoolLevels", + "deprecated": false, + "deprecationMessage": "", + "type": "SchoolLevel[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 49 + }, + { + "name": "snackBar", + "deprecated": false, + "deprecationMessage": "", + "type": "MatSnackBar", + "indexKey": "", + "optional": false, + "description": "", + "line": 73, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "EditProfileComponent" + } + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 52 + }, + { + "name": "user", + "deprecated": false, + "deprecationMessage": "", + "type": "Teacher", + "indexKey": "", + "optional": false, + "description": "", + "line": 48 + }, + { + "name": "changed", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "inheritance": { + "file": "EditProfileComponent" + } + } + ], + "methodsClass": [ + { + "name": "getControlFieldValue", + "args": [ + { + "name": "fieldName", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 165, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "fieldName", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getUser", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 78, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 118, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 106, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "saveChanges", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 122, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "setControlFieldValue", + "args": [ + { + "name": "name", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "value", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 102, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "name", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "value", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "handleUpdateProfileResponse", + "args": [ + { + "name": "response", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 17, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "response", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "EditProfileComponent" + } + }, + { + "name": "unlinkGoogleAccount", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 26, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "EditProfileComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "ReactiveFormsModule", + "type": "module" + }, + { + "name": "MatFormField" + }, + { + "name": "MatLabel" + }, + { + "name": "MatInput" + }, + { + "name": "MatError" + }, + { + "name": "MatHint" + }, + { + "name": "MatSelect" + }, + { + "name": "MatOption" + }, + { + "name": "MatButton" + }, + { + "name": "MatProgressBar" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport {\n FormControl,\n FormGroup,\n Validators,\n FormBuilder,\n FormsModule,\n ReactiveFormsModule\n} from '@angular/forms';\nimport { finalize } from 'rxjs/operators';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { UserService } from '../../../services/user.service';\nimport { Teacher } from '../../../domain/teacher';\nimport { TeacherService } from '../../teacher.service';\nimport { MatDialog } from '@angular/material/dialog';\nimport { Subscription } from 'rxjs';\nimport { SchoolLevel, schoolLevels } from '../../../domain/profile.constants';\nimport { EditProfileComponent } from '../../../common/edit-profile/edit-profile.component';\nimport { MatFormField, MatLabel, MatError, MatHint } from '@angular/material/form-field';\nimport { MatInput } from '@angular/material/input';\nimport { MatSelect } from '@angular/material/select';\nimport { MatOption } from '@angular/material/autocomplete';\nimport { MatButton } from '@angular/material/button';\nimport { MatProgressBar } from '@angular/material/progress-bar';\n\n@Component({\n imports: [\n FormsModule,\n ReactiveFormsModule,\n MatFormField,\n MatLabel,\n MatInput,\n MatError,\n MatHint,\n MatSelect,\n MatOption,\n MatButton,\n MatProgressBar\n ],\n selector: 'teacher-edit-profile',\n styleUrls: [\n '../../../common/edit-profile/edit-profile.component.scss',\n './edit-profile.component.scss'\n ],\n templateUrl: './edit-profile.component.html'\n})\nexport class TeacherEditProfileComponent extends EditProfileComponent {\n user: Teacher;\n schoolLevels: SchoolLevel[] = schoolLevels;\n languages: object[];\n isSaving: boolean = false;\n subscriptions: Subscription = new Subscription();\n\n editProfileFormGroup: FormGroup = this.fb.group({\n firstName: new FormControl({ value: '', disabled: true }, [Validators.required]),\n lastName: new FormControl({ value: '', disabled: true }, [Validators.required]),\n username: new FormControl({ value: '', disabled: true }, [Validators.required]),\n displayName: new FormControl('', [Validators.required]),\n email: new FormControl('', [Validators.required]),\n city: new FormControl('', [Validators.required]),\n state: new FormControl('', [Validators.required]),\n country: new FormControl('', [Validators.required]),\n schoolName: new FormControl('', [Validators.required]),\n schoolLevel: new FormControl('', [Validators.required]),\n language: new FormControl('', [Validators.required])\n });\n\n constructor(\n private fb: FormBuilder,\n private teacherService: TeacherService,\n private userService: UserService,\n public dialog: MatDialog,\n public snackBar: MatSnackBar\n ) {\n super(dialog, snackBar);\n }\n\n getUser() {\n this.subscriptions.add(\n this.userService.getUser().subscribe((user) => {\n this.user = user;\n this.setControlFieldValue('firstName', this.user.firstName);\n this.setControlFieldValue('lastName', this.user.lastName);\n this.setControlFieldValue('username', this.user.username);\n this.setControlFieldValue('displayName', this.user.displayName);\n this.setControlFieldValue('email', this.user.email);\n this.setControlFieldValue('city', this.user.city);\n this.setControlFieldValue('state', this.user.state);\n this.setControlFieldValue('country', this.user.country);\n this.setControlFieldValue('schoolName', this.user.schoolName);\n this.setControlFieldValue('schoolLevel', this.user.schoolLevel);\n this.setControlFieldValue('language', this.user.language);\n if (user.isGoogleUser) {\n this.editProfileFormGroup.controls['email'].disable();\n } else {\n this.editProfileFormGroup.controls['email'].enable();\n }\n })\n );\n }\n\n setControlFieldValue(name: string, value: string) {\n this.editProfileFormGroup.controls[name].setValue(value);\n }\n\n ngOnInit() {\n this.getUser();\n this.editProfileFormGroup.valueChanges.subscribe(() => {\n this.changed = true;\n });\n this.subscriptions.add(\n this.userService.getLanguages().subscribe((response) => {\n this.languages = response;\n })\n );\n }\n\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n }\n\n saveChanges() {\n this.isSaving = true;\n const displayName: string = this.getControlFieldValue('displayName');\n const email: string = this.getControlFieldValue('email');\n const city: string = this.getControlFieldValue('city');\n const state: string = this.getControlFieldValue('state');\n const country: string = this.getControlFieldValue('country');\n const schoolName: string = this.getControlFieldValue('schoolName');\n const schoolLevel: string = this.getControlFieldValue('schoolLevel');\n const language: string = this.getControlFieldValue('language');\n const username = this.user.username;\n this.teacherService\n .updateProfile(\n username,\n displayName,\n email,\n city,\n state,\n country,\n schoolName,\n schoolLevel,\n language\n )\n .pipe(\n finalize(() => {\n this.isSaving = false;\n })\n )\n .subscribe((response) => {\n this.handleUpdateProfileResponse(response);\n this.userService.updateTeacherUser(\n displayName,\n email,\n city,\n state,\n country,\n schoolName,\n schoolLevel,\n language\n );\n });\n }\n\n getControlFieldValue(fieldName) {\n return this.editProfileFormGroup.get(fieldName).value;\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": [ + { + "data": ".google-icon {\n height: 1.8em;\n width: auto;\n}\n\n.unlink {\n margin: 8px 0;\n}\n", + "styleUrl": "../../../common/edit-profile/edit-profile.component.scss" + }, + { + "data": "@reference \"tailwindcss\";\n\np {\n @apply w-full md:w-1/2 px-2;\n}\n\nmat-form-field {\n @apply w-full;\n}\n", + "styleUrl": "./edit-profile.component.scss" + } + ], + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "fb", + "type": "FormBuilder", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "teacherService", + "type": "TeacherService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "userService", + "type": "UserService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "snackBar", + "type": "MatSnackBar", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 66, + "jsdoctags": [ + { + "name": "fb", + "type": "FormBuilder", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "teacherService", + "type": "TeacherService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "userService", + "type": "UserService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "snackBar", + "type": "MatSnackBar", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "EditProfileComponent" + ], + "templateData": "
    \n
    \n

    \n \n First Name\n \n @if (editProfileFormGroup.controls['firstName'].hasError('required')) {\n First Name required\n }\n \n

    \n

    \n \n Last Name\n \n @if (editProfileFormGroup.controls['lastName'].hasError('required')) {\n Last Name required\n }\n \n

    \n

    \n \n Username\n \n @if (editProfileFormGroup.controls['username'].hasError('required')) {\n User Name required\n }\n \n

    \n

    \n \n Display Name\n \n This is the name your students will see.\n @if (editProfileFormGroup.controls['lastName'].hasError('required')) {\n Display Name required\n }\n \n

    \n

    \n \n Email\n \n @if (user.isGoogleUser) {\n If you want to change your email, unlink your Google account.\n }\n @if (editProfileFormGroup.controls['email'].hasError('required')) {\n Email required\n }\n \n

    \n

    \n \n City\n \n @if (editProfileFormGroup.controls['city'].hasError('required')) {\n City required\n }\n \n

    \n

    \n \n State\n \n @if (editProfileFormGroup.controls['state'].hasError('required')) {\n State required\n }\n \n

    \n

    \n \n Country\n \n @if (editProfileFormGroup.controls['country'].hasError('required')) {\n Country required\n }\n \n

    \n

    \n \n School Name\n \n @if (editProfileFormGroup.controls['schoolName'].hasError('required')) {\n School Name required\n }\n \n

    \n

    \n \n School Level\n \n @for (schoolLevel of schoolLevels; track schoolLevel) {\n \n {{ schoolLevel.label }}\n \n }\n \n @if (editProfileFormGroup.controls['schoolLevel'].hasError('required')) {\n School Level required\n }\n \n

    \n

    \n \n Language\n \n @for (language of languages; track language) {\n \n {{ language.language }}\n \n }\n \n Help us translate WISE! Visit\n https://crowdin.com/project/wise.\n @if (editProfileFormGroup.controls['language'].hasError('required')) {\n Language required \n }\n \n

    \n
    \n \n \n @if (isSaving) {\n \n }\n Save Changes\n \n @if (user.isGoogleUser) {\n
    \n
    \n \n This profile is linked to a Google account.\n
    \n \n
    \n }\n \n\n" + }, + { + "name": "TeacherFaqComponent", + "id": "component-TeacherFaqComponent-255fd696107319aa986df6887d5e660c6ae93451e49b64b6083653979286378bba1782dc28b5d18df8e830f82336ae3abaf1221f46028b97b0c97ac956f7a299", + "file": "src/app/help/faq/teacher-faq/teacher-faq.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./teacher-faq.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "contextPath", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 7, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "FaqComponent" + } + } + ], + "methodsClass": [ + { + "name": "ngAfterViewInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 20, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "FaqComponent" + } + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 18, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "FaqComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CallToActionComponent", + "type": "component" + }, + { + "name": "MatDividerModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "RouterModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { FaqComponent } from '../faq.component';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatIconModule } from '@angular/material/icon';\nimport { CallToActionComponent } from '../../../modules/shared/call-to-action/call-to-action.component';\nimport { RouterModule } from '@angular/router';\n\n@Component({\n imports: [CallToActionComponent, MatDividerModule, MatIconModule, RouterModule],\n templateUrl: './teacher-faq.component.html'\n})\nexport class TeacherFaqComponent extends FaqComponent {}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [ + "FaqComponent" + ], + "templateData": "
    \n

    \n schoolTeacher Frequently Asked Questions\n

    \n \n

    Table of Contents

    \n
    \n \n

    General Questions

    \n

    How do I create an account?

    \n
      \n
    1. Go to the Register page.
    2. \n
    3. Click on \"Teacher\".
    4. \n
    5. Choose to sign up with your email or with your Google Account.
    6. \n
    7. Fill out the form and submit it.
    8. \n
    9. \n If you created an account using your email, you will be given a username that you will need to\n remember. Your username will be your first name and your last name with no space inbetween.\n There may be a number added at the end of your username if someone has the same name as you.\n
    10. \n
    \n

    How do I use a unit with my class?

    \n
      \n
    1. Sign in to WISE with your teacher account.
    2. \n
    3. Click the \"Unit Library\" tab.
    4. \n
    5. Find a project that you would like to use with your class.
    6. \n
    7. Click on the project to open the information for the project.
    8. \n
    9. Click the \"Use With Class\" button.
    10. \n
    11. Choose the periods you will use the project in.
    12. \n
    13. \n Choose the number of students per team. Choosing 1-3 will allow students to work together in a\n team.\n
    14. \n
    15. \n Choose the start date. Students will not be able to use the project until this date.\n
    16. \n
    17. Click \"Create Run\".
    18. \n
    19. The run will be created and added to your Teacher Home.
    20. \n
    21. \n Copy the \"Access Code\" for the new run and write it down somewhere like on the white board.\n Students will need to use this access code to work on the run you created.\n
    22. \n
    \n \n

    Student Management

    \n

    Should I register my students for WISE or have them do it themselves?

    \n

    \n WISE makes student registration simple and intuitive -- direct your students to the register\n page by having them go to the WISE home page and clicking the \"Register\" link at the upper\n right. They should be able to register in 10 minutes or less. However, you can also opt to\n pre-register all of your students and provide them with a copy of their username/password on\n their first day in the project run.\n

    \n
      \n
    • \n Once a student has created a WISE account they should never need to create another one.\n
    • \n
    • \n Some teachers that pre-register prefer to give all students the same initial password, to\n decrease problems with students signing in. This is ok, but for security purposes, we advise\n that you have the students change their passwords once they log in.\n
    • \n
    \n

    A student has forgotten his/her username or password. What should I do?

    \n
      \n
    • \n First, we recommend always having students WRITE DOWN their username/password when they first\n register.\n
    • \n
    • \n Second, encourage the students to solve the problem themselves. Tell them to go to the WISE\n home page, click the Lost username/password link, and click the Student button. If the student\n can answer their security question (created at registration) they can change their password.\n
    • \n
    • \n Third, if the student can't solve the problem directly, you can change their password for them\n using the instructions below.\n
    • \n
    \n

    How do I change a student's password?

    \n
      \n
    1. Sign into WISE with your teacher account.
    2. \n
    3. Find the run in your Teacher Home Page.
    4. \n
    5. Click the \"Teacher Tools\" button on the run.
    6. \n
    7. Click on the \"Manage Students\" icon on the left side bar.
    8. \n
    9. Find the period the student is in.
    10. \n
    11. Find the student and click \"Change Password\".
    12. \n
    13. \n Alternatively, you can change the password for ALL students in the current period (the new\n password will be applied to all the students in the period).\n
    14. \n
    \n

    How do I change a student team after they've started a project run?

    \n
      \n
    1. Sign into WISE with your teacher account.
    2. \n
    3. Find the run in your Teacher Home Page.
    4. \n
    5. Click the \"Teacher Tools\" button on the run.
    6. \n
    7. Click on the \"Manage Students\" icon on the left side bar.
    8. \n
    9. Find the period the student is in.
    10. \n
    11. \n Drag-and-drop student names to move them from one team to another. Make sure to save your\n changes before leaving this window.\n
    12. \n
    13. \n If you want to move students into a brand new team, click New Team, then drag 1 or more\n students into the new team. Save your changes.\n
    14. \n
    15. \n Warning 1:\n If you move Student A into an established team, student A loses all of their current work\n and inherits the current work of the established team.\n
    16. \n
    17. \n Warning 2:\n If you move Student A into a newly created (blank) team, student A will lose all of their\n work.\n
    18. \n
    \n

    How do I change the period for a student?

    \n
      \n
    1. Sign into WISE with your teacher account.
    2. \n
    3. Find the run in your Teacher Home Page.
    4. \n
    5. Click the \"Teacher Tools\" button on the run.
    6. \n
    7. Click on the \"Manage Students\" icon on the left side bar.
    8. \n
    9. Find the period the student is in.
    10. \n
    11. Find the student.
    12. \n
    13. Click the \"Period\" link.
    14. \n
    15. \n A popup will show up that will allow you to choose a different period for the student.\n
    16. \n
    17. Choose a different period.
    18. \n
    19. Click \"Save Changes\".
    20. \n
    21. \n Warning:\n If you move a student to a different period, they will lose all of their work.\n
    22. \n
    \n

    \n I do not remember my teacher access code that students need to create their account for my new\n students.\n

    \n
      \n
    • Sign into WISE with your teacher account.
    • \n
    • Find the run in your Teacher Home Page.
    • \n
    • The Access Code will be displayed below the run title.
    • \n
    \n \n

    Project Management

    \n

    When should I set up my project run?

    \n
      \n
    • \n You need to set up your project run anytime before the students can start working on the\n project. They will need the Access Code for the run in order to start working.\n
    • \n
    \n

    How long does it take to run a project?

    \n
      \n
    • \n Project durations vary from about 3 days to 10 days. Some projects may display an estimation\n of the number of hours it will take for students to complete the project.\n
    • \n
    \n

    Can I shorten a project run to 1 or 2 days?

    \n
      \n
    • \n It is not recommended to shorten a project. Each project has been carefully designed to lead\n the student through an inquiry process and cutting it short will result in a less satisfactory\n educational student experience. Nevertheless, if you are under a time constraint and\n knowledgeable of the project topic, you could customize the project and shorten it to your\n specific needs.\n
    • \n
    \n

    Where do I find out about lesson plans and standards for WISE projects?

    \n
      \n
    • Sign into WISE with your teacher account.
    • \n
    • Click the \"Unit Library\" tab.
    • \n
    • Find a project you would like to learn about.
    • \n
    • Click on the project.
    • \n
    • This will display a popup that displays information about the project.
    • \n
    • \n Note: Some projects may not have much information because it is dependent on the author to\n provide the lesson plan and standards.\n
    • \n
    \n

    How do I fit a WISE project into my curriculum?

    \n
      \n
    • \n In general students will benefit from some pre-teaching of the topic covered in the project.\n It is really up to the teacher to decide where it best fits to support student learning. Many\n teachers use a WISE project as a capstone activity while others integrate it into their\n curriculum at a midpoint. Some teachers elect to use WISE projects an introductory activity\n for a unit, or as a summation activity for a unit.\n
    • \n
    \n

    How do I add a period after creating a run?

    \n
      \n
    1. Sign into WISE with your teacher account.
    2. \n
    3. Find the run in your Teacher Home Page.
    4. \n
    5. On the run, click the three vertical dots to view the run options.
    6. \n
    7. Click \"Edit Settings\".
    8. \n
    9. Enter a period name in the \"Add New Period\" field.
    10. \n
    11. Click \"Add Period\".
    12. \n
    \n

    How do I delete a period after creating a run?

    \n
      \n
    1. Sign into WISE with your teacher account.
    2. \n
    3. Find the run in your Teacher Home Page.
    4. \n
    5. On the run, click the three vertical dots to view the run options.
    6. \n
    7. Click \"Edit Settings\".
    8. \n
    9. Find the period you want to delete and click the \"Delete\" button next to it.
    10. \n
    11. Note: You are not allowed to delete a period that has students in it.
    12. \n
    \n

    \n What if I run out of computer lab time but some of my students are not finished with the\n project?\n

    \n
      \n
    • \n WISE is a web-based learning environments, so students can sign in from a computer at school\n or at home. This means that students can complete the project from any home or community based\n computer, per the teacher's discretion.\n
    • \n
    \n \n

    Assessment of Student Work

    \n

    How do I review and grade student work?

    \n
      \n
    • Sign into WISE with your teacher account.
    • \n
    • Find the run in your Teacher Home Page.
    • \n
    • Click the \"Teacher Tools\" button on the run.
    • \n
    • Here you will be able to look at your students' work.
    • \n
    • \n On the left sidebar you can choose to look at the work by step by clicking \"Grade By Step\" or\n you can choose to look at the work by student by clicking \"Grade By Student\".\n
    • \n
    • Next to each student's work, you will be able to give them a score and comment.
    • \n
    \n

    How do students see my comments and scores for their work?

    \n
      \n
    • The student must sign into WISE with their student account.
    • \n
    • Open the project.
    • \n
    • Go to the step that the teacher graded.
    • \n
    • The comment and score will be displayed under the piece of work that was graded.
    • \n
    \n

    What should I look for in my student's answers?

    \n
      \n
    • \n The following link will give you a sample rubric for grading a step in the Mitosis and Cell\n Processes project. The rubric is based on our TELS Center research on how students integrate\n their knowledge of complex science concepts. We hope that it can give you a start in\n developing your own rubrics for the notes and steps you plan to grade.\n
    • \n
    • \n Sample rubric for assessing student work\n
    • \n
    \n

    How can I encourage my students to review the graded notes and comments I have made?

    \n
      \n
    • \n Many teachers find it advantageous to grade the first step or two at the end of the first day\n of the project run. At the beginning of class the next day they share with the whole class\n some sample responses and have the class critique the work.\n
    • \n
    \n

    How do I find time to grade all of the student work?

    \n
      \n
    • \n We recommend that you go through the project and select a few steps that you think best\n demonstrate the students' understanding of the complex concepts covered in the module and\n grade those steps. Then tell your students they must complete all questions but should\n concentrate their efforts on the key steps. We recognize that critically grading each step is\n very time consuming and unpractical.\n
    • \n
    \n \n

    Real Time Classroom Monitor

    \n

    What is the Real Time Classroom Monitor?

    \n
      \n
    • \n The Real Time Classroom Monitor allows teachers to view student progress in real time.\n Teachers will be able to see what step a student is on, how much time the student has spent on\n that step, and how much of the project the student has completed. All of this information will\n be updated immediately in real time as students work on the project.\n
    • \n
    \n

    Does the Real Time Classroom Monitor work on a tablet like the iPad?

    \n
      \n
    • Yes it does.
    • \n
    \n

    Can I use the Real Time Classroom Monitor to pause student screens?

    \n
      \n
    • \n Yes you can! This can be useful if you need to grab their attention in order to have a class\n discussion or to make an announcement.\n
    • \n
    \n \n

    Technical Questions

    \n

    The WISE web site won't load on my web browser. What do I do?

    \n \n

    How many computers do I need to run WISE?

    \n
      \n
    • \n We strongly recommend one computer for every two students. Research shows that students\n benefit from working together as a team of two.\n
    • \n
    • \n
    \n

    What if I have trouble logging in?

    \n
      \n
    • \n If you do not remember your username or password click the Lost Username or Password link and\n follow the instructions.\n
    • \n
    \n

    Can I use WISE in another language?

    \n

    Yes!

    \n
      \n
    1. Sign into WISE with your teacher account.
    2. \n
    3. \n Click on your account icon at the top right of the page. This should open a drop down with\n options.\n
    4. \n
    5. \n Click the\n \"Edit Profile\" option.\n
    6. \n
    7. Near the bottom there will be a \"Language\" setting.
    8. \n
    9. Change the language to the language of your choice.
    10. \n
    11. \n Note 1: If your language is not listed as an option, or you'd like to help us improve the\n translation, please contact us and we'll help you get started!\n
    12. \n
    13. \n Note 2: Changing the language will change the language of the website but will not change the\n language of the projects. Projects must be independently translated which means that if you\n want to use a project in another language, you must translate it yourself or find a version of\n the project that has been translated by someone else.\n
    14. \n
    \n

    Who do I contact when I have a problem I can't solve?

    \n
      \n
    • \n The Contact WISE form will send an\n email to the WISE technology group. You can find a link to the form at the bottom of the home\n page. Be sure to include as much information as you can about the problem. We will respond as\n quickly as we can.\n
    • \n
    \n
    \n
    \n
    \n
    \n \n \n
    \n
    \n" + }, + { + "name": "TeacherHomeComponent", + "id": "component-TeacherHomeComponent-17a9450c7e685879c1b8fcd2792766e5edbecef0dd6c8cfdf1a92b4d9e8588a5cc5bf6dffd435c911236ea57079d88be1bdf8f664a24a595f5776c05e2279999", + "file": "src/app/teacher/teacher-home/teacher-home.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./teacher-home.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "discourseUrl", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 24, + "modifierKind": [ + 124 + ] + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 25, + "modifierKind": [ + 123 + ] + }, + { + "name": "user", + "deprecated": false, + "deprecationMessage": "", + "type": "User", + "indexKey": "", + "optional": false, + "description": "", + "line": 26, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 44, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 33, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "DiscourseRecentActivityComponent", + "type": "component" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "RouterModule", + "type": "module" + }, + { + "name": "TeacherRunListComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, OnInit } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { RouterModule } from '@angular/router';\nimport { TeacherRunListComponent } from '../teacher-run-list/teacher-run-list.component';\nimport { DiscourseRecentActivityComponent } from '../discourse-recent-activity/discourse-recent-activity.component';\nimport { UserService } from '../../services/user.service';\nimport { User } from '../../domain/user';\nimport { ConfigService } from '../../services/config.service';\nimport { Subscription } from 'rxjs';\n\n@Component({\n imports: [\n DiscourseRecentActivityComponent,\n MatButtonModule,\n MatIconModule,\n RouterModule,\n TeacherRunListComponent\n ],\n styleUrl: './teacher-home.component.scss',\n templateUrl: './teacher-home.component.html'\n})\nexport class TeacherHomeComponent implements OnInit {\n protected discourseUrl: string;\n private subscriptions: Subscription = new Subscription();\n protected user: User;\n\n constructor(\n private configService: ConfigService,\n private userService: UserService\n ) {}\n\n ngOnInit(): void {\n this.subscriptions.add(this.userService.getUser().subscribe((user) => (this.user = user)));\n this.subscriptions.add(\n this.configService.getConfig().subscribe((config) => {\n if (config != null) {\n this.discourseUrl = this.configService.getDiscourseURL();\n }\n })\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n}\n", + "styleUrl": "./teacher-home.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "userService", + "type": "UserService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 26, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "userService", + "type": "UserService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "\n
    \n
    \n

    \n homeTeacher Home\n

    \n
    Welcome {{ user.firstName }}!
    \n
    \n \n
    \n @if (discourseUrl) {\n \n }\n\n
    \n \n
    \n" + }, + { + "name": "TeacherNodeIconComponent", + "id": "component-TeacherNodeIconComponent-0a1efaa465b73622f19e753956e2664b1a811da57c68d926ece2cba82b69006fb1e818ccbf891aeb335b5bd7c7ef0c7817fc655e2420b8b0360f89a66398c83c", + "file": "src/assets/wise5/authoringTool/teacher-node-icon/teacher-node-icon.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "teacher-node-icon", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "../../vle/node-icon/node-icon.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "canEdit", + "deprecated": false, + "deprecationMessage": "", + "line": 17, + "type": "boolean", + "decorators": [], + "inheritance": { + "file": "NodeIconComponent" + } + }, + { + "name": "customClass", + "deprecated": false, + "deprecationMessage": "", + "line": 18, + "type": "string", + "decorators": [], + "inheritance": { + "file": "NodeIconComponent" + } + }, + { + "name": "icon", + "deprecated": false, + "deprecationMessage": "", + "line": 19, + "type": "any", + "decorators": [], + "inheritance": { + "file": "NodeIconComponent" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 22, + "type": "string", + "decorators": [], + "inheritance": { + "file": "NodeIconComponent" + } + }, + { + "name": "size", + "deprecated": false, + "deprecationMessage": "", + "line": 23, + "type": "number", + "decorators": [], + "inheritance": { + "file": "NodeIconComponent" + } + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "isGroup", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 20, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "NodeIconComponent" + } + }, + { + "name": "node", + "deprecated": false, + "deprecationMessage": "", + "type": "Node", + "indexKey": "", + "optional": false, + "description": "", + "line": 21, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "NodeIconComponent" + } + }, + { + "name": "sizeClass", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 24, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "NodeIconComponent" + } + } + ], + "methodsClass": [ + { + "name": "openNodeIconChooserDialog", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 17, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "isFont", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 39, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "NodeIconComponent" + } + }, + { + "name": "isImage", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 43, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "NodeIconComponent" + } + }, + { + "name": "ngOnChanges", + "args": [ + { + "name": "changes", + "type": "SimpleChanges", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 28, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "changes", + "type": "SimpleChanges", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "NodeIconComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "MatBadgeModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { MatBadgeModule } from '@angular/material/badge';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { NodeIconChooserDialogComponent } from '../../common/node-icon-chooser-dialog/node-icon-chooser-dialog.component';\nimport { NodeIconComponent } from '../../vle/node-icon/node-icon.component';\n\n@Component({\n imports: [CommonModule, MatBadgeModule, MatButtonModule, MatIconModule, MatTooltipModule],\n selector: 'teacher-node-icon',\n styleUrl: '../../vle/node-icon/node-icon.component.scss',\n templateUrl: '../../vle/node-icon/node-icon.component.html'\n})\nexport class TeacherNodeIconComponent extends NodeIconComponent {\n protected openNodeIconChooserDialog(): void {\n this.dialog.open(NodeIconChooserDialogComponent, {\n data: { node: this.node },\n panelClass: 'dialog-md'\n });\n }\n}\n", + "styleUrl": "../../vle/node-icon/node-icon.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [ + "NodeIconComponent" + ], + "templateData": "\n @if (isImage()) {\n \n }\n @if (isFont()) {\n \n {{ icon.fontName }}\n \n }\n\n\n@if (canEdit) {\n \n
    \n \n
    \n \n}\n@if (!canEdit) {\n \n}\n" + }, + { + "name": "TeacherRunListComponent", + "id": "component-TeacherRunListComponent-a045977c92e887e0d0fcb3098931ac867394374d527b4d52928fd8fdb53ad88db801e240d15af2a9ae5afdbca00f66918e23b133b008eceaffe0d03726a3439b", + "file": "src/app/teacher/teacher-run-list/teacher-run-list.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "app-teacher-run-list", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./teacher-run-list.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "allRunsLoaded", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 54, + "modifierKind": [ + 124 + ] + }, + { + "name": "filteredRuns", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "TeacherRun[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 55, + "modifierKind": [ + 124 + ] + }, + { + "name": "filterValue", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 56, + "modifierKind": [ + 124 + ] + }, + { + "name": "MAX_RECENT_RUNS", + "defaultValue": "10", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 52, + "modifierKind": [ + 123 + ] + }, + { + "name": "numSelectedRuns", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 57, + "modifierKind": [ + 124 + ] + }, + { + "name": "recentRunsLoaded", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 58, + "modifierKind": [ + 124 + ] + }, + { + "name": "runChangedEventEmitter", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "type": "EventEmitter", + "indexKey": "", + "optional": false, + "description": "", + "line": 59, + "modifierKind": [ + 124 + ] + }, + { + "name": "runs", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "TeacherRun[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 60, + "modifierKind": [ + 124 + ] + }, + { + "name": "searchValue", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 61, + "modifierKind": [ + 124 + ] + }, + { + "name": "selectedProjects", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "Project[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 62, + "modifierKind": [ + 124 + ] + }, + { + "name": "selectedTags", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "Tag[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 63, + "modifierKind": [ + 124 + ] + }, + { + "name": "showAll", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 64, + "modifierKind": [ + 124 + ] + }, + { + "name": "showArchivedView", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 65, + "modifierKind": [ + 124 + ] + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 66, + "modifierKind": [ + 123 + ] + } + ], + "methodsClass": [ + { + "name": "activeTotal", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 157, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "archiveProjects", + "args": [ + { + "name": "archive", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 292, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "archive", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "clearFilters", + "args": [ + { + "name": "event", + "type": "Event", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 228, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "event", + "type": "Event", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "completedTotal", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 161, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "getNumActiveRuns", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 302, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "getNumArchivedRuns", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 306, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "getRuns", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 88, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "getSelectedProjects", + "args": [], + "optional": false, + "returnType": "Project[]", + "typeParameters": [], + "line": 296, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "getTotal", + "args": [ + { + "name": "filterFunctionName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 172, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "filterFunctionName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "highlightNewRun", + "args": [ + { + "name": "runId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 257, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "runId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "highlightNewRunIfNecessary", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 244, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "isRunActive", + "args": [ + { + "name": "run", + "type": "TeacherRun", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 240, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "run", + "type": "TeacherRun", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 84, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 78, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "performFilter", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 199, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "performSearch", + "args": [ + { + "name": "searchValue", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "TeacherRun[]", + "typeParameters": [], + "line": 212, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "searchValue", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "performSearchAndFilter", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 177, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "processRecentRuns", + "args": [ + { + "name": "runs", + "type": "TeacherRun[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 100, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "runs", + "type": "TeacherRun[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "processRuns", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 144, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "refreshProjects", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 277, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "removeTag", + "args": [ + { + "name": "tag", + "type": "Tag", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 194, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "tag", + "type": "Tag", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "reset", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 233, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "runArchiveStatusChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 283, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "runSelectedStatusChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 287, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "runSpansDays", + "args": [ + { + "name": "run", + "type": "TeacherRun", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 153, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "run", + "type": "TeacherRun", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "scheduledTotal", + "args": [], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 168, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "searchChanged", + "args": [ + { + "name": "searchValue", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 184, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "searchValue", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "selectRunsOptionChosen", + "args": [ + { + "name": "option", + "type": "SelectRunsOption", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 271, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "option", + "type": "SelectRunsOption", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "selectTags", + "args": [ + { + "name": "tags", + "type": "Tag[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 189, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "tags", + "type": "Tag[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "setRuns", + "args": [ + { + "name": "runs", + "type": "TeacherRun[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 109, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "runs", + "type": "TeacherRun[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "sortByStartTimeDesc", + "args": [ + { + "name": "a", + "type": "TeacherRun", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "b", + "type": "TeacherRun", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 149, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "a", + "type": "TeacherRun", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "b", + "type": "TeacherRun", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "subscribeToRefreshProjects", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 129, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "subscribeToRuns", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 121, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "unselectAllRuns", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 265, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "updateExistingRun", + "args": [ + { + "name": "updatedRun", + "type": "TeacherRun", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 137, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "updatedRun", + "type": "TeacherRun", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "RouterModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatSelectModule", + "type": "module" + }, + { + "name": "MatOptionModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "SearchBarComponent", + "type": "component" + }, + { + "name": "SelectTagsComponent", + "type": "component" + }, + { + "name": "ApplyTagsButtonComponent", + "type": "component" + }, + { + "name": "SelectRunsControlsComponent", + "type": "component" + }, + { + "name": "TeacherRunListItemComponent", + "type": "component" + }, + { + "name": "TimelineModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, EventEmitter, Inject, LOCALE_ID, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatOptionModule } from '@angular/material/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { SearchBarComponent } from '../../modules/shared/search-bar/search-bar.component';\nimport { SelectTagsComponent } from '../select-tags/select-tags.component';\nimport { ApplyTagsButtonComponent } from '../apply-tags-button/apply-tags-button.component';\nimport { SelectRunsControlsComponent } from '../select-runs-controls/select-runs-controls.component';\nimport { TimelineModule } from '../../modules/timeline/timeline.module';\nimport { TeacherRunListItemComponent } from '../teacher-run-list-item/teacher-run-list-item.component';\nimport { TeacherService } from '../teacher.service';\nimport { TeacherRun } from '../teacher-run';\nimport { ConfigService } from '../../services/config.service';\nimport { ActivatedRoute, Params, Router } from '@angular/router';\nimport { Observable, of, Subscription } from 'rxjs';\nimport { UserService } from '../../services/user.service';\nimport { mergeMap } from 'rxjs/operators';\nimport { ArchiveProjectService } from '../../services/archive-project.service';\nimport { runSpansDays } from '../../../assets/wise5/common/datetime/datetime';\nimport { SelectRunsOption } from '../select-runs-controls/select-runs-option';\nimport { sortByRunStartTimeDesc } from '../../domain/run';\nimport { Project } from '../../domain/project';\nimport { Tag } from '../../domain/tag';\n\n@Component({\n selector: 'app-teacher-run-list',\n styleUrl: './teacher-run-list.component.scss',\n templateUrl: './teacher-run-list.component.html',\n imports: [\n CommonModule,\n FormsModule,\n RouterModule,\n MatIconModule,\n MatFormFieldModule,\n MatSelectModule,\n MatOptionModule,\n MatButtonModule,\n SearchBarComponent,\n SelectTagsComponent,\n ApplyTagsButtonComponent,\n SelectRunsControlsComponent,\n TeacherRunListItemComponent,\n TimelineModule\n ]\n})\nexport class TeacherRunListComponent implements OnInit {\n private MAX_RECENT_RUNS = 10;\n\n protected allRunsLoaded: boolean = false;\n protected filteredRuns: TeacherRun[] = [];\n protected filterValue: string = '';\n protected numSelectedRuns: number = 0;\n protected recentRunsLoaded: boolean = false;\n protected runChangedEventEmitter: EventEmitter = new EventEmitter();\n protected runs: TeacherRun[] = [];\n protected searchValue: string = '';\n protected selectedProjects: Project[] = [];\n protected selectedTags: Tag[] = [];\n protected showAll: boolean = false;\n protected showArchivedView: boolean = false;\n private subscriptions: Subscription = new Subscription();\n\n constructor(\n private archiveProjectService: ArchiveProjectService,\n private configService: ConfigService,\n @Inject(LOCALE_ID) private localeID: string,\n private route: ActivatedRoute,\n private router: Router,\n private teacherService: TeacherService,\n private userService: UserService\n ) {}\n\n ngOnInit() {\n this.getRuns();\n this.subscribeToRuns();\n this.subscribeToRefreshProjects();\n }\n\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n }\n\n private getRuns(): void {\n this.teacherService\n .getRuns(this.MAX_RECENT_RUNS)\n .pipe(mergeMap((runs) => this.processRecentRuns(runs)))\n .subscribe((runs: TeacherRun[]) => {\n this.setRuns(runs);\n this.processRuns();\n this.highlightNewRunIfNecessary();\n this.allRunsLoaded = true;\n });\n }\n\n private processRecentRuns(runs: TeacherRun[]): Observable {\n if (runs.length < this.MAX_RECENT_RUNS) {\n return of(runs);\n } else {\n this.setRuns(runs);\n return this.teacherService.getRuns();\n }\n }\n\n private setRuns(runs: TeacherRun[]): void {\n const userId = this.userService.getUserId();\n this.runs = runs.map((run) => {\n const teacherRun = new TeacherRun(run);\n teacherRun.shared = !teacherRun.isOwner(userId);\n teacherRun.project.archived = teacherRun.project.hasTagWithText('archived');\n return teacherRun;\n });\n this.filteredRuns = this.runs;\n this.recentRunsLoaded = true;\n }\n\n private subscribeToRuns(): void {\n this.subscriptions.add(\n this.teacherService.runs$.subscribe((run: TeacherRun) => {\n this.updateExistingRun(run);\n })\n );\n }\n\n private subscribeToRefreshProjects(): void {\n this.subscriptions.add(\n this.archiveProjectService.refreshProjectsEvent$.subscribe(() => {\n this.runArchiveStatusChanged();\n })\n );\n }\n\n private updateExistingRun(updatedRun: TeacherRun): void {\n const runIndex = this.runs.findIndex((run) => run.id === updatedRun.id);\n this.runs.splice(runIndex, 1, updatedRun);\n this.processRuns();\n this.reset();\n }\n\n private processRuns(): void {\n this.filteredRuns = this.runs;\n this.performSearchAndFilter();\n }\n\n protected sortByStartTimeDesc(a: TeacherRun, b: TeacherRun): number {\n return sortByRunStartTimeDesc(a, b);\n }\n\n protected runSpansDays(run: TeacherRun): boolean {\n return runSpansDays(run, this.localeID);\n }\n\n protected activeTotal(): number {\n return this.getTotal('isActive');\n }\n\n protected completedTotal(): number {\n const now = this.configService.getCurrentServerTime();\n return this.filteredRuns.filter(\n (run: TeacherRun) => !run.isActive(now) && !run.isScheduled(now)\n ).length;\n }\n\n protected scheduledTotal(): number {\n return this.getTotal('isScheduled');\n }\n\n private getTotal(filterFunctionName: string): number {\n const now = this.configService.getCurrentServerTime();\n return this.filteredRuns.filter((run: TeacherRun) => run[filterFunctionName](now)).length;\n }\n\n private performSearchAndFilter(): void {\n this.filteredRuns = this.searchValue ? this.performSearch(this.searchValue) : this.runs;\n this.performFilter();\n this.unselectAllRuns();\n this.runSelectedStatusChanged();\n }\n\n protected searchChanged(searchValue: string): void {\n this.searchValue = searchValue;\n this.performSearchAndFilter();\n }\n\n protected selectTags(tags: Tag[]): void {\n this.selectedTags = tags;\n this.performSearchAndFilter();\n }\n\n protected removeTag(tag: Tag): void {\n this.selectedTags = this.selectedTags.filter((selectedTag: Tag) => selectedTag.id !== tag.id);\n this.performSearchAndFilter();\n }\n\n private performFilter(): void {\n this.filteredRuns = this.filteredRuns.filter(\n (run: TeacherRun) =>\n (!this.showArchivedView && !run.project.archived) ||\n (this.showArchivedView && run.project.archived)\n );\n if (this.selectedTags.length > 0) {\n this.filteredRuns = this.filteredRuns.filter((run: TeacherRun) =>\n this.selectedTags.some((tag: Tag) => run.project.hasTag(tag))\n );\n }\n }\n\n private performSearch(searchValue: string): TeacherRun[] {\n searchValue = searchValue.toLocaleLowerCase();\n return this.runs.filter((run: TeacherRun) =>\n Object.keys(run).some((prop) => {\n const value = run[prop];\n if (typeof value === 'undefined' || value === null) {\n return false;\n } else if (typeof value === 'object') {\n return JSON.stringify(value).toLocaleLowerCase().indexOf(searchValue) !== -1;\n } else {\n return value.toString().toLocaleLowerCase().indexOf(searchValue) !== -1;\n }\n })\n );\n }\n\n protected clearFilters(event: Event): void {\n event.preventDefault();\n this.reset();\n }\n\n protected reset(): void {\n this.searchValue = '';\n this.filterValue = '';\n this.selectedTags = [];\n this.performSearchAndFilter();\n }\n\n protected isRunActive(run: TeacherRun): boolean {\n return run.isActive(this.configService.getCurrentServerTime());\n }\n\n private highlightNewRunIfNecessary(): void {\n this.route.queryParams.subscribe((queryParams: Params) => {\n if (queryParams.newRunId != null) {\n const newRunId = parseInt(queryParams.newRunId);\n if (!isNaN(newRunId)) {\n this.highlightNewRun(newRunId);\n }\n // remove the newRunId parameter from the url\n this.router.navigate(['/teacher/home/schedule'], { queryParams: { newRunId: null } });\n }\n });\n }\n\n private highlightNewRun(runId: number): void {\n for (const run of this.runs) {\n if (run.id === runId) {\n run.highlighted = true;\n }\n }\n }\n\n private unselectAllRuns(): void {\n for (const run of this.runs) {\n run.project.selected = false;\n }\n }\n\n protected selectRunsOptionChosen(option: SelectRunsOption): void {\n const now = this.configService.getCurrentServerTime();\n this.filteredRuns.forEach((run: TeacherRun) => run.updateSelected(option, now));\n this.runSelectedStatusChanged();\n }\n\n protected refreshProjects(): void {\n this.unselectAllRuns();\n this.runSelectedStatusChanged();\n this.performSearchAndFilter();\n }\n\n protected runArchiveStatusChanged(): void {\n this.performSearchAndFilter();\n }\n\n private runSelectedStatusChanged(): void {\n this.runChangedEventEmitter.emit();\n this.selectedProjects = this.getSelectedProjects();\n }\n\n protected archiveProjects(archive: boolean): void {\n this.archiveProjectService.archiveProjects(this.getSelectedProjects(), archive);\n }\n\n protected getSelectedProjects(): Project[] {\n return this.filteredRuns\n .filter((run: TeacherRun) => run.project.selected)\n .map((run: TeacherRun) => run.project);\n }\n\n protected getNumActiveRuns(): number {\n return this.runs.filter((run: TeacherRun) => !run.project.archived).length;\n }\n\n protected getNumArchivedRuns(): number {\n return this.runs.filter((run: TeacherRun) => run.project.archived).length;\n }\n}\n", + "styleUrl": "./teacher-run-list.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "archiveProjectService", + "type": "ArchiveProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "localeID", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "teacherService", + "type": "TeacherService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "userService", + "type": "UserService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 66, + "jsdoctags": [ + { + "name": "archiveProjectService", + "type": "ArchiveProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "localeID", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "teacherService", + "type": "TeacherService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "userService", + "type": "UserService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "\n

    \n calendar_monthClass Schedule\n

    \n \n \n \n View\n \n Active\n Archived\n \n \n\n
    \n
    \n \n
    \n

    \n @if (searchValue || filterValue) {\n Units found: {{ filteredRuns.length }}\n }\n @if (!searchValue && !filterValue) {\n @if (showArchivedView) {\n Archived classroom units:\n }\n @if (!showArchivedView) {\n Active classroom units:\n }\n {{ filteredRuns.length }}\n }\n @if (!showArchivedView && filteredRuns.length) {\n \n (\n @if (completedTotal()) {\n {{ completedTotal() }} completed,\n }\n {{ activeTotal() }} running\n @if (scheduledTotal()) {\n , {{ scheduledTotal() }} scheduled\n }\n )\n \n }\n @if (searchValue || filterValue || selectedTags.length > 0) {\n |\n Clear filters\n }\n

    \n
    \n
    \n @if (recentRunsLoaded) {\n @if (!showArchivedView && getNumActiveRuns() === 0) {\n
    \n

    Hey there! Looks like you don't have any active classroom units.

    \n

    Browse the \"Unit Library\" to find titles to use with your students.

    \n
    \n }\n @if (showArchivedView && getNumArchivedRuns() === 0) {\n
    \n

    Looks like you don't have any archived classroom units.

    \n
    \n }\n
    \n @if (filteredRuns.length > 0) {\n \n }\n @if (selectedProjects.length > 0) {\n \n }\n
    \n \n @for (run of filteredRuns.sort(sortByStartTimeDesc); track run; let i = $index) {\n @if (i < 10 || showAll) {\n \n \n {{ run.startTime | date: 'mediumDate' }}\n @if (run.endTime && runSpansDays(run)) {\n - {{ run.endTime | date: 'mediumDate' }}\n }\n \n \n \n \n \n }\n }\n \n @if (filteredRuns.length > 10 && !showAll) {\n
    \n \n
    \n }\n }\n
    \n" + }, + { + "name": "TeacherRunListItemComponent", + "id": "component-TeacherRunListItemComponent-530b1fb34bd3423893e5b4ea2361e24a5a74d25b8cb72995157cba7512a90b47369ec6762f5a961e468c10c5fd43c4c088ec3cd8f4cacb1f6ed067deb0fe42bb", + "file": "src/app/teacher/teacher-run-list-item/teacher-run-list-item.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "app-teacher-run-list-item", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./teacher-run-list-item.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "run", + "defaultValue": "new TeacherRun()", + "deprecated": false, + "deprecationMessage": "", + "line": 47, + "type": "TeacherRun", + "decorators": [] + } + ], + "outputsClass": [ + { + "name": "runArchiveStatusChangedEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 48, + "type": "EventEmitter" + }, + { + "name": "runSelectedStatusChangedEvent", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 49, + "type": "EventEmitter" + } + ], + "propertiesClass": [ + { + "name": "animateDelay", + "defaultValue": "'0s'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 43, + "modifierKind": [ + 124 + ] + }, + { + "name": "animateDuration", + "defaultValue": "'0s'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 44, + "modifierKind": [ + 124 + ] + }, + { + "name": "manageStudentsLink", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 45, + "modifierKind": [ + 124 + ] + }, + { + "name": "periodsTooltipText", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 46, + "modifierKind": [ + 124 + ] + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 50, + "modifierKind": [ + 123 + ] + }, + { + "name": "thumbStyle", + "deprecated": false, + "deprecationMessage": "", + "type": "SafeStyle", + "indexKey": "", + "optional": false, + "description": "", + "line": 51, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "getPeriodsTooltipText", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 133, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "getThumbStyle", + "args": [], + "optional": false, + "returnType": "SafeStyle", + "typeParameters": [], + "line": 115, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "isRunActive", + "args": [ + { + "name": "run", + "type": "TeacherRun", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 148, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "run", + "type": "TeacherRun", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isRunCompleted", + "args": [ + { + "name": "run", + "type": "TeacherRun", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 152, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "run", + "type": "TeacherRun", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "launchGradeAndManageTool", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 121, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "ngAfterViewInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 101, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnChanges", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 107, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 111, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 62, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "runArchiveStatusChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 164, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "shareCode", + "args": [ + { + "name": "event", + "type": "Event", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 156, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "event", + "type": "Event", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "subscribeToTagDeleted", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 91, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "subscribeToTagUpdated", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 78, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatCardModule", + "type": "module" + }, + { + "name": "MatCheckboxModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + }, + { + "name": "RouterModule", + "type": "module" + }, + { + "name": "RunMenuComponent", + "type": "component" + }, + { + "name": "UnitTagsComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, OnInit, Input, ElementRef, Output, EventEmitter } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { FormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { flash } from '../../animations';\nimport { MatDialog } from '@angular/material/dialog';\nimport { ProjectTagService } from '../../../assets/wise5/services/projectTagService';\nimport { Router } from '@angular/router';\nimport { SafeStyle } from '@angular/platform-browser';\nimport { ShareRunCodeDialogComponent } from '../share-run-code-dialog/share-run-code-dialog.component';\nimport { Subscription } from 'rxjs';\nimport { Tag } from '../../domain/tag';\nimport { TeacherRun } from '../teacher-run';\nimport { UnitTagsComponent } from '../unit-tags/unit-tags.component';\nimport { RunMenuComponent } from '../run-menu/run-menu.component';\nimport { ConfigService } from '../../services/config.service';\n\n@Component({\n animations: [flash],\n imports: [\n CommonModule,\n FormsModule,\n MatButtonModule,\n MatCardModule,\n MatCheckboxModule,\n MatIconModule,\n MatTooltipModule,\n RouterModule,\n RunMenuComponent,\n UnitTagsComponent\n ],\n selector: 'app-teacher-run-list-item',\n styleUrl: './teacher-run-list-item.component.scss',\n templateUrl: './teacher-run-list-item.component.html'\n})\nexport class TeacherRunListItemComponent implements OnInit {\n protected animateDelay: string = '0s';\n protected animateDuration: string = '0s';\n protected manageStudentsLink: string = '';\n protected periodsTooltipText: string;\n @Input() run: TeacherRun = new TeacherRun();\n @Output() runArchiveStatusChangedEvent: EventEmitter = new EventEmitter();\n @Output() runSelectedStatusChangedEvent: EventEmitter = new EventEmitter();\n private subscriptions: Subscription = new Subscription();\n protected thumbStyle: SafeStyle;\n\n constructor(\n private configService: ConfigService,\n private dialog: MatDialog,\n private elRef: ElementRef,\n private projectTagService: ProjectTagService,\n private router: Router,\n private sanitizer: DomSanitizer\n ) {}\n\n ngOnInit(): void {\n this.run.project.thumbStyle = this.getThumbStyle();\n this.manageStudentsLink = `${this.configService.getContextPath()}/teacher/manage/unit/${\n this.run.id\n }/manage-students`;\n if (this.run.highlighted) {\n this.animateDuration = '2s';\n this.animateDelay = '1s';\n setTimeout(() => {\n this.run.highlighted = false;\n }, 7000);\n }\n this.subscribeToTagUpdated();\n this.subscribeToTagDeleted();\n }\n\n private subscribeToTagUpdated(): void {\n this.subscriptions.add(\n this.projectTagService.tagUpdated$.subscribe((updatedTag: Tag) => {\n const projectTag = this.run.project.tags.find((tag: Tag) => tag.id === updatedTag.id);\n if (projectTag != null) {\n projectTag.text = updatedTag.text;\n projectTag.color = updatedTag.color;\n this.projectTagService.sortTags(this.run.project.tags);\n }\n })\n );\n }\n\n private subscribeToTagDeleted(): void {\n this.subscriptions.add(\n this.projectTagService.tagDeleted$.subscribe((tag: Tag) => {\n if (this.run.project.hasTag(tag)) {\n this.run.project.removeTag(tag);\n }\n })\n );\n }\n\n ngAfterViewInit(): void {\n if (this.run.highlighted) {\n this.elRef.nativeElement.querySelector('mat-card').scrollIntoView();\n }\n }\n\n ngOnChanges(): void {\n this.periodsTooltipText = this.getPeriodsTooltipText();\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n private getThumbStyle(): SafeStyle {\n const DEFAULT_THUMB = 'assets/img/default-picture.svg';\n const STYLE = `url(${this.run.project.projectThumb}), url(${DEFAULT_THUMB})`;\n return this.sanitizer.bypassSecurityTrustStyle(STYLE);\n }\n\n protected launchGradeAndManageTool(): void {\n if (this.run.project.wiseVersion === 4) {\n window.location.href =\n `${this.configService.getWISE4Hostname()}` +\n `/teacher/classroomMonitor/classroomMonitor?runId=${this.run.id}&gradingType=monitor`;\n } else {\n this.router.navigateByUrl(\n `${this.configService.getContextPath()}/teacher/manage/unit/${this.run.id}`\n );\n }\n }\n\n private getPeriodsTooltipText(): string {\n let string = '';\n const length = this.run.periods.length;\n for (let p = 0; p < length; p++) {\n if (p === 0) {\n string = $localize`Class Periods:` + ' ';\n }\n string += this.run.periods[p];\n if (p < length - 1) {\n string += ', ';\n }\n }\n return string;\n }\n\n protected isRunActive(run: TeacherRun): boolean {\n return run.isActive(this.configService.getCurrentServerTime());\n }\n\n protected isRunCompleted(run: TeacherRun): boolean {\n return run.isCompleted(this.configService.getCurrentServerTime());\n }\n\n protected shareCode(event: Event): void {\n event.preventDefault();\n this.dialog.open(ShareRunCodeDialogComponent, {\n data: this.run,\n panelClass: 'dialog-sm'\n });\n }\n\n protected runArchiveStatusChanged(): void {\n this.run.project.selected = false;\n this.runSelectedStatusChangedEvent.emit();\n this.runArchiveStatusChangedEvent.emit();\n }\n}\n", + "styleUrl": "./teacher-run-list-item.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "elRef", + "type": "ElementRef", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectTagService", + "type": "ProjectTagService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "sanitizer", + "type": "DomSanitizer", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 51, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "elRef", + "type": "ElementRef", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectTagService", + "type": "ProjectTagService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "sanitizer", + "type": "DomSanitizer", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "\n
    \n \n @if (run.shared) {\n
    Shared by {{ run.owner.firstName }} {{ run.owner.lastName }}
    \n }\n \n
    \n\n \n
    \n \n
    \n \n
    \n
    \n \n {{ run.project.name }}\n @if (run.project.wiseVersion === 4) {\n (Legacy Unit)\n }\n \n \n \n \n
    \n \n
    \n \n
    \n
    \n
    \n \n
    \n \n
    \n
    \n \n @if (run.lastRun) {\n Last student login: {{ run.lastRun | date: 'short' }}\n }\n @if (!isRunActive(run) && !isRunCompleted(run)) {\n \n }\n @if (isRunActive(run) || isRunCompleted(run)) {\n \n assignment_turned_in Teacher Tools\n \n }\n \n\n" + }, + { + "name": "TeacherSummaryDisplayComponent", + "id": "component-TeacherSummaryDisplayComponent-bddf6b9ab0d311cdd0daedf4124fd0ebcba518da975d20b31c2a27fd10adf13251c85de3b9e935fd5ee6d2d899d82843392781ff17f77fb3e23c120cb8a5fa5f", + "file": "src/assets/wise5/directives/teacher-summary-display/teacher-summary-display.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "teacher-summary-display", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "../summary-display/summary-display.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "chartType", + "deprecated": false, + "deprecationMessage": "", + "line": 70, + "type": "string", + "decorators": [], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "line": 65, + "type": "string", + "decorators": [], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "customLabelColors", + "deprecated": false, + "deprecationMessage": "", + "line": 73, + "type": "any[]", + "decorators": [], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "doRender", + "deprecated": false, + "deprecationMessage": "", + "line": 74, + "type": "boolean", + "decorators": [], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "hasWarning", + "deprecated": false, + "deprecationMessage": "", + "line": 71, + "type": "boolean", + "decorators": [], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "highlightCorrectAnswer", + "deprecated": false, + "deprecationMessage": "", + "line": 66, + "type": "boolean", + "decorators": [], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 64, + "type": "string", + "decorators": [], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "periodId", + "deprecated": false, + "deprecationMessage": "", + "line": 69, + "type": "number", + "decorators": [], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "source", + "deprecated": false, + "deprecationMessage": "", + "line": 68, + "type": "string", + "decorators": [], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "studentDataType", + "deprecated": false, + "deprecationMessage": "", + "line": 67, + "type": "string", + "decorators": [], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "warningMessage", + "deprecated": false, + "deprecationMessage": "", + "line": 72, + "type": "string", + "decorators": [], + "inheritance": { + "file": "SummaryDisplayComponent" + } + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 17, + "modifierKind": [ + 123 + ] + }, + { + "name": "chartConfig", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 26, + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "colors", + "defaultValue": "{\n palette: [\n '#1a237e',\n '#701e82',\n '#aa187b',\n '#d72c6c',\n '#f65158',\n '#ff7d43',\n '#ffab32',\n '#fdd835',\n '#ffee58',\n '#ade563',\n '#50d67f',\n '#00c29d',\n '#00aab3',\n '#0090bc',\n '#0074b4',\n '#01579b'\n ],\n singleHue: 'rgb(170, 24, 123)',\n correct: '#00C853',\n incorrect: '#C62828'\n }", + "deprecated": false, + "deprecationMessage": "", + "type": "object", + "indexKey": "", + "optional": false, + "description": "", + "line": 27, + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "defaultMaxScore", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 50, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "hasCorrectness", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 51, + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "Highcharts", + "defaultValue": "Highcharts", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 52, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "maxScore", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 53, + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "meanScore", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 56, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "numResponses", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 58, + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "otherComponent", + "deprecated": false, + "deprecationMessage": "", + "type": "ComponentContent", + "indexKey": "", + "optional": false, + "description": "", + "line": 59, + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "otherComponentType", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 60, + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "percentResponded", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 61, + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "studentMaxScore", + "defaultValue": "0", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 54, + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "studentMinScore", + "defaultValue": "1", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 55, + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "totalWorkgroups", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 62, + "inheritance": { + "file": "SummaryDisplayComponent" + } + } + ], + "methodsClass": [ + { + "name": "displaySourceSelfMessageToTeacher", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 47, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "getLatestScores", + "args": [], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 35, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "getLatestWork", + "args": [], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 39, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 31, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 19, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "renderSelfDisplay", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 43, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "calculateCountsAndPercentage", + "args": [ + { + "name": "dataCount", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 558, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "dataCount", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "convertObjectToArray", + "args": [ + { + "name": "obj", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 219, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "obj", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "createChartConfig", + "args": [ + { + "name": "chartType", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "title", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "xAxisType", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "total", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "series", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "colors", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 456, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "chartType", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "title", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "xAxisType", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "total", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "series", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "colors", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "createChoicesSeriesData", + "args": [ + { + "name": "component", + "type": "MultipleChoiceContent", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "summaryData", + "type": "MultipleChoiceSummaryData", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "SeriesData", + "typeParameters": [], + "line": 286, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "component", + "type": "MultipleChoiceContent", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "summaryData", + "type": "MultipleChoiceSummaryData", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "createScoresSeriesData", + "args": [ + { + "name": "summaryData", + "type": "ScoreSummaryData", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "unknown", + "typeParameters": [], + "line": 325, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "summaryData", + "type": "ScoreSummaryData", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "createSeries", + "args": [ + { + "name": "seriesData", + "type": "SeriesData", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 350, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "seriesData", + "type": "SeriesData", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "createTableSeriesData", + "args": [ + { + "name": "summaryData", + "type": "TableSummaryData", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "SeriesData", + "typeParameters": [], + "line": 247, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "summaryData", + "type": "TableSummaryData", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "filterLatestScoreAnnotations", + "args": [ + { + "name": "annotations", + "type": "Annotation[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 201, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "annotations", + "type": "Annotation[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "getChartColors", + "args": [], + "optional": false, + "returnType": "string[]", + "typeParameters": [], + "line": 405, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "getDataPointColor", + "args": [ + { + "name": "choice", + "type": "Choice", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string | null", + "typeParameters": [], + "line": 309, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "choice", + "type": "Choice", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "getGraphTitle", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 375, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "getGraphTitleForClass", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 395, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "getGraphTitleForSelf", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 387, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "getIndexByName", + "args": [ + { + "name": "series", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "name", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 431, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "series", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "name", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "getLatestScoreAnnotationForWorkgroup", + "args": [], + "optional": false, + "returnType": "Annotation", + "typeParameters": [], + "line": 169, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "getLatestStudentScores", + "args": [], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 153, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "getLatestStudentWork", + "args": [], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 191, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "getPercentResponded", + "args": [ + { + "name": "numResponses", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "totalWorkgroups", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 573, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "numResponses", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "totalWorkgroups", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "getScoreFromAnnotation", + "args": [ + { + "name": "annotation", + "type": "Annotation", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 321, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "annotation", + "type": "Annotation", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "getSummaryDataCount", + "args": [ + { + "name": "summaryData", + "type": "SummaryData", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "id", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 577, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "summaryData", + "type": "SummaryData", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "id", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "getTotalTableCount", + "args": [ + { + "name": "seriesData", + "type": "SeriesData", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 260, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "seriesData", + "type": "SeriesData", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "getTotalWorkgroups", + "args": [ + { + "name": "dataCount", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "number", + "typeParameters": [], + "line": 564, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "dataCount", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "hasCorrectAnswer", + "args": [ + { + "name": "component", + "type": "MultipleChoiceContent", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 305, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "component", + "type": "MultipleChoiceContent", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "initializeCustomLabelColors", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 100, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "initializeOtherComponent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 93, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "isAuthoringPreview", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 120, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "isSourceSelf", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 581, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "isStudentDataType", + "args": [ + { + "name": "studentDataType", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 452, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "studentDataType", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "isStudentDataTypeResponses", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 444, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "isStudentDataTypeScores", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 448, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "isStudentRun", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 124, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "isVLEPreview", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 116, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "ngOnChanges", + "args": [ + { + "name": "changes", + "type": "SimpleChanges", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 106, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "changes", + "type": "SimpleChanges", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "processComponentStates", + "args": [ + { + "name": "componentStates", + "type": "ComponentState[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "unknown", + "typeParameters": [], + "line": 225, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "componentStates", + "type": "ComponentState[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "processScoreAnnotations", + "args": [ + { + "name": "annotations", + "type": "Annotation[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 266, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "annotations", + "type": "Annotation[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "renderClassResponses", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 144, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "renderClassScores", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 177, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "renderDisplay", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 128, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "renderGraph", + "args": [ + { + "name": "seriesData", + "type": "SeriesData", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "total", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 340, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "seriesData", + "type": "SeriesData", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "total", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "setCustomLabelColors", + "args": [ + { + "name": "series", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "colors", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "customLabelColors", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 422, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "series", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "colors", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "customLabelColors", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "setLatestAnnotationIfNewer", + "args": [ + { + "name": "latestAnnotations", + "type": "Annotation", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "annotation", + "type": "Annotation", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 211, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "latestAnnotations", + "type": "Annotation", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "annotation", + "type": "Annotation", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "setMaxScore", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 182, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + }, + { + "name": "setMinMaxScore", + "args": [ + { + "name": "annotations", + "type": "Annotation[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 274, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "annotations", + "type": "Annotation[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "SummaryDisplayComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "HighchartsChartModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { SummaryDisplayComponent } from '../summary-display/summary-display.component';\nimport { CommonModule } from '@angular/common';\nimport { HighchartsChartModule } from 'highcharts-angular';\nimport { Observable, Subscription } from 'rxjs';\nimport { Annotation } from '../../common/Annotation';\nimport { ComponentState } from '../../../../app/domain/componentState';\nimport { TeacherProjectService } from '../../services/teacherProjectService';\n\n@Component({\n imports: [CommonModule, HighchartsChartModule],\n selector: 'teacher-summary-display',\n styleUrl: '../summary-display/summary-display.component.scss',\n templateUrl: '../summary-display/summary-display.component.html'\n})\nexport class TeacherSummaryDisplayComponent extends SummaryDisplayComponent {\n private subscriptions = new Subscription();\n\n ngOnInit(): void {\n super.ngOnInit();\n this.subscriptions.add(\n (this.projectService as TeacherProjectService).projectSaved$.subscribe(() =>\n this.renderDisplay()\n )\n );\n this.subscriptions.add(\n this.annotationService.annotationReceived$.subscribe(() => this.renderDisplay())\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n protected getLatestScores(): Observable {\n return this.getLatestStudentScores();\n }\n\n protected getLatestWork(): Observable {\n return this.getLatestStudentWork();\n }\n\n protected renderSelfDisplay(): void {\n this.displaySourceSelfMessageToTeacher();\n }\n\n private displaySourceSelfMessageToTeacher(): void {\n this.doRender = false;\n this.warningMessage = $localize`The student will see a graph of their individual data here.`;\n this.hasWarning = true;\n }\n}\n", + "styleUrl": "../summary-display/summary-display.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [ + "SummaryDisplayComponent" + ], + "templateData": "@if (hasWarning) {\n

    {{ warningMessage }}

    \n}\n@if (doRender && chartConfig != null) {\n \n}\n" + }, + { + "name": "TeamSignInDialogComponent", + "id": "component-TeamSignInDialogComponent-1f610731a2deaf818fdc4fee0c21a4a9b3d72416476d656747d2f3d25bec1b8cdf814fe457a691a4a6eee6d301ee6c290987baaa66da39ec5ce79c47e9c476e6", + "file": "src/app/student/team-sign-in-dialog/team-sign-in-dialog.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./team-sign-in-dialog.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "canLaunch", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 23 + }, + { + "name": "data", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 31, + "decorators": [ + { + "name": "Inject", + "stringifiedArguments": "MAT_DIALOG_DATA" + } + ], + "modifierKind": [ + 171, + 125 + ] + }, + { + "name": "dialogRef", + "deprecated": false, + "deprecationMessage": "", + "type": "MatDialogRef", + "indexKey": "", + "optional": false, + "description": "", + "line": 30, + "modifierKind": [ + 125 + ] + }, + { + "name": "hiddenMembers", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 20 + }, + { + "name": "isGoogleAuthenticationEnabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 22 + }, + { + "name": "run", + "defaultValue": "new StudentRun()", + "deprecated": false, + "deprecationMessage": "", + "type": "StudentRun", + "indexKey": "", + "optional": false, + "description": "", + "line": 18 + }, + { + "name": "showSignInForm", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 21 + }, + { + "name": "teamMembers", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 19 + }, + { + "name": "user", + "deprecated": false, + "deprecationMessage": "", + "type": "Student", + "indexKey": "", + "optional": false, + "description": "", + "line": 17 + } + ], + "methodsClass": [ + { + "name": "allowSignIn", + "args": [ + { + "name": "teamMember", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "numMembersExpected", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 254, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "teamMember", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "numMembersExpected", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "clearTeamMember", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 392, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getExistingWorkgroupMembersNotSignedIn", + "args": [ + { + "name": "workgroupMembers", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 362, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "workgroupMembers", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getNameDisplay", + "args": [ + { + "name": "user", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 305, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "user", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getTeamMemberByUsernameOrAvailableSlot", + "args": [ + { + "name": "username", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 241, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "username", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getUser", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 61, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "getWorkgroupTeammatesDisplay", + "args": [ + { + "name": "workgroupMembers", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "targetUsername", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 309, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "workgroupMembers", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "targetUsername", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "googleSignIn", + "args": [ + { + "name": "credential", + "type": "GoogleUser", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "teamMember", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 141, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "credential", + "type": "GoogleUser", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "teamMember", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isAbsent", + "args": [ + { + "name": "teamMember", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 220, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "teamMember", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isCanLaunch", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 232, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isExistingStudent", + "args": [ + { + "name": "teamMember", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 224, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "teamMember", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isGoogleUser", + "args": [ + { + "name": "teamMember", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 208, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "teamMember", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isLoggedInUser", + "args": [ + { + "name": "username", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 228, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "username", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isLoggedInUserInWorkgroup", + "args": [ + { + "name": "workgroupMembers", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 323, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "workgroupMembers", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isNotSignedIn", + "args": [ + { + "name": "teamMember", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 216, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "teamMember", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isShowPasswordField", + "args": [ + { + "name": "teamMember", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 69, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "teamMember", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isShowSignInWithGoogle", + "args": [ + { + "name": "teamMember", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 73, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "teamMember", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isShowUsernameField", + "args": [ + { + "name": "teamMember", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 65, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "teamMember", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isSignedIn", + "args": [ + { + "name": "teamMember", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 212, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "teamMember", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "launchRun", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 264, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "markAsNotSignedIn", + "args": [ + { + "name": "teamMember", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 200, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "teamMember", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "markAsSignedIn", + "args": [ + { + "name": "teamMember", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 196, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "teamMember", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 53, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "removeTeamMembersAlreadyInAWorkgroup", + "args": [ + { + "name": "workgroupMembers", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 378, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "workgroupMembers", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "signIn", + "args": [ + { + "name": "teamMember", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 81, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "teamMember", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "toggleAbsent", + "args": [ + { + "name": "teamMember", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "isAbsent", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 204, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "teamMember", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "isAbsent", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "updateTeamMember", + "args": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "workgroupMember", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 353, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "index", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "workgroupMember", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "updateTeamMembers", + "args": [ + { + "name": "workgroupMembers", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 332, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "workgroupMembers", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Inject, OnInit } from '@angular/core';\nimport { UserService } from '../../services/user.service';\nimport { Student } from '../../domain/student';\nimport { StudentRun } from '../student-run';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { ConfigService } from '../../services/config.service';\nimport { StudentService } from '../student.service';\nimport { Router } from '@angular/router';\nimport { GoogleUser } from '../../modules/google-sign-in/GoogleUser';\n\n@Component({\n standalone: false,\n styleUrl: './team-sign-in-dialog.component.scss',\n templateUrl: './team-sign-in-dialog.component.html'\n})\nexport class TeamSignInDialogComponent implements OnInit {\n user: Student;\n run: StudentRun = new StudentRun();\n teamMembers: any[] = [];\n hiddenMembers: boolean[] = [];\n showSignInForm: any = {};\n isGoogleAuthenticationEnabled: boolean = false;\n canLaunch: boolean = false;\n\n constructor(\n private configService: ConfigService,\n private userService: UserService,\n private studentService: StudentService,\n private router: Router,\n public dialogRef: MatDialogRef,\n @Inject(MAT_DIALOG_DATA) public data: any\n ) {\n this.run = this.data.run;\n this.user = this.getUser().getValue();\n if (this.run.workgroupMembers != null) {\n for (let workgroupMember of this.run.workgroupMembers) {\n if (workgroupMember.id !== this.user.id) {\n this.hiddenMembers.push(false);\n this.teamMembers.push(workgroupMember);\n this.markAsNotSignedIn(workgroupMember);\n }\n }\n }\n\n for (let i = this.teamMembers.length; i < this.run.maxStudentsPerTeam - 1; i++) {\n const student = new Student();\n this.markAsNotSignedIn(student);\n this.hiddenMembers.push(true);\n this.teamMembers.push(student);\n }\n }\n\n ngOnInit() {\n this.configService.getConfig().subscribe((config) => {\n if (config != null) {\n this.isGoogleAuthenticationEnabled = config.googleClientId != null;\n }\n });\n }\n\n getUser() {\n return this.userService.getUser();\n }\n\n isShowUsernameField(teamMember) {\n return !this.isExistingStudent(teamMember);\n }\n\n isShowPasswordField(teamMember) {\n return this.isNotSignedIn(teamMember) && !this.isGoogleUser(teamMember);\n }\n\n isShowSignInWithGoogle(teamMember) {\n return (\n this.isNotSignedIn(teamMember) &&\n this.isGoogleAuthenticationEnabled &&\n (!this.isExistingStudent(teamMember) || this.isGoogleUser(teamMember))\n );\n }\n\n signIn(teamMember: any) {\n this.userService\n .checkAuthentication(teamMember.username, teamMember.password)\n .subscribe((response) => {\n if (response.isUsernameValid === true && response.isPasswordValid === true) {\n this.studentService\n .canBeAddedToWorkgroup(this.run.id, this.run.workgroupId, response.userId)\n .subscribe((canBeAddedToWorkgroupResponse) => {\n if (canBeAddedToWorkgroupResponse.isTeacher) {\n alert($localize`A teacher cannot be added as a team member.`);\n teamMember.username = null;\n } else if (canBeAddedToWorkgroupResponse.status && this.allowSignIn(teamMember, 1)) {\n for (const member of canBeAddedToWorkgroupResponse.workgroupMembers) {\n if (!this.isLoggedInUser(member.username)) {\n const currentMember = this.getTeamMemberByUsernameOrAvailableSlot(\n member.username\n );\n this.updateTeamMember(this.teamMembers.indexOf(currentMember), member);\n }\n }\n this.markAsSignedIn(teamMember);\n if (canBeAddedToWorkgroupResponse.addUserToWorkgroup) {\n this.run.workgroupId = canBeAddedToWorkgroupResponse.workgroupId;\n }\n } else if (\n canBeAddedToWorkgroupResponse.workgroupMembers?.length ===\n this.run.maxStudentsPerTeam\n ) {\n alert(\n $localize`${this.getNameDisplay(\n response\n )}:studentName: is already in a team that is full`\n );\n teamMember.username = null;\n } else if (!this.allowSignIn(teamMember, 1)) {\n alert(\n $localize`${this.getNameDisplay(response)}:studentName: is already in the team`\n );\n if (!this.isExistingStudent(teamMember)) {\n teamMember.username = null;\n }\n } else {\n alert(\n $localize`${this.getNameDisplay(\n response\n )}:studentName: is already on another team`\n );\n teamMember.username = null;\n }\n });\n } else if (response.isUsernameValid !== true) {\n alert($localize`Invalid username. Please try again.`);\n teamMember.username = null;\n } else if (response.isPasswordValid !== true) {\n alert($localize`Invalid password. Please try again.`);\n }\n teamMember.password = null;\n });\n }\n\n googleSignIn(credential: GoogleUser, teamMember: any): void {\n if (this.isExistingStudent(teamMember)) {\n this.userService.isGoogleIdCorrect(credential.sub, teamMember.id).subscribe((isCorrect) => {\n if (isCorrect) {\n this.markAsSignedIn(teamMember);\n } else {\n alert($localize`Incorrect Google user. Please try again.`);\n }\n });\n } else {\n this.userService.getUserByGoogleId(credential.sub).subscribe((response) => {\n if (response.status === 'success') {\n this.studentService\n .canBeAddedToWorkgroup(this.run.id, this.run.workgroupId, response.userId)\n .subscribe((canBeAddedToWorkgroupResponse) => {\n if (canBeAddedToWorkgroupResponse.isTeacher) {\n alert($localize`A teacher cannot be added as a team member.`);\n } else if (canBeAddedToWorkgroupResponse.status && this.allowSignIn(response, 0)) {\n for (const member of canBeAddedToWorkgroupResponse.workgroupMembers) {\n if (!this.isLoggedInUser(member.username)) {\n const currentMember = this.getTeamMemberByUsernameOrAvailableSlot(\n member.username\n );\n this.updateTeamMember(this.teamMembers.indexOf(currentMember), member);\n }\n }\n this.markAsSignedIn(teamMember);\n } else if (\n canBeAddedToWorkgroupResponse.workgroupMembers.length ===\n this.run.maxStudentsPerTeam\n ) {\n alert(\n $localize`${this.getNameDisplay(\n response\n )}:studentName: is already in a team that is full`\n );\n } else if (!this.allowSignIn(response, 0)) {\n alert(\n $localize`${this.getNameDisplay(response)}:studentName: is already in the team`\n );\n } else {\n alert(\n $localize`${this.getNameDisplay(\n response\n )}:studentName: is already on another team`\n );\n }\n });\n } else if (response.status === 'error') {\n alert($localize`No WISE user with this Google ID found.`);\n }\n });\n }\n }\n\n markAsSignedIn(teamMember: any) {\n teamMember.status = 'signedIn';\n }\n\n markAsNotSignedIn(teamMember: any) {\n teamMember.status = 'notSignedIn';\n }\n\n toggleAbsent(teamMember: any, isAbsent: boolean) {\n isAbsent ? (teamMember.status = 'absent') : (teamMember.status = 'notSignedIn');\n }\n\n isGoogleUser(teamMember: any) {\n return teamMember.isGoogleUser;\n }\n\n isSignedIn(teamMember: any) {\n return teamMember.status === 'signedIn';\n }\n\n isNotSignedIn(teamMember: any) {\n return teamMember.status === 'notSignedIn';\n }\n\n isAbsent(teamMember: any) {\n return teamMember.status === 'absent';\n }\n\n isExistingStudent(teamMember: any) {\n return teamMember.id != null;\n }\n\n isLoggedInUser(username: string): boolean {\n return this.user.username === username;\n }\n\n isCanLaunch() {\n for (let teamMember of this.teamMembers) {\n if (this.isExistingStudent(teamMember) && this.isNotSignedIn(teamMember)) {\n return false;\n }\n }\n return true;\n }\n\n getTeamMemberByUsernameOrAvailableSlot(username: string) {\n for (const teamMember of this.teamMembers) {\n if (teamMember.username === username) {\n return teamMember;\n }\n }\n for (const teamMember of this.teamMembers) {\n if (!teamMember.username) {\n return teamMember;\n }\n }\n }\n\n allowSignIn(teamMember: any, numMembersExpected: number) {\n if (teamMember.username === this.user.username) {\n return false;\n }\n const membersWithSameUsername = this.teamMembers.filter(({ username }) => {\n return username !== undefined && username === teamMember.username;\n });\n return membersWithSameUsername.length === numMembersExpected;\n }\n\n launchRun() {\n const presentUserIds = [this.user.id];\n const absentUserIds = [];\n for (const member of this.teamMembers) {\n if (member.id != null) {\n if (member.status === 'signedIn') {\n presentUserIds.push(member.id);\n } else {\n absentUserIds.push(member.id);\n }\n }\n }\n this.studentService\n .launchRun(this.run.id, this.run.workgroupId, presentUserIds, absentUserIds)\n .subscribe((response: any) => {\n if (response.status === 'error') {\n let targetMember;\n if (this.isLoggedInUserInWorkgroup(response.workgroupMembers)) {\n this.updateTeamMembers(response.workgroupMembers);\n targetMember = this.user;\n } else {\n targetMember = this.removeTeamMembersAlreadyInAWorkgroup(response.workgroupMembers);\n }\n const teamMatesDisplay = this.getWorkgroupTeammatesDisplay(\n response.workgroupMembers,\n targetMember.username\n );\n setTimeout(() => {\n alert(\n $localize`${this.getNameDisplay(\n targetMember\n )}:studentName: is already in a team with ${teamMatesDisplay}:studentNames:`\n );\n }, 100);\n } else {\n this.router.navigateByUrl(response.startProjectUrl);\n this.dialogRef.close();\n }\n });\n }\n\n getNameDisplay(user: any) {\n return `${user.firstName} ${user.lastName} (${user.username})`;\n }\n\n getWorkgroupTeammatesDisplay(workgroupMembers: any[], targetUsername: string) {\n const teamMateNameDisplays = [];\n for (const workgroupMember of workgroupMembers) {\n if (workgroupMember.username !== targetUsername) {\n teamMateNameDisplays.push(this.getNameDisplay(workgroupMember));\n }\n }\n if (teamMateNameDisplays.length <= 1) {\n return teamMateNameDisplays.join();\n }\n const lastNameDisplay = teamMateNameDisplays.pop();\n return `${teamMateNameDisplays.join(', ')} and ${lastNameDisplay}`;\n }\n\n isLoggedInUserInWorkgroup(workgroupMembers: any[]) {\n for (const member of workgroupMembers) {\n if (this.isLoggedInUser(member.username)) {\n return true;\n }\n }\n return false;\n }\n\n updateTeamMembers(workgroupMembers: any[]) {\n const existingWorkgroupMembersNotSignedIn =\n this.getExistingWorkgroupMembersNotSignedIn(workgroupMembers);\n const existingWorkgroupMembersUsernames = workgroupMembers.map((member) => {\n return member.username;\n });\n let existingWorkgroupMemberIndex = 0;\n this.teamMembers.forEach((teamMember, index) => {\n if (!existingWorkgroupMembersUsernames.includes(teamMember.username)) {\n this.clearTeamMember(index);\n if (existingWorkgroupMemberIndex < existingWorkgroupMembersNotSignedIn.length) {\n this.updateTeamMember(\n index,\n existingWorkgroupMembersNotSignedIn[existingWorkgroupMemberIndex]\n );\n existingWorkgroupMemberIndex++;\n }\n }\n });\n }\n\n updateTeamMember(index: number, workgroupMember: any) {\n this.teamMembers[index].username = workgroupMember.username;\n this.teamMembers[index].firstName = workgroupMember.firstName;\n this.teamMembers[index].lastName = workgroupMember.lastName;\n this.teamMembers[index].id = workgroupMember.id;\n this.teamMembers[index].isGoogleUser = workgroupMember.isGoogleUser;\n this.hiddenMembers[index] = false;\n }\n\n getExistingWorkgroupMembersNotSignedIn(workgroupMembers: any[]): any[] {\n const teamMembersUsernames = this.teamMembers.map((member) => {\n return member.username;\n });\n const existingWorkgroupMembersNotSignedIn = [];\n for (const workgroupMember of workgroupMembers) {\n if (\n !this.isLoggedInUser(workgroupMember.username) &&\n !teamMembersUsernames.includes(workgroupMember.username)\n ) {\n existingWorkgroupMembersNotSignedIn.push(workgroupMember);\n }\n }\n return existingWorkgroupMembersNotSignedIn;\n }\n\n removeTeamMembersAlreadyInAWorkgroup(workgroupMembers: any[]): any {\n const workgroupMembersUsernames = workgroupMembers.map((member) => {\n return member.username;\n });\n let removedMember = null;\n this.teamMembers.forEach((teamMember, index) => {\n if (workgroupMembersUsernames.includes(teamMember.username)) {\n this.clearTeamMember(index);\n removedMember = teamMember;\n }\n });\n return removedMember;\n }\n\n clearTeamMember(index: number) {\n this.teamMembers[index] = new Student();\n this.markAsNotSignedIn(this.teamMembers[index]);\n this.hiddenMembers[index] = true;\n }\n}\n", + "styleUrl": "./team-sign-in-dialog.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "userService", + "type": "UserService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentService", + "type": "StudentService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialogRef", + "type": "MatDialogRef", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 23, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "userService", + "type": "UserService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentService", + "type": "StudentService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialogRef", + "type": "MatDialogRef", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "

    Team Sign In

    \n\n

    {{ run.name }}

    \n \n

    \n check\n {{ user.firstName }} {{ user.lastName }}\n ({{ user.username }})\n

    \n @for (teamMember of teamMembers; track teamMember; let i = $index) {\n \n @if (isExistingStudent(teamMember)) {\n

    \n \n @if (isSignedIn(teamMember)) {\n check \n }\n {{ teamMember.firstName }} {{ teamMember.lastName }}\n ({{ teamMember.username }})\n \n \n @if (isExistingStudent(teamMember) && !isSignedIn(teamMember)) {\n \n Absent\n \n }\n

    \n }\n @if (!isSignedIn(teamMember)) {\n @if (!isExistingStudent(teamMember)) {\n

    \n \n

    \n }\n @if (!hiddenMembers[i]) {\n @if (isShowUsernameField(teamMember)) {\n \n Username\n \n \n }\n @if (isShowPasswordField(teamMember)) {\n
    \n \n Password\n \n \n \n check\n \n
    \n }\n @if (isShowSignInWithGoogle(teamMember)) {\n
    \n @if (!isExistingStudent(teamMember)) {\n

    - OR -

    \n }\n \n
    \n }\n }\n }\n }\n
    \n\n \n \n\n" + }, + { + "name": "TimelineComponent", + "id": "component-TimelineComponent-eaa11a38d8cb6401e53560fa2086308120acc741122a06b7569878576879bb17f80ef85a404228d109937296fb1999c20956e12f1b2db73aaddf859c4b176948", + "file": "src/app/modules/timeline/timeline/timeline.component.ts", + "encapsulation": [ + "ViewEncapsulation.None" + ], + "entryComponents": [], + "host": {}, + "inputs": [], + "outputs": [], + "providers": [], + "selector": "app-timeline", + "styleUrls": [], + "styles": [ + "\n .timeline {\n display: block;\n padding: 16px 0;\n }\n " + ], + "template": "", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [], + "methodsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n encapsulation: ViewEncapsulation.None,\n host: { class: 'timeline' },\n selector: 'app-timeline',\n styles: [\n `\n .timeline {\n display: block;\n padding: 16px 0;\n }\n `\n ],\n template: ''\n})\nexport class TimelineComponent {}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "\n .timeline {\n display: block;\n padding: 16px 0;\n }\n \n", + "extends": [] + }, + { + "name": "TimelineItemComponent", + "id": "component-TimelineItemComponent-2a6927d4b48b3b31d524344dcfb7697528b14b8e6b0d96b8a13a293065138e043f60ec903e9f410382902b7f95102f6e44519489b35ad8f258537681b0661917", + "file": "src/app/modules/timeline/timeline-item/timeline-item.component.ts", + "encapsulation": [ + "ViewEncapsulation.None" + ], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "app-timeline-item", + "styleUrls": [], + "styles": [], + "template": "
    \n
    ", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "active", + "deprecated": false, + "deprecationMessage": "", + "line": 24, + "type": "boolean", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [], + "methodsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input, Directive, ViewEncapsulation } from '@angular/core';\n\n@Directive({\n selector: 'app-timeline-item-label',\n host: { class: 'timeline-item__label' }\n})\nexport class TimelineItemLabel {}\n\n@Directive({\n selector: 'app-timeline-item-content',\n host: { class: 'timeline-item__content' }\n})\nexport class TimelineItemContent {}\n\n@Component({\n encapsulation: ViewEncapsulation.None,\n selector: 'app-timeline-item',\n styleUrl: './timeline-item.component.scss',\n template: `
    \n \n
    `\n})\nexport class TimelineItemComponent {\n @Input() active: boolean;\n}\n", + "styleUrl": "./timeline-item.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [] + }, + { + "name": "ToolBarComponent", + "id": "component-ToolBarComponent-96e25fb1a9ad61e2b08d2cfb83cc1024bf2fbd2dd428e3da1ad3e183ec85a11a6cbca1b6b54d31ced239e480b72231c2cf4975eeb5c7cc751ceb0d7dcdfb33a6", + "file": "src/assets/wise5/classroomMonitor/classroomMonitorComponents/shared/tool-bar/tool-bar.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "tool-bar", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./tool-bar.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "workgroupId", + "deprecated": false, + "deprecationMessage": "", + "line": 35, + "type": "number", + "decorators": [] + } + ], + "outputsClass": [ + { + "name": "onMenuToggle", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 29, + "type": "EventEmitter" + } + ], + "propertiesClass": [ + { + "name": "showPeriodSelect", + "defaultValue": "true", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 30, + "modifierKind": [ + 124 + ] + }, + { + "name": "showStepTools", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 31, + "modifierKind": [ + 124 + ] + }, + { + "name": "showTeamTools", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 32, + "modifierKind": [ + 124 + ] + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 33, + "modifierKind": [ + 123 + ] + }, + { + "name": "viewName", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 34, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 44, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 39, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "processUI", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 56, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "subscribeToRouterEvents", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 48, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "toggleMenu", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 71, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "GradingStepToolsComponent", + "type": "component" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatToolbarModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + }, + { + "name": "SaveIndicatorComponent", + "type": "component" + }, + { + "name": "SelectPeriodComponent", + "type": "component" + }, + { + "name": "StudentGradingToolsComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { Subscription, filter } from 'rxjs';\nimport { GradingStepToolsComponent } from '../../grading-step-tools/grading-step-tools.component';\nimport { SelectPeriodComponent } from '../../select-period/select-period.component';\nimport { StudentGradingToolsComponent } from '../../studentGrading/student-grading-tools/student-grading-tools.component';\nimport { SaveIndicatorComponent } from '../../../../common/save-indicator/save-indicator.component';\n\n@Component({\n imports: [\n GradingStepToolsComponent,\n MatButtonModule,\n MatIconModule,\n MatToolbarModule,\n MatTooltipModule,\n SaveIndicatorComponent,\n SelectPeriodComponent,\n StudentGradingToolsComponent\n ],\n selector: 'tool-bar',\n styleUrl: './tool-bar.component.scss',\n templateUrl: './tool-bar.component.html'\n})\nexport class ToolBarComponent implements OnInit {\n @Output() onMenuToggle: EventEmitter = new EventEmitter();\n protected showPeriodSelect: boolean = true;\n protected showStepTools: boolean;\n protected showTeamTools: boolean;\n private subscriptions: Subscription = new Subscription();\n protected viewName: string;\n @Input() workgroupId: number;\n\n constructor(private router: Router) {}\n\n ngOnInit(): void {\n this.processUI();\n this.subscribeToRouterEvents();\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n private subscribeToRouterEvents(): void {\n this.subscriptions.add(\n this.router.events.pipe(filter((event) => event instanceof NavigationEnd)).subscribe(() => {\n this.processUI();\n })\n );\n }\n\n private processUI(): void {\n const path = this.router.url.substring(this.router.url.lastIndexOf('/') + 1);\n this.viewName =\n {\n export: $localize`Data Export`,\n 'manage-students': $localize`Manage Students`,\n milestones: $localize`Milestones`,\n notebook: $localize`Student Notebooks`,\n team: $localize`Grade by Student`\n }[path] ?? $localize`Grade by Step`;\n this.showPeriodSelect = path != 'export';\n this.showTeamTools = /\\/team\\/(\\d+)$/.test(this.router.url);\n this.showStepTools = /node\\/node(\\d+)/.test(this.router.url);\n }\n\n protected toggleMenu(): void {\n this.onMenuToggle.emit();\n }\n}\n", + "styleUrl": "./tool-bar.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 35, + "jsdoctags": [ + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "\n
    \n \n menu\n \n @if (!(showStepTools || showTeamTools)) {\n {{ viewName }}\n } @else if (showStepTools) {\n \n } @else if (showTeamTools) {\n \n }\n \n \n @if (showPeriodSelect) {\n \n }\n
    \n
    \n" + }, + { + "name": "TopBarComponent", + "id": "component-TopBarComponent-2780534b4b5f3c2d7cbec192a1b5a907a1bd9a7a9d9ca557b671b339a12abc4bc9cded998b814e392258f4b943079347ff283d09694af9ec33e1caa53fde431e", + "file": "src/app/student/top-bar/top-bar.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "top-bar", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "top-bar.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "projectName", + "deprecated": false, + "deprecationMessage": "", + "line": 56, + "type": "string", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "accountMenu", + "deprecated": false, + "deprecationMessage": "", + "type": "StudentAccountMenuComponent", + "indexKey": "", + "optional": false, + "description": "", + "line": 44, + "decorators": [ + { + "name": "ViewChild", + "stringifiedArguments": "StudentAccountMenuComponent" + } + ], + "modifierKind": [ + 171 + ] + }, + { + "name": "avatarColor", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 46 + }, + { + "name": "completionPercent", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 47 + }, + { + "name": "hasTranslations", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 48, + "modifierKind": [ + 124 + ] + }, + { + "name": "homeURL", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 49 + }, + { + "name": "isConstraintsDisabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 50 + }, + { + "name": "isPreview", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 51 + }, + { + "name": "logoURL", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 52 + }, + { + "name": "newNotifications", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "Notification[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 53 + }, + { + "name": "notifications", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "Notification[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 54 + }, + { + "name": "projectLocale", + "deprecated": false, + "deprecationMessage": "", + "type": "ProjectLocale", + "indexKey": "", + "optional": false, + "description": "", + "line": 55, + "modifierKind": [ + 124 + ] + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 57 + } + ], + "methodsClass": [ + { + "name": "changeLanguage", + "args": [ + { + "name": "language", + "type": "Language", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 173, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "language", + "type": "Language", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "disableConstraints", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 107, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "getNewAmbientNotifications", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 93, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "hasConstraints", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 112, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "hasNewAmbientNotifications", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 89, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "hasNewNotifications", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 103, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 85, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 70, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "processNotifications", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 141, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "setCompletionPercent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 126, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "setHomeURL", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 162, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "subscribeToNotifications", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 146, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "subscribeToStudentData", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 133, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "viewAlerts", + "args": [ + { + "name": "$event", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 154, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "$event", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "viewCurrentAmbientNotification", + "args": [ + { + "name": "$event", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 116, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "$event", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "MatBadgeModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatDialogModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatMenuModule", + "type": "module" + }, + { + "name": "MatProgressSpinnerModule", + "type": "module" + }, + { + "name": "MatToolbarModule", + "type": "module" + }, + { + "name": "ProjectLanguageChooserComponent", + "type": "component" + }, + { + "name": "StudentAccountMenuComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input, ViewChild } from '@angular/core';\nimport { MatDialog, MatDialogModule } from '@angular/material/dialog';\nimport { Subscription } from 'rxjs';\nimport { ConfigService } from '../../../assets/wise5/services/configService';\nimport { ConstraintService } from '../../../assets/wise5/services/constraintService';\nimport { NodeStatusService } from '../../../assets/wise5/services/nodeStatusService';\nimport { NotificationService } from '../../../assets/wise5/services/notificationService';\nimport { ProjectService } from '../../../assets/wise5/services/projectService';\nimport { StudentDataService } from '../../../assets/wise5/services/studentDataService';\nimport { NotificationsDialogComponent } from '../../../assets/wise5/vle/notifications-dialog/notifications-dialog.component';\nimport { StudentAccountMenuComponent } from '../../../assets/wise5/vle/student-account-menu/student-account-menu.component';\nimport { Notification } from '../../domain/notification';\nimport { getAvatarColorForWorkgroupId } from '../../../assets/wise5/common/workgroup/workgroup';\nimport { Language } from '../../domain/language';\nimport { StudentProjectTranslationService } from '../../../assets/wise5/services/studentProjectTranslationService';\nimport { ProjectLocale } from '../../domain/projectLocale';\nimport { MatButtonModule } from '@angular/material/button';\nimport { CommonModule } from '@angular/common';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatBadgeModule } from '@angular/material/badge';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatIconModule } from '@angular/material/icon';\nimport { ProjectLanguageChooserComponent } from '../../common/project-language-chooser/project-language-chooser.component';\n\n@Component({\n imports: [\n CommonModule,\n MatBadgeModule,\n MatButtonModule,\n MatDialogModule,\n MatIconModule,\n MatMenuModule,\n MatProgressSpinnerModule,\n MatToolbarModule,\n ProjectLanguageChooserComponent,\n StudentAccountMenuComponent\n ],\n selector: 'top-bar',\n styleUrl: './top-bar.component.scss',\n templateUrl: 'top-bar.component.html'\n})\nexport class TopBarComponent {\n @ViewChild(StudentAccountMenuComponent) accountMenu: StudentAccountMenuComponent;\n\n avatarColor: string;\n completionPercent: number;\n protected hasTranslations: boolean;\n homeURL: string;\n isConstraintsDisabled: boolean = false;\n isPreview: boolean = false;\n logoURL: string;\n newNotifications: Notification[] = [];\n notifications: Notification[] = [];\n protected projectLocale: ProjectLocale;\n @Input() projectName: string;\n subscriptions: Subscription = new Subscription();\n\n constructor(\n private dialog: MatDialog,\n private configService: ConfigService,\n private constraintService: ConstraintService,\n private nodeStatusService: NodeStatusService,\n private notificationService: NotificationService,\n private projectService: ProjectService,\n private studentDataService: StudentDataService,\n private projectTranslationService: StudentProjectTranslationService\n ) {}\n\n ngOnInit(): void {\n this.avatarColor = getAvatarColorForWorkgroupId(this.configService.getWorkgroupId());\n this.logoURL = `${this.projectService.getThemePath()}/images/WISE-logo-ffffff.svg`;\n this.isPreview = this.configService.isPreview();\n this.isConstraintsDisabled = !this.configService.getConfigParam('constraints');\n this.projectLocale = this.projectService.getLocale();\n this.hasTranslations = this.projectLocale.hasTranslations();\n\n this.setCompletionPercent();\n this.subscribeToStudentData();\n this.processNotifications();\n this.subscribeToNotifications();\n this.setHomeURL();\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n hasNewAmbientNotifications(): boolean {\n return this.getNewAmbientNotifications().length > 0;\n }\n\n private getNewAmbientNotifications(): any[] {\n return this.notifications.filter((notification: Notification) => {\n return (\n notification.timeDismissed == null &&\n notification.data != null &&\n notification.data.isAmbient\n );\n });\n }\n\n hasNewNotifications(): boolean {\n return this.newNotifications.length > 0;\n }\n\n protected disableConstraints(): void {\n this.isConstraintsDisabled = true;\n this.constraintService.clearActiveConstraints();\n }\n\n protected hasConstraints(): boolean {\n return this.constraintService.hasActiveConstraints();\n }\n\n viewCurrentAmbientNotification($event: any): void {\n const ambientNotifications = this.getNewAmbientNotifications();\n if (ambientNotifications.length) {\n this.notificationService.broadcastViewCurrentAmbientNotification({\n event: $event,\n notification: ambientNotifications[0]\n });\n }\n }\n\n private setCompletionPercent(): void {\n this.completionPercent =\n this.nodeStatusService.getNodeStatuses()[\n this.projectService.getProjectRootNode().id\n ].progress.completionPct;\n }\n\n private subscribeToStudentData(): void {\n this.subscriptions.add(\n this.studentDataService.componentStudentData$.subscribe(() => {\n this.setCompletionPercent();\n })\n );\n }\n\n private processNotifications(): void {\n this.notifications = this.notificationService.notifications;\n this.newNotifications = this.notificationService.getNewNotifications();\n }\n\n private subscribeToNotifications(): void {\n this.subscriptions.add(\n this.notificationService.notificationChanged$.subscribe(() => {\n this.processNotifications();\n })\n );\n }\n\n protected viewAlerts($event: any): void {\n $event.stopPropagation();\n this.dialog.open(NotificationsDialogComponent, {\n panelClass: 'dialog-sm',\n autoFocus: false\n });\n }\n\n private setHomeURL(): void {\n const userType = this.configService.getConfigParam('userType');\n if (userType === 'student') {\n this.homeURL = '/student';\n } else if (userType === 'teacher') {\n this.homeURL = '/teacher';\n } else {\n this.homeURL = '/';\n }\n }\n\n protected changeLanguage(language: Language): void {\n this.projectTranslationService.switchLanguage(language, 'student');\n this.studentDataService.updateNodeStatuses();\n }\n}\n", + "styleUrl": "./top-bar.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "constraintService", + "type": "ConstraintService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeStatusService", + "type": "NodeStatusService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "notificationService", + "type": "NotificationService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentDataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectTranslationService", + "type": "StudentProjectTranslationService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 57, + "jsdoctags": [ + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "constraintService", + "type": "ConstraintService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeStatusService", + "type": "NodeStatusService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "notificationService", + "type": "NotificationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentDataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectTranslationService", + "type": "StudentProjectTranslationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "\n \n
    \n \"WISE\n \n

    {{ projectName }}

    \n \n
    \n @if (isPreview && !isConstraintsDisabled && hasConstraints()) {\n \n Turn Off Constraints\n \n }\n @if (isConstraintsDisabled) {\n Constraints Are Off\n }\n
    \n
    \n @if (hasTranslations) {\n \n }\n \n notifications\n \n
    \n \n \n \n \n account_circle\n \n
    \n
    \n \n\n" + }, + { + "name": "TopBarComponent", + "id": "component-TopBarComponent-91534865cb6e7e10d3a46ea4d5b312ef846e1383ead7db4a53021a5f862bb75eabe837c3a9500afb130063a6673865fdfb47b2d20e7fb92617da7d29d877104c-1", + "file": "src/assets/wise5/authoringTool/components/top-bar/top-bar.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "at-top-bar", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./top-bar.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "logoPath", + "deprecated": false, + "deprecationMessage": "", + "line": 36, + "type": "string", + "decorators": [] + }, + { + "name": "projectId", + "deprecated": false, + "deprecationMessage": "", + "line": 37, + "type": "number", + "decorators": [] + }, + { + "name": "projectTitle", + "deprecated": false, + "deprecationMessage": "", + "line": 40, + "type": "string", + "decorators": [] + }, + { + "name": "runCode", + "deprecated": false, + "deprecationMessage": "", + "line": 42, + "type": "string", + "decorators": [] + }, + { + "name": "runId", + "deprecated": false, + "deprecationMessage": "", + "line": 41, + "type": "number", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "avatarColor", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 33, + "modifierKind": [ + 124 + ] + }, + { + "name": "contextPath", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 34, + "modifierKind": [ + 124 + ] + }, + { + "name": "hasTranslations", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 35, + "modifierKind": [ + 124 + ] + }, + { + "name": "projectInfo", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 38, + "modifierKind": [ + 124 + ] + }, + { + "name": "projectLocale", + "deprecated": false, + "deprecationMessage": "", + "type": "ProjectLocale", + "indexKey": "", + "optional": false, + "description": "", + "line": 39, + "modifierKind": [ + 124 + ] + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 43, + "modifierKind": [ + 123 + ] + }, + { + "name": "userInfo", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 44, + "modifierKind": [ + 124 + ] + }, + { + "name": "workgroupId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 45, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "changeLanguage", + "args": [ + { + "name": "language", + "type": "Language", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 134, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "language", + "type": "Language", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getProjectInfo", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 87, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "goHome", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 124, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "logOut", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 130, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "ngOnChanges", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 78, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 74, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 56, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "previewProject", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 95, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "showHelp", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 104, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "switchToGradingView", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 111, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "updateTranslationModel", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 69, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatMenuModule", + "type": "module" + }, + { + "name": "MatToolbarModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + }, + { + "name": "ProjectLanguageChooserComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input, OnInit } from '@angular/core';\nimport { getAvatarColorForWorkgroupId } from '../../../common/workgroup/workgroup';\nimport { ConfigService } from '../../../services/configService';\nimport { SessionService } from '../../../services/sessionService';\nimport { TeacherProjectService } from '../../../services/teacherProjectService';\nimport { Router } from '@angular/router';\nimport { ProjectLocale } from '../../../../../app/domain/projectLocale';\nimport { Language } from '../../../../../app/domain/language';\nimport { Subscription } from 'rxjs';\nimport { TeacherDataService } from '../../../services/teacherDataService';\nimport { NotifyAuthorService } from '../../../services/notifyAuthorService';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatButtonModule } from '@angular/material/button';\nimport { ProjectLanguageChooserComponent } from '../../../../../app/common/project-language-chooser/project-language-chooser.component';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatToolbarModule } from '@angular/material/toolbar';\n\n@Component({\n imports: [\n MatButtonModule,\n MatIconModule,\n MatMenuModule,\n MatToolbarModule,\n MatTooltipModule,\n ProjectLanguageChooserComponent\n ],\n selector: 'at-top-bar',\n styleUrl: './top-bar.component.scss',\n templateUrl: './top-bar.component.html'\n})\nexport class TopBarComponent implements OnInit {\n protected avatarColor: any;\n protected contextPath: string;\n protected hasTranslations: boolean;\n @Input() logoPath: string;\n @Input() projectId: number;\n protected projectInfo: string;\n protected projectLocale: ProjectLocale;\n @Input() projectTitle: string;\n @Input() runId: number;\n @Input() runCode: string;\n private subscriptions = new Subscription();\n protected userInfo: any;\n protected workgroupId: number;\n\n constructor(\n private configService: ConfigService,\n private dataService: TeacherDataService,\n private notifyAuthorService: NotifyAuthorService,\n private projectService: TeacherProjectService,\n private router: Router,\n private sessionService: SessionService\n ) {}\n\n ngOnInit(): void {\n this.workgroupId = this.configService.getWorkgroupId();\n if (this.workgroupId == null) {\n this.workgroupId = 100 * Math.random();\n }\n this.avatarColor = getAvatarColorForWorkgroupId(this.workgroupId);\n this.userInfo = this.configService.getMyUserInfo();\n this.contextPath = this.configService.getContextPath();\n this.subscriptions.add(\n this.projectService.projectSaved$.subscribe(() => this.updateTranslationModel())\n );\n }\n\n private updateTranslationModel(): void {\n this.projectLocale = this.projectService.getLocale();\n this.hasTranslations = this.projectLocale.hasTranslations();\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n ngOnChanges(): void {\n if (this.projectId) {\n this.projectInfo = this.getProjectInfo();\n this.updateTranslationModel();\n } else {\n this.hasTranslations = false;\n }\n }\n\n private getProjectInfo(): string {\n let projectInfo = $localize`ID: ${this.projectId}`;\n if (this.runId) {\n projectInfo += ` | ` + $localize`Run ID: ${this.runId} | Access Code: ${this.runCode}`;\n }\n return projectInfo;\n }\n\n protected previewProject(): void {\n let previewUrl = this.configService.getConfigParam('previewProjectURL');\n const nodeId = this.dataService.getCurrentNodeId();\n if (nodeId != null) {\n previewUrl += `/${nodeId}`;\n }\n window.open(previewUrl);\n }\n\n protected showHelp(): void {\n window.open(\n 'https://docs.google.com/document/d/1G8lVtiUlGXLRAyFOvkEdadHYhJhJLW4aor9dol2VzeU',\n '_blank'\n );\n }\n\n protected switchToGradingView(): void {\n if (/unit\\/(\\d*)\\/node\\/(\\w*)$/.test(this.router.url)) {\n this.router.navigate([\n '/teacher/manage/unit',\n this.runId,\n 'node',\n this.router.url.match(/\\/node\\/(\\w+)$/)[1]\n ]);\n } else {\n this.router.navigate(['/teacher/manage/unit', this.runId]);\n }\n }\n\n protected goHome(): void {\n this.notifyAuthorService.editEnd(this.projectId).then(() => {\n this.sessionService.goHome();\n });\n }\n\n protected logOut(): void {\n this.sessionService.logOut();\n }\n\n protected changeLanguage(language: Language): void {\n this.projectService.setCurrentLanguage(language);\n this.projectService.uiChanged();\n }\n}\n", + "styleUrl": "./top-bar.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "notifyAuthorService", + "type": "NotifyAuthorService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "sessionService", + "type": "SessionService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 45, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "notifyAuthorService", + "type": "NotifyAuthorService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "sessionService", + "type": "SessionService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ], + "isDuplicate": true, + "duplicateId": 1, + "duplicateName": "TopBarComponent-1", + "templateData": "\n \n \n \"WISE\n \n \n

    \n @if (projectTitle) {\n {{ projectTitle }} \n ({{ projectInfo }})\n \n info\n \n } @else {\n Authoring Tool \n }\n

    \n\n @if (runId) {\n \n assignment_turned_in\n \n }\n @if (projectId) {\n \n }\n \n @if (hasTranslations) {\n \n }\n \n Help\n \n \n account_box\n \n \n \n
    \n
    \n account_circle \n
    \n
    \n
    \n {{ userInfo.firstName }} {{ userInfo.lastName }}\n ({{ userInfo.username }})\n
    \n \n
    \n \n \n \n
    \n
    \n
    \n" + }, + { + "name": "TopBarComponent", + "id": "component-TopBarComponent-f520bd5bc3a1087759482204fe76fdf68b3f8d5c0bd36cbe9241ec5ebbd6a8fcba54fb3a89d987a3457a7e07b2f3684d09ba6987ec9c7e6268feedbdf474374e-2", + "file": "src/assets/wise5/classroomMonitor/classroomMonitorComponents/shared/top-bar/top-bar.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "top-bar", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./top-bar.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "logoPath", + "deprecated": false, + "deprecationMessage": "", + "line": 38, + "type": "string", + "decorators": [] + }, + { + "name": "notifications", + "deprecated": false, + "deprecationMessage": "", + "line": 41, + "type": "any", + "decorators": [] + }, + { + "name": "projectId", + "deprecated": false, + "deprecationMessage": "", + "line": 42, + "type": "number", + "decorators": [] + }, + { + "name": "projectTitle", + "deprecated": false, + "deprecationMessage": "", + "line": 43, + "type": "string", + "decorators": [] + }, + { + "name": "runCode", + "deprecated": false, + "deprecationMessage": "", + "line": 45, + "type": "string", + "decorators": [] + }, + { + "name": "runId", + "deprecated": false, + "deprecationMessage": "", + "line": 44, + "type": "number", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "avatarColor", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 35, + "modifierKind": [ + 124 + ] + }, + { + "name": "canAuthorProject", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 36, + "modifierKind": [ + 124 + ] + }, + { + "name": "contextPath", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 37, + "modifierKind": [ + 124 + ] + }, + { + "name": "newNotifications", + "defaultValue": "[]", + "deprecated": false, + "deprecationMessage": "", + "type": "Notification[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 39, + "modifierKind": [ + 124 + ] + }, + { + "name": "notificationChangedSubscription", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 40, + "modifierKind": [ + 123 + ] + }, + { + "name": "runInfo", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 46, + "modifierKind": [ + 124 + ] + }, + { + "name": "userInfo", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 47, + "modifierKind": [ + 124 + ] + }, + { + "name": "workgroupId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 48, + "modifierKind": [ + 123 + ] + } + ], + "methodsClass": [ + { + "name": "getCurrentNodeId", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 121, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "goHome", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 129, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "isAnyPeriodPaused", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 99, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "isViewingNode", + "args": [], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 117, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "logOut", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 133, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "ngOnChanges", + "args": [ + { + "name": "changesObj", + "type": "SimpleChanges", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 81, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "changesObj", + "type": "SimpleChanges", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 77, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 58, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "previewProject", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 125, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "setNotifications", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 91, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nFind all teacher notifications and separate into new and dismissed arrays\nTODO: move to TeacherDataService?\n", + "description": "

    Find all teacher notifications and separate into new and dismissed arrays\nTODO: move to TeacherDataService?

    \n", + "modifierKind": [ + 123 + ] + }, + { + "name": "switchToAuthoringView", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 103, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatMenuModule", + "type": "module" + }, + { + "name": "MatToolbarModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + }, + { + "name": "NotificationsMenuComponent", + "type": "component" + }, + { + "name": "PauseScreensMenuComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input, OnInit, SimpleChanges } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { ConfigService } from '../../../../services/configService';\nimport { TeacherDataService } from '../../../../services/teacherDataService';\nimport { SessionService } from '../../../../services/sessionService';\nimport { NotificationService } from '../../../../services/notificationService';\nimport { Notification } from '../../../../../../app/domain/notification';\nimport { getAvatarColorForWorkgroupId } from '../../../../common/workgroup/workgroup';\nimport { Router } from '@angular/router';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { CommonModule } from '@angular/common';\nimport { NotificationsMenuComponent } from '../notifications-menu/notifications-menu.component';\nimport { PauseScreensMenuComponent } from '../../pause-screens-menu/pause-screens-menu.component';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@Component({\n imports: [\n CommonModule,\n MatButtonModule,\n MatIconModule,\n MatMenuModule,\n MatToolbarModule,\n MatTooltipModule,\n NotificationsMenuComponent,\n PauseScreensMenuComponent\n ],\n selector: 'top-bar',\n styleUrl: './top-bar.component.scss',\n templateUrl: './top-bar.component.html'\n})\nexport class TopBarComponent implements OnInit {\n protected avatarColor: any;\n protected canAuthorProject: boolean;\n protected contextPath: string;\n @Input() logoPath: string;\n protected newNotifications: Notification[] = [];\n private notificationChangedSubscription: Subscription;\n @Input() notifications: any;\n @Input() projectId: number;\n @Input() projectTitle: string;\n @Input() runId: number;\n @Input() runCode: string;\n protected runInfo: string;\n protected userInfo: any;\n private workgroupId: number;\n\n constructor(\n private configService: ConfigService,\n private dataService: TeacherDataService,\n private notificationService: NotificationService,\n private router: Router,\n private sessionService: SessionService\n ) {}\n\n ngOnInit(): void {\n this.workgroupId = this.configService.getWorkgroupId();\n if (this.workgroupId == null) {\n this.workgroupId = 100 * Math.random();\n }\n this.avatarColor = getAvatarColorForWorkgroupId(this.workgroupId);\n this.userInfo = this.configService.getMyUserInfo();\n this.notificationChangedSubscription = this.notificationService.notificationChanged$.subscribe(\n () => {\n this.setNotifications();\n }\n );\n this.contextPath = this.configService.getContextPath();\n const permissions = this.configService.getPermissions();\n this.canAuthorProject = permissions.canAuthorProject;\n this.runInfo = $localize`Run ID: ${this.runId} | Access Code: ${this.runCode}`;\n this.setNotifications();\n }\n\n ngOnDestroy(): void {\n this.notificationChangedSubscription.unsubscribe();\n }\n\n ngOnChanges(changesObj: SimpleChanges): void {\n if (changesObj.notifications) {\n this.setNotifications();\n }\n }\n\n /**\n * Find all teacher notifications and separate into new and dismissed arrays\n * TODO: move to TeacherDataService?\n */\n private setNotifications(): void {\n // TODO: take into account shared teacher users!\n this.newNotifications = this.notificationService.getLatestActiveNotificationsFromUniqueSource(\n this.notifications,\n this.workgroupId\n );\n }\n\n protected isAnyPeriodPaused(): boolean {\n return this.dataService.getPeriods().some((period) => period.paused);\n }\n\n protected switchToAuthoringView(): void {\n if (\n confirm(\n $localize`Warning! You will be editing the content of a classroom unit. If students have already started working, this may result in lost data or other problems.\\n\\nAre you sure you want to proceed?`\n )\n ) {\n const urlFragments = ['/teacher/edit/unit', this.projectId];\n if (this.isViewingNode()) {\n urlFragments.push('node', this.getCurrentNodeId());\n }\n this.router.navigate(urlFragments);\n }\n }\n\n private isViewingNode(): boolean {\n return /unit\\/(\\d*)\\/node\\/(\\w*)$/.test(this.router.url);\n }\n\n private getCurrentNodeId(): string {\n return this.router.url.match(/\\/node\\/(\\w+)$/)[1];\n }\n\n protected previewProject(): void {\n window.open(this.dataService.getPreviewUrl());\n }\n\n protected goHome(): void {\n this.sessionService.goHome();\n }\n\n protected logOut(): void {\n this.sessionService.logOut();\n }\n}\n", + "styleUrl": "./top-bar.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "notificationService", + "type": "NotificationService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "sessionService", + "type": "SessionService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 48, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "notificationService", + "type": "NotificationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "sessionService", + "type": "SessionService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ], + "isDuplicate": true, + "duplicateId": 2, + "duplicateName": "TopBarComponent-2", + "templateData": "\n \n \n \"WISE\n \n \n

    \n {{ projectTitle }} \n \n \n @if (canAuthorProject) {\n \n edit\n \n }\n\n \n preview\n \n

    \n \n \n @if (newNotifications.length > 0) {\n {{ newNotifications.length }} \n }\n notifications\n \n \n \n \n \n \n @if (isAnyPeriodPaused()) {\n pause_circle_filled\n } @else {\n pause_circle_outline\n }\n \n \n \n \n \n \n account_box\n \n \n
    \n
    \n
    \n account_circle \n
    \n
    \n
    \n {{ userInfo.firstName }} {{ userInfo.lastName }}\n ({{ userInfo.username }})\n
    \n
    \n
    \n \n \n \n
    \n
    \n
    \n" + }, + { + "name": "TranslatableAssetChooserComponent", + "id": "component-TranslatableAssetChooserComponent-1e53391d33afa05dfc56a34ba78400a89bfcaac962a46362e51d9fa4df68cb355e25e28e0ff442f4c3debedac775208612b7f5e386f958c8b0c0aecae680a521", + "file": "src/assets/wise5/authoringTool/components/translatable-asset-chooser/translatable-asset-chooser.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "translatable-asset-chooser", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./translatable-asset-chooser.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "processAsset", + "defaultValue": "(value) => {\n return value;\n }", + "deprecated": false, + "deprecationMessage": "", + "line": 20, + "type": "function", + "decorators": [] + }, + { + "name": "tooltip", + "defaultValue": "$localize`Choose image`", + "deprecated": false, + "deprecationMessage": "", + "line": 19, + "type": "String", + "decorators": [] + }, + { + "name": "content", + "deprecated": false, + "deprecationMessage": "", + "line": 13, + "type": "object", + "decorators": [], + "inheritance": { + "file": "AbstractTranslatableFieldComponent" + } + }, + { + "name": "hint", + "deprecated": false, + "deprecationMessage": "", + "line": 18, + "type": "string", + "decorators": [], + "inheritance": { + "file": "AbstractTranslatableFieldComponent" + } + }, + { + "name": "key", + "deprecated": false, + "deprecationMessage": "", + "line": 20, + "type": "string", + "decorators": [], + "inheritance": { + "file": "AbstractTranslatableFieldComponent" + } + }, + { + "name": "label", + "deprecated": false, + "deprecationMessage": "", + "line": 21, + "type": "string", + "decorators": [], + "inheritance": { + "file": "AbstractTranslatableFieldComponent" + } + }, + { + "name": "placeholder", + "deprecated": false, + "deprecationMessage": "", + "line": 22, + "type": "string", + "decorators": [], + "inheritance": { + "file": "AbstractTranslatableFieldComponent" + } + } + ], + "outputsClass": [ + { + "name": "defaultLanguageTextChanged", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "line": 17, + "type": "Subject", + "inheritance": { + "file": "AbstractTranslatableFieldComponent" + } + } + ], + "propertiesClass": [ + { + "name": "currentLanguage", + "defaultValue": "this.projectService.currentLanguage", + "deprecated": false, + "deprecationMessage": "", + "type": "Signal", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractTranslatableFieldComponent" + } + }, + { + "name": "currentTranslations$", + "defaultValue": "toObservable(this.projectTranslationService.currentTranslations)", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "AbstractTranslatableFieldComponent" + } + }, + { + "name": "defaultLanguage", + "defaultValue": "this.projectService.getLocale().getDefaultLanguage()", + "deprecated": false, + "deprecationMessage": "", + "type": "Language", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractTranslatableFieldComponent" + } + }, + { + "name": "i18nId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractTranslatableFieldComponent" + } + }, + { + "name": "showTranslationInput", + "defaultValue": "computed(\n () => !this.projectService.isDefaultLocale()\n )", + "deprecated": false, + "deprecationMessage": "", + "type": "Signal", + "indexKey": "", + "optional": false, + "description": "", + "line": 23, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractTranslatableFieldComponent" + } + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 26, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractTranslatableFieldComponent" + } + }, + { + "name": "translationText", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 27, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractTranslatableFieldComponent" + } + }, + { + "name": "translationTextChanged", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 28, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractTranslatableFieldComponent" + } + } + ], + "methodsClass": [ + { + "name": "chooseAsset", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 32, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "createI18NField", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 67, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "AbstractTranslatableFieldComponent" + } + }, + { + "name": "ngOnChanges", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 34, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractTranslatableFieldComponent" + } + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 55, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractTranslatableFieldComponent" + } + }, + { + "name": "saveTranslationText", + "args": [ + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 73, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractTranslatableFieldComponent" + } + }, + { + "name": "setI18nId", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 59, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "AbstractTranslatableFieldComponent" + } + }, + { + "name": "setTranslationText", + "args": [ + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 63, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractTranslatableFieldComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatTooltipModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { AssetChooser } from '../../project-asset-authoring/asset-chooser';\nimport { MatDialog } from '@angular/material/dialog';\nimport { filter } from 'rxjs';\nimport { AbstractTranslatableFieldComponent } from '../abstract-translatable-field/abstract-translatable-field.component';\nimport { TeacherProjectService } from '../../../services/teacherProjectService';\nimport { TeacherProjectTranslationService } from '../../../services/teacherProjectTranslationService';\n\n@Component({\n selector: 'translatable-asset-chooser',\n imports: [MatButtonModule, MatIconModule, MatTooltipModule],\n templateUrl: './translatable-asset-chooser.component.html',\n styleUrl: './translatable-asset-chooser.component.scss'\n})\nexport class TranslatableAssetChooserComponent extends AbstractTranslatableFieldComponent {\n @Input() tooltip: String = $localize`Choose image`;\n @Input() processAsset: (value: string) => string = (value) => {\n return value;\n };\n\n constructor(\n private dialog: MatDialog,\n protected projectService: TeacherProjectService,\n protected projectTranslationService: TeacherProjectTranslationService\n ) {\n super(projectService, projectTranslationService);\n }\n\n protected chooseAsset(): void {\n new AssetChooser(this.dialog)\n .open(this.key, this.content)\n .afterClosed()\n .pipe(filter((data) => data != null))\n .subscribe(({ assetItem }) => {\n const value = this.processAsset(assetItem.fileName);\n if (this.showTranslationInput()) {\n this.translationTextChanged.next(value);\n } else {\n this.content[this.key] = value;\n this.defaultLanguageTextChanged.next(value);\n }\n });\n }\n}\n", + "styleUrl": "./translatable-asset-chooser.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectTranslationService", + "type": "TeacherProjectTranslationService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 22, + "jsdoctags": [ + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectTranslationService", + "type": "TeacherProjectTranslationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "AbstractTranslatableFieldComponent" + ], + "templateData": "\n insert_photo\n\n" + }, + { + "name": "TranslatableInputComponent", + "id": "component-TranslatableInputComponent-4975d64805a0312ca0ffabbe35d5d338369f2b7c63c3d77538f74d294d73b0c36e45fe91a7f866c096e5f38abd8553fdb22a51a816f490fa26e41a861ac0f227", + "file": "src/assets/wise5/authoringTool/components/translatable-input/translatable-input.component.ts", + "encapsulation": [ + "ViewEncapsulation.None" + ], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "translatable-input", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./translatable-input.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "content", + "deprecated": false, + "deprecationMessage": "", + "line": 13, + "type": "object", + "decorators": [], + "inheritance": { + "file": "AbstractTranslatableFieldComponent" + } + }, + { + "name": "hint", + "deprecated": false, + "deprecationMessage": "", + "line": 18, + "type": "string", + "decorators": [], + "inheritance": { + "file": "AbstractTranslatableFieldComponent" + } + }, + { + "name": "key", + "deprecated": false, + "deprecationMessage": "", + "line": 20, + "type": "string", + "decorators": [], + "inheritance": { + "file": "AbstractTranslatableFieldComponent" + } + }, + { + "name": "label", + "deprecated": false, + "deprecationMessage": "", + "line": 21, + "type": "string", + "decorators": [], + "inheritance": { + "file": "AbstractTranslatableFieldComponent" + } + }, + { + "name": "placeholder", + "deprecated": false, + "deprecationMessage": "", + "line": 22, + "type": "string", + "decorators": [], + "inheritance": { + "file": "AbstractTranslatableFieldComponent" + } + } + ], + "outputsClass": [ + { + "name": "defaultLanguageTextChanged", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "line": 17, + "type": "Subject", + "inheritance": { + "file": "AbstractTranslatableFieldComponent" + } + } + ], + "propertiesClass": [ + { + "name": "currentLanguage", + "defaultValue": "this.projectService.currentLanguage", + "deprecated": false, + "deprecationMessage": "", + "type": "Signal", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractTranslatableFieldComponent" + } + }, + { + "name": "currentTranslations$", + "defaultValue": "toObservable(this.projectTranslationService.currentTranslations)", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "AbstractTranslatableFieldComponent" + } + }, + { + "name": "defaultLanguage", + "defaultValue": "this.projectService.getLocale().getDefaultLanguage()", + "deprecated": false, + "deprecationMessage": "", + "type": "Language", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractTranslatableFieldComponent" + } + }, + { + "name": "i18nId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractTranslatableFieldComponent" + } + }, + { + "name": "showTranslationInput", + "defaultValue": "computed(\n () => !this.projectService.isDefaultLocale()\n )", + "deprecated": false, + "deprecationMessage": "", + "type": "Signal", + "indexKey": "", + "optional": false, + "description": "", + "line": 23, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractTranslatableFieldComponent" + } + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 26, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractTranslatableFieldComponent" + } + }, + { + "name": "translationText", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 27, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractTranslatableFieldComponent" + } + }, + { + "name": "translationTextChanged", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 28, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractTranslatableFieldComponent" + } + } + ], + "methodsClass": [ + { + "name": "createI18NField", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 67, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "AbstractTranslatableFieldComponent" + } + }, + { + "name": "ngOnChanges", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 34, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractTranslatableFieldComponent" + } + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 55, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractTranslatableFieldComponent" + } + }, + { + "name": "saveTranslationText", + "args": [ + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 73, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractTranslatableFieldComponent" + } + }, + { + "name": "setI18nId", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 59, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "AbstractTranslatableFieldComponent" + } + }, + { + "name": "setTranslationText", + "args": [ + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 63, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractTranslatableFieldComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatInputModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, ViewEncapsulation } from '@angular/core';\nimport { MatInputModule } from '@angular/material/input';\nimport { FormsModule } from '@angular/forms';\nimport { AbstractTranslatableFieldComponent } from '../abstract-translatable-field/abstract-translatable-field.component';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n selector: 'translatable-input',\n imports: [FormsModule, MatIconModule, MatInputModule],\n styleUrl: '../abstract-translatable-field/abstract-translatable-field.component.scss',\n templateUrl: './translatable-input.component.html',\n encapsulation: ViewEncapsulation.None\n})\nexport class TranslatableInputComponent extends AbstractTranslatableFieldComponent {}\n", + "styleUrl": "../abstract-translatable-field/abstract-translatable-field.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [ + "AbstractTranslatableFieldComponent" + ], + "templateData": "@if (showTranslationInput()) {\n \n {{ label }} ({{ currentLanguage().language }})\n \n @if (hint) {\n {{ hint }}\n }\n \n translate {{ defaultLanguage.language }}:\n {{ content[key] }}\n \n \n} @else {\n \n {{ label }}\n \n @if (hint) {\n {{ hint }}\n }\n \n}\n" + }, + { + "name": "TranslatableRichTextEditorComponent", + "id": "component-TranslatableRichTextEditorComponent-856f7a3f91fae32577d088ab21d0899c111c9d9b3c4966e9098cbadc0388a566ff20e00243bf0f37f427437d3d0103693a4d2765fc6bce5edd8e79ff437a45b0", + "file": "src/assets/wise5/authoringTool/components/translatable-rich-text-editor/translatable-rich-text-editor.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "translatable-rich-text-editor", + "styleUrls": [], + "styles": [ + ".translation-tools { padding: 8px 0; }" + ], + "templateUrl": [ + "./translatable-rich-text-editor.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "content", + "deprecated": false, + "deprecationMessage": "", + "line": 13, + "type": "object", + "decorators": [], + "inheritance": { + "file": "AbstractTranslatableFieldComponent" + } + }, + { + "name": "hint", + "deprecated": false, + "deprecationMessage": "", + "line": 18, + "type": "string", + "decorators": [], + "inheritance": { + "file": "AbstractTranslatableFieldComponent" + } + }, + { + "name": "key", + "deprecated": false, + "deprecationMessage": "", + "line": 20, + "type": "string", + "decorators": [], + "inheritance": { + "file": "AbstractTranslatableFieldComponent" + } + }, + { + "name": "label", + "deprecated": false, + "deprecationMessage": "", + "line": 21, + "type": "string", + "decorators": [], + "inheritance": { + "file": "AbstractTranslatableFieldComponent" + } + }, + { + "name": "placeholder", + "deprecated": false, + "deprecationMessage": "", + "line": 22, + "type": "string", + "decorators": [], + "inheritance": { + "file": "AbstractTranslatableFieldComponent" + } + } + ], + "outputsClass": [ + { + "name": "defaultLanguageTextChanged", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "line": 17, + "type": "Subject", + "inheritance": { + "file": "AbstractTranslatableFieldComponent" + } + } + ], + "propertiesClass": [ + { + "name": "html", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 18, + "modifierKind": [ + 124 + ] + }, + { + "name": "tabs", + "deprecated": false, + "deprecationMessage": "", + "type": "MatTabGroup", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "decorators": [ + { + "name": "ViewChild", + "stringifiedArguments": "MatTabGroup" + } + ], + "modifierKind": [ + 171, + 123 + ] + }, + { + "name": "currentLanguage", + "defaultValue": "this.projectService.currentLanguage", + "deprecated": false, + "deprecationMessage": "", + "type": "Signal", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractTranslatableFieldComponent" + } + }, + { + "name": "currentTranslations$", + "defaultValue": "toObservable(this.projectTranslationService.currentTranslations)", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "AbstractTranslatableFieldComponent" + } + }, + { + "name": "defaultLanguage", + "defaultValue": "this.projectService.getLocale().getDefaultLanguage()", + "deprecated": false, + "deprecationMessage": "", + "type": "Language", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractTranslatableFieldComponent" + } + }, + { + "name": "i18nId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractTranslatableFieldComponent" + } + }, + { + "name": "showTranslationInput", + "defaultValue": "computed(\n () => !this.projectService.isDefaultLocale()\n )", + "deprecated": false, + "deprecationMessage": "", + "type": "Signal", + "indexKey": "", + "optional": false, + "description": "", + "line": 23, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractTranslatableFieldComponent" + } + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 26, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractTranslatableFieldComponent" + } + }, + { + "name": "translationText", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 27, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractTranslatableFieldComponent" + } + }, + { + "name": "translationTextChanged", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 28, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractTranslatableFieldComponent" + } + } + ], + "methodsClass": [ + { + "name": "copyDefaultLanguageText", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 45, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "ngOnChanges", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 29, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractTranslatableFieldComponent" + } + }, + { + "name": "saveDefaultLanguageText", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 38, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "saveTranslationText", + "args": [ + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 61, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractTranslatableFieldComponent" + } + }, + { + "name": "setTranslationText", + "args": [ + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 34, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractTranslatableFieldComponent" + } + }, + { + "name": "createI18NField", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 67, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "AbstractTranslatableFieldComponent" + } + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 55, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractTranslatableFieldComponent" + } + }, + { + "name": "setI18nId", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 59, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "AbstractTranslatableFieldComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatTabsModule", + "type": "module" + }, + { + "name": "WiseAuthoringTinymceEditorComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, ViewChild } from '@angular/core';\nimport { AbstractTranslatableFieldComponent } from '../abstract-translatable-field/abstract-translatable-field.component';\nimport { WiseAuthoringTinymceEditorComponent } from '../../../directives/wise-tinymce-editor/wise-authoring-tinymce-editor.component';\nimport { MatTabGroup, MatTabsModule } from '@angular/material/tabs';\nimport { insertWiseLinks, replaceWiseLinks } from '../../../common/wise-link/wise-link';\nimport { ConfigService } from '../../../services/configService';\nimport { TeacherProjectTranslationService } from '../../../services/teacherProjectTranslationService';\nimport { TeacherProjectService } from '../../../services/teacherProjectService';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n imports: [MatButtonModule, MatTabsModule, WiseAuthoringTinymceEditorComponent],\n selector: 'translatable-rich-text-editor',\n styles: ['.translation-tools { padding: 8px 0; }'],\n templateUrl: './translatable-rich-text-editor.component.html'\n})\nexport class TranslatableRichTextEditorComponent extends AbstractTranslatableFieldComponent {\n protected html: string = '';\n @ViewChild(MatTabGroup) private tabs: MatTabGroup;\n\n constructor(\n private configService: ConfigService,\n protected projectService: TeacherProjectService,\n protected projectTranslationService: TeacherProjectTranslationService\n ) {\n super(projectService, projectTranslationService);\n }\n\n ngOnChanges(): void {\n super.ngOnChanges();\n this.html = this.projectService.replaceAssetPaths(replaceWiseLinks(this.content[this.key]));\n }\n\n protected setTranslationText(text: string): void {\n this.translationText = this.projectService.replaceAssetPaths(replaceWiseLinks(text));\n }\n\n protected saveDefaultLanguageText(): void {\n this.content[this.key] = insertWiseLinks(\n this.configService.removeAbsoluteAssetPaths(this.html)\n );\n this.defaultLanguageTextChanged.next(this.content[this.key]);\n }\n\n protected copyDefaultLanguageText(): void {\n if (\n this.translationText == undefined ||\n this.translationText === '' ||\n confirm(\n $localize`Are you sure you want to replace the content in ${\n this.currentLanguage().language\n } with content in ${this.defaultLanguage.language} for this item?`\n )\n ) {\n this.setTranslationText(this.html);\n this.translationTextChanged.next(this.html);\n this.tabs.selectedIndex = 0;\n }\n }\n\n protected saveTranslationText(text: string): void {\n super.saveTranslationText(insertWiseLinks(this.configService.removeAbsoluteAssetPaths(text)));\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": ".translation-tools { padding: 8px 0; }\n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectTranslationService", + "type": "TeacherProjectTranslationService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 19, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectTranslationService", + "type": "TeacherProjectTranslationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "AbstractTranslatableFieldComponent" + ], + "templateData": "@if (showTranslationInput()) {\n \n \n \n
    \n \n Copy content from {{ defaultLanguage.language }}\n \n
    \n \n
    \n
    \n \n \n
    \n Note: Editing is disabled. Please switch back to {{ defaultLanguage.language }} if you\n want to edit.\n \n Copy content to {{ currentLanguage().language }}\n \n
    \n \n
    \n
    \n
    \n} @else {\n \n}\n" + }, + { + "name": "TranslatableTextareaComponent", + "id": "component-TranslatableTextareaComponent-c7525e08a6dd0b131506fe8bdea80c45e539a7550a1c25d72eb68cb30c8909fbd1b7d5b0f77821e5237a736023766ddb987c903bf0d15129282e4d3bce297166", + "file": "src/assets/wise5/authoringTool/components/translatable-textarea/translatable-textarea.component.ts", + "encapsulation": [ + "ViewEncapsulation.None" + ], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "translatable-textarea", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./translatable-textarea.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "content", + "deprecated": false, + "deprecationMessage": "", + "line": 13, + "type": "object", + "decorators": [], + "inheritance": { + "file": "AbstractTranslatableFieldComponent" + } + }, + { + "name": "hint", + "deprecated": false, + "deprecationMessage": "", + "line": 18, + "type": "string", + "decorators": [], + "inheritance": { + "file": "AbstractTranslatableFieldComponent" + } + }, + { + "name": "key", + "deprecated": false, + "deprecationMessage": "", + "line": 20, + "type": "string", + "decorators": [], + "inheritance": { + "file": "AbstractTranslatableFieldComponent" + } + }, + { + "name": "label", + "deprecated": false, + "deprecationMessage": "", + "line": 21, + "type": "string", + "decorators": [], + "inheritance": { + "file": "AbstractTranslatableFieldComponent" + } + }, + { + "name": "placeholder", + "deprecated": false, + "deprecationMessage": "", + "line": 22, + "type": "string", + "decorators": [], + "inheritance": { + "file": "AbstractTranslatableFieldComponent" + } + } + ], + "outputsClass": [ + { + "name": "defaultLanguageTextChanged", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "line": 17, + "type": "Subject", + "inheritance": { + "file": "AbstractTranslatableFieldComponent" + } + } + ], + "propertiesClass": [ + { + "name": "currentLanguage", + "defaultValue": "this.projectService.currentLanguage", + "deprecated": false, + "deprecationMessage": "", + "type": "Signal", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractTranslatableFieldComponent" + } + }, + { + "name": "currentTranslations$", + "defaultValue": "toObservable(this.projectTranslationService.currentTranslations)", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "AbstractTranslatableFieldComponent" + } + }, + { + "name": "defaultLanguage", + "defaultValue": "this.projectService.getLocale().getDefaultLanguage()", + "deprecated": false, + "deprecationMessage": "", + "type": "Language", + "indexKey": "", + "optional": false, + "description": "", + "line": 16, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractTranslatableFieldComponent" + } + }, + { + "name": "i18nId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractTranslatableFieldComponent" + } + }, + { + "name": "showTranslationInput", + "defaultValue": "computed(\n () => !this.projectService.isDefaultLocale()\n )", + "deprecated": false, + "deprecationMessage": "", + "type": "Signal", + "indexKey": "", + "optional": false, + "description": "", + "line": 23, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractTranslatableFieldComponent" + } + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 26, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractTranslatableFieldComponent" + } + }, + { + "name": "translationText", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 27, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractTranslatableFieldComponent" + } + }, + { + "name": "translationTextChanged", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 28, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "AbstractTranslatableFieldComponent" + } + } + ], + "methodsClass": [ + { + "name": "createI18NField", + "args": [], + "optional": false, + "returnType": "Promise", + "typeParameters": [], + "line": 67, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "AbstractTranslatableFieldComponent" + } + }, + { + "name": "ngOnChanges", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 34, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractTranslatableFieldComponent" + } + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 55, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "AbstractTranslatableFieldComponent" + } + }, + { + "name": "saveTranslationText", + "args": [ + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 73, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractTranslatableFieldComponent" + } + }, + { + "name": "setI18nId", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 59, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "AbstractTranslatableFieldComponent" + } + }, + { + "name": "setTranslationText", + "args": [ + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 63, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "AbstractTranslatableFieldComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatInputModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, ViewEncapsulation } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatInputModule } from '@angular/material/input';\nimport { AbstractTranslatableFieldComponent } from '../abstract-translatable-field/abstract-translatable-field.component';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n selector: 'translatable-textarea',\n imports: [FormsModule, MatIconModule, MatInputModule],\n styleUrl: '../abstract-translatable-field/abstract-translatable-field.component.scss',\n templateUrl: './translatable-textarea.component.html',\n encapsulation: ViewEncapsulation.None\n})\nexport class TranslatableTextareaComponent extends AbstractTranslatableFieldComponent {}\n", + "styleUrl": "../abstract-translatable-field/abstract-translatable-field.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [ + "AbstractTranslatableFieldComponent" + ], + "templateData": "@if (showTranslationInput()) {\n \n {{ label }} ({{ currentLanguage().language }})\n \n @if (hint) {\n {{ hint }}\n }\n \n translate {{ defaultLanguage.language }}:\n {{ content[key] }}\n \n \n} @else {\n \n {{ label }}\n \n @if (hint) {\n {{ hint }}\n }\n \n}\n" + }, + { + "name": "UnitTagsComponent", + "id": "component-UnitTagsComponent-4e3aa349cc93ed3edf01453ee3aeffc42aa959122b90d6c0bbbc5a88573de25b8875295964dfd87f30cb835189228281c0062aa5a895ca5b428f068e6009341c", + "file": "src/app/teacher/unit-tags/unit-tags.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "unit-tags", + "styleUrls": [], + "styles": [ + "tag { display: inline-block; margin-top: 8px; }" + ], + "template": "
    \n @for (tag of tags; track tag) {\n @if (tag.text !== 'archived') {\n \n }\n }\n
    ", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "tags", + "deprecated": false, + "deprecationMessage": "", + "line": 23, + "type": "Tag[]", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [], + "methodsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "TagComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input } from '@angular/core';\nimport { TagComponent } from '../tag/tag.component';\nimport { Tag } from '../../domain/tag';\n\n@Component({\n imports: [TagComponent],\n selector: 'unit-tags',\n styles: ['tag { display: inline-block; margin-top: 8px; }'],\n template: `\n @for (tag of tags; track tag) {\n @if (tag.text !== 'archived') {\n \n }\n }\n `\n})\nexport class UnitTagsComponent {\n @Input() tags: Tag[];\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "tag { display: inline-block; margin-top: 8px; }\n", + "extends": [] + }, + { + "name": "UnlinkGoogleAccountConfirmComponent", + "id": "component-UnlinkGoogleAccountConfirmComponent-6bca1fe310e14d52c93172aafbbf54d0d08f6f1dcea43e05187dc7cb3166acd961a77b9a6376b7ca620099bcf050c12c060c43b4e53771e875cecee3ff0a07f6", + "file": "src/app/modules/shared/unlink-google-account-confirm/unlink-google-account-confirm.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [ + "./unlink-google-account-confirm.component.scss" + ], + "styles": [], + "templateUrl": [ + "./unlink-google-account-confirm.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "dialog", + "deprecated": false, + "deprecationMessage": "", + "type": "MatDialog", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "modifierKind": [ + 125 + ] + } + ], + "methodsClass": [ + { + "name": "continue", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 13, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { UnlinkGoogleAccountPasswordComponent } from '../unlink-google-account-password/unlink-google-account-password.component';\n\n@Component({\n styleUrls: ['./unlink-google-account-confirm.component.scss'],\n templateUrl: './unlink-google-account-confirm.component.html',\n standalone: false\n})\nexport class UnlinkGoogleAccountConfirmComponent {\n constructor(public dialog: MatDialog) {}\n\n continue() {\n this.dialog.closeAll();\n this.dialog.open(UnlinkGoogleAccountPasswordComponent, {\n panelClass: 'dialog-sm'\n });\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": [ + { + "data": ".google-icon {\n height: 1.4em;\n width: auto;\n}", + "styleUrl": "./unlink-google-account-confirm.component.scss" + } + ], + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 10, + "jsdoctags": [ + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "

    \n \"Google\n Unlink Google Account\n \n warning\n

    \n\n
    \n

    \n To remove the link to your Google account, you will be asked to create a WISE password. In the\n future, you'll sign in to WISE using your username and password.\n

    \n

    \n You will no longer be able to sign in to WISE using Google. Would you like to\n continue?\n

    \n
    \n
    \n\n \n \n\n" + }, + { + "name": "UnlinkGoogleAccountPasswordComponent", + "id": "component-UnlinkGoogleAccountPasswordComponent-a4970e1b58267dd19fe81969308714eb2f66b80cc09823f4329053555029f163959eb1c7304348148c0917982579e964edeb3770ed791df678a428459893a65f", + "file": "src/app/modules/shared/unlink-google-account-password/unlink-google-account-password.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [ + "./unlink-google-account-password.component.scss" + ], + "styles": [], + "templateUrl": [ + "./unlink-google-account-password.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "dialog", + "deprecated": false, + "deprecationMessage": "", + "type": "MatDialog", + "indexKey": "", + "optional": false, + "description": "", + "line": 21, + "modifierKind": [ + 125 + ] + }, + { + "name": "isSaving", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 15 + }, + { + "name": "newPasswordFormGroup", + "defaultValue": "this.fb.group({})", + "deprecated": false, + "deprecationMessage": "", + "type": "FormGroup", + "indexKey": "", + "optional": false, + "description": "", + "line": 16 + } + ], + "methodsClass": [ + { + "name": "error", + "args": [ + { + "name": "error", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 54, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "error", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngAfterViewChecked", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 25, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "submit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 29, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "success", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 46, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { ChangeDetectorRef, Component } from '@angular/core';\nimport { FormBuilder, FormGroup } from '@angular/forms';\nimport { MatDialog } from '@angular/material/dialog';\nimport { NewPasswordAndConfirmComponent } from '../../../password/new-password-and-confirm/new-password-and-confirm.component';\nimport { UserService } from '../../../services/user.service';\nimport { UnlinkGoogleAccountSuccessComponent } from '../unlink-google-account-success/unlink-google-account-success.component';\nimport { injectPasswordErrors } from '../../../common/password-helper';\n\n@Component({\n styleUrls: ['./unlink-google-account-password.component.scss'],\n templateUrl: './unlink-google-account-password.component.html',\n standalone: false\n})\nexport class UnlinkGoogleAccountPasswordComponent {\n isSaving: boolean = false;\n newPasswordFormGroup: FormGroup = this.fb.group({});\n\n constructor(\n private changeDetectorRef: ChangeDetectorRef,\n private fb: FormBuilder,\n public dialog: MatDialog,\n private userService: UserService\n ) {}\n\n ngAfterViewChecked(): void {\n this.changeDetectorRef.detectChanges();\n }\n\n submit(): void {\n this.isSaving = true;\n this.userService\n .unlinkGoogleUser(\n this.newPasswordFormGroup.get(NewPasswordAndConfirmComponent.NEW_PASSWORD_FORM_CONTROL_NAME)\n .value\n )\n .subscribe(\n () => {\n this.success();\n },\n (response: any) => {\n this.error(response.error);\n }\n );\n }\n\n private success(): void {\n this.isSaving = false;\n this.dialog.closeAll();\n this.dialog.open(UnlinkGoogleAccountSuccessComponent, {\n panelClass: 'dialog-sm'\n });\n }\n\n private error(error: any): void {\n this.isSaving = false;\n if (error.messageCode === 'invalidPassword') {\n injectPasswordErrors(this.newPasswordFormGroup, error);\n }\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": [ + { + "data": ".google-icon {\n height: 1.4em;\n width: auto;\n}\n", + "styleUrl": "./unlink-google-account-password.component.scss" + } + ], + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "changeDetectorRef", + "type": "ChangeDetectorRef", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "fb", + "type": "FormBuilder", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "userService", + "type": "UserService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 16, + "jsdoctags": [ + { + "name": "changeDetectorRef", + "type": "ChangeDetectorRef", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "fb", + "type": "FormBuilder", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "userService", + "type": "UserService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "

    \n \"Google\n Unlink Google Account\n

    \n
    \n \n

    Create a WISE password:

    \n \n
    \n \n \n \n Submit\n @if (isSaving) {\n \n }\n \n \n
    \n" + }, + { + "name": "UnlinkGoogleAccountSuccessComponent", + "id": "component-UnlinkGoogleAccountSuccessComponent-4ad07d52ab1e53d13ab93974937802b66eb503389277f1b96347806d43d40e791aa26dda9a872c06c9205789f7bf774624a2fc39e35ef11fccc4104dc43e48a8", + "file": "src/app/modules/shared/unlink-google-account-success/unlink-google-account-success.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [ + "unlink-google-account-success.component.scss" + ], + "styles": [], + "templateUrl": [ + "unlink-google-account-success.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "username", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 11 + } + ], + "methodsClass": [ + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 15, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { Teacher } from '../../../domain/teacher';\nimport { UserService } from '../../../services/user.service';\n\n@Component({\n styleUrls: ['unlink-google-account-success.component.scss'],\n templateUrl: 'unlink-google-account-success.component.html',\n standalone: false\n})\nexport class UnlinkGoogleAccountSuccessComponent {\n username: string;\n\n constructor(private userService: UserService) {}\n\n ngOnInit() {\n const user = this.userService.getUser().getValue();\n this.username = user.username;\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": [ + { + "data": ".google-icon {\n height: 1.4em;\n width: auto;\n}\n", + "styleUrl": "unlink-google-account-success.component.scss" + } + ], + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "userService", + "type": "UserService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 11, + "jsdoctags": [ + { + "name": "userService", + "type": "UserService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "

    \n \"Google\n Unlink Google Account\n

    \n\n
    \n

    \n Success! You have unlinked your Google account from WISE. To sign in to WISE in the future,\n please use your username and the password you just created.\n

    \n

    \n Your username is: {{ username }}.\n

    \n
    \n
    \n\n \n\n" + }, + { + "name": "ViewComponentRevisionsComponent", + "id": "component-ViewComponentRevisionsComponent-808bc42e85fce8c511f7d317d8a64f2bad36b4bfa28bd077814a9d6c4b1da46d304871625dadb721495a454cdb22caf93d1cd0a8971b3f739f69023cb0a335d5", + "file": "src/assets/wise5/classroomMonitor/classroomMonitorComponents/view-component-revisions/view-component-revisions.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "view-component-revisions", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "view-component-revisions.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 29, + "modifierKind": [ + 124 + ] + }, + { + "name": "data", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 43, + "decorators": [ + { + "name": "Inject", + "stringifiedArguments": "MAT_DIALOG_DATA" + } + ], + "modifierKind": [ + 171, + 125 + ] + }, + { + "name": "fromWorkgroupId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 30, + "modifierKind": [ + 124 + ] + }, + { + "name": "increment", + "defaultValue": "5", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 31, + "modifierKind": [ + 123 + ] + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 32, + "modifierKind": [ + 124 + ] + }, + { + "name": "numRevisionsShown", + "defaultValue": "5", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 33, + "modifierKind": [ + 124 + ] + }, + { + "name": "revisions", + "defaultValue": "{}", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 34, + "modifierKind": [ + 123 + ] + }, + { + "name": "revisionsSorted", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 35, + "modifierKind": [ + 124 + ] + }, + { + "name": "totalRevisions", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 36, + "modifierKind": [ + 124 + ] + }, + { + "name": "usernames", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 37, + "modifierKind": [ + 124 + ] + }, + { + "name": "workgroupId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 38, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "getNodeEnteredEvents", + "args": [], + "optional": false, + "returnType": "Observable", + "typeParameters": [], + "line": 131, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "isRevision", + "args": [ + { + "name": "state", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "stateIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 113, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "state", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "stateIndex", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 47, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "populateData", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 61, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nSet the revisions for this workgroup and component.\nA component state counts as a revision if it is a submit, has an annotation associated\nwith it, or is the last component state for a node visit.\n", + "description": "

    Set the revisions for this workgroup and component.\nA component state counts as a revision if it is a submit, has an annotation associated\nwith it, or is the last component state for a node visit.

    \n", + "modifierKind": [ + 123 + ] + }, + { + "name": "populateDataHelper", + "args": [ + { + "name": "nodeVisits", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 73, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeVisits", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "showMore", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 143, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "sortRevisions", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 125, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "MatDialogModule", + "type": "module" + }, + { + "name": "MatListModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "ComponentGradingComponent", + "type": "component" + }, + { + "name": "ComponentStateInfoComponent", + "type": "component" + }, + { + "name": "EditComponentAnnotationsComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';\nimport { MatListModule } from '@angular/material/list';\nimport { AnnotationService } from '../../../services/annotationService';\nimport { ConfigService } from '../../..//services/configService';\nimport { TeacherDataService } from '../../..//services/teacherDataService';\nimport { ComponentGradingComponent } from '../component-grading.component';\nimport { ComponentStateInfoComponent } from '../../../common/component-state-info/component-state-info.component';\nimport { EditComponentAnnotationsComponent } from '../edit-component-annotations/edit-component-annotations.component';\nimport { Observable } from 'rxjs';\n\n@Component({\n imports: [\n CommonModule,\n MatDialogModule,\n MatListModule,\n MatButtonModule,\n ComponentGradingComponent,\n ComponentStateInfoComponent,\n EditComponentAnnotationsComponent\n ],\n selector: 'view-component-revisions',\n styleUrl: 'view-component-revisions.component.scss',\n templateUrl: 'view-component-revisions.component.html'\n})\nexport class ViewComponentRevisionsComponent {\n protected componentId: string;\n protected fromWorkgroupId: number;\n private increment: number = 5;\n protected nodeId: string;\n protected numRevisionsShown: number = 5;\n private revisions: any = {};\n protected revisionsSorted: any[];\n protected totalRevisions: number;\n protected usernames: string[];\n protected workgroupId: number;\n\n constructor(\n private annotationService: AnnotationService,\n private configService: ConfigService,\n @Inject(MAT_DIALOG_DATA) public data: any,\n private dataService: TeacherDataService\n ) {}\n\n ngOnInit() {\n this.componentId = this.data.componentId;\n this.fromWorkgroupId = this.data.fromWorkgroupId;\n this.nodeId = this.data.nodeId;\n this.workgroupId = this.data.workgroupId;\n this.usernames = this.configService.getDisplayNamesByWorkgroupId(this.workgroupId);\n this.populateData();\n }\n\n /**\n * Set the revisions for this workgroup and component.\n * A component state counts as a revision if it is a submit, has an annotation associated\n * with it, or is the last component state for a node visit.\n */\n private populateData(): void {\n this.revisions = {};\n this.totalRevisions = 0;\n this.getNodeEnteredEvents().subscribe(({ events }) => {\n const nodeVisits = events.map((event) => ({\n serverSaveTime: event.serverSaveTime,\n states: []\n }));\n this.populateDataHelper(nodeVisits);\n });\n }\n\n private populateDataHelper(nodeVisits: any[]): void {\n // group all component states by node visit\n for (let i = this.data.componentStates.length - 1; i > -1; i--) {\n const componentState = this.data.componentStates[i];\n if (nodeVisits.length > 0) {\n // add state to corresponding node visit\n for (let j = nodeVisits.length - 1; j > -1; j--) {\n const nodeVisit = nodeVisits[j];\n if (componentState.serverSaveTime >= nodeVisit.serverSaveTime) {\n nodeVisit.states.push(componentState);\n break;\n }\n }\n } else {\n // we don't have any node visits, so count all all states as revisions.\n this.totalRevisions++;\n this.revisions[componentState.id] = {\n clientSaveTime: this.configService.convertToClientTimestamp(\n componentState.serverSaveTime\n ),\n componentState: componentState\n };\n }\n }\n\n // find revisions in each node visit and add to model\n nodeVisits.forEach((nodeVisit) => {\n nodeVisit.states\n .filter((state, index) => this.isRevision(state, index))\n .forEach((state) => {\n this.totalRevisions++;\n this.revisions[state.id] = {\n clientSaveTime: this.configService.convertToClientTimestamp(state.serverSaveTime),\n componentState: state\n };\n });\n });\n this.sortRevisions();\n }\n\n private isRevision(state: any, stateIndex: number): boolean {\n return (\n stateIndex === 0 ||\n state.isSubmit ||\n this.annotationService\n .getAnnotationsByStudentWorkId(state.id)\n .some((annotation) =>\n ['score', 'autoScore', 'comment', 'autoComment'].includes(annotation.type)\n )\n );\n }\n\n private sortRevisions(): void {\n this.revisionsSorted = Object.values(this.revisions).sort(\n (a: any, b: any) => b.clientSaveTime - a.clientSaveTime\n );\n }\n\n private getNodeEnteredEvents(): Observable {\n return this.dataService.retrieveStudentData({\n getAnnotations: false,\n getEvents: true,\n getStudentWork: false,\n event: 'nodeEntered',\n nodeId: this.nodeId,\n workgroupId: this.workgroupId,\n runId: this.configService.getRunId()\n });\n }\n\n protected showMore(): void {\n this.numRevisionsShown += this.increment;\n }\n}\n", + "styleUrl": "view-component-revisions.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 38, + "jsdoctags": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "

    Revisions for {{ usernames }}

    \n\n \n @for (revision of revisionsSorted; track revision; let i = $index; let isFirst = $first) {\n \n @if (i < numRevisionsShown) {\n
    \n

    \n #{{ totalRevisions - i }}\n @if (isFirst) {\n (Latest)\n }\n

    \n
    \n
    \n \n \n
    \n \n
    \n
    \n \n
    \n
    \n }\n \n }\n @if (totalRevisions > numRevisionsShown) {\n
    \n \n
    \n }\n
    \n
    \n\n \n\n" + }, + { + "name": "VLEComponent", + "id": "component-VLEComponent-36f80659af91c834168ee0a813b2b1de812d6d328d33d8c38e3177c01c7475c7a903a2da06a0337a10a0a8a774f4850206c02d98dcf15614e6771050edb1b379", + "file": "src/assets/wise5/vle/vle.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "vle", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./vle.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "currentNode", + "deprecated": false, + "deprecationMessage": "", + "type": "Node", + "indexKey": "", + "optional": false, + "description": "", + "line": 63, + "modifierKind": [ + 124 + ] + }, + { + "name": "defaultVLETemplate", + "deprecated": false, + "deprecationMessage": "", + "type": "TemplateRef", + "indexKey": "", + "optional": false, + "description": "", + "line": 64, + "decorators": [ + { + "name": "ViewChild", + "stringifiedArguments": "'defaultVLETemplate'" + } + ], + "modifierKind": [ + 171, + 123 + ] + }, + { + "name": "drawer", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 65, + "decorators": [ + { + "name": "ViewChild", + "stringifiedArguments": "'drawer'" + } + ], + "modifierKind": [ + 171, + 125 + ] + }, + { + "name": "initialized", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 66, + "modifierKind": [ + 124 + ] + }, + { + "name": "isSurvey", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 67, + "modifierKind": [ + 123 + ] + }, + { + "name": "layoutState", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 68, + "modifierKind": [ + 124 + ] + }, + { + "name": "notebookConfig", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 69, + "modifierKind": [ + 124 + ] + }, + { + "name": "notesEnabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 70, + "modifierKind": [ + 124 + ] + }, + { + "name": "notesVisible", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 71, + "modifierKind": [ + 124 + ] + }, + { + "name": "project", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 72, + "modifierKind": [ + 124 + ] + }, + { + "name": "projectStylePath", + "deprecated": false, + "deprecationMessage": "", + "type": "SafeResourceUrl", + "indexKey": "", + "optional": false, + "description": "", + "line": 73, + "modifierKind": [ + 124 + ] + }, + { + "name": "reportEnabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 74, + "modifierKind": [ + 124 + ] + }, + { + "name": "reportFullscreen", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 75, + "modifierKind": [ + 124 + ] + }, + { + "name": "runEndedAndLocked", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 76, + "modifierKind": [ + 124 + ] + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 77, + "modifierKind": [ + 123 + ] + }, + { + "name": "tabbedVLETemplate", + "deprecated": false, + "deprecationMessage": "", + "type": "TemplateRef", + "indexKey": "", + "optional": false, + "description": "", + "line": 78, + "decorators": [ + { + "name": "ViewChild", + "stringifiedArguments": "'tabbedVLETemplate'" + } + ], + "modifierKind": [ + 171, + 123 + ] + }, + { + "name": "vleTemplate", + "deprecated": false, + "deprecationMessage": "", + "type": "TemplateRef", + "indexKey": "", + "optional": false, + "description": "", + "line": 79, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "beforeUnload", + "args": [ + { + "name": "$event", + "type": "BeforeUnloadEvent", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 100, + "deprecated": false, + "deprecationMessage": "", + "decorators": [ + { + "name": "HostListener", + "stringifiedArguments": "'window:beforeunload', ['$event']" + } + ], + "modifierKind": [ + 171 + ], + "jsdoctags": [ + { + "name": "$event", + "type": "BeforeUnloadEvent", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "closeNotes", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 201, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "createNodeEnteredEvent", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 443, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "createNodeEvent", + "args": [ + { + "name": "eventName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "this.currentNode.id" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 451, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "eventName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "this.currentNode.id", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createNodeExitedEvent", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "this.currentNode.id" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 447, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "this.currentNode.id", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getImageObjectFromImageElement", + "args": [ + { + "name": "image", + "type": "HTMLImageElement", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "File", + "typeParameters": [], + "line": 193, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "image", + "type": "HTMLImageElement", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getWISEAPI", + "args": [], + "optional": false, + "returnType": "{ registerAdditionalProcessingFunction: (nodeId: any, componentId: any, additionalProcessingFunction: any) => void; createAutoScoreAnnotation: (nodeId: any, componentId: any, data: any) => any; createAutoCommentAnnotation: (nodeId: any, componentId: any, data: any) => any; getLatestAnnotationForComponent: (nodeId: a...", + "typeParameters": [], + "line": 339, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nReturns WISE API\n", + "description": "

    Returns WISE API

    \n" + }, + { + "name": "initializeSubscriptions", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 205, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "initRestOfVLE", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 120, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "logOut", + "args": [ + { + "name": "eventName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "'logOut'" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 289, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "eventName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "'logOut'", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngAfterViewInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 110, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 170, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "renewSession", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 332, + "deprecated": false, + "deprecationMessage": "", + "decorators": [ + { + "name": "HostListener", + "stringifiedArguments": "'document:mousemove'" + } + ], + "modifierKind": [ + 171, + 124 + ] + }, + { + "name": "saveNodeEnteredEvent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 435, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "saveNodeExitedEvent", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 439, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "scrollToTop", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 327, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "setCurrentNode", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 181, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "setLayoutState", + "args": [ + { + "name": "state", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 307, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nSet the layout state of the vle\n", + "description": "

    Set the layout state of the vle

    \n", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": { + "pos": 11040, + "end": 11045, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "state" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "pos": 11034, + "end": 11039, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    string specifying state (e.g. 'notebook'; optional)

    \n" + } + ] + }, + { + "name": "setProject", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 176, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "snipImage", + "args": [ + { + "name": "image", + "type": "HTMLImageElement", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 186, + "deprecated": false, + "deprecationMessage": "", + "decorators": [ + { + "name": "HostListener", + "stringifiedArguments": "'window:snip-image', ['$event.detail.target']" + } + ], + "modifierKind": [ + 171 + ], + "jsdoctags": [ + { + "name": "image", + "type": "HTMLImageElement", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "subscribeToCurrentNodeChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 236, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "subscribeToNotesVisible", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 260, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "subscribeToReportFullScreen", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 273, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "subscribeToShowSessionWarning", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 214, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "subscribeToViewCurrentAmbientNotification", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 281, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [ + { + "name": "document:mousemove", + "args": [], + "argsDecorator": [], + "deprecated": false, + "deprecationMessage": "", + "line": 332 + }, + { + "name": "window:beforeunload", + "args": [ + { + "name": "$event", + "type": "BeforeUnloadEvent", + "deprecated": false, + "deprecationMessage": "" + } + ], + "argsDecorator": [ + "$event" + ], + "deprecated": false, + "deprecationMessage": "", + "line": 100 + }, + { + "name": "window:snip-image", + "args": [ + { + "name": "image", + "type": "HTMLImageElement", + "deprecated": false, + "deprecationMessage": "" + } + ], + "argsDecorator": [ + "$event.detail.target" + ], + "deprecated": false, + "deprecationMessage": "", + "line": 186 + } + ], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "GroupTabsComponent", + "type": "component" + }, + { + "name": "MatSidenavModule", + "type": "module" + }, + { + "name": "NavigationComponent", + "type": "component" + }, + { + "name": "NodeComponent", + "type": "component" + }, + { + "name": "NodeNavigationComponent", + "type": "component" + }, + { + "name": "NotebookLauncherComponent", + "type": "component" + }, + { + "name": "NotebookNotesComponent", + "type": "component" + }, + { + "name": "NotebookReportComponent", + "type": "component" + }, + { + "name": "RunEndedAndLockedMessageComponent", + "type": "component" + }, + { + "name": "SafeUrl" + }, + { + "name": "StepToolsComponent", + "type": "component" + }, + { + "name": "TopBarComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { ActivatedRoute, Router } from '@angular/router';\nimport {\n AfterViewInit,\n Component,\n HostListener,\n TemplateRef,\n ViewChild,\n inject\n} from '@angular/core';\nimport { AnnotationService } from '../services/annotationService';\nimport { CommonModule } from '@angular/common';\nimport { ConfigService } from '../services/configService';\nimport { convertToPNGFile } from '../common/canvas/canvas';\nimport { DialogWithConfirmComponent } from '../directives/dialog-with-confirm/dialog-with-confirm.component';\nimport { GroupTabsComponent } from '../directives/group-tabs/group-tabs.component';\nimport { InitializeVLEService } from '../services/initializeVLEService';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatSidenavModule } from '@angular/material/sidenav';\nimport { NavigationComponent } from '../themes/default/navigation/navigation.component';\nimport { Node } from '../common/Node';\nimport { NodeComponent } from './node/node.component';\nimport { NodeNavigationComponent } from '../directives/node-navigation/node-navigation.component';\nimport { NodeStatusService } from '../services/nodeStatusService';\nimport { NotebookLauncherComponent } from '../../../app/notebook/notebook-launcher/notebook-launcher.component';\nimport { NotebookNotesComponent } from '../../../app/notebook/notebook-notes/notebook-notes.component';\nimport { NotebookReportComponent } from '../../../app/notebook/notebook-report/notebook-report.component';\nimport { NotebookService } from '../services/notebookService';\nimport { NotificationService } from '../services/notificationService';\nimport { RunEndedAndLockedMessageComponent } from './run-ended-and-locked-message/run-ended-and-locked-message.component';\nimport { SafeResourceUrl } from '@angular/platform-browser';\nimport { SafeUrl } from '../directives/safeUrl/safe-url.pipe';\nimport { SessionService } from '../services/sessionService';\nimport { GenerateImageService } from '../services/generateImageService';\nimport { StepToolsComponent } from '../themes/default/themeComponents/stepTools/step-tools.component';\nimport { StudentDataService } from '../services/studentDataService';\nimport { StudentService } from '../../../app/student/student.service';\nimport { Subscription } from 'rxjs';\nimport { TopBarComponent } from '../../../app/student/top-bar/top-bar.component';\nimport { VLEProjectService } from './vleProjectService';\nimport { WiseLinkService } from '../../../app/services/wiseLinkService';\n\n@Component({\n imports: [\n CommonModule,\n GroupTabsComponent,\n MatSidenavModule,\n NavigationComponent,\n NodeComponent,\n NodeNavigationComponent,\n NotebookLauncherComponent,\n NotebookNotesComponent,\n NotebookReportComponent,\n RunEndedAndLockedMessageComponent,\n SafeUrl,\n StepToolsComponent,\n TopBarComponent\n ],\n selector: 'vle',\n styleUrl: './vle.component.scss',\n templateUrl: './vle.component.html'\n})\nexport class VLEComponent implements AfterViewInit {\n protected currentNode: Node;\n @ViewChild('defaultVLETemplate') private defaultVLETemplate: TemplateRef;\n @ViewChild('drawer') public drawer: any;\n protected initialized: boolean;\n private isSurvey: boolean;\n protected layoutState: string;\n protected notebookConfig: any;\n protected notesEnabled: boolean = false;\n protected notesVisible: boolean = false;\n protected project: any;\n protected projectStylePath: SafeResourceUrl;\n protected reportEnabled: boolean = false;\n protected reportFullscreen: boolean = false;\n protected runEndedAndLocked: boolean;\n private subscriptions: Subscription = new Subscription();\n @ViewChild('tabbedVLETemplate') private tabbedVLETemplate: TemplateRef;\n protected vleTemplate: TemplateRef;\n\n constructor(\n private annotationService: AnnotationService,\n private configService: ConfigService,\n private dialog: MatDialog,\n private generateImageService: GenerateImageService, // need to keep a reference so it gets instantiated\n private initializeVLEService: InitializeVLEService,\n private nodeStatusService: NodeStatusService,\n private notebookService: NotebookService,\n private notificationService: NotificationService,\n private projectService: VLEProjectService,\n private route: ActivatedRoute,\n private router: Router,\n private sessionService: SessionService,\n private studentDataService: StudentDataService,\n private studentService: StudentService,\n private wiseLinkService: WiseLinkService\n ) {}\n\n @HostListener('window:beforeunload', ['$event'])\n beforeUnload($event: BeforeUnloadEvent): void {\n if (this.isSurvey) {\n // prevents the browser from showing a confirmation dialog\n $event.stopImmediatePropagation();\n }\n if (this.sessionService.isSessionActive()) {\n this.saveNodeExitedEvent();\n }\n }\n\n ngAfterViewInit(): void {\n this.initializeVLEService.initialized$.subscribe((initialized: boolean) => {\n if (initialized) {\n this.initRestOfVLE();\n this.initialized = true;\n }\n });\n this.wiseLinkService.addWiseLinkClickedListener();\n }\n\n private initRestOfVLE(): void {\n this.setProject();\n this.vleTemplate =\n this.projectService.project.theme === 'tab'\n ? this.tabbedVLETemplate\n : this.defaultVLETemplate;\n this.projectStylePath =\n this.configService.getProjectAssetsDirectoryPath() + '/project_styles.css';\n if (this.notebookService.isNotebookEnabled()) {\n this.notebookConfig = this.notebookService.getStudentNotebookConfig();\n this.notesEnabled = this.notebookConfig.itemTypes.note.enabled;\n this.reportEnabled = this.notebookConfig.itemTypes.report.enabled;\n }\n\n this.runEndedAndLocked = this.configService.isEndedAndLocked();\n let script = this.projectService.getProjectScript();\n if (script != null && script !== '') {\n this.projectService.retrieveScript(script).then((script: string) => {\n new Function(script).call(this);\n });\n }\n\n // Make sure if we drop something on the page we don't navigate away\n // https://developer.mozilla.org/En/DragDrop/Drag_Operations#drop\n $(document.body).on('dragover', function (e) {\n e.preventDefault();\n return false;\n });\n\n $(document.body).on('drop', function (e) {\n e.preventDefault();\n return false;\n });\n\n // TODO: set these variables dynamically from theme settings\n this.notebookConfig = this.notebookService.getNotebookConfig();\n this.setLayoutState();\n this.initializeSubscriptions();\n this.saveNodeEnteredEvent();\n\n // Set isSurvey\n if (!this.configService.isPreview()) {\n this.studentService\n .getRunInfoById(this.studentDataService.getRunStatus().runId)\n .subscribe((runInfo) => {\n this.isSurvey = runInfo.isSurvey;\n });\n }\n }\n\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n this.wiseLinkService.removeWiseLinkClickedListener();\n this.sessionService.broadcastExit();\n }\n\n private setProject(): void {\n this.project = this.projectService.getProject();\n this.setCurrentNode();\n }\n\n private setCurrentNode(): void {\n this.currentNode = this.projectService.getNode(this.studentDataService.getCurrentNodeId());\n }\n\n @HostListener('window:snip-image', ['$event.detail.target'])\n snipImage(image: HTMLImageElement): void {\n this.notebookService.addNote(\n this.studentDataService.getCurrentNodeId(),\n this.getImageObjectFromImageElement(image)\n );\n }\n\n private getImageObjectFromImageElement(image: HTMLImageElement): File {\n const canvas = document.createElement('canvas');\n canvas.width = image.naturalWidth;\n canvas.height = image.naturalHeight;\n canvas.getContext('2d').drawImage(image, 0, 0);\n return convertToPNGFile(canvas);\n }\n\n closeNotes(): void {\n this.notebookService.closeNotes();\n }\n\n private initializeSubscriptions(): void {\n this.subscribeToShowSessionWarning();\n this.subscribeToCurrentNodeChanged();\n this.subscribeToNotesVisible();\n this.subscribeToReportFullScreen();\n this.subscribeToViewCurrentAmbientNotification();\n this.subscriptions.add(this.projectService.projectParsed$.subscribe(() => this.setProject()));\n }\n\n private subscribeToShowSessionWarning(): void {\n this.subscriptions.add(\n this.sessionService.showSessionWarning$.subscribe(() => {\n this.dialog\n .open(DialogWithConfirmComponent, {\n data: {\n content: $localize`You have been inactive for a long time. Do you want to stay logged in?`,\n title: $localize`Session Timeout`\n }\n })\n .afterClosed()\n .subscribe((isRenew: boolean) => {\n if (isRenew) {\n this.sessionService.closeWarningAndRenewSession();\n } else {\n this.logOut();\n }\n });\n })\n );\n }\n\n private subscribeToCurrentNodeChanged(): void {\n this.subscriptions.add(\n this.studentDataService.currentNodeChanged$.subscribe(({ previousNode }) => {\n this.setCurrentNode();\n const currentNodeId = this.currentNode.id;\n this.studentDataService.updateStackHistory(currentNodeId);\n this.nodeStatusService.setNodeIsVisited(currentNodeId);\n const events = [];\n if (previousNode != null) {\n events.push(this.createNodeExitedEvent(previousNode.id));\n }\n events.push(this.createNodeEnteredEvent());\n this.studentDataService.saveEvents(events);\n\n if (this.projectService.isGroupNode(currentNodeId)) {\n } else {\n this.scrollToTop();\n }\n this.router.navigate([currentNodeId], { relativeTo: this.route.parent });\n this.setLayoutState();\n })\n );\n }\n\n private subscribeToNotesVisible(): void {\n this.subscriptions.add(\n this.notebookService.notesVisible$.subscribe((notesVisible: boolean) => {\n this.notesVisible = notesVisible;\n if (this.notesVisible) {\n this.drawer.open();\n } else {\n this.drawer.close();\n }\n })\n );\n }\n\n private subscribeToReportFullScreen(): void {\n this.subscriptions.add(\n this.notebookService.reportFullScreen$.subscribe((full: boolean) => {\n this.reportFullscreen = full;\n })\n );\n }\n\n private subscribeToViewCurrentAmbientNotification(): void {\n this.subscriptions.add(\n this.notificationService.viewCurrentAmbientNotification$.subscribe((args) => {\n this.notificationService.displayAmbientNotification(args.notification);\n })\n );\n }\n\n private logOut(eventName = 'logOut') {\n const nodeId = null;\n const componentId = null;\n const componentType = null;\n const category = 'Navigation';\n const event = eventName;\n const eventData = {};\n this.studentDataService\n .saveVLEEvent(nodeId, componentId, componentType, category, event, eventData)\n .then(() => {\n this.sessionService.logOut();\n });\n }\n\n /**\n * Set the layout state of the vle\n * @param state string specifying state (e.g. 'notebook'; optional)\n */\n private setLayoutState(state: string = null) {\n let layoutState = 'nav'; // default layout state\n if (state) {\n layoutState = state;\n } else {\n // no state was sent, so set based on current node\n if (this.currentNode) {\n var id = this.currentNode.id;\n if (this.projectService.isApplicationNode(id)) {\n // currently viewing step, so show step view\n layoutState = 'node';\n } else if (this.projectService.isGroupNode(id)) {\n // currently viewing group node, so show navigation view\n layoutState = 'nav';\n }\n }\n }\n this.layoutState = layoutState;\n }\n\n private scrollToTop() {\n document.querySelector('.top').scrollIntoView();\n }\n\n @HostListener('document:mousemove')\n protected renewSession(): void {\n this.sessionService.mouseMoved();\n }\n\n /**\n * Returns WISE API\n */\n getWISEAPI() {\n return {\n /**\n * Registers a function that will be invoked before the componentState is saved to the server\n * @param nodeId the node id\n * @param componentId the component id\n * @param additionalProcessingFunction the function to register for the specified node and component\n */\n registerAdditionalProcessingFunction: (nodeId, componentId, additionalProcessingFunction) => {\n this.projectService.addAdditionalProcessingFunction(\n nodeId,\n componentId,\n additionalProcessingFunction\n );\n },\n /**\n * Create an auto score annotation\n * @param runId the run id\n * @param periodId the period id\n * @param nodeId the node id\n * @param componentId the component id\n * @param toWorkgroupId the student workgroup id\n * @param data the annotation data\n * @returns the auto score annotation\n */\n createAutoScoreAnnotation: (nodeId, componentId, data) => {\n let runId = this.configService.getRunId();\n let periodId = this.configService.getPeriodId();\n let toWorkgroupId = this.configService.getWorkgroupId();\n\n return this.annotationService.createAutoScoreAnnotation(\n runId,\n periodId,\n nodeId,\n componentId,\n toWorkgroupId,\n data\n );\n },\n /**\n * Create an auto comment annotation\n * @param runId the run id\n * @param periodId the period id\n * @param nodeId the node id\n * @param componentId the component id\n * @param toWorkgroupId the student workgroup id\n * @param data the annotation data\n * @returns the auto comment annotation\n */\n createAutoCommentAnnotation: (nodeId, componentId, data) => {\n let runId = this.configService.getRunId();\n let periodId = this.configService.getPeriodId();\n let toWorkgroupId = this.configService.getWorkgroupId();\n\n return this.annotationService.createAutoCommentAnnotation(\n runId,\n periodId,\n nodeId,\n componentId,\n toWorkgroupId,\n data\n );\n },\n /**\n * Gets the latest annotation for the specified node, component, and type\n * @param nodeId\n * @param componentId\n * @param annotationType\n * @returns {the|Object}\n */\n getLatestAnnotationForComponent: (nodeId, componentId, annotationType) => {\n return this.annotationService.getLatestAnnotation({\n nodeId: nodeId,\n componentId: componentId,\n type: annotationType\n });\n },\n /**\n * Updates the annotation locally and on the server\n * @param annotation\n */\n updateAnnotation: (annotation) => {\n this.annotationService.saveAnnotation(annotation);\n },\n /**\n * Returns the maxScore for the specified node and component\n * @param nodeId the node id\n * @param componentId the component id\n * @returns the max score for the component\n */\n getMaxScoreForComponent: (nodeId, componentId) => {\n return this.projectService.getMaxScoreForComponent(nodeId, componentId);\n }\n };\n }\n\n private saveNodeEnteredEvent(): void {\n this.studentDataService.saveEvents([this.createNodeEnteredEvent()]);\n }\n\n private saveNodeExitedEvent(): void {\n this.studentDataService.saveEvents([this.createNodeExitedEvent()]);\n }\n\n private createNodeEnteredEvent(): any {\n return this.createNodeEvent('nodeEntered');\n }\n\n private createNodeExitedEvent(nodeId: string = this.currentNode.id): any {\n return this.createNodeEvent('nodeExited', nodeId);\n }\n\n private createNodeEvent(eventName: string, nodeId: string = this.currentNode.id): any {\n return this.studentDataService.createNewEvent(\n nodeId,\n null,\n 'VLE',\n null,\n 'Navigation',\n eventName,\n {\n nodeId: nodeId\n }\n );\n }\n}\n", + "styleUrl": "./vle.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "generateImageService", + "type": "GenerateImageService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "initializeVLEService", + "type": "InitializeVLEService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeStatusService", + "type": "NodeStatusService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "notebookService", + "type": "NotebookService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "notificationService", + "type": "NotificationService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "VLEProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "sessionService", + "type": "SessionService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentDataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "studentService", + "type": "StudentService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "wiseLinkService", + "type": "WiseLinkService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 79, + "jsdoctags": [ + { + "name": "annotationService", + "type": "AnnotationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "generateImageService", + "type": "GenerateImageService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "initializeVLEService", + "type": "InitializeVLEService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeStatusService", + "type": "NodeStatusService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "notebookService", + "type": "NotebookService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "notificationService", + "type": "NotificationService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "VLEProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "sessionService", + "type": "SessionService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentDataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "studentService", + "type": "StudentService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "wiseLinkService", + "type": "WiseLinkService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "AfterViewInit" + ], + "templateData": "\n\n\n@if (initialized) {\n \n \n \n \n \n \n \n @if (reportEnabled) {\n \n }\n @if (notesEnabled && !notesVisible) {\n \n }\n \n \n}\n\n\n\n\n @if (layoutState === 'node') {\n \n }\n \n @if (runEndedAndLocked) {\n \n }\n @if (layoutState === 'node') {\n \n }\n @if (layoutState === 'nav') {\n \n }\n \n\n\n\n \n \n
    \n @if (runEndedAndLocked) {\n \n }\n @if (layoutState === 'node') {\n \n }\n
    \n \n
    \n
    \n \n
    \n" + }, + { + "name": "VLEParentComponent", + "id": "component-VLEParentComponent-6daa184dec1c8bfcb5912d94c445465efe6e60ec4c3ca992ba12a1140c120649f6bffb3619ff294ed7c93eb474afaf0e45e5ebc1625eadd7990b657930023659", + "file": "src/assets/wise5/vle/vle-parent/vle-parent.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "template": "", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [], + "methodsClass": [ + { + "name": "getLastNodeEnteredEvent", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 50, + "deprecated": false, + "deprecationMessage": "", + "rawdescription": "\n\nGet the last node entered event for an active node that exists in the project.\nWe need to check if the node exists in the project in case the node has been deleted\nfrom the project. We also need to check that the node is active in case the node has been\nmoved to the inactive section of the project.\n", + "description": "

    Get the last node entered event for an active node that exists in the project.\nWe need to check if the node exists in the project in case the node has been deleted\nfrom the project. We also need to check that the node is active in case the node has been\nmoved to the inactive section of the project.

    \n", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "tagName": { + "pos": 1880, + "end": 1886, + "kind": 80, + "id": 0, + "flags": 16842752, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

    the last node entered event for an active node that exists in the project

    \n" + } + ] + }, + { + "name": "getStartingNodeId", + "args": [], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 36, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "isNodeExistAndActive", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 58, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 20, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "RouterModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router, RouterModule } from '@angular/router';\nimport { InitializeVLEService } from '../../services/initializeVLEService';\nimport { StudentDataService } from '../../services/studentDataService';\nimport { VLEProjectService } from '../vleProjectService';\n\n@Component({\n imports: [RouterModule],\n template: ``\n})\nexport class VLEParentComponent implements OnInit {\n constructor(\n private dataService: StudentDataService,\n private initializeVLEService: InitializeVLEService,\n private projectService: VLEProjectService,\n private route: ActivatedRoute,\n private router: Router\n ) {}\n\n ngOnInit(): void {\n this.initializeVLEService.initialized$.subscribe((initialized: boolean) => {\n if (initialized) {\n const startingNodeId = this.getStartingNodeId();\n this.dataService.setCurrentNodeByNodeId(startingNodeId);\n this.router.navigate([startingNodeId], { relativeTo: this.route.parent });\n }\n });\n const unitId = this.router.url.match(/unit\\/([0-9]*)/)[1];\n if (this.router.url.includes('/preview/unit')) {\n this.initializeVLEService.initializePreview(unitId);\n } else {\n this.initializeVLEService.initializeStudent(unitId);\n }\n }\n\n private getStartingNodeId(): string {\n const urlMatch = this.router.url.match(/unit\\/[0-9]*\\/([^?]*)/);\n return urlMatch != null\n ? urlMatch[1]\n : (this.getLastNodeEnteredEvent()?.nodeId ?? this.projectService.getStartNodeId());\n }\n\n /**\n * Get the last node entered event for an active node that exists in the project.\n * We need to check if the node exists in the project in case the node has been deleted\n * from the project. We also need to check that the node is active in case the node has been\n * moved to the inactive section of the project.\n * @return the last node entered event for an active node that exists in the project\n */\n private getLastNodeEnteredEvent(): any {\n return this.dataService\n .getEvents()\n .findLast(\n (event) => event.event === 'nodeEntered' && this.isNodeExistAndActive(event.nodeId)\n );\n }\n\n private isNodeExistAndActive(nodeId: string): boolean {\n return this.projectService.getNodeById(nodeId) != null && this.projectService.isActive(nodeId);\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "dataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "initializeVLEService", + "type": "InitializeVLEService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "VLEProjectService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 11, + "jsdoctags": [ + { + "name": "dataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "initializeVLEService", + "type": "InitializeVLEService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "VLEProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "route", + "type": "ActivatedRoute", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "router", + "type": "Router", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ] + }, + { + "name": "WiseAuthoringTinymceEditorComponent", + "id": "component-WiseAuthoringTinymceEditorComponent-2d352b42417208059785b701ed776696c91a85ea63b00ce8bf21b6dfd44f3210346ea02b16b31f14d0cc9ad7eea35a5c2d6f58856b3a83c2fb5822e8897a0209", + "file": "src/assets/wise5/directives/wise-tinymce-editor/wise-authoring-tinymce-editor.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "wise-authoring-tinymce-editor", + "styleUrls": [], + "styles": [ + "\n editor {\n height: 600px;\n }\n " + ], + "template": "", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "disabled", + "deprecated": false, + "deprecationMessage": "", + "line": 21, + "type": "boolean", + "decorators": [], + "inheritance": { + "file": "WiseTinymceEditorComponent" + } + }, + { + "name": "isAddNoteButtonAvailable", + "deprecated": false, + "deprecationMessage": "", + "line": 24, + "type": "boolean", + "decorators": [], + "inheritance": { + "file": "WiseTinymceEditorComponent" + } + }, + { + "name": "language", + "deprecated": false, + "deprecationMessage": "", + "line": 25, + "type": "Language", + "decorators": [], + "inheritance": { + "file": "WiseTinymceEditorComponent" + } + }, + { + "name": "model", + "deprecated": false, + "deprecationMessage": "", + "line": 26, + "type": "any", + "decorators": [], + "inheritance": { + "file": "WiseTinymceEditorComponent" + } + } + ], + "outputsClass": [ + { + "name": "modelChange", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 27, + "type": "EventEmitter", + "inheritance": { + "file": "WiseTinymceEditorComponent" + } + }, + { + "name": "openNotebook", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 28, + "type": "EventEmitter", + "inheritance": { + "file": "WiseTinymceEditorComponent" + } + } + ], + "propertiesClass": [ + { + "name": "toolbar", + "defaultValue": "`undo redo | fontselect | formatselect | fontsizeselect |\n bold italic underline | image media link wiselink | forecolor backcolor | alignment numlist bullist |\n emoticons removeformat fullscreen`", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 33, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "WiseTinymceEditorComponent" + } + }, + { + "name": "toolbarGroups", + "defaultValue": "{\n alignment: {\n icon: 'align-left',\n tooltip: $localize`Alignment`,\n items: 'alignleft aligncenter alignright | outdent indent'\n }\n }", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 36, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "WiseTinymceEditorComponent" + } + }, + { + "name": "aValidAttributes", + "defaultValue": "'a[href|download|referrerpolicy|rel|target|type|style|' +\n 'class|wiselink|node-id|component-id|link-text]'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 34, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "WiseTinymceEditorComponent" + } + }, + { + "name": "buttonValidAttributes", + "defaultValue": "'button[class|disabled|id|name|onblur|onclick|' +\n 'ondblclick|onfocus|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|' +\n 'onmouseover|onmouseup|style|tabindex|title|type|value|wiselink|node-id|component-id|' +\n 'link-text]'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 37, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "WiseTinymceEditorComponent" + } + }, + { + "name": "config", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "WiseTinymceEditorComponent" + } + }, + { + "name": "debouncer", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 20, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "WiseTinymceEditorComponent" + } + }, + { + "name": "editor", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 22, + "modifierKind": [ + 125 + ], + "inheritance": { + "file": "WiseTinymceEditorComponent" + } + }, + { + "name": "editorComponent", + "deprecated": false, + "deprecationMessage": "", + "type": "EditorComponent", + "indexKey": "", + "optional": false, + "description": "", + "line": 23, + "decorators": [ + { + "name": "ViewChild", + "stringifiedArguments": "EditorComponent" + } + ], + "modifierKind": [ + 171 + ], + "inheritance": { + "file": "WiseTinymceEditorComponent" + } + }, + { + "name": "extendedValidElements", + "defaultValue": "`${this.aValidAttributes},${this.buttonValidAttributes}`", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 42, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "WiseTinymceEditorComponent" + } + }, + { + "name": "plugins", + "defaultValue": "[\n 'advlist',\n 'anchor',\n 'autolink',\n 'charmap',\n 'charmap',\n 'code',\n 'codesample',\n 'directionality',\n 'emoticons',\n 'fullscreen',\n 'help',\n 'hr',\n 'image',\n 'imagetools',\n 'importcss',\n 'insertdatetime',\n 'link',\n 'lists',\n 'media',\n 'nonbreaking',\n 'noneditable',\n 'pagebreak',\n 'paste',\n 'preview',\n 'print',\n 'quickbars',\n 'save',\n 'searchreplace',\n 'table',\n 'template',\n 'textpattern',\n 'toc',\n 'visualblocks',\n 'visualchars',\n 'wordcount'\n ]", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 43, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "WiseTinymceEditorComponent" + } + }, + { + "name": "previousContent", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 29, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "WiseTinymceEditorComponent" + } + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 30, + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "WiseTinymceEditorComponent" + } + } + ], + "methodsClass": [ + { + "name": "filePicker", + "args": [ + { + "name": "callback", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "value", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "meta", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 103, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "callback", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "value", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "meta", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "WiseTinymceEditorComponent" + } + }, + { + "name": "getAllowedFileTypesFromMeta", + "args": [ + { + "name": "meta", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string[]", + "typeParameters": [], + "line": 121, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "meta", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "initializeInsertWISELinkPlugin", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 58, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 52, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "WiseTinymceEditorComponent" + } + }, + { + "name": "openWISELinkChooser", + "args": [], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 97, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "addPluginName", + "args": [ + { + "name": "pluginName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 124, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "pluginName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "WiseTinymceEditorComponent" + } + }, + { + "name": "getAttachmentsHTML", + "args": [ + { + "name": "attachmentURLs", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 196, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "attachmentURLs", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "WiseTinymceEditorComponent" + } + }, + { + "name": "getAttachmentURLs", + "args": [ + { + "name": "notebookItem", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string[]", + "typeParameters": [], + "line": 220, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "notebookItem", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "WiseTinymceEditorComponent" + } + }, + { + "name": "getAudioHTML", + "args": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 248, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "WiseTinymceEditorComponent" + } + }, + { + "name": "getAudioSourceHTML", + "args": [ + { + "name": "src", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "mime", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 259, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "src", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "mime", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "WiseTinymceEditorComponent" + } + }, + { + "name": "getText", + "args": [ + { + "name": "notebookItem", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 228, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "notebookItem", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "WiseTinymceEditorComponent" + } + }, + { + "name": "getTextHTML", + "args": [ + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "caption", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 212, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "caption", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "WiseTinymceEditorComponent" + } + }, + { + "name": "initializeInsertWISENotePlugin", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 173, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "inheritance": { + "file": "WiseTinymceEditorComponent" + } + }, + { + "name": "initializeTinyMCE", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 128, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "WiseTinymceEditorComponent" + } + }, + { + "name": "insertWISENote", + "args": [ + { + "name": "notebookItem", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 187, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "notebookItem", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "WiseTinymceEditorComponent" + } + }, + { + "name": "isContentChanged", + "args": [ + { + "name": "previousContent", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "newContent", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 244, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "previousContent", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "newContent", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "WiseTinymceEditorComponent" + } + }, + { + "name": "ngOnChanges", + "args": [ + { + "name": "changes", + "type": "SimpleChanges", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 105, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "changes", + "type": "SimpleChanges", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "WiseTinymceEditorComponent" + } + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 232, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "WiseTinymceEditorComponent" + } + }, + { + "name": "onChange", + "args": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 236, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "WiseTinymceEditorComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "EditorModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { ConfigService } from '../../services/configService';\nimport { NotebookService } from '../../services/notebookService';\nimport 'tinymce';\nimport { MatDialog } from '@angular/material/dialog';\nimport { ProjectAssetAuthoringComponent } from '../../authoringTool/project-asset-authoring/project-asset-authoring.component';\nimport { WiseLinkAuthoringDialogComponent } from '../../authoringTool/wise-link-authoring-dialog/wise-link-authoring-dialog.component';\nimport { filter } from 'rxjs';\nimport { EditorModule } from '@tinymce/tinymce-angular';\nimport { WiseTinymceEditorComponent } from './wise-tinymce-editor.component';\n\ndeclare let tinymce: any;\n\n@Component({\n imports: [EditorModule],\n selector: 'wise-authoring-tinymce-editor',\n styles: [\n `\n editor {\n height: 600px;\n }\n `\n ],\n template: ``\n})\nexport class WiseAuthoringTinymceEditorComponent extends WiseTinymceEditorComponent {\n protected toolbar: string = `undo redo | fontselect | formatselect | fontsizeselect |\n bold italic underline | image media link wiselink | forecolor backcolor | alignment numlist bullist |\n emoticons removeformat fullscreen`;\n protected toolbarGroups: any = {\n alignment: {\n icon: 'align-left',\n tooltip: $localize`Alignment`,\n items: 'alignleft aligncenter alignright | outdent indent'\n }\n };\n\n constructor(\n private ConfigService: ConfigService,\n private dialog: MatDialog,\n NotebookService: NotebookService\n ) {\n super(NotebookService);\n }\n\n ngOnInit(): void {\n this.addPluginName('wiselink');\n this.initializeInsertWISELinkPlugin();\n this.initializeTinyMCE();\n }\n\n private initializeInsertWISELinkPlugin(): void {\n const thisComponent = this;\n tinymce.PluginManager.add('wiselink', function (editor: any, url: string) {\n editor.ui.registry.addIcon(\n 'wiselink',\n '' +\n ''\n );\n editor.ui.registry.addButton('wiselink', {\n tooltip: $localize`Insert WISE Link`,\n icon: 'wiselink',\n onAction: function () {\n thisComponent\n .openWISELinkChooser()\n .afterClosed()\n .pipe(filter((result: any) => result != null))\n .subscribe((result: any) => {\n let content = '';\n if (result.wiseLinkType === 'link') {\n content =\n `${result.wiseLinkText}`;\n } else if (result.wiseLinkType === 'button') {\n content =\n ``;\n }\n editor.insertContent(content);\n });\n }\n });\n });\n }\n\n private openWISELinkChooser(): any {\n return this.dialog.open(WiseLinkAuthoringDialogComponent, {\n width: '80%'\n });\n }\n\n filePicker(callback: any, value: any, meta: any) {\n this.dialog\n .open(ProjectAssetAuthoringComponent, {\n data: {\n isPopup: true,\n allowedFileTypes: this.getAllowedFileTypesFromMeta(meta)\n },\n width: '80%'\n })\n .afterClosed()\n .subscribe((result: any) => {\n const fileName = result.assetItem.fileName;\n const fileNameNoExt = fileName.substr(0, fileName.lastIndexOf('.')) || fileName;\n const fullFilePath = `${this.ConfigService.getProjectAssetsDirectoryPath()}/${fileName}`;\n callback(fullFilePath, { alt: fileNameNoExt, text: fileNameNoExt });\n });\n }\n\n getAllowedFileTypesFromMeta(meta: any): string[] {\n const allowedFileTypes: string[] = [];\n if (meta.filetype === 'media') {\n allowedFileTypes.push('audio');\n allowedFileTypes.push('video');\n } else if (meta.filetype === 'image') {\n allowedFileTypes.push('image');\n } else {\n allowedFileTypes.push('any');\n }\n return allowedFileTypes;\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "\n editor {\n height: 600px;\n }\n \n", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "ConfigService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "NotebookService", + "type": "NotebookService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 42, + "jsdoctags": [ + { + "name": "ConfigService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "NotebookService", + "type": "NotebookService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [ + "WiseTinymceEditorComponent" + ] + }, + { + "name": "WiseLinkAuthoringDialogComponent", + "id": "component-WiseLinkAuthoringDialogComponent-c6b852cb21ab4ee7cb0445db8526426f3a94f16ea43fb57f311ab607a972568ee2cbdf38c528338e4b4788b622869205f214bbd2b83619a336e0318de7900117", + "file": "src/assets/wise5/authoringTool/wise-link-authoring-dialog/wise-link-authoring-dialog.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./wise-link-authoring-dialog.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [ + { + "name": "items", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 27, + "modifierKind": [ + 124 + ] + }, + { + "name": "wiseLinkComponentId", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 28, + "modifierKind": [ + 124 + ] + }, + { + "name": "wiseLinkNodeId", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 29, + "modifierKind": [ + 124 + ] + }, + { + "name": "wiseLinkText", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 30, + "modifierKind": [ + 124 + ] + }, + { + "name": "wiseLinkType", + "defaultValue": "'link'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 31, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "cancel", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 82, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "create", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 67, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "getComponents", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 63, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getNodePositionById", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 51, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getNodeTitle", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 55, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isGroupNode", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 59, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 38, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "wiseLinkNodeIdChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 42, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "FormsModule", + "type": "module" + }, + { + "name": "MatButtonModule", + "type": "module" + }, + { + "name": "MatDialogModule", + "type": "module" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "MatInputModule", + "type": "module" + }, + { + "name": "MatRadioModule", + "type": "module" + }, + { + "name": "MatSelectModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { TeacherProjectService } from '../../services/teacherProjectService';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatRadioModule } from '@angular/material/radio';\n\n@Component({\n imports: [\n FormsModule,\n MatButtonModule,\n MatDialogModule,\n MatFormFieldModule,\n MatIconModule,\n MatInputModule,\n MatRadioModule,\n MatSelectModule\n ],\n styleUrl: './wise-link-authoring-dialog.component.scss',\n templateUrl: './wise-link-authoring-dialog.component.html'\n})\nexport class WiseLinkAuthoringDialogComponent {\n protected items: any[];\n protected wiseLinkComponentId: string = '';\n protected wiseLinkNodeId: string = '';\n protected wiseLinkText: string = '';\n protected wiseLinkType: string = 'link';\n\n constructor(\n protected dialogRef: MatDialogRef,\n private projectService: TeacherProjectService\n ) {}\n\n ngOnInit(): void {\n this.items = this.projectService.getNodesInOrder();\n }\n\n protected wiseLinkNodeIdChanged(): void {\n if (this.wiseLinkNodeId != null && this.wiseLinkNodeId !== '') {\n this.wiseLinkComponentId = '';\n const position = this.getNodePositionById(this.wiseLinkNodeId);\n const title = this.getNodeTitle(this.wiseLinkNodeId);\n this.wiseLinkText = `${position}: ${title}`;\n }\n }\n\n private getNodePositionById(nodeId: string): string {\n return this.projectService.getNodePositionById(nodeId);\n }\n\n private getNodeTitle(nodeId: string): string {\n return this.projectService.getNodeTitle(nodeId);\n }\n\n protected isGroupNode(nodeId: string): boolean {\n return this.projectService.isGroupNode(nodeId);\n }\n\n protected getComponents(nodeId: string): any[] {\n return this.projectService.getComponents(nodeId);\n }\n\n protected create(): void {\n if (this.wiseLinkNodeId == null || this.wiseLinkNodeId === '') {\n alert($localize`You must select a step.`);\n } else if (this.wiseLinkText == null || this.wiseLinkText === '') {\n alert($localize`You must enter text.`);\n } else {\n this.dialogRef.close({\n wiseLinkNodeId: this.wiseLinkNodeId,\n wiseLinkComponentId: this.wiseLinkComponentId,\n wiseLinkType: this.wiseLinkType,\n wiseLinkText: this.wiseLinkText\n });\n }\n }\n\n protected cancel(): void {\n this.dialogRef.close();\n }\n}\n", + "styleUrl": "./wise-link-authoring-dialog.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "dialogRef", + "type": "MatDialogRef", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 31, + "jsdoctags": [ + { + "name": "dialogRef", + "type": "MatDialogRef", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "

    Create a WISE Link

    \n
    \n
    \n \n Step\n \n @for (item of items; track item) {\n @if (item.key !== 'group0') {\n \n {{ getNodePositionById(item.key) }}: {{ getNodeTitle(item.key) }} ({{ item.key }})\n \n }\n }\n \n \n \n Component (Optional)\n \n @for (\n component of getComponents(wiseLinkNodeId);\n track component;\n let componentIndex = $index\n ) {\n \n {{ componentIndex + 1 }}. {{ component.type }}\n \n }\n \n \n
    \n
    \n \n Link Text\n \n \n
    \n
    \n \n Link\n Button\n \n
    \n
    \n
    \n
    \n \n \n
    \n" + }, + { + "name": "WiseLinkComponent", + "id": "component-WiseLinkComponent-4a0192240be3544e01b0de5cba600ceec537ab0502ad18cc793dd509cef8ee386fa531efa19c6a5bf83ac4a18aa268ed5043f8b247c8205d09f230ce202890bc", + "file": "src/assets/wise5/directives/wise-link/wise-link.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "wise-link", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./wise-link.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "linkClass", + "deprecated": false, + "deprecationMessage": "", + "line": 14, + "type": "string", + "decorators": [] + }, + { + "name": "linkText", + "deprecated": false, + "deprecationMessage": "", + "line": 15, + "type": "string", + "decorators": [] + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 16, + "type": "string", + "decorators": [] + }, + { + "name": "type", + "deprecated": false, + "deprecationMessage": "", + "line": 17, + "type": "string", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [], + "methodsClass": [ + { + "name": "goToStep", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 34, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 25, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatButton" + }, + { + "name": "MatTooltip" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input, OnInit } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { ProjectService } from '../../services/projectService';\nimport { StudentDataService } from '../../services/studentDataService';\nimport { MatButton } from '@angular/material/button';\nimport { MatTooltip } from '@angular/material/tooltip';\n\n@Component({\n imports: [MatButton, MatTooltip],\n selector: 'wise-link',\n templateUrl: './wise-link.component.html'\n})\nexport class WiseLinkComponent implements OnInit {\n @Input() linkClass: string;\n @Input() linkText: string;\n @Input() nodeId: string;\n @Input() type: string;\n\n constructor(\n private dataService: StudentDataService,\n private dialog: MatDialog,\n private projectService: ProjectService\n ) {}\n\n ngOnInit(): void {\n if (this.type === null || this.type === '') {\n this.type = 'link';\n }\n if (this.linkText == null || this.linkText === '') {\n this.linkText = this.projectService.getNodePositionAndTitle(this.nodeId);\n }\n }\n\n protected goToStep(): void {\n this.dialog.closeAll();\n this.dataService.setCurrentNodeByNodeId(this.nodeId);\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "dataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 17, + "jsdoctags": [ + { + "name": "dataService", + "type": "StudentDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "ProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "implements": [ + "OnInit" + ], + "templateData": "@if (type === 'link') {\n \n {{ linkText }}\n \n} @else if (type === 'button') {\n \n {{ linkText }}\n \n}\n" + }, + { + "name": "WiseTinymceEditorComponent", + "id": "component-WiseTinymceEditorComponent-a8ef32b51dd47bd3e9f7ecd6a056d5178baa1a93ef83756b50e8ceea92028ef80f1e9951ce47d91d9ac1e0adc1491ecb32f9faea78a1e11589ce275a7132a04b", + "file": "src/assets/wise5/directives/wise-tinymce-editor/wise-tinymce-editor.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "wise-tinymce-editor", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "wise-tinymce-editor.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "disabled", + "deprecated": false, + "deprecationMessage": "", + "line": 21, + "type": "boolean", + "decorators": [] + }, + { + "name": "isAddNoteButtonAvailable", + "deprecated": false, + "deprecationMessage": "", + "line": 24, + "type": "boolean", + "decorators": [] + }, + { + "name": "language", + "deprecated": false, + "deprecationMessage": "", + "line": 25, + "type": "Language", + "decorators": [] + }, + { + "name": "model", + "deprecated": false, + "deprecationMessage": "", + "line": 26, + "type": "any", + "decorators": [] + } + ], + "outputsClass": [ + { + "name": "modelChange", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 27, + "type": "EventEmitter" + }, + { + "name": "openNotebook", + "defaultValue": "new EventEmitter()", + "deprecated": false, + "deprecationMessage": "", + "line": 28, + "type": "EventEmitter" + } + ], + "propertiesClass": [ + { + "name": "aValidAttributes", + "defaultValue": "'a[href|download|referrerpolicy|rel|target|type|style|' +\n 'class|wiselink|node-id|component-id|link-text]'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 34, + "modifierKind": [ + 124 + ] + }, + { + "name": "buttonValidAttributes", + "defaultValue": "'button[class|disabled|id|name|onblur|onclick|' +\n 'ondblclick|onfocus|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|' +\n 'onmouseover|onmouseup|style|tabindex|title|type|value|wiselink|node-id|component-id|' +\n 'link-text]'", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 37, + "modifierKind": [ + 124 + ] + }, + { + "name": "config", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 19, + "modifierKind": [ + 125 + ] + }, + { + "name": "debouncer", + "defaultValue": "new Subject()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subject", + "indexKey": "", + "optional": false, + "description": "", + "line": 20, + "modifierKind": [ + 123 + ] + }, + { + "name": "editor", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 22, + "modifierKind": [ + 125 + ] + }, + { + "name": "editorComponent", + "deprecated": false, + "deprecationMessage": "", + "type": "EditorComponent", + "indexKey": "", + "optional": false, + "description": "", + "line": 23, + "decorators": [ + { + "name": "ViewChild", + "stringifiedArguments": "EditorComponent" + } + ], + "modifierKind": [ + 171 + ] + }, + { + "name": "extendedValidElements", + "defaultValue": "`${this.aValidAttributes},${this.buttonValidAttributes}`", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 42, + "modifierKind": [ + 124 + ] + }, + { + "name": "plugins", + "defaultValue": "[\n 'advlist',\n 'anchor',\n 'autolink',\n 'charmap',\n 'charmap',\n 'code',\n 'codesample',\n 'directionality',\n 'emoticons',\n 'fullscreen',\n 'help',\n 'hr',\n 'image',\n 'imagetools',\n 'importcss',\n 'insertdatetime',\n 'link',\n 'lists',\n 'media',\n 'nonbreaking',\n 'noneditable',\n 'pagebreak',\n 'paste',\n 'preview',\n 'print',\n 'quickbars',\n 'save',\n 'searchreplace',\n 'table',\n 'template',\n 'textpattern',\n 'toc',\n 'visualblocks',\n 'visualchars',\n 'wordcount'\n ]", + "deprecated": false, + "deprecationMessage": "", + "type": "string[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 43, + "modifierKind": [ + 124 + ] + }, + { + "name": "previousContent", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 29, + "modifierKind": [ + 123 + ] + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 30, + "modifierKind": [ + 123 + ] + }, + { + "name": "toolbar", + "defaultValue": "`undo redo | bold italic underline | numlist bullist`", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 31, + "modifierKind": [ + 124 + ] + }, + { + "name": "toolbarGroups", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 32, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "addPluginName", + "args": [ + { + "name": "pluginName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 124, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "pluginName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "filePicker", + "args": [ + { + "name": "cb", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "value", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "meta", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 269, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "cb", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "value", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "meta", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getAttachmentsHTML", + "args": [ + { + "name": "attachmentURLs", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 196, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "attachmentURLs", + "type": "string[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getAttachmentURLs", + "args": [ + { + "name": "notebookItem", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string[]", + "typeParameters": [], + "line": 220, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "notebookItem", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getAudioHTML", + "args": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 248, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "data", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getAudioSourceHTML", + "args": [ + { + "name": "src", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "mime", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 259, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "src", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "mime", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getText", + "args": [ + { + "name": "notebookItem", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 228, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "notebookItem", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getTextHTML", + "args": [ + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "caption", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 212, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "text", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "caption", + "type": "boolean", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "false", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "initializeInsertWISENotePlugin", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 173, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "initializeTinyMCE", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 128, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + }, + { + "name": "insertWISENote", + "args": [ + { + "name": "notebookItem", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 187, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "notebookItem", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "isContentChanged", + "args": [ + { + "name": "previousContent", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "newContent", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "boolean", + "typeParameters": [], + "line": 244, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "previousContent", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "newContent", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnChanges", + "args": [ + { + "name": "changes", + "type": "SimpleChanges", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 105, + "deprecated": false, + "deprecationMessage": "", + "jsdoctags": [ + { + "name": "changes", + "type": "SimpleChanges", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 232, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 89, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "onChange", + "args": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 236, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "EditorModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, EventEmitter, Input, Output, SimpleChanges, ViewChild } from '@angular/core';\nimport { debounceTime } from 'rxjs/operators';\nimport { Subject, Subscription } from 'rxjs';\nimport { NotebookService } from '../../services/notebookService';\nimport { EditorModule } from '@tinymce/tinymce-angular';\nimport 'tinymce';\nimport { EditorComponent } from '@tinymce/tinymce-angular';\nimport { Language } from '../../../../app/domain/language';\n\ndeclare let tinymce: any;\n\n@Component({\n selector: 'wise-tinymce-editor',\n styleUrl: 'wise-tinymce-editor.component.scss',\n templateUrl: 'wise-tinymce-editor.component.html',\n imports: [EditorModule]\n})\nexport class WiseTinymceEditorComponent {\n public config: any;\n private debouncer: Subject = new Subject();\n @Input() disabled: boolean;\n public editor: any;\n @ViewChild(EditorComponent) editorComponent: EditorComponent;\n @Input() isAddNoteButtonAvailable: boolean;\n @Input() language: Language;\n @Input() model: any;\n @Output() modelChange: EventEmitter = new EventEmitter();\n @Output() openNotebook: EventEmitter = new EventEmitter();\n private previousContent: string;\n private subscriptions: Subscription = new Subscription();\n protected toolbar: string = `undo redo | bold italic underline | numlist bullist`;\n protected toolbarGroups: any;\n\n protected aValidAttributes: string =\n 'a[href|download|referrerpolicy|rel|target|type|style|' +\n 'class|wiselink|node-id|component-id|link-text]';\n protected buttonValidAttributes: string =\n 'button[class|disabled|id|name|onblur|onclick|' +\n 'ondblclick|onfocus|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|' +\n 'onmouseover|onmouseup|style|tabindex|title|type|value|wiselink|node-id|component-id|' +\n 'link-text]';\n protected extendedValidElements: string = `${this.aValidAttributes},${this.buttonValidAttributes}`;\n protected plugins: string[] = [\n 'advlist',\n 'anchor',\n 'autolink',\n 'charmap',\n 'charmap',\n 'code',\n 'codesample',\n 'directionality',\n 'emoticons',\n 'fullscreen',\n 'help',\n 'hr',\n 'image',\n 'imagetools',\n 'importcss',\n 'insertdatetime',\n 'link',\n 'lists',\n 'media',\n 'nonbreaking',\n 'noneditable',\n 'pagebreak',\n 'paste',\n 'preview',\n 'print',\n 'quickbars',\n 'save',\n 'searchreplace',\n 'table',\n 'template',\n 'textpattern',\n 'toc',\n 'visualblocks',\n 'visualchars',\n 'wordcount'\n ];\n\n constructor(private notebookService: NotebookService) {\n this.subscriptions.add(\n this.debouncer.pipe(debounceTime(1000)).subscribe((value) => {\n this.modelChange.emit(value);\n })\n );\n }\n\n ngOnInit(): void {\n if (this.isAddNoteButtonAvailable) {\n this.subscriptions.add(\n this.notebookService.notebookItemChosen$.subscribe(({ requester, notebookItem }) => {\n if (requester === 'report') {\n this.insertWISENote(notebookItem);\n }\n })\n );\n this.addPluginName('wisenote');\n this.initializeInsertWISENotePlugin();\n this.toolbar += ` | wisenote`;\n }\n this.initializeTinyMCE();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this.editorComponent) {\n if (\n changes.model &&\n changes.model.currentValue !== this.editorComponent.editor.getContent()\n ) {\n this.editorComponent.editor.setContent(changes.model.currentValue ?? '');\n }\n if (changes.language && !this.model) {\n // handles an edge case in the AT translation mode where\n // 1. show lang1 (original value: undefined)\n // 2. translate lang1 (set value to 'XYZ')\n // 3. switch to lang2 (original value: undefined)\n // should show empty editor, but is showing 'XYZ'\n this.editorComponent.editor.setContent('');\n }\n }\n }\n\n addPluginName(pluginName: string): void {\n this.plugins.push(pluginName);\n }\n\n protected initializeTinyMCE(): void {\n this.config = {\n base_url: '/tinymce',\n suffix: '.min',\n height: '100%',\n menubar: 'file edit insert view format table help',\n relative_urls: false,\n body_class: 'common-styles mat-typography app-styles default-theme',\n content_css: '/siteStyles.css',\n media_live_embeds: true,\n extended_valid_elements: this.extendedValidElements,\n font_formats: `Roboto=Roboto,Helvetica Neue,sans-serif; Raleway=Raleway,sans-serif;\n Arial=arial,helvetica,sans-serif; Arial Black=arial black,avant garde;\n Comic Sans MS=comic sans ms,sans-serif; Courier New=courier new,courier; Georgia=georgia,palatino;\n Helvetica=helvetica; Impact=impact,chicago; Tahoma=tahoma,arial,helvetica,sans-serif;\n Terminal=terminal,monaco; Times New Roman=times new roman,times; Verdana=verdana,geneva`,\n plugins: this.plugins,\n quickbars_insert_toolbar: false,\n default_link_target: '_blank',\n image_advtab: true,\n image_caption: true,\n imagetools_toolbar: 'imageoptions',\n link_context_toolbar: true,\n toolbar: this.toolbar,\n toolbar_groups: this.toolbarGroups,\n audio_template_callback: (data: any) => {\n return this.getAudioHTML(data);\n },\n file_picker_callback: (callback: any, value: any, meta: any) => {\n this.filePicker(callback, value, meta);\n },\n mobile: {\n toolbar_mode: 'floating'\n },\n menu: {\n file: {\n title: $localize`File`,\n items: 'preview wordcount | print'\n }\n },\n paste_block_drop: true,\n skin_url: '/assets/tinymce/wise'\n };\n }\n\n private initializeInsertWISENotePlugin(): void {\n const thisWiseTinymceEditorComponent = this;\n tinymce.PluginManager.add('wisenote', function (editor: any, url: string) {\n thisWiseTinymceEditorComponent.editor = editor;\n editor.ui.registry.addButton('wisenote', {\n tooltip: $localize`Insert from Notebook`,\n text: $localize`Insert note +`,\n onAction: function () {\n thisWiseTinymceEditorComponent.openNotebook.emit('openNotebook');\n }\n });\n });\n }\n\n private insertWISENote(notebookItem: any): void {\n const attachmentURLs = this.getAttachmentURLs(notebookItem);\n const text = this.getText(notebookItem);\n let noteContent = this.getAttachmentsHTML(attachmentURLs, text);\n if (noteContent) {\n this.editor.insertContent(noteContent);\n }\n }\n\n getAttachmentsHTML(attachmentURLs: string[], text: string): string {\n let content = '';\n if (attachmentURLs.length === 0) {\n content = this.getTextHTML(text);\n } else {\n content = `
    `;\n attachmentURLs.forEach((attachmentURL) => {\n content +=\n '\"${$localize`Image`;\n });\n content += this.getTextHTML(text, true) + `
    `;\n }\n return content;\n }\n\n getTextHTML(text: string, caption: boolean = false): string {\n if (caption) {\n return `
    ${text ? text : ' '}
    `;\n } else if (text) {\n return `

    ${text}

    `;\n }\n }\n\n getAttachmentURLs(notebookItem: any): string[] {\n const attachmentURLs = [];\n notebookItem.content.attachments.forEach((attachment: any) => {\n attachmentURLs.push(attachment.iconURL);\n });\n return attachmentURLs;\n }\n\n private getText(notebookItem: any): string {\n return notebookItem.content.text;\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n protected onChange(event: any): void {\n const newContent = event.editor.getContent();\n if (this.isContentChanged(this.previousContent, newContent)) {\n this.debouncer.next(newContent);\n this.previousContent = newContent;\n }\n }\n\n private isContentChanged(previousContent: string, newContent: string): boolean {\n return previousContent !== newContent;\n }\n\n getAudioHTML(data: any): string {\n let content = '';\n content += '';\n return content;\n }\n\n private getAudioSourceHTML(src: string, mime: string): string {\n let content = '';\n content += `\n
    \n" + }, + { + "name": "WorkgroupComponentGradingComponent", + "id": "component-WorkgroupComponentGradingComponent-5dc9ee7aad93632a1e96ebca206dda0d4cc86f58a5a3c596a0bf42625a04705bb67b62bc027ae6fcc06760248e630cf874afbefd3a25bfdff6cb54a17a422b2b", + "file": "src/assets/wise5/classroomMonitor/classroomMonitorComponents/workgroup-component-grading/workgroup-component-grading.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "workgroup-component-grading", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "workgroup-component-grading.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "componentId", + "deprecated": false, + "deprecationMessage": "", + "line": 25, + "type": "string", + "decorators": [] + }, + { + "name": "nodeId", + "deprecated": false, + "deprecationMessage": "", + "line": 30, + "type": "string", + "decorators": [] + }, + { + "name": "workgroupId", + "deprecated": false, + "deprecationMessage": "", + "line": 32, + "type": "number", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "component", + "deprecated": false, + "deprecationMessage": "", + "type": "ComponentContent", + "indexKey": "", + "optional": false, + "description": "", + "line": 24, + "modifierKind": [ + 124 + ] + }, + { + "name": "componentStates", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "indexKey": "", + "optional": false, + "description": "", + "line": 26, + "modifierKind": [ + 124 + ] + }, + { + "name": "isGradable", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 27, + "modifierKind": [ + 124 + ] + }, + { + "name": "latestComponentState", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 28, + "modifierKind": [ + 124 + ] + }, + { + "name": "latestComponentStateId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 29, + "modifierKind": [ + 124 + ] + }, + { + "name": "teacherWorkgroupId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 31, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 41, + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "showRevisions", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 62, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ] + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "ComponentGradingComponent", + "type": "component" + }, + { + "name": "ComponentStateInfoComponent", + "type": "component" + }, + { + "name": "EditComponentAnnotationsComponent", + "type": "component" + }, + { + "name": "MatDialogModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input } from '@angular/core';\nimport { MatDialog, MatDialogModule } from '@angular/material/dialog';\nimport { ComponentContent } from '../../../common/ComponentContent';\nimport { ComponentFactory } from '../../../common/ComponentFactory';\nimport { ConfigService } from '../../../services/configService';\nimport { TeacherDataService } from '../../../services/teacherDataService';\nimport { TeacherProjectService } from '../../../services/teacherProjectService';\nimport { ViewComponentRevisionsComponent } from '../view-component-revisions/view-component-revisions.component';\nimport { ComponentStateInfoComponent } from '../../../common/component-state-info/component-state-info.component';\nimport { ComponentGradingComponent } from '../component-grading.component';\nimport { EditComponentAnnotationsComponent } from '../edit-component-annotations/edit-component-annotations.component';\n\n@Component({\n imports: [\n ComponentGradingComponent,\n ComponentStateInfoComponent,\n EditComponentAnnotationsComponent,\n MatDialogModule\n ],\n selector: 'workgroup-component-grading',\n templateUrl: 'workgroup-component-grading.component.html'\n})\nexport class WorkgroupComponentGradingComponent {\n protected component: ComponentContent;\n @Input() componentId: string;\n protected componentStates: any[];\n protected isGradable: boolean;\n protected latestComponentState: any;\n protected latestComponentStateId: number;\n @Input() nodeId: string;\n protected teacherWorkgroupId: number;\n @Input() workgroupId: number;\n\n constructor(\n private configService: ConfigService,\n private dataService: TeacherDataService,\n private dialog: MatDialog,\n private projectService: TeacherProjectService\n ) {}\n\n ngOnInit(): void {\n this.teacherWorkgroupId = this.configService.getWorkgroupId();\n this.component = this.projectService.getComponent(this.nodeId, this.componentId);\n const factory = new ComponentFactory();\n const component = factory.getComponent(this.component, this.nodeId);\n this.isGradable = component.isGradable();\n this.componentStates = this.dataService.getComponentStatesByWorkgroupIdAndComponentId(\n this.workgroupId,\n this.componentId\n );\n this.latestComponentState =\n this.dataService.getLatestComponentStateByWorkgroupIdNodeIdAndComponentId(\n this.workgroupId,\n this.nodeId,\n this.componentId\n );\n if (this.latestComponentState != null) {\n this.latestComponentStateId = this.latestComponentState.id;\n }\n }\n\n protected showRevisions(): void {\n this.dialog.open(ViewComponentRevisionsComponent, {\n data: {\n workgroupId: this.workgroupId,\n fromWorkgroupId: this.teacherWorkgroupId,\n componentId: this.componentId,\n nodeId: this.nodeId,\n componentStates: this.componentStates\n },\n panelClass: ['app-styles', 'dialog-lg']\n });\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "constructorObj": { + "name": "constructor", + "description": "", + "deprecated": false, + "deprecationMessage": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "line": 32, + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dataService", + "type": "TeacherDataService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "dialog", + "type": "MatDialog", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectService", + "type": "TeacherProjectService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + "extends": [], + "templateData": "
    \n
    \n @if (\n latestComponentState != null ||\n component.type === 'ShowGroupWork' ||\n component.type === 'ShowMyWork'\n ) {\n \n }\n \n @if (componentStates.length === 0 && component.type !== 'ShowGroupWork') {\n
    \n Team has not saved any work\n
    \n }\n @if (componentStates.length > 0) {\n \n \n @if (componentStates.length > 1) {\n \n  • See revisions\n \n }\n
    \n }\n
    \n @if (isGradable) {\n
    \n \n
    \n }\n\n" + }, + { + "name": "WorkgroupInfoComponent", + "id": "component-WorkgroupInfoComponent-c56f5f8efa5a0990a73692247f9975a62c7a692d63b7a0580c67c289a5a077b82085bf0140b3e2b8e3172ea9db7d2e1f314f4ddd0def12246d8a6fcf145d824b", + "file": "src/assets/wise5/classroomMonitor/classroomMonitorComponents/nodeGrading/workgroupInfo/workgroup-info.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "workgroup-info", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "workgroup-info.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "hasAlert", + "deprecated": false, + "deprecationMessage": "", + "line": 16, + "type": "boolean", + "decorators": [] + }, + { + "name": "hasNewAlert", + "deprecated": false, + "deprecationMessage": "", + "line": 17, + "type": "boolean", + "decorators": [] + }, + { + "name": "hasNewWork", + "deprecated": false, + "deprecationMessage": "", + "line": 18, + "type": "boolean", + "decorators": [] + }, + { + "name": "usernames", + "deprecated": false, + "deprecationMessage": "", + "line": 19, + "type": "string", + "decorators": [] + }, + { + "name": "workgroupId", + "deprecated": false, + "deprecationMessage": "", + "line": 20, + "type": "number", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "alertIconClass", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "modifierKind": [ + 124 + ] + }, + { + "name": "alertIconName", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "modifierKind": [ + 124 + ] + }, + { + "name": "alertLabel", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 14, + "modifierKind": [ + 124 + ] + }, + { + "name": "avatarColor", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "indexKey": "", + "optional": false, + "description": "", + "line": 15, + "modifierKind": [ + 124 + ] + } + ], + "methodsClass": [ + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 22, + "deprecated": false, + "deprecationMessage": "" + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatIconModule", + "type": "module" + }, + { + "name": "StatusIconComponent", + "type": "component" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input } from '@angular/core';\nimport { getAvatarColorForWorkgroupId } from '../../../../common/workgroup/workgroup';\nimport { MatIconModule } from '@angular/material/icon';\nimport { StatusIconComponent } from '../../../../../../app/classroom-monitor/status-icon/status-icon.component';\n\n@Component({\n imports: [MatIconModule, StatusIconComponent],\n selector: 'workgroup-info',\n templateUrl: 'workgroup-info.component.html'\n})\nexport class WorkgroupInfoComponent {\n protected alertIconClass: string;\n protected alertIconName: string;\n protected alertLabel: string;\n protected avatarColor: string;\n @Input() hasAlert: boolean;\n @Input() hasNewAlert: boolean;\n @Input() hasNewWork: boolean;\n @Input() usernames: string;\n @Input() workgroupId: number;\n\n ngOnInit(): void {\n this.avatarColor = getAvatarColorForWorkgroupId(this.workgroupId);\n this.alertIconClass = this.hasNewAlert ? 'warn' : 'text-disabled';\n this.alertIconName = 'notifications';\n this.alertLabel = this.hasNewAlert\n ? $localize`Has new alert(s)`\n : $localize`Has dismissed alert(s)`;\n }\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [], + "templateData": "
    \n account_circle \n
    \n {{ usernames }}\n (Team {{ workgroupId }})\n
    \n @if (hasAlert) {\n \n }\n @if (hasNewWork) {\n New\n }\n
    \n" + }, + { + "name": "WorkgroupLimitReachedComponent", + "id": "component-WorkgroupLimitReachedComponent-b963d10a0008dcbca7213226115082dc2880db415d5a5b4de5918fa3ba0fd8067a7686f7ada5595d27da5ff9f082a957fd960ef75bcdf8798697a464fab05991", + "file": "src/app/student/survey/workgroup-limit-reached/workgroup-limit-reached.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "workgroup-limit-reached", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "./workgroup-limit-reached.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [], + "methodsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "MatCardModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { MatCardModule } from '@angular/material/card';\n\n@Component({\n selector: 'workgroup-limit-reached',\n imports: [MatCardModule],\n templateUrl: './workgroup-limit-reached.component.html'\n})\nexport class WorkgroupLimitReachedComponent {}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [], + "templateData": "
    \n \n \n \n

    Sorry, this unit has reached the maximum number of submissions.

    \n
    \n
    \n
    \n" + }, + { + "name": "WorkgroupNodeScoreComponent", + "id": "component-WorkgroupNodeScoreComponent-cbe09f866396e5f3a008a93f56ddb36693138e6f9c13d2d5a0aa9d654fac0d2bab384db481a024b63a042657bba35a729eb5f61e55db6d734f6595697a9b54af", + "file": "src/assets/wise5/classroomMonitor/classroomMonitorComponents/shared/workgroupNodeScore/workgroup-node-score.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "workgroup-node-score", + "styleUrls": [], + "styles": [ + ".mat-headline-5 { margin: 0; }" + ], + "template": "
    \n {{ score }} /{{ maxScore }}\n
    \n", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "maxScore", + "deprecated": false, + "deprecationMessage": "", + "line": 14, + "type": "number", + "decorators": [] + }, + { + "name": "score", + "deprecated": false, + "deprecationMessage": "", + "line": 15, + "type": "number", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [], + "methodsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Input, Component } from '@angular/core';\n\n@Component({\n selector: 'workgroup-node-score',\n styles: ['.mat-headline-5 { margin: 0; }'],\n template: `\n
    \n {{ score }} /{{ maxScore }}\n
    \n `\n})\nexport class WorkgroupNodeScoreComponent {\n @Input() maxScore: number;\n @Input() score: number;\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": ".mat-headline-5 { margin: 0; }\n", + "extends": [] + }, + { + "name": "WorkgroupNodeStatusComponent", + "id": "component-WorkgroupNodeStatusComponent-627d510811419849eedfdd3c0e4c71c6c6da3a0f2962eada3b2738b96968d2b20045e7441228f4e880d7cfc5caebb135f3eafd284b0afa43c06b570e8612d233", + "file": "src/app/classroom-monitor/workgroup-node-status/workgroup-node-status.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "workgroup-node-status", + "styleUrls": [], + "styles": [], + "template": "{{ statusText }}", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "statusClass", + "defaultValue": "'text-secondary'", + "deprecated": false, + "deprecationMessage": "", + "line": 8, + "type": "string", + "decorators": [] + }, + { + "name": "statusText", + "deprecated": false, + "deprecationMessage": "", + "line": 9, + "type": "string", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [], + "methodsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'workgroup-node-status',\n template: `{{ statusText }}`\n})\nexport class WorkgroupNodeStatusComponent {\n @Input() statusClass: string = 'text-secondary';\n @Input() statusText: string;\n}\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [] + }, + { + "name": "WorkgroupSelectAutocompleteComponent", + "id": "component-WorkgroupSelectAutocompleteComponent-47cc4793f839154a22cc52ce720c84eb4972b6f9411fc023657ac29feafdbb7e1d73d281a3576ad3235fdf69b1386af2ff469962cc87504e4bdaa615177a941b", + "file": "src/app/classroom-monitor/workgroup-select/workgroup-select-autocomplete/workgroup-select-autocomplete.component.ts", + "encapsulation": [ + "ViewEncapsulation.None" + ], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "workgroup-select-autocomplete", + "styleUrls": [], + "styles": [], + "templateUrl": [ + "workgroup-select-autocomplete.component.html" + ], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "customClass", + "deprecated": false, + "deprecationMessage": "", + "line": 8, + "type": "string", + "decorators": [], + "inheritance": { + "file": "WorkgroupSelectComponent" + } + } + ], + "outputsClass": [], + "propertiesClass": [ + { + "name": "filteredWorkgroups", + "deprecated": false, + "deprecationMessage": "", + "type": "Observable", + "indexKey": "", + "optional": false, + "description": "", + "line": 26, + "modifierKind": [ + 124 + ] + }, + { + "name": "myControl", + "defaultValue": "new FormControl()", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "indexKey": "", + "optional": false, + "description": "", + "line": 27, + "modifierKind": [ + 124 + ] + }, + { + "name": "canViewStudentNames", + "deprecated": false, + "deprecationMessage": "", + "type": "boolean", + "indexKey": "", + "optional": false, + "description": "", + "line": 9, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "WorkgroupSelectComponent" + } + }, + { + "name": "periodId", + "deprecated": false, + "deprecationMessage": "", + "type": "number", + "indexKey": "", + "optional": false, + "description": "", + "line": 10, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "WorkgroupSelectComponent" + } + }, + { + "name": "selectedItem", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 11, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "WorkgroupSelectComponent" + } + }, + { + "name": "subscriptions", + "defaultValue": "new Subscription()", + "deprecated": false, + "deprecationMessage": "", + "type": "Subscription", + "indexKey": "", + "optional": false, + "description": "", + "line": 12, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "WorkgroupSelectComponent" + } + }, + { + "name": "workgroups", + "deprecated": false, + "deprecationMessage": "", + "type": "any", + "indexKey": "", + "optional": false, + "description": "", + "line": 13, + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "WorkgroupSelectComponent" + } + } + ], + "methodsClass": [ + { + "name": "closed", + "args": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 106, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "event", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "currentPeriodChanged", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 56, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "WorkgroupSelectComponent" + } + }, + { + "name": "displayWith", + "args": [ + { + "name": "workgroup", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 46, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "workgroup", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "filterByTypedKeyword", + "args": [ + { + "name": "value", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any", + "typeParameters": [], + "line": 50, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "value", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "flipName", + "args": [ + { + "name": "name", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "string", + "typeParameters": [], + "line": 92, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "name", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getStudentsFromWorkgroups", + "args": [], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 73, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "itemSelected", + "args": [ + { + "name": "workgroup", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 97, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "workgroup", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ngOnInit", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 29, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "WorkgroupSelectComponent" + } + }, + { + "name": "setWorkgroup", + "args": [ + { + "name": "workgroup", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 69, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "workgroup", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "WorkgroupSelectComponent" + } + }, + { + "name": "setWorkgroups", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 60, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "WorkgroupSelectComponent" + } + }, + { + "name": "updateFilteredWorkgroups", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 38, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ] + }, + { + "name": "updateWorkgroupDisplay", + "args": [ + { + "name": "workgroup", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 102, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 123 + ], + "jsdoctags": [ + { + "name": "workgroup", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "filterWorkgroupsBySelectedPeriod", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 63, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "inheritance": { + "file": "WorkgroupSelectComponent" + } + }, + { + "name": "ngOnDestroy", + "args": [], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 41, + "deprecated": false, + "deprecationMessage": "", + "inheritance": { + "file": "WorkgroupSelectComponent" + } + }, + { + "name": "setCurrentWorkgroup", + "args": [ + { + "name": "workgroup", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "void", + "typeParameters": [], + "line": 72, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "workgroup", + "type": "unknown", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "WorkgroupSelectComponent" + } + }, + { + "name": "sortByDisplayNames", + "args": [ + { + "name": "arr", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 57, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "arr", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "WorkgroupSelectComponent" + } + }, + { + "name": "sortByField", + "args": [ + { + "name": "arr", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "field", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "optional": false, + "returnType": "any[]", + "typeParameters": [], + "line": 51, + "deprecated": false, + "deprecationMessage": "", + "modifierKind": [ + 124 + ], + "jsdoctags": [ + { + "name": "arr", + "type": "any[]", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "field", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ], + "inheritance": { + "file": "WorkgroupSelectComponent" + } + } + ], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": false, + "imports": [ + { + "name": "CommonModule", + "type": "module" + }, + { + "name": "MatAutocompleteModule", + "type": "module" + }, + { + "name": "MatFormFieldModule", + "type": "module" + }, + { + "name": "MatInputModule", + "type": "module" + }, + { + "name": "ReactiveFormsModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, ViewEncapsulation } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { CommonModule } from '@angular/common';\nimport { WorkgroupSelectComponent } from '../workgroup-select.component';\nimport { Observable } from 'rxjs';\nimport { filter, map, startWith } from 'rxjs/operators';\nimport { copy } from '../../../../assets/wise5/common/object/object';\n\n@Component({\n encapsulation: ViewEncapsulation.None,\n imports: [\n CommonModule,\n MatAutocompleteModule,\n MatFormFieldModule,\n MatInputModule,\n ReactiveFormsModule\n ],\n selector: 'workgroup-select-autocomplete',\n styleUrl: 'workgroup-select-autocomplete.component.scss',\n templateUrl: 'workgroup-select-autocomplete.component.html'\n})\nexport class WorkgroupSelectAutocompleteComponent extends WorkgroupSelectComponent {\n protected filteredWorkgroups: Observable;\n protected myControl = new FormControl();\n\n ngOnInit(): void {\n super.ngOnInit();\n this.updateFilteredWorkgroups();\n const currentWorkgroup = this.dataService.getCurrentWorkgroup();\n if (currentWorkgroup) {\n this.myControl.setValue(currentWorkgroup.displayNames);\n }\n }\n\n private updateFilteredWorkgroups(): void {\n this.filteredWorkgroups = this.myControl.valueChanges.pipe(\n startWith(''),\n filter((value) => typeof value === 'string'),\n map((value) => this.filterByTypedKeyword(value))\n );\n }\n\n protected displayWith(workgroup: any): string {\n return workgroup.displayNames;\n }\n\n private filterByTypedKeyword(value: string) {\n return this.workgroups.filter((workgroup) =>\n workgroup.displayNames.toLowerCase().includes(value.toLowerCase())\n );\n }\n\n protected currentPeriodChanged(): void {\n this.myControl.setValue('');\n }\n\n protected setWorkgroups(): void {\n this.filterWorkgroupsBySelectedPeriod();\n const students = this.getStudentsFromWorkgroups();\n this.workgroups = this.canViewStudentNames\n ? this.sortByDisplayNames(students)\n : this.sortByField(students, 'userId');\n this.updateFilteredWorkgroups();\n }\n\n protected setWorkgroup(workgroup: any): void {\n this.updateWorkgroupDisplay(workgroup);\n }\n\n private getStudentsFromWorkgroups(): any[] {\n const students = [];\n for (const workgroup of this.workgroups) {\n const ids = workgroup.userIds;\n const names = workgroup.displayNames.split(',');\n for (let x = 0; x < ids.length; x++) {\n const current = copy(workgroup);\n current.userId = ids[x];\n const name = names[x].trim();\n current.displayNames = name;\n if (this.canViewStudentNames) {\n current.displayNames = this.flipName(name);\n }\n students.push(current);\n }\n }\n return students;\n }\n\n private flipName(name: string): string {\n const names = name.split(' ');\n return `${names[1]}, ${names[0]}`;\n }\n\n protected itemSelected(workgroup: any): void {\n this.setCurrentWorkgroup(workgroup);\n this.updateWorkgroupDisplay(workgroup);\n }\n\n private updateWorkgroupDisplay(workgroup: any): void {\n this.myControl.setValue(workgroup ? workgroup.displayNames : '');\n }\n\n protected closed(event: any): void {\n if (this.myControl.value === '') {\n this.itemSelected(null);\n }\n }\n}\n", + "styleUrl": "workgroup-select-autocomplete.component.scss", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [ + "WorkgroupSelectComponent" + ], + "templateData": "\n \n \n @for (workgroup of filteredWorkgroups | async; track workgroup.displayNames) {\n \n {{ workgroup.displayNames }}\n \n }\n \n\n" + } + ], + "modules": [ + { + "name": "AddLessonRoutingModule", + "id": "module-AddLessonRoutingModule-36845067ec10cf24534102660b86c5a75a205ab15da6abcc718fa6f65fc2f458aea0480a30704b4a7b17c936306e64cd9458ee45c539c4c66f7e80239795286a", + "description": "", + "deprecationMessage": "", + "deprecated": false, + "file": "src/assets/wise5/authoringTool/addLesson/add-lesson-routing.module.ts", + "methods": [], + "sourceCode": "import { RouterModule, Routes } from '@angular/router';\nimport { AddLessonChooseTemplateComponent } from './add-lesson-choose-template/add-lesson-choose-template.component';\nimport { AddLessonConfigureComponent } from './add-lesson-configure/add-lesson-configure.component';\nimport { NgModule } from '@angular/core';\n\nconst routes: Routes = [\n {\n path: '',\n component: AddLessonChooseTemplateComponent\n },\n {\n path: 'configure',\n component: AddLessonConfigureComponent\n },\n {\n path: 'structure',\n loadChildren: () =>\n \"import(\\n\\\n '../../../../assets/wise5/authoringTool/structure/structure-authoring-routing.module'\\n\\\n ).then((m) => m.StructureAuthoringRoutingModule)\"\n }\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)]\n})\nexport class AddLessonRoutingModule {}\n", + "children": [ + { + "type": "providers", + "elements": [] + }, + { + "type": "declarations", + "elements": [] + }, + { + "type": "imports", + "elements": [] + }, + { + "type": "exports", + "elements": [] + }, + { + "type": "bootstrap", + "elements": [] + }, + { + "type": "classes", + "elements": [] + } + ] + }, + { + "name": "AddNodeRoutingModule", + "id": "module-AddNodeRoutingModule-53522e95d5e7e31254ebda830f39199be657e9721210018e576d2db981d32a77ff8b67d46b3e335747c418af24213f248cff07bc466dd1d0c959a14a802fa7bb", + "description": "", + "deprecationMessage": "", + "deprecated": false, + "file": "src/assets/wise5/authoringTool/addNode/add-node-routing.module.ts", + "methods": [], + "sourceCode": "import { RouterModule, Routes } from '@angular/router';\nimport { NgModule } from '@angular/core';\nimport { AddYourOwnNodeComponent } from './add-your-own-node/add-your-own-node.component';\nimport { ChooseAutomatedAssessmentComponent } from './choose-automated-assessment/choose-automated-assessment.component';\nimport { ConfigureAutomatedAssessmentComponent } from './configure-automated-assessment/configure-automated-assessment.component';\nimport { ChooseNewNodeTemplateComponent } from './choose-new-node-template/choose-new-node-template.component';\nimport { ChooseSimulationComponent } from './choose-simulation/choose-simulation.component';\nimport { ChooseImportStepComponent } from '../../../../app/authoring-tool/import-step/choose-import-step/choose-import-step.component';\nimport { ChooseImportUnitComponent } from '../../../../app/authoring-tool/import-step/choose-import-unit/choose-import-unit.component';\n\nconst routes: Routes = [\n {\n path: 'add-your-own',\n component: AddYourOwnNodeComponent\n },\n {\n path: 'automated-assessment',\n children: [\n {\n path: 'choose-item',\n component: ChooseAutomatedAssessmentComponent\n },\n { path: 'configure', component: ConfigureAutomatedAssessmentComponent }\n ]\n },\n {\n path: 'choose-template',\n component: ChooseNewNodeTemplateComponent\n },\n {\n path: 'import-step',\n children: [\n {\n path: 'choose-step',\n component: ChooseImportStepComponent\n },\n {\n path: 'choose-unit',\n component: ChooseImportUnitComponent\n }\n ]\n },\n {\n path: 'simulation',\n children: [{ path: 'choose-item', component: ChooseSimulationComponent }]\n }\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)]\n})\nexport class AddNodeRoutingModule {}\n", + "children": [ + { + "type": "providers", + "elements": [] + }, + { + "type": "declarations", + "elements": [] + }, + { + "type": "imports", + "elements": [] + }, + { + "type": "exports", + "elements": [] + }, + { + "type": "bootstrap", + "elements": [] + }, + { + "type": "classes", + "elements": [] + } + ] + }, + { + "name": "AiChatShowWorkModule", + "id": "module-AiChatShowWorkModule-973c242c36fb23eb280e1d357381e81280cf5fdb690c36ea9f37d8930e585fe3af062827c5c5f99c87a21dcb617cc9ba7e2ad29a3d97d91789a8252e27d68a54", + "description": "", + "deprecationMessage": "", + "deprecated": false, + "file": "src/assets/wise5/components/aiChat/ai-chat-show-work/ai-chat-show-work.module.ts", + "methods": [], + "sourceCode": "import { NgModule } from '@angular/core';\nimport { AiChatShowWorkComponent } from './ai-chat-show-work.component';\n\n@NgModule({\n imports: [AiChatShowWorkComponent],\n exports: [AiChatShowWorkComponent]\n})\nexport class AiChatShowWorkModule {}\n", + "children": [ + { + "type": "providers", + "elements": [] + }, + { + "type": "declarations", + "elements": [] + }, + { + "type": "imports", + "elements": [ + { + "name": "AiChatShowWorkComponent" + } + ] + }, + { + "type": "exports", + "elements": [ + { + "name": "AiChatShowWorkComponent" + } + ] + }, + { + "type": "bootstrap", + "elements": [] + }, + { + "type": "classes", + "elements": [] + } + ] + }, + { + "name": "AppModule", + "id": "module-AppModule-7a1b667f237722c07d5ca32fa15ec582c1dd3dcc1edd1c0593d225f3a685da59e4d6788e5bdf1d2f1deb79c3fec3ef9bcd7482f800cc1132aa5342c7c5f045cb", + "description": "", + "deprecationMessage": "", + "deprecated": false, + "file": "src/app/app.module.ts", + "methods": [], + "sourceCode": "import { AnnouncementComponent } from './announcement/announcement.component';\nimport { AnnouncementDialogComponent } from './announcement/announcement.component';\nimport { AppComponent } from './app.component';\nimport { AppRoutingModule } from './app-routing.module';\nimport { ArchiveProjectService } from './services/archive-project.service';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { ConfigService } from './services/config.service';\nimport { FooterComponent } from './modules/footer/footer.component';\nimport { FormsModule } from '@angular/forms';\nimport { HeaderComponent } from './modules/header/header.component';\nimport { HomeModule } from './home/home.module';\nimport { HttpErrorInterceptor } from './http-error.interceptor';\nimport { HTTP_INTERCEPTORS, provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatSidenavModule } from '@angular/material/sidenav';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { MAT_SNACK_BAR_DEFAULT_OPTIONS } from '@angular/material/snack-bar';\nimport { MAT_TABS_CONFIG } from '@angular/material/tabs';\nimport { MobileMenuComponent } from './modules/mobile-menu/mobile-menu.component';\nimport { NgModule, inject, provideAppInitializer } from '@angular/core';\nimport { RecaptchaV3Module, RECAPTCHA_V3_SITE_KEY, RECAPTCHA_BASE_URL } from 'ng-recaptcha-2';\nimport { RouterModule } from '@angular/router';\nimport { StudentService } from './student/student.service';\nimport { TeacherService } from './teacher/teacher.service';\nimport { TrackScrollDirective } from './track-scroll.directive';\nimport { UserService } from './services/user.service';\n\nexport function initialize(\n configService: ConfigService,\n userService: UserService\n): () => Promise {\n return (): Promise => {\n return new Promise((resolve) => {\n userService.retrieveUserPromise().then(() => {\n return userService.getUser().subscribe(() => {\n return configService.retrieveConfig().subscribe((config) => {\n resolve(config);\n });\n });\n });\n });\n };\n}\n\n@NgModule({\n declarations: [AppComponent, AnnouncementDialogComponent, TrackScrollDirective],\n bootstrap: [AppComponent],\n imports: [\n AnnouncementComponent,\n AppRoutingModule,\n BrowserModule,\n FooterComponent,\n FormsModule,\n HeaderComponent,\n HomeModule,\n MatDialogModule,\n MatSidenavModule,\n MatSnackBarModule,\n MobileMenuComponent,\n RecaptchaV3Module,\n RouterModule.forRoot([], {\n scrollPositionRestoration: 'enabled',\n anchorScrolling: 'enabled',\n bindToComponentInputs: true,\n onSameUrlNavigation: 'reload'\n })\n ],\n providers: [\n ArchiveProjectService,\n ConfigService,\n StudentService,\n TeacherService,\n UserService,\n provideAppInitializer(() => {\n const initializerFn = initialize(inject(ConfigService), inject(UserService));\n return initializerFn();\n }),\n {\n provide: MAT_TABS_CONFIG,\n useValue: {\n animationDuration: '400ms',\n stretchTabs: false\n }\n },\n {\n provide: MAT_SNACK_BAR_DEFAULT_OPTIONS,\n useValue: {\n duration: 10000,\n verticalPosition: 'bottom',\n horizontalPosition: 'start'\n }\n },\n {\n provide: HTTP_INTERCEPTORS,\n useClass: HttpErrorInterceptor,\n multi: true\n },\n {\n provide: RECAPTCHA_V3_SITE_KEY,\n useFactory: (configService: ConfigService) => {\n return configService.getRecaptchaPublicKey();\n },\n deps: [ConfigService]\n },\n {\n provide: RECAPTCHA_BASE_URL,\n useValue: 'https://recaptcha.net/recaptcha/api.js'\n },\n provideHttpClient(withInterceptorsFromDi())\n ]\n})\nexport class AppModule {}\n", + "children": [ + { + "type": "providers", + "elements": [ + { + "name": "ArchiveProjectService" + }, + { + "name": "ConfigService" + }, + { + "name": "HttpErrorInterceptor" + }, + { + "name": "StudentService" + }, + { + "name": "TeacherService" + }, + { + "name": "UserService" + } + ] + }, + { + "type": "declarations", + "elements": [ + { + "name": "AnnouncementDialogComponent" + }, + { + "name": "AppComponent" + }, + { + "name": "TrackScrollDirective" + } + ] + }, + { + "type": "imports", + "elements": [ + { + "name": "AnnouncementComponent" + }, + { + "name": "AppRoutingModule" + }, + { + "name": "FooterComponent" + }, + { + "name": "HeaderComponent" + }, + { + "name": "HomeModule" + }, + { + "name": "MobileMenuComponent" + } + ] + }, + { + "type": "exports", + "elements": [] + }, + { + "type": "bootstrap", + "elements": [ + { + "name": "AppComponent" + } + ] + }, + { + "type": "classes", + "elements": [] + } + ] + }, + { + "name": "AppRoutingModule", + "id": "module-AppRoutingModule-3f8f2ab3e8de4068509002040826b67cae258b8f0eb45e7be862ab3e2e22d338e0c05f97f05a6067a944acb295fe67daad530eb55e07bae7b453e89f6614feb8", + "description": "", + "deprecationMessage": "", + "deprecated": false, + "file": "src/app/app-routing.module.ts", + "methods": [], + "sourceCode": "import { FormsModule } from '@angular/forms';\nimport { HTTP_INTERCEPTORS, HttpRequest, HttpHandler, HttpInterceptor } from '@angular/common/http';\nimport { Injectable, NgModule } from '@angular/core';\nimport { PersonalLibraryComponent } from './modules/library/personal-library/personal-library.component';\nimport { PublicLibraryComponent } from './modules/library/public-library/public-library.component';\nimport { RouterModule, Routes } from '@angular/router';\n\nconst routes: Routes = [\n { path: '', loadChildren: () => \"import('./home/home.module').then((m) => m.HomeModule)\" },\n {\n path: 'about',\n loadComponent: () => \"import('./about/about.component').then((m) => m.AboutComponent)\"\n },\n {\n path: 'contact',\n loadChildren: () => \"import('./contact/contact.module').then((m) => m.ContactModule)\"\n },\n {\n path: 'curriculum',\n loadComponent: () =>\n \"import('./curriculum/curriculum.component').then((m) => m.CurriculumComponent)\",\n children: [\n { path: '', redirectTo: 'public', pathMatch: 'full' },\n { path: 'public', component: PublicLibraryComponent },\n { path: 'personal', component: PersonalLibraryComponent },\n { path: '**', redirectTo: 'public' }\n ]\n },\n {\n path: 'features',\n loadComponent: () => \"import('./features/features.component').then((m) => m.FeaturesComponent)\"\n },\n {\n path: 'forgot',\n loadChildren: () => \"import('./forgot/forgot-routing.module').then((m) => m.ForgotRoutingModule)\"\n },\n {\n path: 'help',\n loadChildren: () => \"import('./help/help-routing.module').then((m) => m.HelpRoutingModule)\"\n },\n {\n path: 'join',\n loadChildren: () => \"import('./register/register.module').then((m) => m.RegisterModule)\"\n },\n { path: 'login', loadChildren: () => \"import('./login/login.module').then((m) => m.LoginModule)\" },\n { path: 'news', loadChildren: () => \"import('./news/news.module').then((m) => m.NewsModule)\" },\n {\n path: 'privacy',\n loadComponent: () => \"import('./privacy/privacy.component').then((m) => m.PrivacyComponent)\"\n },\n {\n path: 'preview',\n loadChildren: () => \"import('./student/student.module').then((m) => m.StudentModule)\"\n },\n {\n path: 'student',\n loadChildren: () => \"import('./student/student.module').then((m) => m.StudentModule)\"\n },\n {\n path: 'teacher',\n loadChildren: () => \"import('./teacher/teacher.module').then((m) => m.TeacherModule)\"\n },\n {\n path: 'survey',\n loadChildren: () =>\n \"import('./student/survey/survey-routing.module').then((m) => m.SurveyRoutingModule)\"\n }\n];\n\n@Injectable()\nexport class XhrInterceptor implements HttpInterceptor {\n intercept(req: HttpRequest, next: HttpHandler) {\n const xhr = req.clone({\n headers: req.headers.set('X-Requested-With', 'XMLHttpRequest')\n });\n return next.handle(xhr);\n }\n}\n\n@NgModule({\n imports: [RouterModule.forRoot(routes, { paramsInheritanceStrategy: 'always' }), FormsModule],\n exports: [RouterModule],\n providers: [{ provide: HTTP_INTERCEPTORS, useClass: XhrInterceptor, multi: true }]\n})\nexport class AppRoutingModule {}\n", + "children": [ + { + "type": "providers", + "elements": [ + { + "name": "XhrInterceptor" + } + ] + }, + { + "type": "declarations", + "elements": [] + }, + { + "type": "imports", + "elements": [] + }, + { + "type": "exports", + "elements": [] + }, + { + "type": "bootstrap", + "elements": [] + }, + { + "type": "classes", + "elements": [] + } + ] + }, + { + "name": "AuthoringRoutingModule", + "id": "module-AuthoringRoutingModule-baa63d16ac557d96f0ae22598f54b55e86cb8729044c8a6227e06f96e2d695d637108074206a3d4ab7a78efb2eebf339286bab947357b21730e81b67c1bef10b", + "description": "", + "deprecationMessage": "", + "deprecated": false, + "file": "src/app/teacher/authoring-routing.module.ts", + "methods": [], + "sourceCode": "import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { AuthoringConfigResolver } from './authoring.config.resolver';\nimport { AuthoringProjectResolver } from './authoring.project.resolver';\nimport { RecoveryAuthoringProjectResolver } from './recovery-authoring-project.resolver';\n\nconst routes: Routes = [\n {\n path: '',\n loadComponent: () =>\n \"import('../../assets/wise5/authoringTool/authoring-tool.component').then(\\n\\\n (m) => m.AuthoringToolComponent\\n\\\n )\",\n resolve: { config: AuthoringConfigResolver },\n children: [\n {\n path: 'home',\n loadComponent: () =>\n \"import('../../assets/wise5/authoringTool/project-list/project-list.component').then(\\n\\\n (m) => m.ProjectListComponent\\n\\\n )\"\n },\n {\n path: 'new-unit',\n loadComponent: () =>\n \"import('../../assets/wise5/authoringTool/add-project/add-project.component').then(\\n\\\n (m) => m.AddProjectComponent\\n\\\n )\"\n },\n {\n path: 'recovery/:unitId',\n loadComponent: () =>\n \"import(\\n\\\n '../../assets/wise5/authoringTool/recovery-authoring/recovery-authoring.component'\\n\\\n ).then((m) => m.RecoveryAuthoringComponent)\",\n resolve: { project: RecoveryAuthoringProjectResolver }\n },\n {\n path: 'unit/:unitId',\n loadComponent: () =>\n \"import(\\n\\\n '../../assets/wise5/authoringTool/project-authoring-parent/project-authoring-parent.component'\\n\\\n ).then((m) => m.ProjectAuthoringParentComponent)\",\n resolve: { project: AuthoringProjectResolver },\n children: [\n {\n path: '',\n loadComponent: () =>\n \"import(\\n\\\n '../../assets/wise5/authoringTool/project-authoring/project-authoring.component'\\n\\\n ).then((m) => m.ProjectAuthoringComponent)\"\n },\n {\n path: 'add-lesson',\n loadChildren: () =>\n \"import('../../assets/wise5/authoringTool/addLesson/add-lesson-routing.module').then(\\n\\\n (m) => m.AddLessonRoutingModule\\n\\\n )\"\n },\n {\n path: 'add-node',\n loadChildren: () =>\n \"import('../../assets/wise5/authoringTool/addNode/add-node-routing.module').then(\\n\\\n (m) => m.AddNodeRoutingModule\\n\\\n )\"\n },\n {\n path: 'create-branch',\n loadComponent: () =>\n \"import('../../assets/wise5/authoringTool/create-branch/create-branch.component').then(\\n\\\n (m) => m.CreateBranchComponent\\n\\\n )\"\n },\n {\n path: 'advanced',\n loadComponent: () =>\n \"import(\\n\\\n '../../assets/wise5/authoringTool/advanced/advanced-project-authoring.component'\\n\\\n ).then((m) => m.AdvancedProjectAuthoringComponent)\"\n },\n {\n path: 'asset',\n loadComponent: () =>\n \"import(\\n\\\n '../../assets/wise5/authoringTool/project-asset-authoring/project-asset-authoring.component'\\n\\\n ).then((m) => m.ProjectAssetAuthoringComponent)\"\n },\n {\n path: 'choose-copy-location',\n loadComponent: () =>\n \"import(\\n\\\n '../../assets/wise5/authoringTool/choose-node-location/choose-copy-node-location/choose-copy-node-location.component'\\n\\\n ).then((m) => m.ChooseCopyNodeLocationComponent)\"\n },\n {\n path: 'choose-move-location',\n loadComponent: () =>\n \"import(\\n\\\n '../../assets/wise5/authoringTool/choose-node-location/choose-move-node-location/choose-move-node-location.component'\\n\\\n ).then((m) => m.ChooseMoveNodeLocationComponent)\"\n },\n {\n path: 'edit-branch',\n loadComponent: () =>\n \"import('../../assets/wise5/authoringTool/edit-branch/edit-branch.component').then(\\n\\\n (m) => m.EditBranchComponent\\n\\\n )\"\n },\n {\n path: 'info',\n loadComponent: () =>\n \"import(\\n\\\n '../../assets/wise5/authoringTool/project-info-authoring/project-info-authoring.component'\\n\\\n ).then((m) => m.ProjectInfoAuthoringComponent)\"\n },\n {\n path: 'milestones',\n loadComponent: () =>\n \"import(\\n\\\n '../../assets/wise5/authoringTool/milestones-authoring/milestones-authoring.component'\\n\\\n ).then((m) => m.MilestonesAuthoringComponent)\"\n },\n {\n path: 'node/:nodeId',\n loadChildren: () =>\n \"import('../../assets/wise5/authoringTool/node/node-authoring-routing.module').then(\\n\\\n (m) => m.NodeAuthoringRoutingModule\\n\\\n )\"\n },\n {\n path: 'notebook',\n loadComponent: () =>\n \"import(\\n\\\n '../../assets/wise5/authoringTool/notebook-authoring/notebook-authoring.component'\\n\\\n ).then((m) => m.NotebookAuthoringComponent)\"\n }\n ]\n }\n ]\n }\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule]\n})\nexport class AuthoringRoutingModule {}\n", + "children": [ + { + "type": "providers", + "elements": [] + }, + { + "type": "declarations", + "elements": [] + }, + { + "type": "imports", + "elements": [] + }, + { + "type": "exports", + "elements": [] + }, + { + "type": "bootstrap", + "elements": [] + }, + { + "type": "classes", + "elements": [] + } + ] + }, + { + "name": "ClassroomMonitorModule", + "id": "module-ClassroomMonitorModule-64f5d1c94ef1911c51b3735c93f56112b308836ca046c2b769fb6ac8e5421d24984ee7beeefe00b0d19a0cd645827698f60bcb55561bd692c852c982bc8763a7", + "description": "", + "deprecationMessage": "", + "deprecated": false, + "file": "src/app/teacher/classroom-monitor.module.ts", + "methods": [], + "sourceCode": "import { NgModule } from '@angular/core';\nimport { ComponentNewWorkBadgeComponent } from '../classroom-monitor/component-new-work-badge/component-new-work-badge.component';\nimport { PeerGroupGradingModule } from './peer-group-grading.module';\nimport { HighchartsChartModule } from 'highcharts-angular';\nimport { StudentTeacherCommonModule } from '../student-teacher-common.module';\nimport { ComponentStudentModule } from '../../assets/wise5/components/component/component-student.module';\nimport { NotebookWorkgroupGradingComponent } from '../../assets/wise5/classroomMonitor/classroomMonitorComponents/notebook/notebook-workgroup-grading/notebook-workgroup-grading.component';\nimport { PauseScreensMenuComponent } from '../../assets/wise5/classroomMonitor/classroomMonitorComponents/pause-screens-menu/pause-screens-menu.component';\nimport { StepItemComponent } from '../../assets/wise5/classroomMonitor/classroomMonitorComponents/studentGrading/step-item/step-item.component';\nimport { NotificationsMenuComponent } from '../../assets/wise5/classroomMonitor/classroomMonitorComponents/shared/notifications-menu/notifications-menu.component';\nimport { NavItemComponent } from '../../assets/wise5/classroomMonitor/classroomMonitorComponents/nodeProgress/nav-item/nav-item.component';\nimport { NodeProgressViewComponent } from '../../assets/wise5/classroomMonitor/classroomMonitorComponents/nodeProgress/node-progress-view/node-progress-view.component';\nimport { NotebookGradingComponent } from '../../assets/wise5/classroomMonitor/notebook-grading/notebook-grading.component';\nimport { StudentGradingComponent } from '../../assets/wise5/classroomMonitor/student-grading/student-grading.component';\nimport { StudentProgressComponent } from '../../assets/wise5/classroomMonitor/student-progress/student-progress.component';\nimport { ClassroomMonitorComponent } from '../../assets/wise5/classroomMonitor/classroom-monitor.component';\nimport { MilestoneModule } from './milestone/milestone.module';\nimport { GradingCommonModule } from './grading-common.module';\nimport { ManageStudentsComponent } from '../../assets/wise5/classroomMonitor/classroomMonitorComponents/manageStudents/manage-students/manage-students.component';\nimport { RouterModule } from '@angular/router';\nimport { PreviewComponentComponent } from '../../assets/wise5/authoringTool/components/preview-component/preview-component.component';\nimport { ComponentGradingComponent } from '../../assets/wise5/classroomMonitor/classroomMonitorComponents/component-grading.component';\nimport { SelectPeriodComponent } from '../../assets/wise5/classroomMonitor/classroomMonitorComponents/select-period/select-period.component';\nimport { GradingNodeService } from '../../assets/wise5/services/gradingNodeService';\n\n@NgModule({\n imports: [\n ClassroomMonitorComponent,\n ComponentGradingComponent,\n ComponentNewWorkBadgeComponent,\n ComponentStudentModule,\n GradingCommonModule,\n HighchartsChartModule,\n ManageStudentsComponent,\n MilestoneModule,\n NavItemComponent,\n NotificationsMenuComponent,\n PauseScreensMenuComponent,\n PeerGroupGradingModule,\n PreviewComponentComponent,\n RouterModule,\n SelectPeriodComponent,\n StepItemComponent,\n StudentProgressComponent,\n StudentTeacherCommonModule,\n NodeProgressViewComponent,\n NotebookGradingComponent,\n NotebookWorkgroupGradingComponent,\n StudentGradingComponent\n ],\n providers: [GradingNodeService]\n})\nexport class ClassroomMonitorModule {}\n", + "children": [ + { + "type": "providers", + "elements": [ + { + "name": "GradingNodeService" + } + ] + }, + { + "type": "declarations", + "elements": [] + }, + { + "type": "imports", + "elements": [ + { + "name": "ClassroomMonitorComponent" + }, + { + "name": "ComponentGradingComponent" + }, + { + "name": "ComponentNewWorkBadgeComponent" + }, + { + "name": "GradingCommonModule" + }, + { + "name": "ManageStudentsComponent" + }, + { + "name": "MilestoneModule" + }, + { + "name": "NavItemComponent" + }, + { + "name": "NodeProgressViewComponent" + }, + { + "name": "NotebookGradingComponent" + }, + { + "name": "NotebookWorkgroupGradingComponent" + }, + { + "name": "NotificationsMenuComponent" + }, + { + "name": "PauseScreensMenuComponent" + }, + { + "name": "PeerGroupGradingModule" + }, + { + "name": "PreviewComponentComponent" + }, + { + "name": "SelectPeriodComponent" + }, + { + "name": "StepItemComponent" + }, + { + "name": "StudentGradingComponent" + }, + { + "name": "StudentProgressComponent" + }, + { + "name": "StudentTeacherCommonModule" + } + ] + }, + { + "type": "exports", + "elements": [] + }, + { + "type": "bootstrap", + "elements": [] + }, + { + "type": "classes", + "elements": [] + } + ] + }, + { + "name": "ClassroomMonitorTestingModule", + "id": "module-ClassroomMonitorTestingModule-43b77703af0d37098e0c421a6a31e0609941549243c22f44061564e2115d5cd53f96a8c877cf87ab5f391f8b57850604a1ccb02695a45b8e4cfde3666fefddc2", + "description": "", + "deprecationMessage": "", + "deprecated": false, + "file": "src/assets/wise5/classroomMonitor/classroom-monitor-testing.module.ts", + "methods": [], + "sourceCode": "import { NgModule } from '@angular/core';\nimport { ClassroomStatusService } from '../services/classroomStatusService';\nimport { TeacherDataService } from '../services/teacherDataService';\nimport { TeacherProjectService } from '../services/teacherProjectService';\nimport { TeacherWebSocketService } from '../services/teacherWebSocketService';\nimport { StudentTeacherCommonServicesModule } from '../../../app/student-teacher-common-services.module';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { provideHttpClientTesting } from '@angular/common/http/testing';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { MilestoneService } from '../services/milestoneService';\nimport { TeacherPeerGroupService } from '../services/teacherPeerGroupService';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { MilestoneReportService } from '../services/milestoneReportService';\nimport { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';\nimport { TeacherPauseScreenService } from '../services/teacherPauseScreenService';\nimport { RunStatusService } from '../services/runStatusService';\nimport { GradingNodeService } from '../services/gradingNodeService';\n\n@NgModule({\n imports: [\n BrowserAnimationsModule,\n MatDialogModule,\n MatSnackBarModule,\n StudentTeacherCommonServicesModule\n ],\n providers: [\n ClassroomStatusService,\n GradingNodeService,\n MilestoneService,\n MilestoneReportService,\n TeacherDataService,\n TeacherPauseScreenService,\n TeacherPeerGroupService,\n TeacherProjectService,\n TeacherWebSocketService,\n RunStatusService,\n provideHttpClient(withInterceptorsFromDi()),\n provideHttpClientTesting()\n ]\n})\nexport class ClassroomMonitorTestingModule {}\n", + "children": [ + { + "type": "providers", + "elements": [ + { + "name": "ClassroomStatusService" + }, + { + "name": "GradingNodeService" + }, + { + "name": "MilestoneReportService" + }, + { + "name": "MilestoneService" + }, + { + "name": "RunStatusService" + }, + { + "name": "TeacherDataService" + }, + { + "name": "TeacherPauseScreenService" + }, + { + "name": "TeacherPeerGroupService" + }, + { + "name": "TeacherProjectService" + }, + { + "name": "TeacherWebSocketService" + } + ] + }, + { + "type": "declarations", + "elements": [] + }, + { + "type": "imports", + "elements": [ + { + "name": "StudentTeacherCommonServicesModule" + } + ] + }, + { + "type": "exports", + "elements": [] + }, + { + "type": "bootstrap", + "elements": [] + }, + { + "type": "classes", + "elements": [] + } + ] + }, + { + "name": "ComponentAuthoringModule", + "id": "module-ComponentAuthoringModule-70a055a50c5afa6309b257182a6f6f855c4edd277318e2b8cc302e16ba9a5d5e0cdab1d362baa51e5b08445c45f1e177389260557d4bcd43b91657685bf3e17e", + "description": "", + "deprecationMessage": "", + "deprecated": false, + "file": "src/app/teacher/component-authoring.module.ts", + "methods": [], + "sourceCode": "import { NgModule } from '@angular/core';\nimport { AnimationAuthoring } from '../../assets/wise5/components/animation/animation-authoring/animation-authoring.component';\nimport { AudioOscillatorAuthoring } from '../../assets/wise5/components/audioOscillator/audio-oscillator-authoring/audio-oscillator-authoring.component';\nimport { ConceptMapAuthoring } from '../../assets/wise5/components/conceptMap/concept-map-authoring/concept-map-authoring.component';\nimport { DialogGuidanceAuthoringComponent } from '../../assets/wise5/components/dialogGuidance/dialog-guidance-authoring/dialog-guidance-authoring.component';\nimport { DiscussionAuthoring } from '../../assets/wise5/components/discussion/discussion-authoring/discussion-authoring.component';\nimport { DrawAuthoring } from '../../assets/wise5/components/draw/draw-authoring/draw-authoring.component';\nimport { EmbeddedAuthoring } from '../../assets/wise5/components/embedded/embedded-authoring/embedded-authoring.component';\nimport { GraphAuthoring } from '../../assets/wise5/components/graph/graph-authoring/graph-authoring.component';\nimport { HtmlAuthoringComponent } from '../../assets/wise5/components/html/html-authoring/html-authoring.component';\nimport { LabelAuthoring } from '../../assets/wise5/components/label/label-authoring/label-authoring.component';\nimport { MatchAuthoringComponent } from '../../assets/wise5/components/match/match-authoring/match-authoring.component';\nimport { MultipleChoiceAuthoring } from '../../assets/wise5/components/multipleChoice/multiple-choice-authoring/multiple-choice-authoring.component';\nimport { OpenResponseAuthoringComponent } from '../../assets/wise5/components/openResponse/open-response-authoring/open-response-authoring.component';\nimport { OutsideUrlAuthoring } from '../../assets/wise5/components/outsideURL/outside-url-authoring/outside-url-authoring.component';\nimport { SummaryAuthoring } from '../../assets/wise5/components/summary/summary-authoring/summary-authoring.component';\nimport { TableAuthoring } from '../../assets/wise5/components/table/table-authoring/table-authoring.component';\nimport { PeerChatAuthoringComponent } from '../../assets/wise5/components/peerChat/peer-chat-authoring/peer-chat-authoring.component';\nimport { ShowMyWorkAuthoringComponent } from '../../assets/wise5/components/showMyWork/show-my-work-authoring/show-my-work-authoring.component';\nimport { ShowGroupWorkAuthoringComponent } from '../../assets/wise5/components/showGroupWork/show-group-work-authoring/show-group-work-authoring.component';\nimport { EditComponentAdvancedComponent } from '../authoring-tool/edit-component-advanced/edit-component-advanced.component';\nimport { AiChatAuthoringComponent } from '../../assets/wise5/components/aiChat/ai-chat-authoring/ai-chat-authoring.component';\nimport { PeerGroupingAuthoringService } from '../../assets/wise5/services/peerGroupingAuthoringService';\n\n@NgModule({\n imports: [\n AiChatAuthoringComponent,\n AnimationAuthoring,\n AudioOscillatorAuthoring,\n ConceptMapAuthoring,\n DiscussionAuthoring,\n DrawAuthoring,\n DialogGuidanceAuthoringComponent,\n EditComponentAdvancedComponent,\n EmbeddedAuthoring,\n GraphAuthoring,\n LabelAuthoring,\n OutsideUrlAuthoring,\n PeerChatAuthoringComponent,\n ShowGroupWorkAuthoringComponent,\n ShowMyWorkAuthoringComponent,\n SummaryAuthoring,\n TableAuthoring,\n HtmlAuthoringComponent,\n MatchAuthoringComponent,\n MultipleChoiceAuthoring,\n OpenResponseAuthoringComponent\n ],\n providers: [PeerGroupingAuthoringService]\n})\nexport class ComponentAuthoringModule {}\n", + "children": [ + { + "type": "providers", + "elements": [ + { + "name": "PeerGroupingAuthoringService" + } + ] + }, + { + "type": "declarations", + "elements": [] + }, + { + "type": "imports", + "elements": [ + { + "name": "AiChatAuthoringComponent" + }, + { + "name": "AnimationAuthoring" + }, + { + "name": "AudioOscillatorAuthoring" + }, + { + "name": "ConceptMapAuthoring" + }, + { + "name": "DialogGuidanceAuthoringComponent" + }, + { + "name": "DiscussionAuthoring" + }, + { + "name": "DrawAuthoring" + }, + { + "name": "EditComponentAdvancedComponent" + }, + { + "name": "EmbeddedAuthoring" + }, + { + "name": "GraphAuthoring" + }, + { + "name": "HtmlAuthoringComponent" + }, + { + "name": "LabelAuthoring" + }, + { + "name": "MatchAuthoringComponent" + }, + { + "name": "MultipleChoiceAuthoring" + }, + { + "name": "OpenResponseAuthoringComponent" + }, + { + "name": "OutsideUrlAuthoring" + }, + { + "name": "PeerChatAuthoringComponent" + }, + { + "name": "ShowGroupWorkAuthoringComponent" + }, + { + "name": "ShowMyWorkAuthoringComponent" + }, + { + "name": "SummaryAuthoring" + }, + { + "name": "TableAuthoring" + } + ] + }, + { + "type": "exports", + "elements": [] + }, + { + "type": "bootstrap", + "elements": [] + }, + { + "type": "classes", + "elements": [] + } + ] + }, + { + "name": "ComponentServiceLookupServiceModule", + "id": "module-ComponentServiceLookupServiceModule-6fcc80f28e007ade8ec6a1468228eec0aa645469a6cd9109c14b533d837079cede9c6ea8445b0454c91d85e2d40bac6e45ef033b8ee3dc955efab94f6e60073e", + "description": "", + "deprecationMessage": "", + "deprecated": false, + "file": "src/assets/wise5/services/componentServiceLookupServiceModule.ts", + "methods": [], + "sourceCode": "import { NgModule } from '@angular/core';\nimport { AnimationService } from '../components/animation/animationService';\nimport { AudioOscillatorService } from '../components/audioOscillator/audioOscillatorService';\nimport { ConceptMapService } from '../components/conceptMap/conceptMapService';\nimport { DialogGuidanceService } from '../components/dialogGuidance/dialogGuidanceService';\nimport { DiscussionService } from '../components/discussion/discussionService';\nimport { DrawService } from '../components/draw/drawService';\nimport { EmbeddedService } from '../components/embedded/embeddedService';\nimport { GraphService } from '../components/graph/graphService';\nimport { HTMLService } from '../components/html/htmlService';\nimport { LabelService } from '../components/label/labelService';\nimport { MatchService } from '../components/match/matchService';\nimport { MultipleChoiceService } from '../components/multipleChoice/multipleChoiceService';\nimport { OpenResponseCompletionCriteriaService } from '../components/openResponse/openResponseCompletionCriteriaService';\nimport { OpenResponseService } from '../components/openResponse/openResponseService';\nimport { OutsideURLService } from '../components/outsideURL/outsideURLService';\nimport { PeerChatService } from '../components/peerChat/peerChatService';\nimport { ShowGroupWorkService } from '../components/showGroupWork/showGroupWorkService';\nimport { ShowMyWorkService } from '../components/showMyWork/showMyWorkService';\nimport { SummaryService } from '../components/summary/summaryService';\nimport { TableService } from '../components/table/tableService';\nimport { ComponentServiceLookupService } from './componentServiceLookupService';\nimport { ComputerAvatarService } from './computerAvatarService';\nimport { ConfigService } from './configService';\nimport { StudentAssetService } from './studentAssetService';\nimport { AiChatService } from '../components/aiChat/aiChatService';\n\n@NgModule({\n declarations: [],\n imports: [],\n providers: [\n AiChatService,\n AnimationService,\n AudioOscillatorService,\n ComputerAvatarService,\n ComponentServiceLookupService,\n ConceptMapService,\n ConfigService,\n DialogGuidanceService,\n DiscussionService,\n DrawService,\n EmbeddedService,\n GraphService,\n LabelService,\n MatchService,\n MultipleChoiceService,\n OpenResponseCompletionCriteriaService,\n OpenResponseService,\n OutsideURLService,\n PeerChatService,\n HTMLService,\n ShowGroupWorkService,\n ShowMyWorkService,\n StudentAssetService,\n SummaryService,\n TableService\n ]\n})\nexport class ComponentServiceLookupServiceModule {}\n", + "children": [ + { + "type": "providers", + "elements": [ + { + "name": "AiChatService" + }, + { + "name": "AnimationService" + }, + { + "name": "AudioOscillatorService" + }, + { + "name": "ComponentServiceLookupService" + }, + { + "name": "ComputerAvatarService" + }, + { + "name": "ConceptMapService" + }, + { + "name": "ConfigService" + }, + { + "name": "DialogGuidanceService" + }, + { + "name": "DiscussionService" + }, + { + "name": "DrawService" + }, + { + "name": "EmbeddedService" + }, + { + "name": "GraphService" + }, + { + "name": "HTMLService" + }, + { + "name": "LabelService" + }, + { + "name": "MatchService" + }, + { + "name": "MultipleChoiceService" + }, + { + "name": "OpenResponseCompletionCriteriaService" + }, + { + "name": "OpenResponseService" + }, + { + "name": "OutsideURLService" + }, + { + "name": "PeerChatService" + }, + { + "name": "ShowGroupWorkService" + }, + { + "name": "ShowMyWorkService" + }, + { + "name": "StudentAssetService" + }, + { + "name": "SummaryService" + }, + { + "name": "TableService" + } + ] + }, + { + "type": "declarations", + "elements": [] + }, + { + "type": "imports", + "elements": [] + }, + { + "type": "exports", + "elements": [] + }, + { + "type": "bootstrap", + "elements": [] + }, + { + "type": "classes", + "elements": [] + } + ] + }, + { + "name": "ComponentStudentModule", + "id": "module-ComponentStudentModule-92b53831ad3f73295a689fb4055d5edf5392dcb8b6625630229da02f02a3b072fb1477518dd246c8284d0dc6ce38cb8786bdc651eec773b7d8869d2fd3dda949", + "description": "", + "deprecationMessage": "", + "deprecated": false, + "file": "src/assets/wise5/components/component/component-student.module.ts", + "methods": [], + "sourceCode": "import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { HighchartsChartModule } from 'highcharts-angular';\nimport { StudentComponentModule } from '../../../../app/student/student.component.module';\nimport { PreviewComponentComponent } from '../../authoringTool/components/preview-component/preview-component.component';\nimport { AnimationStudent } from '../animation/animation-student/animation-student.component';\nimport { ConceptMapStudent } from '../conceptMap/concept-map-student/concept-map-student.component';\nimport { DiscussionStudent } from '../discussion/discussion-student/discussion-student.component';\nimport { HtmlStudentComponent } from '../html/html-student/html-student.component';\nimport { LabelStudentComponent } from '../label/label-student/label-student.component';\nimport { MatchStudentModule } from '../match/match-student/match-student.module';\nimport { OpenResponseStudentModule } from '../openResponse/open-response-student/open-response-student.module';\nimport { ShowGroupWorkStudentModule } from '../showGroupWork/show-group-work-student/show-group-work-student.module';\nimport { ShowMyWorkStudentModule } from '../showMyWork/show-my-work-student/show-my-work-student.module';\nimport { SummaryStudentModule } from '../summary/summary-student/summary-student.module';\nimport { TableStudentComponent } from '../table/table-student/table-student.component';\nimport { ComponentComponent } from './component.component';\nimport { HelpIconComponent } from '../../themes/default/themeComponents/helpIcon/help-icon.component';\nimport { MultipleChoiceStudentComponent } from '../multipleChoice/multiple-choice-student/multiple-choice-student.component';\nimport { DialogGuidanceStudentComponent } from '../dialogGuidance/dialog-guidance-student/dialog-guidance-student.component';\nimport { StudentAssetsDialogComponent } from '../../vle/studentAsset/student-assets-dialog/student-assets-dialog.component';\nimport { AiChatStudentComponent } from '../aiChat/ai-chat-student/ai-chat-student.component';\nimport { AudioOscillatorStudent } from '../audioOscillator/audio-oscillator-student/audio-oscillator-student.component';\nimport { DrawStudent } from '../draw/draw-student/draw-student.component';\nimport { EmbeddedStudent } from '../embedded/embedded-student/embedded-student.component';\nimport { GraphStudent } from '../graph/graph-student/graph-student.component';\nimport { OutsideUrlStudent } from '../outsideURL/outside-url-student/outside-url-student.component';\nimport { PeerChatStudentComponent } from '../peerChat/peer-chat-student/peer-chat-student.component';\n\n@NgModule({\n imports: [\n AiChatStudentComponent,\n AnimationStudent,\n AudioOscillatorStudent,\n CommonModule,\n ComponentComponent,\n ConceptMapStudent,\n DialogGuidanceStudentComponent,\n DiscussionStudent,\n DrawStudent,\n EmbeddedStudent,\n GraphStudent,\n HelpIconComponent,\n HighchartsChartModule,\n HtmlStudentComponent,\n LabelStudentComponent,\n MatchStudentModule,\n MultipleChoiceStudentComponent,\n OpenResponseStudentModule,\n OutsideUrlStudent,\n PeerChatStudentComponent,\n PreviewComponentComponent,\n ShowGroupWorkStudentModule,\n ShowMyWorkStudentModule,\n StudentAssetsDialogComponent,\n StudentComponentModule,\n SummaryStudentModule,\n TableStudentComponent\n ],\n exports: [ComponentComponent, PreviewComponentComponent]\n})\nexport class ComponentStudentModule {}\n", + "children": [ + { + "type": "providers", + "elements": [] + }, + { + "type": "declarations", + "elements": [] + }, + { + "type": "imports", + "elements": [ + { + "name": "AiChatStudentComponent" + }, + { + "name": "AnimationStudent" + }, + { + "name": "AudioOscillatorStudent" + }, + { + "name": "ComponentComponent" + }, + { + "name": "ConceptMapStudent" + }, + { + "name": "DialogGuidanceStudentComponent" + }, + { + "name": "DiscussionStudent" + }, + { + "name": "DrawStudent" + }, + { + "name": "EmbeddedStudent" + }, + { + "name": "GraphStudent" + }, + { + "name": "HelpIconComponent" + }, + { + "name": "HtmlStudentComponent" + }, + { + "name": "LabelStudentComponent" + }, + { + "name": "MatchStudentModule" + }, + { + "name": "MultipleChoiceStudentComponent" + }, + { + "name": "OpenResponseStudentModule" + }, + { + "name": "OutsideUrlStudent" + }, + { + "name": "PeerChatStudentComponent" + }, + { + "name": "PreviewComponentComponent" + }, + { + "name": "ShowGroupWorkStudentModule" + }, + { + "name": "ShowMyWorkStudentModule" + }, + { + "name": "StudentAssetsDialogComponent" + }, + { + "name": "SummaryStudentModule" + }, + { + "name": "TableStudentComponent" + } + ] + }, + { + "type": "exports", + "elements": [ + { + "name": "ComponentComponent" + }, + { + "name": "PreviewComponentComponent" + } + ] + }, + { + "type": "bootstrap", + "elements": [] + }, + { + "type": "classes", + "elements": [] + } + ] + }, + { + "name": "ComponentTypeServiceModule", + "id": "module-ComponentTypeServiceModule-86d7f9ee5b0ac768c1945b834371069eca1534dbd8e90b04571466670b774a7b0eb80d4d513995f115d16c176a5a0ff998d6d3efa0d6b3df6ec917d252dea15d", + "description": "", + "deprecationMessage": "", + "deprecated": false, + "file": "src/assets/wise5/services/componentTypeService.module.ts", + "methods": [], + "sourceCode": "import { NgModule } from '@angular/core';\nimport { ComponentServiceLookupService } from './componentServiceLookupService';\nimport { UserService } from '../../../app/services/user.service';\nimport { ComponentTypeService } from './componentTypeService';\nimport { ConfigService } from '../../../app/services/config.service';\n\n@NgModule({\n providers: [ComponentServiceLookupService, ComponentTypeService, ConfigService, UserService]\n})\nexport class ComponentTypeServiceModule {}\n", + "children": [ + { + "type": "providers", + "elements": [ + { + "name": "ComponentServiceLookupService" + }, + { + "name": "ComponentTypeService" + }, + { + "name": "ConfigService" + }, + { + "name": "UserService" + } + ] + }, + { + "type": "declarations", + "elements": [] + }, + { + "type": "imports", + "elements": [] + }, + { + "type": "exports", + "elements": [] + }, + { + "type": "bootstrap", + "elements": [] + }, + { + "type": "classes", + "elements": [] + } + ] + }, + { + "name": "ContactModule", + "id": "module-ContactModule-6aa41ab1f24fb66265ffe8b0c1ad3f7930d2f4876363eca4694863cafb29070d7d47ccf27a7b2b3c3d9acf2eed9e4975c2a575053bb649c20461a3d5ca769e55", + "description": "", + "deprecationMessage": "", + "deprecated": false, + "file": "src/app/contact/contact.module.ts", + "methods": [], + "sourceCode": "import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { ContactRoutingModule } from './contact-routing.module';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatNativeDateModule } from '@angular/material/core';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { SharedModule } from '../modules/shared/shared.module';\nimport { ContactFormComponent } from './contact-form/contact-form.component';\nimport { RecaptchaModule, RecaptchaFormsModule } from 'ng-recaptcha-2';\n\nconst materialModules = [\n MatAutocompleteModule,\n MatButtonModule,\n MatCardModule,\n MatCheckboxModule,\n MatDatepickerModule,\n MatDialogModule,\n MatDividerModule,\n MatIconModule,\n MatMenuModule,\n MatNativeDateModule,\n MatProgressBarModule,\n MatRadioModule,\n MatTabsModule,\n MatTableModule,\n MatTooltipModule\n];\n\n@NgModule({\n imports: [\n CommonModule,\n ContactRoutingModule,\n FormsModule,\n ReactiveFormsModule,\n SharedModule,\n materialModules,\n RecaptchaModule,\n RecaptchaFormsModule\n ],\n declarations: [ContactFormComponent],\n exports: [ContactFormComponent, materialModules]\n})\nexport class ContactModule {}\n", + "children": [ + { + "type": "providers", + "elements": [] + }, + { + "type": "declarations", + "elements": [ + { + "name": "ContactFormComponent" + } + ] + }, + { + "type": "imports", + "elements": [ + { + "name": "ContactRoutingModule" + }, + { + "name": "SharedModule" + } + ] + }, + { + "type": "exports", + "elements": [ + { + "name": "ContactFormComponent" + } + ] + }, + { + "type": "bootstrap", + "elements": [] + }, + { + "type": "classes", + "elements": [] + } + ] + }, + { + "name": "ContactRoutingModule", + "id": "module-ContactRoutingModule-0400c86ad8ccef4244a6187ec24f6c301488a6849877078c4ed9ceb9ca77a97c613636c3f0a0c139eb01b7af1dda52f5853077b26b907d243882d7e735db888e", + "description": "", + "deprecationMessage": "", + "deprecated": false, + "file": "src/app/contact/contact-routing.module.ts", + "methods": [], + "sourceCode": "import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { ContactFormComponent } from './contact-form/contact-form.component';\nconst contactRoutes: Routes = [{ path: '', component: ContactFormComponent }];\n\n@NgModule({\n imports: [RouterModule.forChild(contactRoutes)],\n exports: [RouterModule]\n})\nexport class ContactRoutingModule {}\n", + "children": [ + { + "type": "providers", + "elements": [] + }, + { + "type": "declarations", + "elements": [] + }, + { + "type": "imports", + "elements": [] + }, + { + "type": "exports", + "elements": [] + }, + { + "type": "bootstrap", + "elements": [] + }, + { + "type": "classes", + "elements": [] + } + ] + }, + { + "name": "ForgotRoutingModule", + "id": "module-ForgotRoutingModule-8ae437ba2c757e98eb93e0d6d257fdbe37c91de892e5a4a3aa246bd6845e07ec306ea16cbfc3042899e8108795fb322f62433d39a21f6e2e17f7023c3305bae3", + "description": "", + "deprecationMessage": "", + "deprecated": false, + "file": "src/app/forgot/forgot-routing.module.ts", + "methods": [], + "sourceCode": "import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\nimport { ForgotComponent } from './forgot.component';\nimport { ForgotHomeComponent } from './forgot-home/forgot-home.component';\nimport { ForgotStudentComponent } from './student/forgot-student/forgot-student.component';\nimport { ForgotStudentUsernameComponent } from './student/forgot-student-username/forgot-student-username.component';\nimport { ForgotStudentPasswordComponent } from './student/forgot-student-password/forgot-student-password.component';\nimport { ForgotStudentPasswordSecurityComponent } from './student/forgot-student-password-security/forgot-student-password-security.component';\nimport { ForgotStudentPasswordChangeComponent } from './student/forgot-student-password-change/forgot-student-password-change.component';\nimport { ForgotTeacherComponent } from './teacher/forgot-teacher/forgot-teacher.component';\nimport { ForgotTeacherUsernameComponent } from './teacher/forgot-teacher-username/forgot-teacher-username.component';\nimport { ForgotTeacherUsernameCompleteComponent } from './teacher/forgot-teacher-username-complete/forgot-teacher-username-complete.component';\nimport { ForgotTeacherPasswordComponent } from './teacher/forgot-teacher-password/forgot-teacher-password.component';\nimport { ForgotTeacherPasswordVerifyComponent } from './teacher/forgot-teacher-password-verify/forgot-teacher-password-verify.component';\nimport { ForgotTeacherPasswordChangeComponent } from './teacher/forgot-teacher-password-change/forgot-teacher-password-change.component';\nimport { ForgotUserPasswordCompleteComponent } from './forgot-user-password-complete/forgot-user-password-complete.component';\n\nconst routes: Routes = [\n {\n path: '',\n component: ForgotComponent,\n children: [\n { path: '', component: ForgotHomeComponent },\n { path: 'student', component: ForgotStudentComponent },\n { path: 'student/username', component: ForgotStudentUsernameComponent },\n { path: 'student/password', component: ForgotStudentPasswordComponent },\n { path: 'student/password/security', component: ForgotStudentPasswordSecurityComponent },\n { path: 'student/password/change', component: ForgotStudentPasswordChangeComponent },\n { path: 'student/password/complete', component: ForgotUserPasswordCompleteComponent },\n { path: 'teacher', component: ForgotTeacherComponent },\n { path: 'teacher/username', component: ForgotTeacherUsernameComponent },\n { path: 'teacher/username/complete', component: ForgotTeacherUsernameCompleteComponent },\n { path: 'teacher/password', component: ForgotTeacherPasswordComponent },\n { path: 'teacher/password/verify', component: ForgotTeacherPasswordVerifyComponent },\n { path: 'teacher/password/change', component: ForgotTeacherPasswordChangeComponent },\n { path: 'teacher/password/complete', component: ForgotUserPasswordCompleteComponent }\n ]\n }\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule]\n})\nexport class ForgotRoutingModule {}\n", + "children": [ + { + "type": "providers", + "elements": [] + }, + { + "type": "declarations", + "elements": [] + }, + { + "type": "imports", + "elements": [] + }, + { + "type": "exports", + "elements": [] + }, + { + "type": "bootstrap", + "elements": [] + }, + { + "type": "classes", + "elements": [] + } + ] + }, + { + "name": "GradingCommonModule", + "id": "module-GradingCommonModule-0240e53fd04cfb6f9acaf9a176f62d062eb952c0cfc438e29a81a56c00b6a7acc64841666c2b4386b881ac30b9bfd3910c59867110c31c47cc5b83afc876cdfc", + "description": "", + "deprecationMessage": "", + "deprecated": false, + "file": "src/app/teacher/grading-common.module.ts", + "methods": [], + "sourceCode": "import { NgModule } from '@angular/core';\nimport { IntersectionObserverModule } from '@ng-web-apis/intersection-observer';\nimport { EditComponentAnnotationsComponent } from '../../assets/wise5/classroomMonitor/classroomMonitorComponents/edit-component-annotations/edit-component-annotations.component';\nimport { WorkgroupInfoComponent } from '../../assets/wise5/classroomMonitor/classroomMonitorComponents/nodeGrading/workgroupInfo/workgroup-info.component';\nimport { WorkgroupNodeScoreComponent } from '../../assets/wise5/classroomMonitor/classroomMonitorComponents/shared/workgroupNodeScore/workgroup-node-score.component';\nimport { WorkgroupComponentGradingComponent } from '../../assets/wise5/classroomMonitor/classroomMonitorComponents/workgroup-component-grading/workgroup-component-grading.component';\nimport { WorkgroupNodeStatusComponent } from '../classroom-monitor/workgroup-node-status/workgroup-node-status.component';\nimport { WorkgroupSelectAutocompleteComponent } from '../classroom-monitor/workgroup-select/workgroup-select-autocomplete/workgroup-select-autocomplete.component';\nimport { StudentTeacherCommonModule } from '../student-teacher-common.module';\nimport { StatusIconComponent } from '../classroom-monitor/status-icon/status-icon.component';\nimport { NavItemProgressComponent } from '../classroom-monitor/nav-item-progress/nav-item-progress.component';\nimport { ComponentGradingComponent } from '../../assets/wise5/classroomMonitor/classroomMonitorComponents/component-grading.component';\nimport { ComponentStateInfoComponent } from '../../assets/wise5/common/component-state-info/component-state-info.component';\n\n@NgModule({\n imports: [\n ComponentGradingComponent,\n ComponentStateInfoComponent,\n EditComponentAnnotationsComponent,\n IntersectionObserverModule,\n NavItemProgressComponent,\n StatusIconComponent,\n StudentTeacherCommonModule,\n WorkgroupInfoComponent,\n WorkgroupComponentGradingComponent,\n WorkgroupNodeScoreComponent,\n WorkgroupNodeStatusComponent,\n WorkgroupSelectAutocompleteComponent\n ],\n exports: [\n ComponentGradingComponent,\n ComponentStateInfoComponent,\n EditComponentAnnotationsComponent,\n IntersectionObserverModule,\n NavItemProgressComponent,\n StatusIconComponent,\n WorkgroupComponentGradingComponent,\n WorkgroupInfoComponent,\n WorkgroupNodeScoreComponent,\n WorkgroupNodeStatusComponent,\n WorkgroupSelectAutocompleteComponent\n ]\n})\nexport class GradingCommonModule {}\n", + "children": [ + { + "type": "providers", + "elements": [] + }, + { + "type": "declarations", + "elements": [] + }, + { + "type": "imports", + "elements": [ + { + "name": "ComponentGradingComponent" + }, + { + "name": "ComponentStateInfoComponent" + }, + { + "name": "EditComponentAnnotationsComponent" + }, + { + "name": "NavItemProgressComponent" + }, + { + "name": "StatusIconComponent" + }, + { + "name": "StudentTeacherCommonModule" + }, + { + "name": "WorkgroupComponentGradingComponent" + }, + { + "name": "WorkgroupInfoComponent" + }, + { + "name": "WorkgroupNodeScoreComponent" + }, + { + "name": "WorkgroupNodeStatusComponent" + }, + { + "name": "WorkgroupSelectAutocompleteComponent" + } + ] + }, + { + "type": "exports", + "elements": [ + { + "name": "ComponentGradingComponent" + }, + { + "name": "ComponentStateInfoComponent" + }, + { + "name": "EditComponentAnnotationsComponent" + }, + { + "name": "NavItemProgressComponent" + }, + { + "name": "StatusIconComponent" + }, + { + "name": "WorkgroupComponentGradingComponent" + }, + { + "name": "WorkgroupInfoComponent" + }, + { + "name": "WorkgroupNodeScoreComponent" + }, + { + "name": "WorkgroupNodeStatusComponent" + }, + { + "name": "WorkgroupSelectAutocompleteComponent" + } + ] + }, + { + "type": "bootstrap", + "elements": [] + }, + { + "type": "classes", + "elements": [] + } + ] + }, + { + "name": "HelpRoutingModule", + "id": "module-HelpRoutingModule-5a35cfd981ee32b6098dac07045ad244b40347889d3ecdd1a59af58372c1fef3e9313282af52736d478eeaefd2699f3d16803e948d0c7ad6c78678d6e9dbe9d8", + "description": "", + "deprecationMessage": "", + "deprecated": false, + "file": "src/app/help/help-routing.module.ts", + "methods": [], + "sourceCode": "import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { HelpComponent } from './help.component';\nimport { HelpHomeComponent } from './help-home/help-home.component';\nimport { GettingStartedComponent } from './faq/getting-started/getting-started.component';\nimport { TeacherFaqComponent } from './faq/teacher-faq/teacher-faq.component';\nimport { StudentFaqComponent } from './faq/student-faq/student-faq.component';\n\nconst helpRoutes: Routes = [\n {\n path: '',\n component: HelpComponent,\n children: [\n { path: '', component: HelpHomeComponent },\n { path: 'getting-started', component: GettingStartedComponent },\n { path: 'teacher-faq', component: TeacherFaqComponent },\n { path: 'student-faq', component: StudentFaqComponent }\n ]\n }\n];\n\n@NgModule({\n imports: [RouterModule.forChild(helpRoutes)],\n exports: [RouterModule]\n})\nexport class HelpRoutingModule {}\n", + "children": [ + { + "type": "providers", + "elements": [] + }, + { + "type": "declarations", + "elements": [] + }, + { + "type": "imports", + "elements": [] + }, + { + "type": "exports", + "elements": [] + }, + { + "type": "bootstrap", + "elements": [] + }, + { + "type": "classes", + "elements": [] + } + ] + }, + { + "name": "HomeModule", + "id": "module-HomeModule-a858ac226e70c89afba7c1ed323d0963863bd5ab94a8de5c48c2887b6cec8b82db4dfa22dc7842c9aa76d26fb5d16cb471e0b0a6a8de68eab0f326a9c78dc835", + "description": "", + "deprecationMessage": "", + "deprecated": false, + "file": "src/app/home/home.module.ts", + "methods": [], + "sourceCode": "import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { HomeComponent } from './home.component';\nimport { HomeRoutingModule } from './home-routing.module';\nimport { LibraryModule } from '../modules/library/library.module';\nimport { SharedModule } from '../modules/shared/shared.module';\nimport { DiscourseLatestNewsComponent } from './discourse-latest-news/discourse-latest-news.component';\nimport { BlurbComponent } from '../modules/shared/blurb/blurb.component';\nimport { HeroSectionComponent } from '../modules/shared/hero-section/hero-section.component';\nimport { CallToActionComponent } from '../modules/shared/call-to-action/call-to-action.component';\n\n@NgModule({\n imports: [\n BlurbComponent,\n CallToActionComponent,\n CommonModule,\n DiscourseLatestNewsComponent,\n HeroSectionComponent,\n HomeRoutingModule,\n LibraryModule,\n SharedModule,\n RouterModule\n ],\n declarations: [HomeComponent],\n exports: [HomeComponent, SharedModule]\n})\nexport class HomeModule {}\n", + "children": [ + { + "type": "providers", + "elements": [] + }, + { + "type": "declarations", + "elements": [ + { + "name": "HomeComponent" + } + ] + }, + { + "type": "imports", + "elements": [ + { + "name": "BlurbComponent" + }, + { + "name": "CallToActionComponent" + }, + { + "name": "DiscourseLatestNewsComponent" + }, + { + "name": "HeroSectionComponent" + }, + { + "name": "HomeRoutingModule" + }, + { + "name": "LibraryModule" + }, + { + "name": "SharedModule" + } + ] + }, + { + "type": "exports", + "elements": [ + { + "name": "HomeComponent" + }, + { + "name": "SharedModule" + } + ] + }, + { + "type": "bootstrap", + "elements": [] + }, + { + "type": "classes", + "elements": [] + } + ] + }, + { + "name": "HomeRoutingModule", + "id": "module-HomeRoutingModule-1657ad93c99087746e724ba554fb6946f9b5f6ececc1e6ed7712280efb1ec1cae545c33bc8974606ad272a752351bddd1827a8954b922c4137ac007535b3c786", + "description": "", + "deprecationMessage": "", + "deprecated": false, + "file": "src/app/home/home-routing.module.ts", + "methods": [], + "sourceCode": "import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\n\nimport { HomeComponent } from './home.component';\n\nconst homeRoutes: Routes = [\n {\n path: '',\n component: HomeComponent,\n children: []\n }\n];\n\n@NgModule({\n imports: [RouterModule.forChild(homeRoutes)],\n exports: [RouterModule]\n})\nexport class HomeRoutingModule {}\n", + "children": [ + { + "type": "providers", + "elements": [] + }, + { + "type": "declarations", + "elements": [] + }, + { + "type": "imports", + "elements": [] + }, + { + "type": "exports", + "elements": [] + }, + { + "type": "bootstrap", + "elements": [] + }, + { + "type": "classes", + "elements": [] + } + ] + }, + { + "name": "ImportComponentRoutingModule", + "id": "module-ImportComponentRoutingModule-8ef1c500130cb96faebb9e5f0c234e0bf955a90c45cf5faa6a199cb17a0dcae716502c5384a24ec30629db0afc99b9b81dc5b62909088507733ff4cd41da4450", + "description": "", + "deprecationMessage": "", + "deprecated": false, + "file": "src/assets/wise5/authoringTool/importComponent/import-component-routing.module.ts", + "methods": [], + "sourceCode": "import { RouterModule, Routes } from '@angular/router';\nimport { NgModule } from '@angular/core';\nimport { ChooseImportComponentComponent } from './choose-import-component/choose-import-component.component';\nimport { ChooseImportUnitComponent } from '../../../../app/authoring-tool/import-step/choose-import-unit/choose-import-unit.component';\n\nconst routes: Routes = [\n {\n path: 'choose-component',\n component: ChooseImportComponentComponent\n },\n {\n path: 'choose-unit',\n component: ChooseImportUnitComponent\n }\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)]\n})\nexport class ImportComponentRoutingModule {}\n", + "children": [ + { + "type": "providers", + "elements": [] + }, + { + "type": "declarations", + "elements": [] + }, + { + "type": "imports", + "elements": [] + }, + { + "type": "exports", + "elements": [] + }, + { + "type": "bootstrap", + "elements": [] + }, + { + "type": "classes", + "elements": [] + } + ] + }, + { + "name": "LibraryModule", + "id": "module-LibraryModule-3768a9183982116e3992d055871531f1c739619fbc9cdee9df23cdb1d4270758add9b935a06dcd3d0e05e8c37c5959ff0a4238cbed99cc0730f27f08a7acabe2", + "description": "", + "deprecationMessage": "", + "deprecated": false, + "file": "src/app/modules/library/library.module.ts", + "methods": [], + "sourceCode": "import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { LibraryProjectComponent } from './library-project/library-project.component';\nimport { LibraryProjectDetailsComponent } from './library-project-details/library-project-details.component';\nimport { RouterModule } from '@angular/router';\nimport { SharedModule } from '../shared/shared.module';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatBadgeModule } from '@angular/material/badge';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatOptionModule } from '@angular/material/core';\nimport { MatPaginatorModule, MatPaginatorIntl } from '@angular/material/paginator';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { LibraryFiltersComponent } from './library-filters/library-filters.component';\nimport { HomePageProjectLibraryComponent } from './home-page-project-library/home-page-project-library.component';\nimport { OfficialLibraryComponent } from './official-library/official-library.component';\nimport { PersonalLibraryComponent } from './personal-library/personal-library.component';\nimport { ShareProjectDialogComponent } from './share-project-dialog/share-project-dialog.component';\nimport { LibraryPaginatorIntl } from './libraryPaginatorIntl';\nimport { ArchiveProjectsButtonComponent } from '../../teacher/archive-projects-button/archive-projects-button.component';\nimport { SearchBarComponent } from '../shared/search-bar/search-bar.component';\nimport { SelectAllItemsCheckboxComponent } from './select-all-items-checkbox/select-all-items-checkbox.component';\nimport { ApplyTagsButtonComponent } from '../../teacher/apply-tags-button/apply-tags-button.component';\nimport { SelectTagsComponent } from '../../teacher/select-tags/select-tags.component';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { SelectMenuComponent } from '../shared/select-menu/select-menu.component';\nimport { UnitTagsComponent } from '../../teacher/unit-tags/unit-tags.component';\nimport { ProjectTagService } from '../../../assets/wise5/services/projectTagService';\nimport { StandardsSelectMenuComponent } from '../shared/standards-select-menu/standards-select-menu.component';\nimport { CurriculumComponent } from '../../curriculum/curriculum.component';\nimport { ColorService } from '../../../assets/wise5/services/colorService';\n\nconst materialModules = [\n MatAutocompleteModule,\n MatBadgeModule,\n MatButtonModule,\n MatCardModule,\n MatCheckboxModule,\n MatChipsModule,\n MatDialogModule,\n MatDividerModule,\n MatExpansionModule,\n MatFormFieldModule,\n MatIconModule,\n MatMenuModule,\n MatOptionModule,\n MatPaginatorModule,\n MatProgressBarModule,\n MatSelectModule,\n MatTableModule,\n MatTabsModule,\n MatTooltipModule\n];\n\n@NgModule({\n imports: [\n ApplyTagsButtonComponent,\n ArchiveProjectsButtonComponent,\n CommonModule,\n CurriculumComponent,\n FormsModule,\n LibraryFiltersComponent,\n LibraryProjectComponent,\n LibraryProjectDetailsComponent,\n OfficialLibraryComponent,\n PersonalLibraryComponent,\n ReactiveFormsModule,\n RouterModule,\n materialModules,\n StandardsSelectMenuComponent,\n SearchBarComponent,\n SelectAllItemsCheckboxComponent,\n SelectMenuComponent,\n SelectTagsComponent,\n SharedModule,\n UnitTagsComponent\n ],\n declarations: [HomePageProjectLibraryComponent, ShareProjectDialogComponent],\n exports: [\n CurriculumComponent,\n HomePageProjectLibraryComponent,\n PersonalLibraryComponent,\n ReactiveFormsModule,\n UnitTagsComponent,\n materialModules\n ],\n providers: [\n ColorService,\n { provide: MatPaginatorIntl, useClass: LibraryPaginatorIntl },\n ProjectTagService\n ]\n})\nexport class LibraryModule {}\n", + "children": [ + { + "type": "providers", + "elements": [ + { + "name": "ColorService" + }, + { + "name": "LibraryPaginatorIntl" + }, + { + "name": "ProjectTagService" + } + ] + }, + { + "type": "declarations", + "elements": [ + { + "name": "HomePageProjectLibraryComponent" + }, + { + "name": "ShareProjectDialogComponent" + } + ] + }, + { + "type": "imports", + "elements": [ + { + "name": "ApplyTagsButtonComponent" + }, + { + "name": "ArchiveProjectsButtonComponent" + }, + { + "name": "CurriculumComponent" + }, + { + "name": "LibraryFiltersComponent" + }, + { + "name": "LibraryProjectComponent" + }, + { + "name": "LibraryProjectDetailsComponent" + }, + { + "name": "OfficialLibraryComponent" + }, + { + "name": "PersonalLibraryComponent" + }, + { + "name": "SearchBarComponent" + }, + { + "name": "SelectAllItemsCheckboxComponent" + }, + { + "name": "SelectMenuComponent" + }, + { + "name": "SelectTagsComponent" + }, + { + "name": "SharedModule" + }, + { + "name": "StandardsSelectMenuComponent" + }, + { + "name": "UnitTagsComponent" + } + ] + }, + { + "type": "exports", + "elements": [ + { + "name": "CurriculumComponent" + }, + { + "name": "HomePageProjectLibraryComponent" + }, + { + "name": "PersonalLibraryComponent" + }, + { + "name": "UnitTagsComponent" + } + ] + }, + { + "type": "bootstrap", + "elements": [] + }, + { + "type": "classes", + "elements": [] + } + ] + }, + { + "name": "LoginModule", + "id": "module-LoginModule-89777ceaf6476b1743a8d970144f1c4624f472f88dad5b6a1e56a1e7bd3c0219544f570cffc95ceb35ce514bfcc1a4f8c8b423eb6ddbac203839e0b4e251871a", + "description": "", + "deprecationMessage": "", + "deprecated": false, + "file": "src/app/login/login.module.ts", + "methods": [], + "sourceCode": "import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { LoginComponent } from './login.component';\nimport { LoginHomeComponent } from './login-home/login-home.component';\nimport { LoginRoutingModule } from './login-routing.module';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { RecaptchaModule, RecaptchaFormsModule } from 'ng-recaptcha-2';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\n\nconst materialModules = [\n MatButtonModule,\n MatCardModule,\n MatDividerModule,\n MatFormFieldModule,\n MatInputModule,\n MatProgressBarModule\n];\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n LoginRoutingModule,\n ReactiveFormsModule,\n materialModules,\n RecaptchaModule,\n RecaptchaFormsModule\n ],\n declarations: [LoginComponent, LoginHomeComponent],\n exports: [LoginComponent]\n})\nexport class LoginModule {}\n", + "children": [ + { + "type": "providers", + "elements": [] + }, + { + "type": "declarations", + "elements": [ + { + "name": "LoginComponent" + }, + { + "name": "LoginHomeComponent" + } + ] + }, + { + "type": "imports", + "elements": [ + { + "name": "LoginRoutingModule" + } + ] + }, + { + "type": "exports", + "elements": [ + { + "name": "LoginComponent" + } + ] + }, + { + "type": "bootstrap", + "elements": [] + }, + { + "type": "classes", + "elements": [] + } + ] + }, + { + "name": "LoginRoutingModule", + "id": "module-LoginRoutingModule-475546f5add4e05c6c34fabb6e7ba34281bae40c9a353fd0f26688c1ea4dc5a29acc44002dcac6a6133261eccc813e75de6daf33b9644214c36514af074f4f08", + "description": "", + "deprecationMessage": "", + "deprecated": false, + "file": "src/app/login/login-routing.module.ts", + "methods": [], + "sourceCode": "import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\n\nimport { LoginComponent } from './login.component';\nimport { LoginHomeComponent } from './login-home/login-home.component';\n\nconst loginRoutes: Routes = [\n {\n path: '',\n component: LoginComponent,\n children: [{ path: '', component: LoginHomeComponent }]\n }\n];\n\n@NgModule({\n imports: [RouterModule.forChild(loginRoutes)],\n exports: [RouterModule]\n})\nexport class LoginRoutingModule {}\n", + "children": [ + { + "type": "providers", + "elements": [] + }, + { + "type": "declarations", + "elements": [] + }, + { + "type": "imports", + "elements": [] + }, + { + "type": "exports", + "elements": [] + }, + { + "type": "bootstrap", + "elements": [] + }, + { + "type": "classes", + "elements": [] + } + ] + }, + { + "name": "MatchCommonModule", + "id": "module-MatchCommonModule-ef3db8c568328ab413c5909f916fc0920d10b3a274e1c0542bdc51a2ce71c015bc1d0b9b6c71710bda99960ef1eead7255a5d8bbe804683b5070f3900a1ae1e0", + "description": "", + "deprecationMessage": "", + "deprecated": false, + "file": "src/assets/wise5/components/match/match-common.module.ts", + "methods": [], + "sourceCode": "import { DragDropModule } from '@angular/cdk/drag-drop';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatchChoiceItemComponent } from './match-choice-item/match-choice-item.component';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatchStatusIconComponent } from './match-status-icon/match-status-icon.component';\nimport { MatchFeedbackSectionComponent } from './match-student/match-feedback-section/match-feedback-section.component';\n\n@NgModule({\n imports: [\n CommonModule,\n DragDropModule,\n MatButtonModule,\n MatCardModule,\n MatchChoiceItemComponent,\n MatchFeedbackSectionComponent,\n MatchStatusIconComponent,\n MatDialogModule,\n MatFormFieldModule,\n MatIconModule,\n MatInputModule,\n MatTooltipModule,\n ReactiveFormsModule\n ],\n exports: [\n CommonModule,\n DragDropModule,\n MatButtonModule,\n MatCardModule,\n MatDialogModule,\n MatchChoiceItemComponent,\n MatchFeedbackSectionComponent,\n MatchStatusIconComponent,\n MatFormFieldModule,\n MatIconModule,\n MatInputModule,\n MatTooltipModule,\n ReactiveFormsModule\n ]\n})\nexport class MatchCommonModule {}\n", + "children": [ + { + "type": "providers", + "elements": [] + }, + { + "type": "declarations", + "elements": [] + }, + { + "type": "imports", + "elements": [ + { + "name": "MatchChoiceItemComponent" + }, + { + "name": "MatchFeedbackSectionComponent" + }, + { + "name": "MatchStatusIconComponent" + } + ] + }, + { + "type": "exports", + "elements": [ + { + "name": "MatchChoiceItemComponent" + }, + { + "name": "MatchFeedbackSectionComponent" + }, + { + "name": "MatchStatusIconComponent" + } + ] + }, + { + "type": "bootstrap", + "elements": [] + }, + { + "type": "classes", + "elements": [] + } + ] + }, + { + "name": "MatchStudentModule", + "id": "module-MatchStudentModule-1cd761c53e85e0a4904a9cd13dc5f3f0df2c952a1f3360e3c2405062a65b9bbff92c2b530a512b057d09a6ef5349a51a443f4a6a86714bf718b69096d9ef98af", + "description": "", + "deprecationMessage": "", + "deprecated": false, + "file": "src/assets/wise5/components/match/match-student/match-student.module.ts", + "methods": [], + "sourceCode": "import { NgModule } from '@angular/core';\nimport { AddChoiceButtonComponent } from './add-choice-button/add-choice-button.component';\nimport { AddMatchChoiceDialogComponent } from './add-match-choice-dialog/add-match-choice-dialog';\nimport { MatchStudent } from './match-student.component';\nimport { StudentComponentModule } from '../../../../../app/student/student.component.module';\nimport { MatchCommonModule } from '../match-common.module';\nimport { MatchStudentChoiceReuseComponent } from './match-student-choice-reuse/match-student-choice-reuse.component';\nimport { MatchStudentDefaultComponent } from './match-student-default/match-student-default.component';\n\n@NgModule({\n imports: [\n AddChoiceButtonComponent,\n MatchCommonModule,\n MatchStudentChoiceReuseComponent,\n MatchStudentDefaultComponent,\n StudentComponentModule,\n AddMatchChoiceDialogComponent,\n MatchStudent\n ],\n exports: [MatchStudent, MatchStudentDefaultComponent, AddMatchChoiceDialogComponent]\n})\nexport class MatchStudentModule {}\n", + "children": [ + { + "type": "providers", + "elements": [] + }, + { + "type": "declarations", + "elements": [] + }, + { + "type": "imports", + "elements": [ + { + "name": "AddChoiceButtonComponent" + }, + { + "name": "AddMatchChoiceDialogComponent" + }, + { + "name": "MatchCommonModule" + }, + { + "name": "MatchStudent" + }, + { + "name": "MatchStudentChoiceReuseComponent" + }, + { + "name": "MatchStudentDefaultComponent" + } + ] + }, + { + "type": "exports", + "elements": [ + { + "name": "AddMatchChoiceDialogComponent" + }, + { + "name": "MatchStudent" + }, + { + "name": "MatchStudentDefaultComponent" + } + ] + }, + { + "type": "bootstrap", + "elements": [] + }, + { + "type": "classes", + "elements": [] + } + ] + }, + { + "name": "MathModule", + "id": "module-MathModule-5dd52b2d3dca7622c4c81d237dbec158041e5a28710b103389a957a6c343427c49744d8b9c736514e94b4e140bc83e2584d59991985ad0b534dffc1fad4b6db4", + "description": "", + "deprecationMessage": "", + "deprecated": false, + "file": "src/app/math/math.module.ts", + "methods": [], + "sourceCode": "import { NgModule } from '@angular/core';\nimport { MathService } from './math.service';\n\n@NgModule({\n providers: [MathService]\n})\nexport class MathModule {\n constructor(mathService: MathService) {\n mathService.ready();\n }\n}\n", + "children": [ + { + "type": "providers", + "elements": [ + { + "name": "MathService" + } + ] + }, + { + "type": "declarations", + "elements": [] + }, + { + "type": "imports", + "elements": [] + }, + { + "type": "exports", + "elements": [] + }, + { + "type": "bootstrap", + "elements": [] + }, + { + "type": "classes", + "elements": [] + } + ] + }, + { + "name": "MilestoneModule", + "id": "module-MilestoneModule-2fe03ebd54cd517f8445b4ac1c1b91278e902228a37b52b8aed2efbccb55b8195d59d7888d88390d6907056ce9de22b81550d4f6d96c4648ced080992161958a", + "description": "", + "deprecationMessage": "", + "deprecated": false, + "file": "src/app/teacher/milestone/milestone.module.ts", + "methods": [], + "sourceCode": "import { Injector, NgModule } from '@angular/core';\nimport { createCustomElement } from '@angular/elements';\nimport { HighchartsChartModule } from 'highcharts-angular';\nimport { MilestoneDetailsDialogComponent } from '../../../assets/wise5/classroomMonitor/classroomMonitorComponents/milestones/milestone-details-dialog/milestone-details-dialog.component';\nimport { MilestoneDetailsComponent } from '../../../assets/wise5/classroomMonitor/classroomMonitorComponents/milestones/milestone-details/milestone-details.component';\nimport { MilestoneClassResponsesComponent } from '../../../assets/wise5/classroomMonitor/classroomMonitorComponents/milestones/milestone-class-responses/milestone-class-responses.component';\nimport { MilestoneWorkgroupItemComponent } from '../../../assets/wise5/classroomMonitor/classroomMonitorComponents/milestones/milestone-workgroup-item/milestone-workgroup-item.component';\nimport { MilestonesComponent } from '../../classroom-monitor/milestones/milestones.component';\nimport { StudentTeacherCommonModule } from '../../student-teacher-common.module';\nimport { GradingCommonModule } from '../grading-common.module';\nimport { MilestoneReportDataComponent } from './milestone-report-data/milestone-report-data.component';\nimport { MilestoneReportGraphComponent } from './milestone-report-graph/milestone-report-graph.component';\nimport { SelectPeriodComponent } from '../../../assets/wise5/classroomMonitor/classroomMonitorComponents/select-period/select-period.component';\n\n@NgModule({\n imports: [\n GradingCommonModule,\n HighchartsChartModule,\n SelectPeriodComponent,\n StudentTeacherCommonModule,\n MilestonesComponent,\n MilestoneDetailsComponent,\n MilestoneDetailsDialogComponent,\n MilestoneClassResponsesComponent,\n MilestoneReportDataComponent,\n MilestoneReportGraphComponent,\n MilestoneWorkgroupItemComponent\n ],\n exports: [MilestonesComponent]\n})\nexport class MilestoneModule {\n constructor(private injector: Injector) {\n if (!customElements.get('milestone-report-data')) {\n customElements.define(\n 'milestone-report-data',\n createCustomElement(MilestoneReportDataComponent, { injector: this.injector })\n );\n }\n if (!customElements.get('milestone-report-graph')) {\n customElements.define(\n 'milestone-report-graph',\n createCustomElement(MilestoneReportGraphComponent, { injector: this.injector })\n );\n }\n }\n}\n", + "children": [ + { + "type": "providers", + "elements": [] + }, + { + "type": "declarations", + "elements": [] + }, + { + "type": "imports", + "elements": [ + { + "name": "GradingCommonModule" + }, + { + "name": "MilestoneClassResponsesComponent" + }, + { + "name": "MilestoneDetailsComponent" + }, + { + "name": "MilestoneDetailsDialogComponent" + }, + { + "name": "MilestoneReportDataComponent" + }, + { + "name": "MilestoneReportGraphComponent" + }, + { + "name": "MilestoneWorkgroupItemComponent" + }, + { + "name": "MilestonesComponent" + }, + { + "name": "SelectPeriodComponent" + }, + { + "name": "StudentTeacherCommonModule" + } + ] + }, + { + "type": "exports", + "elements": [ + { + "name": "MilestonesComponent" + } + ] + }, + { + "type": "bootstrap", + "elements": [] + }, + { + "type": "classes", + "elements": [] + } + ] + }, + { + "name": "NewsModule", + "id": "module-NewsModule-d64ddda3cf236c0f976cf829cba74ab57b7a91cdfabdc07cfd4b9eb83dd25f978114694e47ac8ccbc8c24fa481031a1afb95000a74027152dde26049276c9f9a", + "description": "", + "deprecationMessage": "", + "deprecated": false, + "file": "src/app/news/news.module.ts", + "methods": [], + "sourceCode": "import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TimelineModule } from '../modules/timeline/timeline.module';\nimport { NewsComponent } from './news.component';\nimport { NewsRoutingModule } from './news-routing.module';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatIconModule } from '@angular/material/icon';\n\n@NgModule({\n imports: [\n CommonModule,\n MatButtonModule,\n MatCardModule,\n MatIconModule,\n NewsRoutingModule,\n TimelineModule\n ],\n declarations: [NewsComponent]\n})\nexport class NewsModule {}\n", + "children": [ + { + "type": "providers", + "elements": [] + }, + { + "type": "declarations", + "elements": [ + { + "name": "NewsComponent" + } + ] + }, + { + "type": "imports", + "elements": [ + { + "name": "NewsRoutingModule" + }, + { + "name": "TimelineModule" + } + ] + }, + { + "type": "exports", + "elements": [] + }, + { + "type": "bootstrap", + "elements": [] + }, + { + "type": "classes", + "elements": [] + } + ] + }, + { + "name": "NewsRoutingModule", + "id": "module-NewsRoutingModule-b84a82cafdd60a8b7220385a5e0119561637ed559208d83f708cf6bccde0e2032f6ae6cec826cd06e6a3194aeb41069066f9be7c6db45ca07562bee5b3612337", + "description": "", + "deprecationMessage": "", + "deprecated": false, + "file": "src/app/news/news-routing.module.ts", + "methods": [], + "sourceCode": "import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { NewsComponent } from './news.component';\n\nconst newsRoutes: Routes = [{ path: '', component: NewsComponent }];\n\n@NgModule({\n imports: [RouterModule.forChild(newsRoutes)],\n exports: [RouterModule]\n})\nexport class NewsRoutingModule {}\n", + "children": [ + { + "type": "providers", + "elements": [] + }, + { + "type": "declarations", + "elements": [] + }, + { + "type": "imports", + "elements": [] + }, + { + "type": "exports", + "elements": [] + }, + { + "type": "bootstrap", + "elements": [] + }, + { + "type": "classes", + "elements": [] + } + ] + }, + { + "name": "NodeAdvancedRoutingModule", + "id": "module-NodeAdvancedRoutingModule-114a03a9972c51f7fee1453f4a20f51b71cf6830df068331da3efd555d0b29ea4b86ffc83f4af103cb59308d9033242ba73fbb06ef79c6b1a3bc39d08d022ca1", + "description": "", + "deprecationMessage": "", + "deprecated": false, + "file": "src/assets/wise5/authoringTool/node/advanced/node-advanced-routing.module.ts", + "methods": [], + "sourceCode": "import { RouterModule, Routes } from '@angular/router';\nimport { NgModule } from '@angular/core';\nimport { NodeAdvancedAuthoringComponent } from './node-advanced-authoring/node-advanced-authoring.component';\nimport { NodeAdvancedConstraintAuthoringComponent } from './constraint/node-advanced-constraint-authoring.component';\nimport { NodeAdvancedGeneralAuthoringComponent } from './general/node-advanced-general-authoring.component';\nimport { NodeAdvancedJsonAuthoringComponent } from './json/node-advanced-json-authoring.component';\nimport { NodeAdvancedPathAuthoringComponent } from './path/node-advanced-path-authoring.component';\nimport { EditNodeRubricComponent } from '../editRubric/edit-node-rubric.component';\n\nconst routes: Routes = [\n {\n path: '',\n component: NodeAdvancedAuthoringComponent,\n children: [\n { path: 'constraint', component: NodeAdvancedConstraintAuthoringComponent },\n { path: 'general', component: NodeAdvancedGeneralAuthoringComponent },\n { path: 'json', component: NodeAdvancedJsonAuthoringComponent },\n { path: 'path', component: NodeAdvancedPathAuthoringComponent },\n { path: 'rubric', component: EditNodeRubricComponent }\n ]\n }\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)]\n})\nexport class NodeAdvancedRoutingModule {}\n", + "children": [ + { + "type": "providers", + "elements": [] + }, + { + "type": "declarations", + "elements": [] + }, + { + "type": "imports", + "elements": [] + }, + { + "type": "exports", + "elements": [] + }, + { + "type": "bootstrap", + "elements": [] + }, + { + "type": "classes", + "elements": [] + } + ] + }, + { + "name": "NodeAuthoringRoutingModule", + "id": "module-NodeAuthoringRoutingModule-bbc2747d47906a57fa82d830c996ff0fa0bfd554925c7f2be490555c4f7efe6e56ca66ebef2f761349d86c8695170ed2a7381744783b8bb3f69824b54c27095c", + "description": "", + "deprecationMessage": "", + "deprecated": false, + "file": "src/assets/wise5/authoringTool/node/node-authoring-routing.module.ts", + "methods": [], + "sourceCode": "import { RouterModule, Routes } from '@angular/router';\nimport { NgModule } from '@angular/core';\nimport { NodeAuthoringParentComponent } from './node-authoring-parent/node-authoring-parent.component';\nimport { NodeAuthoringComponent } from './node-authoring/node-authoring.component';\n\nconst routes: Routes = [\n {\n path: '',\n component: NodeAuthoringParentComponent,\n children: [\n {\n path: '',\n component: NodeAuthoringComponent\n },\n {\n path: 'advanced',\n loadChildren: () =>\n \"import('./advanced/node-advanced-routing.module').then((m) => m.NodeAdvancedRoutingModule)\"\n },\n {\n path: 'import-component',\n loadChildren: () =>\n \"import('../importComponent/import-component-routing.module').then(\\n\\\n (m) => m.ImportComponentRoutingModule\\n\\\n )\"\n }\n ]\n }\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)]\n})\nexport class NodeAuthoringRoutingModule {}\n", + "children": [ + { + "type": "providers", + "elements": [] + }, + { + "type": "declarations", + "elements": [] + }, + { + "type": "imports", + "elements": [] + }, + { + "type": "exports", + "elements": [] + }, + { + "type": "bootstrap", + "elements": [] + }, + { + "type": "classes", + "elements": [] + } + ] + }, + { + "name": "NotebookModule", + "id": "module-NotebookModule-9f738ab8307b313938cf3c6682adbb11d5eaa2a30bf961146a469ffbeb1095218b0f3329de9e906443bdeccf103430a437da1e11e10cd1ff3f03446432521f7e", + "description": "", + "deprecationMessage": "", + "deprecated": false, + "file": "src/app/notebook/notebook.module.ts", + "methods": [], + "sourceCode": "import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSidenavModule } from '@angular/material/sidenav';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { EditorModule } from '@tinymce/tinymce-angular';\nimport { ComponentStateInfoComponent } from '../../assets/wise5/common/component-state-info/component-state-info.component';\nimport { NotebookItemComponent } from './notebook-item/notebook-item.component';\nimport { NotebookLauncherComponent } from './notebook-launcher/notebook-launcher.component';\nimport { NotebookNotesComponent } from './notebook-notes/notebook-notes.component';\nimport { NotebookReportComponent } from './notebook-report/notebook-report.component';\nimport { WiseTinymceEditorComponent } from '../../assets/wise5/directives/wise-tinymce-editor/wise-tinymce-editor.component';\n\n@NgModule({\n imports: [\n CommonModule,\n ComponentStateInfoComponent,\n EditorModule,\n MatButtonModule,\n MatCardModule,\n MatDialogModule,\n MatDividerModule,\n MatFormFieldModule,\n MatIconModule,\n MatInputModule,\n MatSidenavModule,\n MatTabsModule,\n MatToolbarModule,\n MatTooltipModule,\n NotebookItemComponent,\n NotebookLauncherComponent,\n NotebookNotesComponent,\n NotebookReportComponent,\n WiseTinymceEditorComponent\n ],\n exports: [\n NotebookItemComponent,\n NotebookLauncherComponent,\n NotebookNotesComponent,\n NotebookReportComponent\n ]\n})\nexport class NotebookModule {}\n", + "children": [ + { + "type": "providers", + "elements": [] + }, + { + "type": "declarations", + "elements": [] + }, + { + "type": "imports", + "elements": [ + { + "name": "ComponentStateInfoComponent" + }, + { + "name": "NotebookItemComponent" + }, + { + "name": "NotebookLauncherComponent" + }, + { + "name": "NotebookNotesComponent" + }, + { + "name": "NotebookReportComponent" + }, + { + "name": "WiseTinymceEditorComponent" + } + ] + }, + { + "type": "exports", + "elements": [ + { + "name": "NotebookItemComponent" + }, + { + "name": "NotebookLauncherComponent" + }, + { + "name": "NotebookNotesComponent" + }, + { + "name": "NotebookReportComponent" + } + ] + }, + { + "type": "bootstrap", + "elements": [] + }, + { + "type": "classes", + "elements": [] + } + ] + }, + { + "name": "OpenResponseStudentModule", + "id": "module-OpenResponseStudentModule-41910d5cb92358d402d3f30ee5cccfc734c7dc5a82f16c81efe99584859ab2d8ac15e6db8fb184a7b8cbaa4c52cd4c9972703ad078ec13487329b8a021706c04", + "description": "", + "deprecationMessage": "", + "deprecated": false, + "file": "src/assets/wise5/components/openResponse/open-response-student/open-response-student.module.ts", + "methods": [], + "sourceCode": "import { NgModule } from '@angular/core';\nimport { StudentTeacherCommonModule } from '../../../../../app/student-teacher-common.module';\nimport { StudentComponentModule } from '../../../../../app/student/student.component.module';\nimport { AudioRecorderComponent } from '../audio-recorder/audio-recorder.component';\nimport { OpenResponseStudent } from './open-response-student.component';\nimport { SpeechToTextComponent } from '../speech-to-text/speech-to-text.component';\nimport { TranscribeService } from '../../../../wise5/services/transcribeService';\nimport { CRaterPingService } from '../../../services/cRaterPingService';\n\n@NgModule({\n imports: [\n StudentTeacherCommonModule,\n StudentComponentModule,\n SpeechToTextComponent,\n AudioRecorderComponent,\n OpenResponseStudent\n ],\n providers: [CRaterPingService, TranscribeService],\n exports: [OpenResponseStudent]\n})\nexport class OpenResponseStudentModule {}\n", + "children": [ + { + "type": "providers", + "elements": [ + { + "name": "CRaterPingService" + }, + { + "name": "TranscribeService" + } + ] + }, + { + "type": "declarations", + "elements": [] + }, + { + "type": "imports", + "elements": [ + { + "name": "AudioRecorderComponent" + }, + { + "name": "OpenResponseStudent" + }, + { + "name": "SpeechToTextComponent" + }, + { + "name": "StudentTeacherCommonModule" + } + ] + }, + { + "type": "exports", + "elements": [ + { + "name": "OpenResponseStudent" + } + ] + }, + { + "type": "bootstrap", + "elements": [] + }, + { + "type": "classes", + "elements": [] + } + ] + }, + { + "name": "PasswordModule", + "id": "module-PasswordModule-663a8999b5fe86734ca79be29f0b5f84c70404311ddd79eb0fbcaab233ce02913600703817faf297cbcf54e9e3de44d8f043ff0790e5521fe249d46d40c95eae", + "description": "", + "deprecationMessage": "", + "deprecated": false, + "file": "src/app/password/password.module.ts", + "methods": [], + "sourceCode": "import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { NewPasswordAndConfirmComponent } from './new-password-and-confirm/new-password-and-confirm.component';\nimport { MatIconModule } from '@angular/material/icon';\nimport { PasswordStrengthMeterComponent } from '@wise-community/angular-password-strength-meter';\nimport { PasswordRequirementComponent } from './password-requirement/password-requirement.component';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { provideZxvbnServiceForPSM } from '@wise-community/angular-password-strength-meter/zxcvbn';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n MatFormFieldModule,\n MatIconModule,\n MatInputModule,\n MatMenuModule,\n PasswordStrengthMeterComponent,\n ReactiveFormsModule\n ],\n declarations: [NewPasswordAndConfirmComponent, PasswordRequirementComponent],\n providers: [provideZxvbnServiceForPSM()],\n exports: [NewPasswordAndConfirmComponent]\n})\nexport class PasswordModule {}\n", + "children": [ + { + "type": "providers", + "elements": [] + }, + { + "type": "declarations", + "elements": [ + { + "name": "NewPasswordAndConfirmComponent" + }, + { + "name": "PasswordRequirementComponent" + } + ] + }, + { + "type": "imports", + "elements": [] + }, + { + "type": "exports", + "elements": [ + { + "name": "NewPasswordAndConfirmComponent" + } + ] + }, + { + "type": "bootstrap", + "elements": [] + }, + { + "type": "classes", + "elements": [] + } + ] + }, + { + "name": "PeerChatModule", + "id": "module-PeerChatModule-9629b73729896fb0180ff4bee55d1cf55122100b8b96d54a1ccdd4f3b4d1018a9501ecee6efe11beb718bb4ff3673d4f3474340d1ab10ad384b41d93e00d4aa5", + "description": "", + "deprecationMessage": "", + "deprecated": false, + "file": "src/assets/wise5/components/peerChat/peer-chat.module.ts", + "methods": [], + "sourceCode": "import { NgModule } from '@angular/core';\nimport { PeerChatChatBoxComponent } from './peer-chat-chat-box/peer-chat-chat-box.component';\nimport { PeerChatQuestionBankComponent } from './peer-chat-question-bank/peer-chat-question-bank.component';\nimport { QuestionBankService } from './peer-chat-question-bank/questionBank.service';\nimport { MatCardModule } from '@angular/material/card';\nimport { CommonModule } from '@angular/common';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { FormsModule } from '@angular/forms';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n MatButtonModule,\n MatCardModule,\n MatFormFieldModule,\n MatIconModule,\n MatInputModule,\n MatTooltipModule,\n PeerChatChatBoxComponent,\n PeerChatQuestionBankComponent\n ],\n exports: [PeerChatChatBoxComponent, PeerChatQuestionBankComponent],\n providers: [QuestionBankService]\n})\nexport class PeerChatModule {}\n", + "children": [ + { + "type": "providers", + "elements": [ + { + "name": "QuestionBankService" + } + ] + }, + { + "type": "declarations", + "elements": [] + }, + { + "type": "imports", + "elements": [ + { + "name": "PeerChatChatBoxComponent" + }, + { + "name": "PeerChatQuestionBankComponent" + } + ] + }, + { + "type": "exports", + "elements": [ + { + "name": "PeerChatChatBoxComponent" + }, + { + "name": "PeerChatQuestionBankComponent" + } + ] + }, + { + "type": "bootstrap", + "elements": [] + }, + { + "type": "classes", + "elements": [] + } + ] + }, + { + "name": "PeerChatShowWorkModule", + "id": "module-PeerChatShowWorkModule-cc1c919b39594d293d59446566b0a609a01c753320e5963ee5dbca5f174a42f6c642e670e9332e84fa3eb484da5aa5aaabee1f687499e3694e7e47a600d8f04b", + "description": "", + "deprecationMessage": "", + "deprecated": false, + "file": "src/assets/wise5/components/peerChat/peer-chat-show-work/peer-chat-show-work.module.ts", + "methods": [], + "sourceCode": "import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { PeerChatModule } from '../peer-chat.module';\nimport { PeerChatShowWorkComponent } from './peer-chat-show-work.component';\n\n@NgModule({\n imports: [CommonModule, PeerChatModule, PeerChatShowWorkComponent],\n exports: [PeerChatShowWorkComponent]\n})\nexport class PeerChatShowWorkModule {}\n", + "children": [ + { + "type": "providers", + "elements": [] + }, + { + "type": "declarations", + "elements": [] + }, + { + "type": "imports", + "elements": [ + { + "name": "PeerChatModule" + }, + { + "name": "PeerChatShowWorkComponent" + } + ] + }, + { + "type": "exports", + "elements": [ + { + "name": "PeerChatShowWorkComponent" + } + ] + }, + { + "type": "bootstrap", + "elements": [] + }, + { + "type": "classes", + "elements": [] + } + ] + }, + { + "name": "PeerGroupGradingModule", + "id": "module-PeerGroupGradingModule-bf1ca31cb2f5ae77281d76c2f5d4132a2fd4f8f832b3b46459c712e6c86f21cd7bf597f0110b1951d7049981b4c8c0ff1d03039ac3d073d93628dcebcd472b6f", + "description": "", + "deprecationMessage": "", + "deprecated": false, + "file": "src/app/teacher/peer-group-grading.module.ts", + "methods": [], + "sourceCode": "import { NgModule } from '@angular/core';\nimport { PeerGroupAssignedWorkgroupsComponent } from '../../assets/wise5/classroomMonitor/classroomMonitorComponents/peer-group/peer-group-assigned-workgroups/peer-group-assigned-workgroups.component';\nimport { PeerGroupDialogComponent } from '../../assets/wise5/classroomMonitor/classroomMonitorComponents/peer-group/peer-group-dialog/peer-group-dialog.component';\nimport { PeerGroupGroupingComponent } from '../../assets/wise5/classroomMonitor/classroomMonitorComponents/peer-group/peer-group-grouping/peer-group-grouping.component';\nimport { PeerGroupMoveWorkgroupConfirmDialogComponent } from '../../assets/wise5/classroomMonitor/classroomMonitorComponents/peer-group/peer-group-move-workgroup-confirm-dialog/peer-group-move-workgroup-confirm-dialog.component';\nimport { PeerGroupPeriodComponent } from '../../assets/wise5/classroomMonitor/classroomMonitorComponents/peer-group/peer-group-period/peer-group-period.component';\nimport { PeerGroupUnassignedWorkgroupsComponent } from '../../assets/wise5/classroomMonitor/classroomMonitorComponents/peer-group/peer-group-unassigned-workgroups/peer-group-unassigned-workgroups.component';\nimport { PeerGroupWorkgroupComponent } from '../../assets/wise5/classroomMonitor/classroomMonitorComponents/peer-group/peer-group-workgroup/peer-group-workgroup.component';\nimport { StudentTeacherCommonModule } from '../student-teacher-common.module';\nimport { SelectPeriodComponent } from '../../assets/wise5/classroomMonitor/classroomMonitorComponents/select-period/select-period.component';\n\n@NgModule({\n imports: [\n StudentTeacherCommonModule,\n SelectPeriodComponent,\n PeerGroupAssignedWorkgroupsComponent,\n PeerGroupDialogComponent,\n PeerGroupGroupingComponent,\n PeerGroupMoveWorkgroupConfirmDialogComponent,\n PeerGroupPeriodComponent,\n PeerGroupUnassignedWorkgroupsComponent,\n PeerGroupWorkgroupComponent\n ],\n exports: [\n PeerGroupAssignedWorkgroupsComponent,\n PeerGroupDialogComponent,\n PeerGroupGroupingComponent,\n PeerGroupMoveWorkgroupConfirmDialogComponent,\n PeerGroupPeriodComponent,\n PeerGroupUnassignedWorkgroupsComponent,\n PeerGroupWorkgroupComponent\n ]\n})\nexport class PeerGroupGradingModule {}\n", + "children": [ + { + "type": "providers", + "elements": [] + }, + { + "type": "declarations", + "elements": [] + }, + { + "type": "imports", + "elements": [ + { + "name": "PeerGroupAssignedWorkgroupsComponent" + }, + { + "name": "PeerGroupDialogComponent" + }, + { + "name": "PeerGroupGroupingComponent" + }, + { + "name": "PeerGroupMoveWorkgroupConfirmDialogComponent" + }, + { + "name": "PeerGroupPeriodComponent" + }, + { + "name": "PeerGroupUnassignedWorkgroupsComponent" + }, + { + "name": "PeerGroupWorkgroupComponent" + }, + { + "name": "SelectPeriodComponent" + }, + { + "name": "StudentTeacherCommonModule" + } + ] + }, + { + "type": "exports", + "elements": [ + { + "name": "PeerGroupAssignedWorkgroupsComponent" + }, + { + "name": "PeerGroupDialogComponent" + }, + { + "name": "PeerGroupGroupingComponent" + }, + { + "name": "PeerGroupMoveWorkgroupConfirmDialogComponent" + }, + { + "name": "PeerGroupPeriodComponent" + }, + { + "name": "PeerGroupUnassignedWorkgroupsComponent" + }, + { + "name": "PeerGroupWorkgroupComponent" + } + ] + }, + { + "type": "bootstrap", + "elements": [] + }, + { + "type": "classes", + "elements": [] + } + ] + }, + { + "name": "RegisterModule", + "id": "module-RegisterModule-cacc670277dfdf4f7a1a439e20386736004dd77cc4d7b382dc5a8404dc0da2315b16fbfaede40e0cd8d08288c37d31287f1d3ee26b1880623c57c0775c9bc90c", + "description": "", + "deprecationMessage": "", + "deprecated": false, + "file": "src/app/register/register.module.ts", + "methods": [], + "sourceCode": "import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RegisterComponent } from './register.component';\nimport { RegisterRoutingModule } from './register-routing.module';\nimport { RegisterTeacherComponent } from './register-teacher/register-teacher.component';\nimport { RegisterHomeComponent } from './register-home/register-home.component';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { RegisterTeacherFormComponent } from './register-teacher-form/register-teacher-form.component';\nimport { RegisterTeacherCompleteComponent } from './register-teacher-complete/register-teacher-complete.component';\nimport { RegisterStudentFormComponent } from './register-student-form/register-student-form.component';\nimport { RegisterStudentCompleteComponent } from './register-student-complete/register-student-complete.component';\nimport { RegisterStudentComponent } from './register-student/register-student.component';\nimport { RegisterGoogleUserAlreadyExistsComponent } from './register-google-user-already-exists/register-google-user-already-exists.component';\nimport { SharedModule } from '../modules/shared/shared.module';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatSelectModule } from '@angular/material/select';\nimport { GoogleSignInButtonComponent } from '../modules/google-sign-in/google-sign-in-button/google-sign-in-button.component';\nimport { PasswordModule } from '../password/password.module';\nimport { RegisterMicrosoftUserAlreadyExistsComponent } from './register-microsoft-user-already-exists/register-microsoft-user-already-exists.component';\nimport { CallToActionComponent } from '../modules/shared/call-to-action/call-to-action.component';\n\nconst materialModules = [\n MatButtonModule,\n MatCardModule,\n MatCheckboxModule,\n MatDialogModule,\n MatFormFieldModule,\n MatInputModule,\n MatProgressBarModule,\n MatSelectModule\n];\n\n@NgModule({\n imports: [\n CallToActionComponent,\n CommonModule,\n FormsModule,\n GoogleSignInButtonComponent,\n SharedModule,\n PasswordModule,\n RegisterRoutingModule,\n ReactiveFormsModule,\n materialModules\n ],\n declarations: [\n RegisterComponent,\n RegisterHomeComponent,\n RegisterTeacherComponent,\n RegisterTeacherFormComponent,\n RegisterTeacherCompleteComponent,\n RegisterStudentFormComponent,\n RegisterStudentCompleteComponent,\n RegisterStudentComponent,\n RegisterGoogleUserAlreadyExistsComponent,\n RegisterMicrosoftUserAlreadyExistsComponent\n ],\n exports: [RegisterComponent]\n})\nexport class RegisterModule {}\n", + "children": [ + { + "type": "providers", + "elements": [] + }, + { + "type": "declarations", + "elements": [ + { + "name": "RegisterComponent" + }, + { + "name": "RegisterGoogleUserAlreadyExistsComponent" + }, + { + "name": "RegisterHomeComponent" + }, + { + "name": "RegisterMicrosoftUserAlreadyExistsComponent" + }, + { + "name": "RegisterStudentCompleteComponent" + }, + { + "name": "RegisterStudentComponent" + }, + { + "name": "RegisterStudentFormComponent" + }, + { + "name": "RegisterTeacherCompleteComponent" + }, + { + "name": "RegisterTeacherComponent" + }, + { + "name": "RegisterTeacherFormComponent" + } + ] + }, + { + "type": "imports", + "elements": [ + { + "name": "CallToActionComponent" + }, + { + "name": "GoogleSignInButtonComponent" + }, + { + "name": "PasswordModule" + }, + { + "name": "RegisterRoutingModule" + }, + { + "name": "SharedModule" + } + ] + }, + { + "type": "exports", + "elements": [ + { + "name": "RegisterComponent" + } + ] + }, + { + "type": "bootstrap", + "elements": [] + }, + { + "type": "classes", + "elements": [] + } + ] + }, + { + "name": "RegisterRoutingModule", + "id": "module-RegisterRoutingModule-1fd03d7222fb77e254cc483ae070d1e0276bf485e814e7e33e51fc029c3c3f33f25d7e7db1a37dc313c91426d8519a02e44e8ec9e2b42e394e5672443a56715b", + "description": "", + "deprecationMessage": "", + "deprecated": false, + "file": "src/app/register/register-routing.module.ts", + "methods": [], + "sourceCode": "import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\n\nimport { RegisterComponent } from './register.component';\nimport { RegisterHomeComponent } from './register-home/register-home.component';\nimport { RegisterStudentFormComponent } from './register-student-form/register-student-form.component';\nimport { RegisterStudentCompleteComponent } from './register-student-complete/register-student-complete.component';\nimport { RegisterTeacherComponent } from './register-teacher/register-teacher.component';\nimport { RegisterTeacherFormComponent } from './register-teacher-form/register-teacher-form.component';\nimport { RegisterTeacherCompleteComponent } from './register-teacher-complete/register-teacher-complete.component';\nimport { RegisterStudentComponent } from './register-student/register-student.component';\nimport { RegisterGoogleUserAlreadyExistsComponent } from './register-google-user-already-exists/register-google-user-already-exists.component';\nimport { RegisterMicrosoftUserAlreadyExistsComponent } from './register-microsoft-user-already-exists/register-microsoft-user-already-exists.component';\n\nconst registerRoutes: Routes = [\n {\n path: '',\n component: RegisterComponent,\n children: [\n { path: '', component: RegisterHomeComponent },\n { path: 'student', component: RegisterStudentComponent },\n { path: 'student/form', component: RegisterStudentFormComponent },\n { path: 'student/complete', component: RegisterStudentCompleteComponent },\n { path: 'teacher', component: RegisterTeacherComponent },\n { path: 'teacher/complete', component: RegisterTeacherCompleteComponent },\n { path: 'teacher/form', component: RegisterTeacherFormComponent },\n { path: 'googleUserAlreadyExists', component: RegisterGoogleUserAlreadyExistsComponent },\n { path: 'microsoftUserAlreadyExists', component: RegisterMicrosoftUserAlreadyExistsComponent }\n ]\n }\n];\n\n@NgModule({\n imports: [RouterModule.forChild(registerRoutes)],\n exports: [RouterModule]\n})\nexport class RegisterRoutingModule {}\n", + "children": [ + { + "type": "providers", + "elements": [] + }, + { + "type": "declarations", + "elements": [] + }, + { + "type": "imports", + "elements": [] + }, + { + "type": "exports", + "elements": [] + }, + { + "type": "bootstrap", + "elements": [] + }, + { + "type": "classes", + "elements": [] + } + ] + }, + { + "name": "SharedModule", + "id": "module-SharedModule-5ba2e9df38d55ff8cae61a01b9abd57ccd250bfde7723cde822384b18e2626a085d1a8f34b3f46ff1f0a4a89477a7721cec02a7ba4e1e2a536f3ff8fdfbff31a", + "description": "", + "deprecationMessage": "", + "deprecated": false, + "file": "src/app/modules/shared/shared.module.ts", + "methods": [], + "sourceCode": "import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatSelectModule } from '@angular/material/select';\nconst materialModules = [\n MatButtonModule,\n MatCardModule,\n MatDialogModule,\n MatIconModule,\n MatInputModule,\n MatFormFieldModule,\n MatSelectModule,\n MatProgressBarModule\n];\n\nimport { EditPasswordComponent } from './edit-password/edit-password.component';\nimport { UnlinkGoogleAccountConfirmComponent } from './unlink-google-account-confirm/unlink-google-account-confirm.component';\nimport { UnlinkGoogleAccountPasswordComponent } from './unlink-google-account-password/unlink-google-account-password.component';\nimport { UnlinkGoogleAccountSuccessComponent } from './unlink-google-account-success/unlink-google-account-success.component';\nimport { PasswordModule } from '../../password/password.module';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n PasswordModule,\n ReactiveFormsModule,\n RouterModule,\n materialModules\n ],\n exports: [EditPasswordComponent, materialModules],\n declarations: [\n EditPasswordComponent,\n UnlinkGoogleAccountConfirmComponent,\n UnlinkGoogleAccountPasswordComponent,\n UnlinkGoogleAccountSuccessComponent\n ]\n})\nexport class SharedModule {}\n", + "children": [ + { + "type": "providers", + "elements": [] + }, + { + "type": "declarations", + "elements": [ + { + "name": "EditPasswordComponent" + }, + { + "name": "UnlinkGoogleAccountConfirmComponent" + }, + { + "name": "UnlinkGoogleAccountPasswordComponent" + }, + { + "name": "UnlinkGoogleAccountSuccessComponent" + } + ] + }, + { + "type": "imports", + "elements": [ + { + "name": "PasswordModule" + } + ] + }, + { + "type": "exports", + "elements": [ + { + "name": "EditPasswordComponent" + } + ] + }, + { + "type": "bootstrap", + "elements": [] + }, + { + "type": "classes", + "elements": [] + } + ] + }, + { + "name": "ShowGroupWorkStudentModule", + "id": "module-ShowGroupWorkStudentModule-fdabd8847e51ae5c0f079c5d92f1ba4f221cae6e471ffc2f42bc04b91b0ca64ab275b0871a53ece541fdae40fd3faeafac0c67979b34af7c8d6d0fb6aa609d39", + "description": "", + "deprecationMessage": "", + "deprecated": false, + "file": "src/assets/wise5/components/showGroupWork/show-group-work-student/show-group-work-student.module.ts", + "methods": [], + "sourceCode": "import { NgModule } from '@angular/core';\nimport { StudentComponentModule } from '../../../../../app/student/student.component.module';\nimport { ShowGroupWorkStudentComponent } from './show-group-work-student.component';\n\n@NgModule({\n imports: [ShowGroupWorkStudentComponent, StudentComponentModule],\n exports: [ShowGroupWorkStudentComponent]\n})\nexport class ShowGroupWorkStudentModule {}\n", + "children": [ + { + "type": "providers", + "elements": [] + }, + { + "type": "declarations", + "elements": [] + }, + { + "type": "imports", + "elements": [ + { + "name": "ShowGroupWorkStudentComponent" + } + ] + }, + { + "type": "exports", + "elements": [ + { + "name": "ShowGroupWorkStudentComponent" + } + ] + }, + { + "type": "bootstrap", + "elements": [] + }, + { + "type": "classes", + "elements": [] + } + ] + }, + { + "name": "ShowMyWorkStudentModule", + "id": "module-ShowMyWorkStudentModule-7785ff352251b9a08912dcaf24558b7f506bc02ad6f4b1f138d53f74c52d9766f66e885be9a77dcbce49c38d438a4c84f990a0baf546c571c6be7aa4deec6c26", + "description": "", + "deprecationMessage": "", + "deprecated": false, + "file": "src/assets/wise5/components/showMyWork/show-my-work-student/show-my-work-student.module.ts", + "methods": [], + "sourceCode": "import { NgModule } from '@angular/core';\nimport { StudentComponentModule } from '../../../../../app/student/student.component.module';\nimport { ShowMyWorkStudentComponent } from './show-my-work-student.component';\nimport { ShowWorkStudentComponent } from '../../showWork/show-work-student/show-work-student.component';\n\n@NgModule({\n imports: [ShowMyWorkStudentComponent, ShowWorkStudentComponent, StudentComponentModule],\n exports: [ShowMyWorkStudentComponent]\n})\nexport class ShowMyWorkStudentModule {}\n", + "children": [ + { + "type": "providers", + "elements": [] + }, + { + "type": "declarations", + "elements": [] + }, + { + "type": "imports", + "elements": [ + { + "name": "ShowMyWorkStudentComponent" + }, + { + "name": "ShowWorkStudentComponent" + } + ] + }, + { + "type": "exports", + "elements": [ + { + "name": "ShowMyWorkStudentComponent" + } + ] + }, + { + "type": "bootstrap", + "elements": [] + }, + { + "type": "classes", + "elements": [] + } + ] + }, + { + "name": "StructureAuthoringRoutingModule", + "id": "module-StructureAuthoringRoutingModule-635f8a41c320ea44c858e318c43feafadae9468ae36a315f91e8c71f544ec45d0537f03beea7270dfbdf72f7a3ce94f7cdacc935d7bba95087ec0a777f8c0c14", + "description": "", + "deprecationMessage": "", + "deprecated": false, + "file": "src/assets/wise5/authoringTool/structure/structure-authoring-routing.module.ts", + "methods": [], + "sourceCode": "import { NgModule } from '@angular/core';\nimport { JigsawComponent } from './jigsaw/jigsaw.component';\nimport { SelfDirectedInvestigationComponent } from './self-directed-investigation/self-directed-investigation.component';\nimport { KiCycleUsingOerComponent } from './ki-cycle-using-oer/ki-cycle-using-oer.component';\nimport { PeerReviewAndRevisionComponent } from './peer-review-and-revision/peer-review-and-revision.component';\nimport { RouterModule, Routes } from '@angular/router';\n\nconst routes: Routes = [\n {\n path: '',\n children: [\n { path: 'jigsaw', component: JigsawComponent },\n { path: 'ki-cycle-using-oer', component: KiCycleUsingOerComponent },\n { path: 'peer-review-and-revision', component: PeerReviewAndRevisionComponent },\n { path: 'self-directed-investigation', component: SelfDirectedInvestigationComponent }\n ]\n }\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)]\n})\nexport class StructureAuthoringRoutingModule {}\n", + "children": [ + { + "type": "providers", + "elements": [] + }, + { + "type": "declarations", + "elements": [] + }, + { + "type": "imports", + "elements": [] + }, + { + "type": "exports", + "elements": [] + }, + { + "type": "bootstrap", + "elements": [] + }, + { + "type": "classes", + "elements": [] + } + ] + }, + { + "name": "StudentComponentModule", + "id": "module-StudentComponentModule-159cd814b5cc001009a2c5ef602b8aa80aaf1a173a07a34ddd1ca3688d798fab633299282006f26c2d346256a4f26ab70e07c2d378bc76dc33d30b3fe83b06fb", + "description": "", + "deprecationMessage": "", + "deprecated": false, + "file": "src/app/student/student.component.module.ts", + "methods": [], + "sourceCode": "import { NgModule } from '@angular/core';\nimport { AddToNotebookButtonComponent } from '../../assets/wise5/directives/add-to-notebook-button/add-to-notebook-button.component';\nimport { ComponentHeaderComponent } from '../../assets/wise5/directives/component-header/component-header.component';\nimport { ComponentSaveSubmitButtonsComponent } from '../../assets/wise5/directives/component-save-submit-buttons/component-save-submit-buttons.component';\nimport { ComponentAnnotationsComponent } from '../../assets/wise5/directives/componentAnnotations/component-annotations.component';\nimport { ComponentStateInfoComponent } from '../../assets/wise5/common/component-state-info/component-state-info.component';\n\n@NgModule({\n imports: [\n AddToNotebookButtonComponent,\n ComponentAnnotationsComponent,\n ComponentHeaderComponent,\n ComponentSaveSubmitButtonsComponent,\n ComponentStateInfoComponent\n ],\n exports: [\n AddToNotebookButtonComponent,\n ComponentAnnotationsComponent,\n ComponentHeaderComponent,\n ComponentSaveSubmitButtonsComponent\n ]\n})\nexport class StudentComponentModule {}\n", + "children": [ + { + "type": "providers", + "elements": [] + }, + { + "type": "declarations", + "elements": [] + }, + { + "type": "imports", + "elements": [ + { + "name": "AddToNotebookButtonComponent" + }, + { + "name": "ComponentAnnotationsComponent" + }, + { + "name": "ComponentHeaderComponent" + }, + { + "name": "ComponentSaveSubmitButtonsComponent" + }, + { + "name": "ComponentStateInfoComponent" + } + ] + }, + { + "type": "exports", + "elements": [ + { + "name": "AddToNotebookButtonComponent" + }, + { + "name": "ComponentAnnotationsComponent" + }, + { + "name": "ComponentHeaderComponent" + }, + { + "name": "ComponentSaveSubmitButtonsComponent" + } + ] + }, + { + "type": "bootstrap", + "elements": [] + }, + { + "type": "classes", + "elements": [] + } + ] + }, + { + "name": "StudentModule", + "id": "module-StudentModule-2a2d29ef3b51fd513da9d5f93612e2524ad95b19607101562fc16d1124a9a8e6527fa0811f4be9f57eaccc6318d2418e8568b18fceed418273f48d80bfc03fb3", + "description": "", + "deprecationMessage": "", + "deprecated": false, + "file": "src/app/student/student.module.ts", + "methods": [], + "sourceCode": "import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\nconst materialModules = [\n MatButtonModule,\n MatCardModule,\n MatCheckboxModule,\n MatDialogModule,\n MatDividerModule,\n MatIconModule,\n MatProgressBarModule,\n MatTabsModule,\n MatTooltipModule\n];\n\nimport { SharedModule } from '../modules/shared/shared.module';\nimport { StudentRoutingModule } from './student-routing.module';\nimport { StudentComponent } from './student.component';\nimport { StudentHomeComponent } from './student-home/student-home.component';\nimport { StudentRunListComponent } from './student-run-list/student-run-list.component';\nimport { StudentRunListItemComponent } from './student-run-list-item/student-run-list-item.component';\nimport { AuthGuard } from './auth.guard';\nimport { AddProjectDialogComponent } from './add-project-dialog/add-project-dialog.component';\nimport { EditComponent } from './account/edit/edit.component';\nimport { StudentEditProfileComponent } from './account/edit-profile/edit-profile.component';\nimport { TimelineModule } from '../modules/timeline/timeline.module';\nimport { TeamSignInDialogComponent } from './team-sign-in-dialog/team-sign-in-dialog.component';\nimport { GoogleSignInButtonComponent } from '../modules/google-sign-in/google-sign-in-button/google-sign-in-button.component';\nimport { SearchBarComponent } from '../modules/shared/search-bar/search-bar.component';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n GoogleSignInButtonComponent,\n ReactiveFormsModule,\n materialModules,\n SearchBarComponent,\n SharedModule,\n StudentRoutingModule,\n TimelineModule\n ],\n declarations: [\n AddProjectDialogComponent,\n StudentComponent,\n StudentHomeComponent,\n StudentRunListComponent,\n StudentRunListItemComponent,\n EditComponent,\n StudentEditProfileComponent,\n TeamSignInDialogComponent\n ],\n providers: [AuthGuard],\n exports: [StudentComponent, materialModules]\n})\nexport class StudentModule {}\n", + "children": [ + { + "type": "providers", + "elements": [ + { + "name": "AuthGuard" + } + ] + }, + { + "type": "declarations", + "elements": [ + { + "name": "AddProjectDialogComponent" + }, + { + "name": "EditComponent" + }, + { + "name": "StudentComponent" + }, + { + "name": "StudentEditProfileComponent" + }, + { + "name": "StudentHomeComponent" + }, + { + "name": "StudentRunListComponent" + }, + { + "name": "StudentRunListItemComponent" + }, + { + "name": "TeamSignInDialogComponent" + } + ] + }, + { + "type": "imports", + "elements": [ + { + "name": "GoogleSignInButtonComponent" + }, + { + "name": "SearchBarComponent" + }, + { + "name": "SharedModule" + }, + { + "name": "StudentRoutingModule" + }, + { + "name": "TimelineModule" + } + ] + }, + { + "type": "exports", + "elements": [ + { + "name": "StudentComponent" + } + ] + }, + { + "type": "bootstrap", + "elements": [] + }, + { + "type": "classes", + "elements": [] + } + ] + }, + { + "name": "StudentRoutingModule", + "id": "module-StudentRoutingModule-28eb5763bea1eb00c3e8e0b7b5c087fff9c27827ce77c1a94ce14862625ad0707d3c8bce9e4e85dbc8ec0cb0726e60e7ba923080f2d77dff49e34d7a5d17b363", + "description": "", + "deprecationMessage": "", + "deprecated": false, + "file": "src/app/student/student-routing.module.ts", + "methods": [], + "sourceCode": "import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\n\nimport { StudentComponent } from './student.component';\nimport { StudentHomeComponent } from './student-home/student-home.component';\nimport { AuthGuard } from './auth.guard';\nimport { EditComponent } from './account/edit/edit.component';\n\nconst studentRoutes: Routes = [\n {\n path: '',\n component: StudentComponent,\n canActivate: [AuthGuard],\n children: [\n { path: '', redirectTo: 'home', pathMatch: 'full' },\n { path: 'home', component: StudentHomeComponent, pathMatch: 'full' },\n { path: 'profile', redirectTo: '', pathMatch: 'full' },\n { path: 'profile/edit', component: EditComponent },\n {\n path: 'unit/:unitId',\n loadChildren: () => \"import('./vle/student-vle.module').then((m) => m.StudentVLEModule)\"\n }\n ]\n }\n];\n\n@NgModule({\n imports: [RouterModule.forChild(studentRoutes)],\n exports: [RouterModule]\n})\nexport class StudentRoutingModule {}\n", + "children": [ + { + "type": "providers", + "elements": [] + }, + { + "type": "declarations", + "elements": [] + }, + { + "type": "imports", + "elements": [] + }, + { + "type": "exports", + "elements": [] + }, + { + "type": "bootstrap", + "elements": [] + }, + { + "type": "classes", + "elements": [] + } + ] + }, + { + "name": "StudentTeacherCommonModule", + "id": "module-StudentTeacherCommonModule-a3d03d2b48cd6e58b5f3b4a7ef924d6b75dcbc46b8146484d3eac10d3884350e598004a20765df665dbacf652846f380742a9dfa678d5a14fb89138b7a5446e4", + "description": "", + "deprecationMessage": "", + "deprecated": false, + "file": "src/app/student-teacher-common.module.ts", + "methods": [], + "sourceCode": "import '../assets/wise5/lib/jquery/jquery-global';\nimport { NgModule } from '@angular/core';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { CommonModule } from '@angular/common';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatListModule } from '@angular/material/list';\nimport { NodeIconComponent } from '../assets/wise5/vle/node-icon/node-icon.component';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatSelectModule } from '@angular/material/select';\nimport { NodeStatusIconComponent } from '../assets/wise5/themes/default/themeComponents/nodeStatusIcon/node-status-icon.component';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { EditorModule } from '@tinymce/tinymce-angular';\nimport { MatSidenavModule } from '@angular/material/sidenav';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { NotebookModule } from './notebook/notebook.module';\nimport { MatSliderModule } from '@angular/material/slider';\nimport { DialogResponsesComponent } from '../assets/wise5/components/dialogGuidance/dialog-responses/dialog-responses.component';\nimport { HighchartsChartModule } from 'highcharts-angular';\nimport { StudentTeacherCommonServicesModule } from './student-teacher-common-services.module';\nimport { MathModule } from './math/math.module';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\n\n@NgModule({\n imports: [\n CommonModule,\n DialogResponsesComponent,\n DragDropModule,\n EditorModule,\n FormsModule,\n HighchartsChartModule,\n MatAutocompleteModule,\n MatButtonModule,\n MatButtonToggleModule,\n MatCardModule,\n MatCheckboxModule,\n MatDialogModule,\n MatDividerModule,\n MatFormFieldModule,\n MatIconModule,\n MatInputModule,\n MatListModule,\n MatMenuModule,\n MatProgressBarModule,\n MatProgressSpinnerModule,\n MatRadioModule,\n MatSelectModule,\n MatSidenavModule,\n MatSliderModule,\n MatTabsModule,\n MatToolbarModule,\n MatSlideToggleModule,\n MatTooltipModule,\n MathModule,\n NodeIconComponent,\n NodeStatusIconComponent,\n NotebookModule,\n ReactiveFormsModule,\n ScrollingModule,\n StudentTeacherCommonServicesModule\n ],\n exports: [\n CommonModule,\n DialogResponsesComponent,\n DragDropModule,\n EditorModule,\n FormsModule,\n MatAutocompleteModule,\n MatButtonModule,\n MatButtonToggleModule,\n MatCardModule,\n MatCheckboxModule,\n MatChipsModule,\n MatDialogModule,\n MatDividerModule,\n MatFormFieldModule,\n MatIconModule,\n MatInputModule,\n MatListModule,\n MatMenuModule,\n MatProgressBarModule,\n MatProgressSpinnerModule,\n MatRadioModule,\n MatSelectModule,\n MatSidenavModule,\n MatSliderModule,\n MatSlideToggleModule,\n MatTabsModule,\n MatToolbarModule,\n MatTooltipModule,\n MathModule,\n NodeIconComponent,\n NotebookModule,\n ReactiveFormsModule\n ]\n})\nexport class StudentTeacherCommonModule {}\n", + "children": [ + { + "type": "providers", + "elements": [] + }, + { + "type": "declarations", + "elements": [] + }, + { + "type": "imports", + "elements": [ + { + "name": "DialogResponsesComponent" + }, + { + "name": "MathModule" + }, + { + "name": "NodeIconComponent" + }, + { + "name": "NodeStatusIconComponent" + }, + { + "name": "NotebookModule" + }, + { + "name": "StudentTeacherCommonServicesModule" + } + ] + }, + { + "type": "exports", + "elements": [ + { + "name": "DialogResponsesComponent" + }, + { + "name": "MathModule" + }, + { + "name": "NodeIconComponent" + }, + { + "name": "NotebookModule" + } + ] + }, + { + "type": "bootstrap", + "elements": [] + }, + { + "type": "classes", + "elements": [] + } + ] + }, + { + "name": "StudentTeacherCommonServicesModule", + "id": "module-StudentTeacherCommonServicesModule-bcd6242cf7fcfd38aa1b32a4e4371e2ffe3d5466af58408db4def7cdb086429dc0132a27e2e4c333309bc3849e0d7ac17e8b9f157befb2e20a6c31a418a89688", + "description": "", + "deprecationMessage": "", + "deprecated": false, + "file": "src/app/student-teacher-common-services.module.ts", + "methods": [], + "sourceCode": "import { AchievementService } from '../assets/wise5/services/achievementService';\nimport { AiChatService } from '../assets/wise5/components/aiChat/aiChatService';\nimport { AnimationService } from '../assets/wise5/components/animation/animationService';\nimport { AnnotationService } from '../assets/wise5/services/annotationService';\nimport { AudioOscillatorService } from '../assets/wise5/components/audioOscillator/audioOscillatorService';\nimport { AudioRecorderService } from '../assets/wise5/services/audioRecorderService';\nimport { BranchService } from '../assets/wise5/services/branchService';\nimport { ClassroomStatusService } from '../assets/wise5/services/classroomStatusService';\nimport { ClickToSnipImageService } from '../assets/wise5/services/clickToSnipImageService';\nimport { CompletionService } from '../assets/wise5/services/completionService';\nimport { ComponentService } from '../assets/wise5/components/componentService';\nimport { ComponentServiceLookupService } from '../assets/wise5/services/componentServiceLookupService';\nimport { ComponentTypeService } from '../assets/wise5/services/componentTypeService';\nimport { ComputerAvatarService } from '../assets/wise5/services/computerAvatarService';\nimport { ConceptMapService } from '../assets/wise5/components/conceptMap/conceptMapService';\nimport { ConfigService } from '../assets/wise5/services/configService';\nimport { ConstraintService } from '../assets/wise5/services/constraintService';\nimport { CRaterService } from '../assets/wise5/services/cRaterService';\nimport { DialogGuidanceService } from '../assets/wise5/components/dialogGuidance/dialogGuidanceService';\nimport { DiscussionService } from '../assets/wise5/components/discussion/discussionService';\nimport { DrawService } from '../assets/wise5/components/draw/drawService';\nimport { EmbeddedService } from '../assets/wise5/components/embedded/embeddedService';\nimport { GraphService } from '../assets/wise5/components/graph/graphService';\nimport { HTMLService } from '../assets/wise5/components/html/htmlService';\nimport { LabelService } from '../assets/wise5/components/label/labelService';\nimport { MatchService } from '../assets/wise5/components/match/matchService';\nimport { MultipleChoiceService } from '../assets/wise5/components/multipleChoice/multipleChoiceService';\nimport { NgModule } from '@angular/core';\nimport { NodeProgressService } from '../assets/wise5/services/nodeProgressService';\nimport { NodeService } from '../assets/wise5/services/nodeService';\nimport { NodeStatusService } from '../assets/wise5/services/nodeStatusService';\nimport { NotebookService } from '../assets/wise5/services/notebookService';\nimport { NotificationService } from '../assets/wise5/services/notificationService';\nimport { OpenResponseCompletionCriteriaService } from '../assets/wise5/components/openResponse/openResponseCompletionCriteriaService';\nimport { OpenResponseService } from '../assets/wise5/components/openResponse/openResponseService';\nimport { OutsideURLService } from '../assets/wise5/components/outsideURL/outsideURLService';\nimport { PathService } from '../assets/wise5/services/pathService';\nimport { PeerChatService } from '../assets/wise5/components/peerChat/peerChatService';\nimport { PeerGroupService } from '../assets/wise5/services/peerGroupService';\nimport { CRaterPingService } from '../assets/wise5/services/cRaterPingService';\nimport { ProjectLibraryService } from '../assets/wise5/services/projectLibraryService';\nimport { ProjectService } from '../assets/wise5/services/projectService';\nimport { SessionService } from '../assets/wise5/services/sessionService';\nimport { ShowGroupWorkService } from '../assets/wise5/components/showGroupWork/showGroupWorkService';\nimport { ShowMyWorkService } from '../assets/wise5/components/showMyWork/showMyWorkService';\nimport { StompService } from '../assets/wise5/services/stompService';\nimport { StudentAssetService } from '../assets/wise5/services/studentAssetService';\nimport { StudentDataService } from '../assets/wise5/services/studentDataService';\nimport { StudentNodeService } from '../assets/wise5/services/studentNodeService';\nimport { StudentPeerGroupService } from '../assets/wise5/services/studentPeerGroupService';\nimport { StudentProjectTranslationService } from '../assets/wise5/services/studentProjectTranslationService';\nimport { StudentStatusService } from '../assets/wise5/services/studentStatusService';\nimport { StudentWebSocketService } from '../assets/wise5/services/studentWebSocketService';\nimport { SummaryService } from '../assets/wise5/components/summary/summaryService';\nimport { TableService } from '../assets/wise5/components/table/tableService';\nimport { TabulatorDataService } from '../assets/wise5/components/table/tabulatorDataService';\nimport { TagService } from '../assets/wise5/services/tagService';\nimport { TeacherDataService } from '../assets/wise5/services/teacherDataService';\nimport { TeacherNodeService } from '../assets/wise5/services/teacherNodeService';\nimport { TeacherWebSocketService } from '../assets/wise5/services/teacherWebSocketService';\nimport { VLEProjectService } from '../assets/wise5/vle/vleProjectService';\nimport { WiseLinkService } from './services/wiseLinkService';\n\n@NgModule({\n providers: [\n AchievementService,\n AiChatService,\n AnimationService,\n AnnotationService,\n AudioOscillatorService,\n AudioRecorderService,\n BranchService,\n ClassroomStatusService,\n ClickToSnipImageService,\n ConceptMapService,\n ConstraintService,\n CompletionService,\n ComponentService,\n ComponentServiceLookupService,\n ComponentTypeService,\n ComputerAvatarService,\n ConfigService,\n CRaterService,\n DialogGuidanceService,\n DiscussionService,\n DrawService,\n EmbeddedService,\n GraphService,\n HTMLService,\n LabelService,\n MatchService,\n MultipleChoiceService,\n NodeProgressService,\n { provide: NodeService, useExisting: StudentNodeService },\n NodeStatusService,\n NotebookService,\n NotificationService,\n OutsideURLService,\n OpenResponseCompletionCriteriaService,\n OpenResponseService,\n PathService,\n PeerChatService,\n PeerGroupService,\n CRaterPingService,\n ProjectLibraryService,\n { provide: ProjectService, useExisting: VLEProjectService },\n SessionService,\n ShowGroupWorkService,\n ShowMyWorkService,\n StompService,\n StudentAssetService,\n StudentDataService,\n StudentNodeService,\n StudentPeerGroupService,\n StudentStatusService,\n StudentWebSocketService,\n SummaryService,\n TableService,\n TabulatorDataService,\n TagService,\n TeacherDataService,\n TeacherNodeService,\n TeacherWebSocketService,\n StudentProjectTranslationService,\n VLEProjectService,\n WiseLinkService\n ]\n})\nexport class StudentTeacherCommonServicesModule {}\n", + "children": [ + { + "type": "providers", + "elements": [ + { + "name": "AchievementService" + }, + { + "name": "AiChatService" + }, + { + "name": "AnimationService" + }, + { + "name": "AnnotationService" + }, + { + "name": "AudioOscillatorService" + }, + { + "name": "AudioRecorderService" + }, + { + "name": "BranchService" + }, + { + "name": "CRaterPingService" + }, + { + "name": "CRaterService" + }, + { + "name": "ClassroomStatusService" + }, + { + "name": "ClickToSnipImageService" + }, + { + "name": "CompletionService" + }, + { + "name": "ComponentService" + }, + { + "name": "ComponentServiceLookupService" + }, + { + "name": "ComponentTypeService" + }, + { + "name": "ComputerAvatarService" + }, + { + "name": "ConceptMapService" + }, + { + "name": "ConfigService" + }, + { + "name": "ConstraintService" + }, + { + "name": "DialogGuidanceService" + }, + { + "name": "DiscussionService" + }, + { + "name": "DrawService" + }, + { + "name": "EmbeddedService" + }, + { + "name": "GraphService" + }, + { + "name": "HTMLService" + }, + { + "name": "LabelService" + }, + { + "name": "MatchService" + }, + { + "name": "MultipleChoiceService" + }, + { + "name": "NodeProgressService" + }, + { + "name": "NodeStatusService" + }, + { + "name": "NotebookService" + }, + { + "name": "NotificationService" + }, + { + "name": "OpenResponseCompletionCriteriaService" + }, + { + "name": "OpenResponseService" + }, + { + "name": "OutsideURLService" + }, + { + "name": "PathService" + }, + { + "name": "PeerChatService" + }, + { + "name": "PeerGroupService" + }, + { + "name": "ProjectLibraryService" + }, + { + "name": "SessionService" + }, + { + "name": "ShowGroupWorkService" + }, + { + "name": "ShowMyWorkService" + }, + { + "name": "StompService" + }, + { + "name": "StudentAssetService" + }, + { + "name": "StudentDataService" + }, + { + "name": "StudentNodeService" + }, + { + "name": "StudentNodeService" + }, + { + "name": "StudentPeerGroupService" + }, + { + "name": "StudentProjectTranslationService" + }, + { + "name": "StudentStatusService" + }, + { + "name": "StudentWebSocketService" + }, + { + "name": "SummaryService" + }, + { + "name": "TableService" + }, + { + "name": "TabulatorDataService" + }, + { + "name": "TagService" + }, + { + "name": "TeacherDataService" + }, + { + "name": "TeacherNodeService" + }, + { + "name": "TeacherWebSocketService" + }, + { + "name": "VLEProjectService" + }, + { + "name": "VLEProjectService" + }, + { + "name": "WiseLinkService" + } + ] + }, + { + "type": "declarations", + "elements": [] + }, + { + "type": "imports", + "elements": [] + }, + { + "type": "exports", + "elements": [] + }, + { + "type": "bootstrap", + "elements": [] + }, + { + "type": "classes", + "elements": [] + } + ] + }, + { + "name": "StudentVLEModule", + "id": "module-StudentVLEModule-4ee81edcb8d4c44e386db78d07d14c632fbac3da159e118f01d99b9292a448770fe10ce34339ba570d5bce5e521c0ff471665409080902f1601cefad79e0fea9", + "description": "", + "deprecationMessage": "", + "deprecated": false, + "file": "src/app/student/vle/student-vle.module.ts", + "methods": [], + "sourceCode": "import '../../../assets/wise5/lib/jquery/jquery-global';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { ComponentStudentModule } from '../../../assets/wise5/components/component/component-student.module';\nimport { InitializeVLEService } from '../../../assets/wise5/services/initializeVLEService';\nimport { ProjectService } from '../../../assets/wise5/services/projectService';\nimport { StudentDataService } from '../../../assets/wise5/services/studentDataService';\nimport { VLEComponent } from '../../../assets/wise5/vle/vle.component';\nimport { VLEProjectService } from '../../../assets/wise5/vle/vleProjectService';\nimport { StudentTeacherCommonModule } from '../../student-teacher-common.module';\nimport { DataService } from '../../services/data.service';\nimport { StudentComponentModule } from '../student.component.module';\nimport { StudentVLERoutingModule } from './student-vle-routing.module';\nimport { PauseScreenService } from '../../../assets/wise5/services/pauseScreenService';\nimport { StudentNotificationService } from '../../../assets/wise5/services/studentNotificationService';\nimport { NotificationService } from '../../../assets/wise5/services/notificationService';\nimport { VLEParentComponent } from '../../../assets/wise5/vle/vle-parent/vle-parent.component';\nimport { StudentPeerGroupService } from '../../../assets/wise5/services/studentPeerGroupService';\nimport { PeerGroupService } from '../../../assets/wise5/services/peerGroupService';\nimport { StudentAssetsDialogComponent } from '../../../assets/wise5/vle/studentAsset/student-assets-dialog/student-assets-dialog.component';\nimport { GenerateImageService } from '../../../assets/wise5/services/generateImageService';\n\n@NgModule({\n imports: [\n CommonModule,\n ComponentStudentModule,\n MatDialogModule,\n StudentAssetsDialogComponent,\n StudentComponentModule,\n StudentTeacherCommonModule,\n StudentVLERoutingModule,\n VLEComponent,\n VLEParentComponent\n ],\n providers: [\n GenerateImageService,\n InitializeVLEService,\n PauseScreenService,\n { provide: DataService, useExisting: StudentDataService },\n { provide: NotificationService, useExisting: StudentNotificationService },\n { provide: PeerGroupService, useExisting: StudentPeerGroupService },\n { provide: ProjectService, useExisting: VLEProjectService },\n StudentNotificationService,\n VLEProjectService\n ]\n})\nexport class StudentVLEModule {}\n", + "children": [ + { + "type": "providers", + "elements": [ + { + "name": "GenerateImageService" + }, + { + "name": "InitializeVLEService" + }, + { + "name": "PauseScreenService" + }, + { + "name": "StudentDataService" + }, + { + "name": "StudentNotificationService" + }, + { + "name": "StudentNotificationService" + }, + { + "name": "StudentPeerGroupService" + }, + { + "name": "VLEProjectService" + }, + { + "name": "VLEProjectService" + } + ] + }, + { + "type": "declarations", + "elements": [] + }, + { + "type": "imports", + "elements": [ + { + "name": "StudentAssetsDialogComponent" + }, + { + "name": "StudentTeacherCommonModule" + }, + { + "name": "StudentVLERoutingModule" + }, + { + "name": "VLEComponent" + }, + { + "name": "VLEParentComponent" + } + ] + }, + { + "type": "exports", + "elements": [] + }, + { + "type": "bootstrap", + "elements": [] + }, + { + "type": "classes", + "elements": [] + } + ] + }, + { + "name": "StudentVLERoutingModule", + "id": "module-StudentVLERoutingModule-66d062352a5a61d866121cabc51989607f4541200da5a41cc884cf6c30ada1809e7965c9e599c2a903f9714f32414845ac563d7451c2881d0822f64803eade49", + "description": "", + "deprecationMessage": "", + "deprecated": false, + "file": "src/app/student/vle/student-vle-routing.module.ts", + "methods": [], + "sourceCode": "import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { VLEParentComponent } from '../../../assets/wise5/vle/vle-parent/vle-parent.component';\nimport { VLEComponent } from '../../../assets/wise5/vle/vle.component';\n\nconst routes: Routes = [\n {\n path: '',\n component: VLEParentComponent,\n children: [\n {\n path: ':nodeId',\n component: VLEComponent\n }\n ]\n }\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule]\n})\nexport class StudentVLERoutingModule {}\n", + "children": [ + { + "type": "providers", + "elements": [] + }, + { + "type": "declarations", + "elements": [] + }, + { + "type": "imports", + "elements": [] + }, + { + "type": "exports", + "elements": [] + }, + { + "type": "bootstrap", + "elements": [] + }, + { + "type": "classes", + "elements": [] + } + ] + }, + { + "name": "SummaryStudentModule", + "id": "module-SummaryStudentModule-6c40655bc9873b82a8d80b27292ee48c03e0ba9c757bcec0956b76eef092dd9194c5e5a544ce50567d6a36b9c39c59f60aa5400ed5c6a170e70889836d8472c0", + "description": "", + "deprecationMessage": "", + "deprecated": false, + "file": "src/assets/wise5/components/summary/summary-student/summary-student.module.ts", + "methods": [], + "sourceCode": "import { NgModule } from '@angular/core';\nimport { StudentTeacherCommonModule } from '../../../../../app/student-teacher-common.module';\nimport { StudentComponentModule } from '../../../../../app/student/student.component.module';\nimport { SummaryStudent } from './summary-student.component';\nimport { StudentSummaryDisplay } from '../../../directives/student-summary-display/student-summary-display.component';\n\n@NgModule({\n imports: [StudentTeacherCommonModule, StudentComponentModule, StudentSummaryDisplay, SummaryStudent],\n exports: [SummaryStudent]\n})\nexport class SummaryStudentModule {}\n", + "children": [ + { + "type": "providers", + "elements": [] + }, + { + "type": "declarations", + "elements": [] + }, + { + "type": "imports", + "elements": [ + { + "name": "StudentSummaryDisplay" + }, + { + "name": "StudentTeacherCommonModule" + }, + { + "name": "SummaryStudent" + } + ] + }, + { + "type": "exports", + "elements": [ + { + "name": "SummaryStudent" + } + ] + }, + { + "type": "bootstrap", + "elements": [] + }, + { + "type": "classes", + "elements": [] + } + ] + }, + { + "name": "SurveyRoutingModule", + "id": "module-SurveyRoutingModule-4f9c828bf0794ed337c3e69a7e778acd4b9ed80f2c66248ff69cb45c32f914ad575d3c4d6b7158c03f494e128966bfdfac5f68fe40faef1dd2af193b04e6f000", + "description": "", + "deprecationMessage": "", + "deprecated": false, + "file": "src/app/student/survey/survey-routing.module.ts", + "methods": [], + "sourceCode": "import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { StudentComponent } from '../student.component';\nimport { SurveyCompletedComponent } from './survey-completed/survey-completed.component';\nimport { WorkgroupLimitReachedComponent } from './workgroup-limit-reached/workgroup-limit-reached.component';\n\nconst studentRoutes: Routes = [\n {\n path: '',\n component: StudentComponent,\n children: [\n { path: '', redirectTo: '/', pathMatch: 'full' },\n { path: 'completed', component: SurveyCompletedComponent, pathMatch: 'full' },\n {\n path: 'workgroupLimitReached',\n component: WorkgroupLimitReachedComponent,\n pathMatch: 'full'\n }\n ]\n }\n];\n\n@NgModule({\n imports: [RouterModule.forChild(studentRoutes)],\n exports: [RouterModule]\n})\nexport class SurveyRoutingModule {}\n", + "children": [ + { + "type": "providers", + "elements": [] + }, + { + "type": "declarations", + "elements": [] + }, + { + "type": "imports", + "elements": [] + }, + { + "type": "exports", + "elements": [] + }, + { + "type": "bootstrap", + "elements": [] + }, + { + "type": "classes", + "elements": [] + } + ] + }, + { + "name": "TeacherAuthoringModule", + "id": "module-TeacherAuthoringModule-b5e2e7f34c36592ff97bf482d274a375edb1962b21029b3e8e93390138960a43195f4135b051aaa210a0c30115a9a687290c665f7c7620911d2eb9175579ba27", + "description": "", + "deprecationMessage": "", + "deprecated": false, + "file": "src/app/teacher/teacher-authoring.module.ts", + "methods": [], + "sourceCode": "import { NgModule } from '@angular/core';\nimport { ProjectService } from '../../assets/wise5/services/projectService';\nimport { TeacherProjectService } from '../../assets/wise5/services/teacherProjectService';\nimport { ProjectAssetService } from '../services/projectAssetService';\nimport { SpaceService } from '../../assets/wise5/services/spaceService';\nimport { ClassroomStatusService } from '../../assets/wise5/services/classroomStatusService';\nimport { TeacherDataService } from '../../assets/wise5/services/teacherDataService';\nimport { TeacherWebSocketService } from '../../assets/wise5/services/teacherWebSocketService';\nimport { DataService } from '../services/data.service';\nimport { MilestoneService } from '../../assets/wise5/services/milestoneService';\nimport { CopyNodesService } from '../../assets/wise5/services/copyNodesService';\nimport { CopyProjectService } from '../../assets/wise5/services/copyProjectService';\nimport { DeleteNodeService } from '../../assets/wise5/services/deleteNodeService';\nimport { ImportComponentService } from '../../assets/wise5/services/importComponentService';\nimport { InsertComponentService } from '../../assets/wise5/services/insertComponentService';\nimport { InsertNodesService } from '../../assets/wise5/services/insertNodesService';\nimport { MoveNodesService } from '../../assets/wise5/services/moveNodesService';\nimport { UpdateWorkgroupService } from '../services/updateWorkgroupService';\nimport { GetWorkgroupService } from '../services/getWorkgroupService';\nimport { WorkgroupService } from '../services/workgroup.service';\nimport { TeacherWorkService } from '../../assets/wise5/services/teacherWorkService';\nimport { TeacherDiscussionService } from '../../assets/wise5/components/discussion/teacherDiscussionService';\nimport { TeacherPeerGroupService } from '../../assets/wise5/services/teacherPeerGroupService';\nimport { DataExportService } from '../../assets/wise5/services/dataExportService';\nimport { PeerGroupService } from '../../assets/wise5/services/peerGroupService';\nimport { NodeService } from '../../assets/wise5/services/nodeService';\nimport { TeacherNodeService } from '../../assets/wise5/services/teacherNodeService';\nimport { MilestoneReportService } from '../../assets/wise5/services/milestoneReportService';\nimport { AuthoringRoutingModule } from './authoring-routing.module';\nimport { ComponentInfoService } from '../../assets/wise5/services/componentInfoService';\nimport { CreateBranchService } from '../../assets/wise5/services/createBranchService';\nimport { EditBranchService } from '../../assets/wise5/services/editBranchService';\nimport { InsertFirstNodeInBranchPathService } from '../../assets/wise5/services/insertFirstNodeInBranchPathService';\nimport { DeleteBranchService } from '../../assets/wise5/services/deleteBranchService';\nimport { TeacherProjectTranslationService } from '../../assets/wise5/services/teacherProjectTranslationService';\nimport { DeleteTranslationsService } from '../../assets/wise5/services/deleteTranslationsService';\nimport { CopyTranslationsService } from '../../assets/wise5/services/copyTranslationsService';\nimport { CreateComponentService } from '../../assets/wise5/services/createComponentService';\nimport { NotifyAuthorService } from '../../assets/wise5/services/notifyAuthorService';\nimport { RemoveNodeIdFromTransitionsService } from '../../assets/wise5/services/removeNodeIdFromTransitionsService';\nimport { RegisterProjectService } from '../../assets/wise5/services/registerProjectService';\nimport { ComponentAuthoringModule } from './component-authoring.module';\nimport { StudentTeacherCommonServicesModule } from '../student-teacher-common-services.module';\n\n@NgModule({\n imports: [AuthoringRoutingModule, ComponentAuthoringModule, StudentTeacherCommonServicesModule],\n providers: [\n ClassroomStatusService,\n ComponentInfoService,\n CopyNodesService,\n CopyProjectService,\n CopyTranslationsService,\n CreateBranchService,\n CreateComponentService,\n DeleteBranchService,\n EditBranchService,\n InsertFirstNodeInBranchPathService,\n DataExportService,\n { provide: DataService, useExisting: TeacherDataService },\n TeacherProjectTranslationService,\n GetWorkgroupService,\n DeleteNodeService,\n ImportComponentService,\n InsertComponentService,\n InsertNodesService,\n MilestoneService,\n MilestoneReportService,\n MoveNodesService,\n { provide: NodeService, useExisting: TeacherNodeService },\n NotifyAuthorService,\n ProjectAssetService,\n SpaceService,\n DeleteTranslationsService,\n { provide: PeerGroupService, useExisting: TeacherPeerGroupService },\n { provide: ProjectService, useExisting: TeacherProjectService },\n RegisterProjectService,\n RemoveNodeIdFromTransitionsService,\n TeacherDataService,\n TeacherDiscussionService,\n TeacherNodeService,\n TeacherPeerGroupService,\n TeacherProjectService,\n TeacherWebSocketService,\n TeacherWorkService,\n UpdateWorkgroupService,\n WorkgroupService\n ]\n})\nexport class TeacherAuthoringModule {}\n", + "children": [ + { + "type": "providers", + "elements": [ + { + "name": "ClassroomStatusService" + }, + { + "name": "ComponentInfoService" + }, + { + "name": "CopyNodesService" + }, + { + "name": "CopyProjectService" + }, + { + "name": "CopyTranslationsService" + }, + { + "name": "CreateBranchService" + }, + { + "name": "CreateComponentService" + }, + { + "name": "DataExportService" + }, + { + "name": "DeleteBranchService" + }, + { + "name": "DeleteNodeService" + }, + { + "name": "DeleteTranslationsService" + }, + { + "name": "EditBranchService" + }, + { + "name": "GetWorkgroupService" + }, + { + "name": "ImportComponentService" + }, + { + "name": "InsertComponentService" + }, + { + "name": "InsertFirstNodeInBranchPathService" + }, + { + "name": "InsertNodesService" + }, + { + "name": "MilestoneReportService" + }, + { + "name": "MilestoneService" + }, + { + "name": "MoveNodesService" + }, + { + "name": "NotifyAuthorService" + }, + { + "name": "ProjectAssetService" + }, + { + "name": "RegisterProjectService" + }, + { + "name": "RemoveNodeIdFromTransitionsService" + }, + { + "name": "SpaceService" + }, + { + "name": "TeacherDataService" + }, + { + "name": "TeacherDataService" + }, + { + "name": "TeacherDiscussionService" + }, + { + "name": "TeacherNodeService" + }, + { + "name": "TeacherNodeService" + }, + { + "name": "TeacherPeerGroupService" + }, + { + "name": "TeacherPeerGroupService" + }, + { + "name": "TeacherProjectService" + }, + { + "name": "TeacherProjectService" + }, + { + "name": "TeacherProjectTranslationService" + }, + { + "name": "TeacherWebSocketService" + }, + { + "name": "TeacherWorkService" + }, + { + "name": "UpdateWorkgroupService" + }, + { + "name": "WorkgroupService" + } + ] + }, + { + "type": "declarations", + "elements": [] + }, + { + "type": "imports", + "elements": [ + { + "name": "AuthoringRoutingModule" + }, + { + "name": "StudentTeacherCommonServicesModule" + } + ] + }, + { + "type": "exports", + "elements": [] + }, + { + "type": "bootstrap", + "elements": [] + }, + { + "type": "classes", + "elements": [] + } + ] + }, + { + "name": "TeacherModule", + "id": "module-TeacherModule-23f99801e06e2250a01aa114362a5be00e8ebf328fbc4e6362c32808dbef78ce70d79d4c415340372429668174aa4181f849a3548271cca36c5f4c13ac202559", + "description": "", + "deprecationMessage": "", + "deprecated": false, + "file": "src/app/teacher/teacher.module.ts", + "methods": [], + "sourceCode": "import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SharedModule } from '../modules/shared/shared.module';\nimport { TeacherRoutingModule } from './teacher-routing.module';\nimport { AuthGuard } from './auth.guard';\nimport { FormsModule } from '@angular/forms';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatNativeDateModule } from '@angular/material/core';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { ClipboardModule } from '@angular/cdk/clipboard';\nimport { LibraryModule } from '../modules/library/library.module';\nimport { EditComponent } from './account/edit/edit.component';\nimport { TeacherEditProfileComponent } from './account/edit-profile/edit-profile.component';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatListModule } from '@angular/material/list';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { SearchBarComponent } from '../modules/shared/search-bar/search-bar.component';\nimport { ApplyTagsButtonComponent } from './apply-tags-button/apply-tags-button.component';\nimport { ProjectTagService } from '../../assets/wise5/services/projectTagService';\nimport { SelectTagsComponent } from './select-tags/select-tags.component';\nimport { UnitTagsComponent } from './unit-tags/unit-tags.component';\nimport { ColorService } from '../../assets/wise5/services/colorService';\nimport { NgSelectModule } from '@ng-select/ng-select';\nimport { AccessLinkService } from '../services/accessLinkService';\n\nconst materialModules = [\n MatAutocompleteModule,\n MatButtonModule,\n MatCardModule,\n MatCheckboxModule,\n MatDatepickerModule,\n MatDialogModule,\n MatDividerModule,\n MatIconModule,\n MatListModule,\n MatMenuModule,\n MatNativeDateModule,\n MatProgressBarModule,\n MatRadioModule,\n MatSlideToggleModule,\n MatSnackBarModule,\n MatTabsModule,\n MatTableModule,\n MatToolbarModule,\n MatTooltipModule\n];\n@NgModule({\n imports: [\n ApplyTagsButtonComponent,\n CommonModule,\n FormsModule,\n LibraryModule,\n materialModules,\n NgSelectModule,\n SearchBarComponent,\n SelectTagsComponent,\n SharedModule,\n TeacherRoutingModule,\n ClipboardModule,\n UnitTagsComponent,\n EditComponent,\n TeacherEditProfileComponent\n ],\n providers: [AccessLinkService, AuthGuard, ColorService, ProjectTagService],\n exports: [UnitTagsComponent, materialModules]\n})\nexport class TeacherModule {}\n", + "children": [ + { + "type": "providers", + "elements": [ + { + "name": "AccessLinkService" + }, + { + "name": "AuthGuard" + }, + { + "name": "ColorService" + }, + { + "name": "ProjectTagService" + } + ] + }, + { + "type": "declarations", + "elements": [] + }, + { + "type": "imports", + "elements": [ + { + "name": "ApplyTagsButtonComponent" + }, + { + "name": "EditComponent" + }, + { + "name": "LibraryModule" + }, + { + "name": "SearchBarComponent" + }, + { + "name": "SelectTagsComponent" + }, + { + "name": "SharedModule" + }, + { + "name": "TeacherEditProfileComponent" + }, + { + "name": "TeacherRoutingModule" + }, + { + "name": "UnitTagsComponent" + } + ] + }, + { + "type": "exports", + "elements": [ + { + "name": "UnitTagsComponent" + } + ] + }, + { + "type": "bootstrap", + "elements": [] + }, + { + "type": "classes", + "elements": [] + } + ] + }, + { + "name": "TeacherRoutingModule", + "id": "module-TeacherRoutingModule-3270c7f62a707d0d114093fd280a5cfcfd2d7f2a5138d0ffd4b5917595ac1cea023b7b98c1edba24093a18be796d506ca11d51c91261fda0acb74d9a4f2281b4", + "description": "", + "deprecationMessage": "", + "deprecated": false, + "file": "src/app/teacher/teacher-routing.module.ts", + "methods": [], + "sourceCode": "import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { AuthGuard } from './auth.guard';\nimport { EditComponent } from './account/edit/edit.component';\n\nconst teacherRoutes: Routes = [\n {\n path: '',\n loadComponent: () => \"import('./teacher.component').then((m) => m.TeacherComponent)\",\n canActivate: [AuthGuard],\n children: [\n { path: '', redirectTo: 'home', pathMatch: 'full' },\n { path: 'profile', redirectTo: 'profile/edit', pathMatch: 'full' },\n { path: 'profile/edit', component: EditComponent },\n {\n path: 'home',\n loadComponent: () =>\n \"import('./teacher-home/teacher-home.component').then((m) => m.TeacherHomeComponent)\",\n children: [\n { path: 'library/personal', redirectTo: '/curriculum/personal' },\n { path: 'library', redirectTo: '/curriculum' },\n { path: 'schedule', redirectTo: '' }\n ]\n },\n {\n path: 'edit',\n loadChildren: () =>\n \"import('./teacher-authoring.module').then((m) => m.TeacherAuthoringModule)\"\n },\n {\n path: 'manage',\n loadChildren: () => \"import('./teacher-tools.module').then((m) => m.TeacherToolsModule)\"\n }\n ]\n }\n];\n\n@NgModule({\n imports: [RouterModule.forChild(teacherRoutes)],\n exports: [RouterModule]\n})\nexport class TeacherRoutingModule {}\n", + "children": [ + { + "type": "providers", + "elements": [] + }, + { + "type": "declarations", + "elements": [] + }, + { + "type": "imports", + "elements": [] + }, + { + "type": "exports", + "elements": [] + }, + { + "type": "bootstrap", + "elements": [] + }, + { + "type": "classes", + "elements": [] + } + ] + }, + { + "name": "TeacherToolsModule", + "id": "module-TeacherToolsModule-80eac6a25054098f8510da06b88844f3f100fb282ded161154eceb37fe4ea9fd272fd025f1883552525282caa66e45813ecc8962e35cc27719af7c061233f32c", + "description": "", + "deprecationMessage": "", + "deprecated": false, + "file": "src/app/teacher/teacher-tools.module.ts", + "methods": [], + "sourceCode": "import { NgModule } from '@angular/core';\n\nimport { StudentTeacherCommonModule } from '../student-teacher-common.module';\nimport { ProjectService } from '../../assets/wise5/services/projectService';\nimport { TeacherProjectService } from '../../assets/wise5/services/teacherProjectService';\nimport { ProjectAssetService } from '../services/projectAssetService';\nimport { SpaceService } from '../../assets/wise5/services/spaceService';\nimport { ClassroomStatusService } from '../../assets/wise5/services/classroomStatusService';\nimport { TeacherDataService } from '../../assets/wise5/services/teacherDataService';\nimport { TeacherWebSocketService } from '../../assets/wise5/services/teacherWebSocketService';\nimport { DataService } from '../services/data.service';\nimport { MilestoneService } from '../../assets/wise5/services/milestoneService';\nimport { CopyNodesService } from '../../assets/wise5/services/copyNodesService';\nimport { CopyProjectService } from '../../assets/wise5/services/copyProjectService';\nimport { DeleteNodeService } from '../../assets/wise5/services/deleteNodeService';\nimport { ImportComponentService } from '../../assets/wise5/services/importComponentService';\nimport { InsertComponentService } from '../../assets/wise5/services/insertComponentService';\nimport { InsertNodesService } from '../../assets/wise5/services/insertNodesService';\nimport { MoveNodesService } from '../../assets/wise5/services/moveNodesService';\nimport { ClassroomMonitorModule } from '../teacher/classroom-monitor.module';\nimport { UpdateWorkgroupService } from '../services/updateWorkgroupService';\nimport { GetWorkgroupService } from '../services/getWorkgroupService';\nimport { WorkgroupService } from '../services/workgroup.service';\nimport { TeacherWorkService } from '../../assets/wise5/services/teacherWorkService';\nimport { TeacherDiscussionService } from '../../assets/wise5/components/discussion/teacherDiscussionService';\nimport { TeacherPeerGroupService } from '../../assets/wise5/services/teacherPeerGroupService';\nimport { DataExportService } from '../../assets/wise5/services/dataExportService';\nimport { PeerGroupService } from '../../assets/wise5/services/peerGroupService';\nimport { NodeService } from '../../assets/wise5/services/nodeService';\nimport { TeacherNodeService } from '../../assets/wise5/services/teacherNodeService';\nimport { MilestoneReportService } from '../../assets/wise5/services/milestoneReportService';\nimport { RouterModule } from '@angular/router';\nimport { TeacherToolsRoutingModule } from './teacher-tools-routing.module';\nimport { TeacherPauseScreenService } from '../../assets/wise5/services/teacherPauseScreenService';\nimport { RunStatusService } from '../../assets/wise5/services/runStatusService';\n\n@NgModule({\n imports: [\n StudentTeacherCommonModule,\n ClassroomMonitorModule,\n RouterModule,\n TeacherToolsRoutingModule\n ],\n providers: [\n ClassroomStatusService,\n CopyNodesService,\n CopyProjectService,\n DataExportService,\n { provide: DataService, useExisting: TeacherDataService },\n GetWorkgroupService,\n DeleteNodeService,\n ImportComponentService,\n InsertComponentService,\n InsertNodesService,\n MilestoneService,\n MilestoneReportService,\n MoveNodesService,\n { provide: NodeService, useExisting: TeacherNodeService },\n ProjectAssetService,\n RunStatusService,\n SpaceService,\n { provide: PeerGroupService, useExisting: TeacherPeerGroupService },\n { provide: ProjectService, useExisting: TeacherProjectService },\n TeacherDataService,\n TeacherDiscussionService,\n TeacherNodeService,\n TeacherPauseScreenService,\n TeacherPeerGroupService,\n TeacherProjectService,\n TeacherWebSocketService,\n TeacherWorkService,\n UpdateWorkgroupService,\n WorkgroupService\n ]\n})\nexport class TeacherToolsModule {}\n", + "children": [ + { + "type": "providers", + "elements": [ + { + "name": "ClassroomStatusService" + }, + { + "name": "CopyNodesService" + }, + { + "name": "CopyProjectService" + }, + { + "name": "DataExportService" + }, + { + "name": "DeleteNodeService" + }, + { + "name": "GetWorkgroupService" + }, + { + "name": "ImportComponentService" + }, + { + "name": "InsertComponentService" + }, + { + "name": "InsertNodesService" + }, + { + "name": "MilestoneReportService" + }, + { + "name": "MilestoneService" + }, + { + "name": "MoveNodesService" + }, + { + "name": "ProjectAssetService" + }, + { + "name": "RunStatusService" + }, + { + "name": "SpaceService" + }, + { + "name": "TeacherDataService" + }, + { + "name": "TeacherDataService" + }, + { + "name": "TeacherDiscussionService" + }, + { + "name": "TeacherNodeService" + }, + { + "name": "TeacherNodeService" + }, + { + "name": "TeacherPauseScreenService" + }, + { + "name": "TeacherPeerGroupService" + }, + { + "name": "TeacherPeerGroupService" + }, + { + "name": "TeacherProjectService" + }, + { + "name": "TeacherProjectService" + }, + { + "name": "TeacherWebSocketService" + }, + { + "name": "TeacherWorkService" + }, + { + "name": "UpdateWorkgroupService" + }, + { + "name": "WorkgroupService" + } + ] + }, + { + "type": "declarations", + "elements": [] + }, + { + "type": "imports", + "elements": [ + { + "name": "ClassroomMonitorModule" + }, + { + "name": "StudentTeacherCommonModule" + }, + { + "name": "TeacherToolsRoutingModule" + } + ] + }, + { + "type": "exports", + "elements": [] + }, + { + "type": "bootstrap", + "elements": [] + }, + { + "type": "classes", + "elements": [] + } + ] + }, + { + "name": "TeacherToolsRoutingModule", + "id": "module-TeacherToolsRoutingModule-9b443bfa86da134cfd14c387e4f963628ff3dc2645657ed27132408fdce9b4656e358db5e76c1c995e4d38be642a2c2d1af2a831385a5943c9600cde84797cf0", + "description": "", + "deprecationMessage": "", + "deprecated": false, + "file": "src/app/teacher/teacher-tools-routing.module.ts", + "methods": [], + "sourceCode": "import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { ClassroomMonitorComponent } from '../../assets/wise5/classroomMonitor/classroom-monitor.component';\nimport { TeacherToolsResolver } from './teacher-tools.resolver';\nimport { NodeProgressViewComponent } from '../../assets/wise5/classroomMonitor/classroomMonitorComponents/nodeProgress/node-progress-view/node-progress-view.component';\nimport { StudentProgressComponent } from '../../assets/wise5/classroomMonitor/student-progress/student-progress.component';\nimport { StudentGradingComponent } from '../../assets/wise5/classroomMonitor/student-grading/student-grading.component';\nimport { StudentDataResolver } from './student-data.resolver';\nimport { DataExportComponent } from '../../assets/wise5/classroomMonitor/dataExport/data-export/data-export.component';\nimport { ExportStepVisitsComponent } from '../../assets/wise5/classroomMonitor/dataExport/export-step-visits/export-step-visits.component';\nimport { ManageStudentsComponent } from '../../assets/wise5/classroomMonitor/classroomMonitorComponents/manageStudents/manage-students/manage-students.component';\nimport { NotebookGradingComponent } from '../../assets/wise5/classroomMonitor/notebook-grading/notebook-grading.component';\nimport { MilestonesComponent } from '../classroom-monitor/milestones/milestones.component';\nimport { ExportItemComponent } from '../../assets/wise5/classroomMonitor/dataExport/export-item/export-item.component';\nimport { ExportRawDataComponent } from '../../assets/wise5/classroomMonitor/dataExport/export-raw-data/export-raw-data.component';\nimport { ExportEventsComponent } from '../../assets/wise5/classroomMonitor/dataExport/export-events/export-events.component';\nimport { ExportOneWorkgroupPerRowComponent } from '../../assets/wise5/classroomMonitor/dataExport/export-one-workgroup-per-row/export-one-workgroup-per-row.component';\nimport { ExportStudentWorkComponent } from '../../assets/wise5/classroomMonitor/dataExport/export-student-work/export-student-work.component';\nimport { NodeGradingComponent } from '../../assets/wise5/classroomMonitor/classroomMonitorComponents/nodeGrading/node-grading/node-grading.component';\n\nconst routes: Routes = [\n {\n path: 'unit/:unitId',\n component: ClassroomMonitorComponent,\n resolve: { teacherData: TeacherToolsResolver },\n children: [\n { path: '', component: NodeProgressViewComponent },\n { path: 'export', component: DataExportComponent },\n { path: 'export/item', component: ExportItemComponent },\n { path: 'export/events', component: ExportEventsComponent },\n { path: 'export/one-workgroup-per-row', component: ExportOneWorkgroupPerRowComponent },\n { path: 'export/student-work', component: ExportStudentWorkComponent },\n { path: 'export/raw', component: ExportRawDataComponent },\n { path: 'export/visits', component: ExportStepVisitsComponent },\n { path: 'manage-students', component: ManageStudentsComponent },\n { path: 'milestones', component: MilestonesComponent },\n { path: 'group/:nodeId', component: NodeProgressViewComponent },\n {\n path: 'node/:nodeId',\n component: NodeGradingComponent\n },\n { path: 'notebook', component: NotebookGradingComponent },\n {\n path: 'team',\n component: StudentProgressComponent\n },\n {\n path: 'team/:workgroupId',\n component: StudentGradingComponent,\n resolve: { studentData: StudentDataResolver }\n }\n ]\n }\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule]\n})\nexport class TeacherToolsRoutingModule {}\n", + "children": [ + { + "type": "providers", + "elements": [] + }, + { + "type": "declarations", + "elements": [] + }, + { + "type": "imports", + "elements": [] + }, + { + "type": "exports", + "elements": [] + }, + { + "type": "bootstrap", + "elements": [] + }, + { + "type": "classes", + "elements": [] + } + ] + }, + { + "name": "TimelineModule", + "id": "module-TimelineModule-6ac1d918360a13fc7a6b09fb109700e0c63227b38b5383214a8975a5f7a94868e23819cf315ff1cc72ff5c8a55b7e73185aa3b84d7e6bddfeeee44d6c00140a0", + "description": "", + "deprecationMessage": "", + "deprecated": false, + "file": "src/app/modules/timeline/timeline.module.ts", + "methods": [], + "sourceCode": "import { NgModule } from '@angular/core';\nimport { TimelineComponent } from './timeline/timeline.component';\nimport {\n TimelineItemComponent,\n TimelineItemContent,\n TimelineItemLabel\n} from './timeline-item/timeline-item.component';\n\n@NgModule({\n imports: [TimelineComponent, TimelineItemComponent, TimelineItemContent, TimelineItemLabel],\n exports: [TimelineComponent, TimelineItemComponent, TimelineItemContent, TimelineItemLabel]\n})\nexport class TimelineModule {}\n", + "children": [ + { + "type": "providers", + "elements": [] + }, + { + "type": "declarations", + "elements": [] + }, + { + "type": "imports", + "elements": [ + { + "name": "TimelineComponent" + }, + { + "name": "TimelineItemComponent" + }, + { + "name": "TimelineItemContent" + }, + { + "name": "TimelineItemLabel" + } + ] + }, + { + "type": "exports", + "elements": [ + { + "name": "TimelineComponent" + }, + { + "name": "TimelineItemComponent" + }, + { + "name": "TimelineItemContent" + }, + { + "name": "TimelineItemLabel" + } + ] + }, + { + "type": "bootstrap", + "elements": [] + }, + { + "type": "classes", + "elements": [] + } + ] + } + ], + "miscellaneous": { + "variables": [ + { + "name": "__karma__", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/assets/wise5/teacher/src/test.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "any" + }, + { + "name": "__karma__", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/assets/wise5/vle/src/test.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "any" + }, + { + "name": "audioExtensionsRegEx", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/assets/wise5/common/file/file.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "defaultValue": "new RegExp('.*.(aiff|mp3|flac|m4a|m4p|ogg|wav|webm)$')" + }, + { + "name": "AuthoringConfigResolver", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/app/teacher/authoring.config.resolver.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "ResolveFn", + "defaultValue": "(\n route: ActivatedRouteSnapshot,\n state: RouterStateSnapshot,\n configService: ConfigService = inject(ConfigService)\n): Observable => configService.retrieveConfig('/api/author/config')" + }, + { + "name": "AuthoringProjectResolver", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/app/teacher/authoring.project.resolver.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "ResolveFn", + "defaultValue": "(\n route: ActivatedRouteSnapshot,\n state: RouterStateSnapshot,\n configService: ConfigService = inject(ConfigService),\n projectAssetService: ProjectAssetService = inject(ProjectAssetService),\n projectService: ProjectService = inject(ProjectService)\n): Observable => {\n return configService\n .retrieveConfig(`/api/author/config/${route.params['unitId']}`)\n .pipe(switchMap(() => projectService.retrieveProject()))\n .pipe(switchMap(() => projectAssetService.retrieveProjectAssets()));\n}" + }, + { + "name": "AVAILABLE_LOGIC", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/assets/wise5/authoringTool/peer-grouping/PeerGroupingLogic.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "PeerGroupingLogic[]", + "defaultValue": "[\n { name: $localize`Random`, value: 'random' },\n { name: $localize`Manual`, value: 'manual' },\n { name: DIFFERENT_IDEAS_NAME, value: DIFFERENT_IDEAS_VALUE },\n { name: DIFFERENT_SCORES_NAME, value: DIFFERENT_SCORES_VALUE }\n]" + }, + { + "name": "AVAILABLE_MODES", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/assets/wise5/authoringTool/peer-grouping/PeerGroupingLogic.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "any[]", + "defaultValue": "[\n { name: $localize`Any`, value: 'any' },\n { name: $localize`Maximize`, value: 'maximize' }\n]" + }, + { + "name": "bounceIn", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/app/animations.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "defaultValue": "trigger('bounceIn', [\n state(\n 'void',\n style({\n opacity: 0\n })\n ),\n state(\n '*',\n style({\n opacity: 1\n })\n ),\n transition(\n 'void => *',\n [\n animate(\n '{{ duration }} {{ delay }} ease-in-out',\n keyframes([\n style({\n transform: 'scale3d(0.3, 0.3, 0.3)',\n opacity: 0,\n offset: 0\n }),\n style({\n transform: 'scale3d(1.1, 1.1, 1.1)',\n opacity: 1,\n offset: 0.2\n }),\n style({\n transform: 'scale3d(0.9, 0.9, 0.9)',\n offset: 0.4\n }),\n style({\n transform: 'scale3d(1.03, 1.03, 1.03)',\n offset: 0.6\n }),\n style({\n transform: 'scale3d(1, 1, 1))',\n offset: 0.8\n }),\n style({\n transform: 'scale3d(1, 1, 1)',\n offset: 1\n })\n ])\n )\n ],\n { params: { duration: '1s', delay: '0s' } }\n )\n])" + }, + { + "name": "BRANCH_CRITERIA", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/app/domain/branchCriteria.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "BranchCriteria[]", + "defaultValue": "[\n {\n text: $localize`Workgroup ID`,\n value: WORKGROUP_ID_VALUE\n },\n {\n text: $localize`Score`,\n value: SCORE_VALUE\n },\n {\n text: $localize`Choice Chosen`,\n value: CHOICE_CHOSEN_VALUE\n },\n {\n text: $localize`Random`,\n value: RANDOM_VALUE\n }\n]" + }, + { + "name": "branchPathBackgroundColors", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/assets/wise5/common/color/color.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "[]", + "defaultValue": "[\n '#66c2a5',\n '#fc8d62',\n '#8da0cb',\n '#e78ac3',\n '#a6d854',\n '#ffd92f',\n '#e5c494',\n '#b3b3b3'\n]", + "rawdescription": "The colors for the branch path steps. The colors are from\nhttp://colorbrewer2.org/export/colorbrewer.js, 'qualitative', 'Set2'.", + "description": "

    The colors for the branch path steps. The colors are from\nhttp://colorbrewer2.org/export/colorbrewer.js, 'qualitative', 'Set2'.

    \n" + }, + { + "name": "CHARS", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/assets/wise5/common/string/string.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "[]", + "defaultValue": "[\n 'a',\n 'b',\n 'c',\n 'd',\n 'e',\n 'f',\n 'g',\n 'h',\n 'i',\n 'j',\n 'k',\n 'l',\n 'm',\n 'n',\n 'o',\n 'p',\n 'q',\n 'r',\n 's',\n 't',\n 'u',\n 'v',\n 'w',\n 'x',\n 'y',\n 'z',\n '0',\n '1',\n '2',\n '3',\n '4',\n '5',\n '6',\n '7',\n '8',\n '9'\n]" + }, + { + "name": "CHOICE_CHOSEN_VALUE", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/app/domain/branchCriteria.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "defaultValue": "'choiceChosen'" + }, + { + "name": "components", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/assets/wise5/components/Components.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "object", + "defaultValue": "{\n AiChat: {\n authoring: AiChatAuthoringComponent,\n authoringAdvanced: EditAiChatAdvancedComponent,\n grading: AiChatGradingComponent,\n student: AiChatStudentComponent\n },\n Animation: {\n authoring: AnimationAuthoring,\n authoringAdvanced: EditAnimationAdvancedComponent,\n grading: AnimationShowWorkComponent,\n showWork: AnimationShowWorkComponent,\n student: AnimationStudent\n },\n AudioOscillator: {\n authoring: AudioOscillatorAuthoring,\n authoringAdvanced: EditAudioOscillatorAdvancedComponent,\n grading: AudioOscillatorShowWorkComponent,\n showWork: AudioOscillatorShowWorkComponent,\n student: AudioOscillatorStudent\n },\n ConceptMap: {\n authoring: ConceptMapAuthoring,\n authoringAdvanced: EditConceptMapAdvancedComponent,\n grading: ConceptMapShowWorkComponent,\n showWork: ConceptMapShowWorkComponent,\n student: ConceptMapStudent\n },\n DialogGuidance: {\n authoring: DialogGuidanceAuthoringComponent,\n authoringAdvanced: EditDialogGuidanceAdvancedComponent,\n grading: DialogGuidanceGradingComponent,\n showWork: DialogGuidanceShowWorkComponent,\n student: DialogGuidanceStudentComponent\n },\n Discussion: {\n authoring: DiscussionAuthoring,\n authoringAdvanced: EditDiscussionAdvancedComponent,\n grading: DiscussionGradingComponent,\n showWork: DiscussionStudent,\n student: DiscussionStudent\n },\n Draw: {\n authoring: DrawAuthoring,\n authoringAdvanced: EditDrawAdvancedComponent,\n grading: DrawShowWorkComponent,\n showWork: DrawShowWorkComponent,\n student: DrawStudent\n },\n Embedded: {\n authoring: EmbeddedAuthoring,\n authoringAdvanced: EditEmbeddedAdvancedComponent,\n grading: EmbeddedShowWorkComponent,\n showWork: EmbeddedShowWorkComponent,\n student: EmbeddedStudent\n },\n Graph: {\n authoring: GraphAuthoring,\n authoringAdvanced: EditGraphAdvancedComponent,\n grading: GraphShowWorkComponent,\n showWork: GraphShowWorkComponent,\n student: GraphStudent\n },\n HTML: {\n authoring: HtmlAuthoringComponent,\n authoringAdvanced: EditHTMLAdvancedComponent,\n student: HtmlStudentComponent\n },\n Label: {\n authoring: LabelAuthoring,\n authoringAdvanced: EditLabelAdvancedComponent,\n grading: LabelShowWorkComponent,\n showWork: LabelShowWorkComponent,\n student: LabelStudentComponent\n },\n Match: {\n authoring: MatchAuthoringComponent,\n authoringAdvanced: EditMatchAdvancedComponent,\n grading: MatchShowWorkComponent,\n showWork: MatchShowWorkComponent,\n student: MatchStudent\n },\n MultipleChoice: {\n authoring: MultipleChoiceAuthoring,\n authoringAdvanced: EditMultipleChoiceAdvancedComponent,\n grading: MultipleChoiceGradingComponent,\n showWork: MultipleChoiceShowWorkComponent,\n student: MultipleChoiceStudentComponent\n },\n OpenResponse: {\n authoring: OpenResponseAuthoringComponent,\n authoringAdvanced: EditOpenResponseAdvancedComponent,\n grading: OpenResponseShowWorkComponent,\n showWork: OpenResponseShowWorkComponent,\n student: OpenResponseStudent\n },\n OutsideURL: {\n authoring: OutsideUrlAuthoring,\n authoringAdvanced: EditOutsideUrlAdvancedComponent,\n student: OutsideUrlStudent\n },\n PeerChat: {\n authoring: PeerChatAuthoringComponent,\n authoringAdvanced: EditPeerChatAdvancedComponentComponent,\n grading: PeerChatGradingComponent,\n showWork: PeerChatStudentComponent,\n student: PeerChatStudentComponent\n },\n ShowGroupWork: {\n authoring: ShowGroupWorkAuthoringComponent,\n authoringAdvanced: EditShowGroupWorkAdvancedComponent,\n grading: ShowGroupWorkGradingComponent,\n showWork: ShowGroupWorkStudentComponent,\n student: ShowGroupWorkStudentComponent\n },\n ShowMyWork: {\n authoring: ShowMyWorkAuthoringComponent,\n authoringAdvanced: EditShowMyWorkAdvancedComponent,\n grading: ShowMyWorkGradingComponent,\n student: ShowMyWorkStudentComponent\n },\n Summary: {\n authoring: SummaryAuthoring,\n authoringAdvanced: EditSummaryAdvancedComponent,\n student: SummaryStudent\n },\n Table: {\n authoring: TableAuthoring,\n authoringAdvanced: EditTableAdvancedComponent,\n grading: TableShowWorkComponent,\n showWork: TableShowWorkComponent,\n student: TableStudentComponent\n }\n}" + }, + { + "name": "context", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/assets/wise5/teacher/src/test.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "defaultValue": "require.context('./', true, /\\.spec\\.ts$/)" + }, + { + "name": "context", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/assets/wise5/vle/src/test.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "defaultValue": "require.context('./', true, /\\.spec\\.ts$/)" + }, + { + "name": "csvArraySample", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/assets/wise5/common/array/arraySample.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "object", + "defaultValue": "{\n delimitedString: `Column 1,Column 2,\"Column 3\",\"Column4\"\nFirst,33.8,92.8,\"13,515\"\nSecond,10.7,,\"21,113\"\n3,22.4,72.3,\"26,641\"\n\"4\",,89.7,\"26,852\"`,\n convertedArray: [\n ['Column 1', 'Column 2', 'Column 3', 'Column4'],\n ['First', 33.8, 92.8, 13515],\n ['Second', 10.7, '', 21113],\n [3, 22.4, 72.3, 26641],\n [4, '', 89.7, 26852]\n ]\n}" + }, + { + "name": "DEFAULT_FEEDBACK_RULES", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/assets/wise5/components/common/feedbackRule/test-utils.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "[]", + "defaultValue": "[\n new FeedbackRule({\n id: 'finalSubmit',\n expression: 'isFinalSubmit',\n feedback: 'This is a generic response that is shown on a final submission'\n }),\n new FeedbackRule({\n id: 'secondToLastSubmit',\n expression: 'isSecondToLastSubmit',\n feedback: 'This is a generic response that is shown on the second to last submission'\n }),\n new FeedbackRule({\n id: 'thirdSubmit',\n expression: 'isSubmitNumber(3)',\n feedback: 'Is third submit'\n }),\n new FeedbackRule({\n id: 'isNonScorable',\n expression: 'isNonScorable',\n feedback: 'isNonScorable'\n }),\n new FeedbackRule({\n id: 'idea1 && idea2',\n expression: 'idea1 && idea2',\n feedback: 'You hit idea1 and idea2'\n }),\n new FeedbackRule({\n id: 'idea2 && idea3 && idea4',\n expression: 'idea2 && idea3 && idea4',\n feedback: 'You hit idea2, idea3 and idea4'\n }),\n new FeedbackRule({\n id: 'zlh8oip6hp',\n expression: 'idea5 || idea6',\n feedback: 'You hit idea5 or idea6'\n }),\n new FeedbackRule({\n id: 'idea7 || idea8 && idea9',\n expression: 'idea7 || idea8 && idea9',\n feedback: 'You hit idea7 or idea8 and idea9'\n }),\n new FeedbackRule({\n id: 'idea7 && idea8 || idea9',\n expression: 'idea7 && idea8 || idea9',\n feedback: 'You hit idea7 and idea8 or idea9'\n }),\n new FeedbackRule({\n id: 'idea1',\n expression: 'idea1',\n feedback: 'You hit idea1'\n }),\n new FeedbackRule({\n id: '!idea10',\n expression: '!idea10',\n feedback: '!idea10'\n }),\n new FeedbackRule({\n id: 'idea10 && !idea11',\n expression: 'idea10 && !idea11',\n feedback: 'idea10 && !idea11'\n }),\n new FeedbackRule({\n id: '!idea11 || idea12',\n expression: '!idea11 || idea12',\n feedback: '!idea11 || idea12'\n }),\n new FeedbackRule({\n id: 'default',\n expression: 'isDefault',\n feedback: 'This is a default feedback'\n })\n]" + }, + { + "name": "DIFFERENT_IDEAS_NAME", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/assets/wise5/authoringTool/peer-grouping/PeerGroupingLogic.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "defaultValue": "$localize`Different Ideas`" + }, + { + "name": "DIFFERENT_IDEAS_REGEX", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/assets/wise5/authoringTool/peer-grouping/PeerGroupingLogic.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "defaultValue": "/differentIdeas\\(\"(\\w+)\",\\s*\"(\\w+)\"?\"(,\\s*\")?(\\w+)?(\")?\\)/g" + }, + { + "name": "DIFFERENT_IDEAS_VALUE", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/assets/wise5/authoringTool/peer-grouping/PeerGroupingLogic.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "defaultValue": "'differentIdeas'" + }, + { + "name": "DIFFERENT_SCORES_NAME", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/assets/wise5/authoringTool/peer-grouping/PeerGroupingLogic.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "defaultValue": "$localize`Different Scores`" + }, + { + "name": "DIFFERENT_SCORES_REGEX", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/assets/wise5/authoringTool/peer-grouping/PeerGroupingLogic.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "defaultValue": "/differentKIScores\\(\"(\\w+)\",\\s*\"(\\w+)?\"(,\\s*\")?(\\w+)?(\")?\\)/g" + }, + { + "name": "DIFFERENT_SCORES_VALUE", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/assets/wise5/authoringTool/peer-grouping/PeerGroupingLogic.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "defaultValue": "'differentKIScores'" + }, + { + "name": "environment", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/environments/environment.prod.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "object", + "defaultValue": "{\n production: true\n}" + }, + { + "name": "environment", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/environments/environment.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "object", + "defaultValue": "{\n production: false\n}" + }, + { + "name": "environment", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/assets/wise5/teacher/src/environments/environment.prod.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "object", + "defaultValue": "{\n production: true\n}" + }, + { + "name": "environment", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/assets/wise5/teacher/src/environments/environment.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "object", + "defaultValue": "{\n production: false\n}" + }, + { + "name": "flash", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/app/animations.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "defaultValue": "trigger('flash', [\n state(\n 'void',\n style({\n opacity: 0\n })\n ),\n state(\n '*',\n style({\n opacity: 1\n })\n ),\n transition(\n 'void => *',\n [\n animate(\n '{{ duration }} {{ delay }}',\n keyframes([\n style({ opacity: 1 }),\n style({ opacity: 0 }),\n style({ opacity: 1 }),\n style({ opacity: 0 }),\n style({ opacity: 1 })\n ])\n )\n ],\n { params: { duration: '2s', delay: '0s' } }\n )\n])" + }, + { + "name": "flipInX", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/app/animations.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "defaultValue": "triggerFlipIn('X')" + }, + { + "name": "flipInY", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/app/animations.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "defaultValue": "triggerFlipIn('Y')" + }, + { + "name": "google", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/app/modules/google-sign-in/google-sign-in-button/google-sign-in-button.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "any" + }, + { + "name": "gtag", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/app/app.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "Function" + }, + { + "name": "HAS_KI_SCORE_FEEDBACK_RULES", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/assets/wise5/components/common/feedbackRule/test-utils.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "[]", + "defaultValue": "[\n new FeedbackRule({\n id: 'hasKIScore(1)',\n expression: 'hasKIScore(1)',\n feedback: 'hasKIScore(1)'\n }),\n new FeedbackRule({\n id: 'hasKIScore(3)',\n expression: 'hasKIScore(3)',\n feedback: 'hasKIScore(3)'\n }),\n new FeedbackRule({\n id: 'hasKIScore(5)',\n expression: 'hasKIScore(5)',\n feedback: 'hasKIScore(5)'\n }),\n new FeedbackRule({\n id: 'default',\n expression: 'isDefault',\n feedback: 'isDefault'\n })\n]" + }, + { + "name": "idea1", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/assets/wise5/components/common/feedbackRule/TermEvaluator/test-utils.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "defaultValue": "new CRaterIdea('1', true)" + }, + { + "name": "idea2", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/assets/wise5/components/common/feedbackRule/TermEvaluator/test-utils.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "defaultValue": "new CRaterIdea('2', true)" + }, + { + "name": "idea3", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/assets/wise5/components/common/feedbackRule/TermEvaluator/test-utils.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "defaultValue": "new CRaterIdea('3', true)" + }, + { + "name": "imageExtensionsRegEx", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/assets/wise5/common/file/file.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "defaultValue": "new RegExp('.*.(png|jpg|jpeg|bmp|gif|tiff|svg|webp)$')" + }, + { + "name": "jackInTheBox", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/app/animations.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "defaultValue": "trigger('jackInTheBox', [\n state(\n 'void',\n style({\n opacity: 0\n })\n ),\n state(\n '*',\n style({\n opacity: 1\n })\n ),\n transition(\n 'void => *',\n [\n animate(\n '{{ duration }} {{ delay }}',\n keyframes([\n style({\n opacity: 0,\n transform: 'scale(0.1) rotate(30deg)',\n transformOrigin: 'center bottom',\n offset: 0\n }),\n style({\n transform: 'rotate(-10deg)',\n opacity: 1,\n offset: 0.3\n }),\n style({\n transform: 'rotate(3deg)',\n offset: 0.6\n }),\n style({\n transform: 'scale(1)',\n offset: 0.8\n })\n ])\n )\n ],\n { params: { duration: '1s', delay: '0s' } }\n )\n])" + }, + { + "name": "KI_SCORE_0", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/assets/wise5/components/common/feedbackRule/test-utils.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "defaultValue": "new CRaterScore('ki', 0, 0, 1, 5)" + }, + { + "name": "KI_SCORE_1", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/assets/wise5/components/common/feedbackRule/test-utils.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "defaultValue": "new CRaterScore('ki', 1, 1, 1, 5)" + }, + { + "name": "KI_SCORE_3", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/assets/wise5/components/common/feedbackRule/test-utils.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "defaultValue": "new CRaterScore('ki', 3, 3, 1, 5)" + }, + { + "name": "KI_SCORE_5", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/assets/wise5/components/common/feedbackRule/test-utils.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "defaultValue": "new CRaterScore('ki', 5, 5, 1, 5)" + }, + { + "name": "KI_SCORE_6", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/assets/wise5/components/common/feedbackRule/test-utils.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "defaultValue": "new CRaterScore('ki', 6, 6, 1, 5)" + }, + { + "name": "localeToLanguage", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/app/domain/localeToLanguage.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "literal type", + "defaultValue": "{\n zh_CN: $localize`Chinese (Simplified)`,\n zh_TW: $localize`Chinese (Traditional)`,\n nl: $localize`Dutch`,\n en_US: $localize`English`,\n de: $localize`German`,\n it: $localize`Italian`,\n ja: $localize`Japanese`,\n ko: $localize`Korean`,\n es: $localize`Spanish`,\n vi: $localize`Vietnamese`\n}" + }, + { + "name": "locationTypeToLabel", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/app/modules/library/Location.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "defaultValue": "{\n level3: $localize`Locale`,\n level2: $localize`State`,\n level1: $localize`Country`\n}" + }, + { + "name": "materialModules", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/app/contact/contact.module.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "[]", + "defaultValue": "[\n MatAutocompleteModule,\n MatButtonModule,\n MatCardModule,\n MatCheckboxModule,\n MatDatepickerModule,\n MatDialogModule,\n MatDividerModule,\n MatIconModule,\n MatMenuModule,\n MatNativeDateModule,\n MatProgressBarModule,\n MatRadioModule,\n MatTabsModule,\n MatTableModule,\n MatTooltipModule\n]" + }, + { + "name": "materialModules", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/app/login/login.module.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "[]", + "defaultValue": "[\n MatButtonModule,\n MatCardModule,\n MatDividerModule,\n MatFormFieldModule,\n MatInputModule,\n MatProgressBarModule\n]" + }, + { + "name": "materialModules", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/app/register/register.module.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "[]", + "defaultValue": "[\n MatButtonModule,\n MatCardModule,\n MatCheckboxModule,\n MatDialogModule,\n MatFormFieldModule,\n MatInputModule,\n MatProgressBarModule,\n MatSelectModule\n]" + }, + { + "name": "materialModules", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/app/student/student.module.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "[]", + "defaultValue": "[\n MatButtonModule,\n MatCardModule,\n MatCheckboxModule,\n MatDialogModule,\n MatDividerModule,\n MatIconModule,\n MatProgressBarModule,\n MatTabsModule,\n MatTooltipModule\n]" + }, + { + "name": "materialModules", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/app/teacher/teacher.module.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "[]", + "defaultValue": "[\n MatAutocompleteModule,\n MatButtonModule,\n MatCardModule,\n MatCheckboxModule,\n MatDatepickerModule,\n MatDialogModule,\n MatDividerModule,\n MatIconModule,\n MatListModule,\n MatMenuModule,\n MatNativeDateModule,\n MatProgressBarModule,\n MatRadioModule,\n MatSlideToggleModule,\n MatSnackBarModule,\n MatTabsModule,\n MatTableModule,\n MatToolbarModule,\n MatTooltipModule\n]" + }, + { + "name": "materialModules", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/app/modules/library/library.module.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "[]", + "defaultValue": "[\n MatAutocompleteModule,\n MatBadgeModule,\n MatButtonModule,\n MatCardModule,\n MatCheckboxModule,\n MatChipsModule,\n MatDialogModule,\n MatDividerModule,\n MatExpansionModule,\n MatFormFieldModule,\n MatIconModule,\n MatMenuModule,\n MatOptionModule,\n MatPaginatorModule,\n MatProgressBarModule,\n MatSelectModule,\n MatTableModule,\n MatTabsModule,\n MatTooltipModule\n]" + }, + { + "name": "materialModules", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/app/modules/shared/shared.module.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "[]", + "defaultValue": "[\n MatButtonModule,\n MatCardModule,\n MatDialogModule,\n MatIconModule,\n MatInputModule,\n MatFormFieldModule,\n MatSelectModule,\n MatProgressBarModule\n]" + }, + { + "name": "nameTests", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/app/register/register-user-form/register-user-form-spec-helpers.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "[]", + "defaultValue": "[\n {\n name: 'smith',\n isValid: true,\n description: 'should be valid when it contains letters'\n },\n {\n name: 'smith star',\n isValid: true,\n description: 'should be valid when it contains letters and a space'\n },\n {\n name: 'smith star fish',\n isValid: true,\n description: 'should be valid when it contains letters and spaces'\n },\n {\n name: 'smith-star',\n isValid: true,\n description: 'should be valid when it contains letters and a dash'\n },\n {\n name: 'smith-star-fish',\n isValid: true,\n description: 'should be valid when it contains letters and dashes'\n },\n {\n name: 'sam-smith star',\n isValid: true,\n description: 'should be valid when it contains letters and a dash and space'\n },\n {\n name: 'smith@',\n isValid: false,\n description: 'should not be valid when it contains letters and a symbol'\n },\n {\n name: ' smith',\n isValid: false,\n description: 'should not be valid when it contains letters and starts with a space'\n },\n {\n name: '-smith',\n isValid: false,\n description: 'should not be valid when it contains letters and starts with a dash'\n },\n {\n name: 'smith ',\n isValid: false,\n description: 'should not be valid when it contains letters and ends with a space'\n },\n {\n name: 'smith-',\n isValid: false,\n description: 'should not be valid when it contains letters and ends with a dash'\n },\n {\n name: '-smith-',\n isValid: false,\n description: 'should not be valid when it contains letters and starts and ends with a dash'\n },\n {\n name: ' smith ',\n isValid: false,\n description: 'should not be valid when it contains letters and starts and ends with a space'\n }\n]" + }, + { + "name": "newProjectTemplate", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/assets/wise5/authoringTool/new-project-template.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "object", + "defaultValue": "{\n nodes: [\n {\n id: 'group0',\n type: 'group',\n title: 'Master',\n startId: 'group1',\n ids: ['group1']\n },\n {\n id: 'group1',\n type: 'group',\n title: $localize`First Lesson`,\n startId: 'node1',\n ids: ['node1'],\n icons: {\n default: {\n color: '#2196F3',\n type: 'font',\n fontSet: 'material-icons',\n fontName: 'info'\n }\n },\n transitionLogic: {\n transitions: []\n }\n },\n {\n id: 'node1',\n type: 'node',\n title: $localize`First Step`,\n components: [],\n constraints: [],\n showSaveButton: false,\n showSubmitButton: false,\n transitionLogic: {\n transitions: []\n }\n }\n ],\n constraints: [],\n startGroupId: 'group0',\n startNodeId: 'node1',\n navigationMode: 'guided',\n layout: {\n template: 'starmap|leftNav|rightNav'\n },\n metadata: {\n title: '',\n features: [],\n resources: [],\n unitType: 'Platform'\n },\n notebook: {\n enabled: false,\n label: $localize`Notebook`,\n enableAddNew: true,\n itemTypes: {\n note: {\n type: 'note',\n enabled: true,\n enableLink: true,\n enableAddNote: true,\n enableClipping: true,\n enableStudentUploads: true,\n requireTextOnEveryNote: false,\n label: {\n singular: $localize`note`,\n plural: $localize`notes`,\n link: $localize`Notes`,\n icon: 'note',\n color: '#1565C0'\n }\n },\n report: {\n enabled: false,\n label: {\n singular: $localize`report`,\n plural: $localize`reports`,\n link: $localize`Report`,\n icon: 'assignment',\n color: '#AD1457'\n },\n notes: [\n {\n reportId: 'finalReport',\n title: $localize`Final Report`,\n description: $localize`Final summary report of what you learned in this unit`,\n prompt: $localize`Use this space to write your final report using evidence from your notebook.`,\n content: $localize`

    This is a heading

    This is a paragraph.

    `\n }\n ]\n }\n }\n },\n teacherNotebook: {\n enabled: true,\n label: $localize`Teacher Notebook`,\n enableAddNew: true,\n itemTypes: {\n note: {\n type: 'note',\n enabled: false,\n enableLink: true,\n enableAddNote: true,\n enableClipping: true,\n enableStudentUploads: true,\n requireTextOnEveryNote: false,\n label: {\n singular: $localize`note`,\n plural: $localize`notes`,\n link: $localize`Notes`,\n icon: 'note',\n color: '#1565C0'\n }\n },\n report: {\n enabled: true,\n label: {\n singular: $localize`teacher notes`,\n plural: $localize`teacher notes`,\n link: $localize`Teacher Notes`,\n icon: 'assignment',\n color: '#AD1457'\n },\n notes: [\n {\n reportId: 'teacherReport',\n title: $localize`Teacher Notes`,\n description: $localize`Notes for the teacher as they're running the WISE unit`,\n prompt: $localize`Use this space to take notes for this unit`,\n content: $localize`

    Use this space to take notes for this unit

    `\n }\n ]\n }\n }\n },\n inactiveNodes: []\n}" + }, + { + "name": "project1", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/app/modules/library/sampleLibraryProjects.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "defaultValue": "new LibraryProject()" + }, + { + "name": "project2", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/app/modules/library/sampleLibraryProjects.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "defaultValue": "new LibraryProject()" + }, + { + "name": "projects", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/app/modules/library/sampleLibraryProjects.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "LibraryProject[]", + "defaultValue": "[]" + }, + { + "name": "RANDOM_VALUE", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/app/domain/branchCriteria.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "defaultValue": "'random'" + }, + { + "name": "RecoveryAuthoringProjectResolver", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/app/teacher/recovery-authoring-project.resolver.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "ResolveFn", + "defaultValue": "(\n route: ActivatedRouteSnapshot,\n state: RouterStateSnapshot,\n configService: ConfigService = inject(ConfigService),\n projectService: ProjectService = inject(ProjectService)\n): Observable => {\n return configService\n .retrieveConfig(`/api/author/config/${route.params['unitId']}`)\n .pipe(switchMap(() => projectService.retrieveProjectWithoutParsing()));\n}" + }, + { + "name": "require", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/assets/wise5/teacher/src/test.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "any" + }, + { + "name": "require", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/assets/wise5/vle/src/test.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "any" + }, + { + "name": "response_with_idea_1", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/assets/wise5/components/common/feedbackRule/TermEvaluator/test-utils.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "defaultValue": "new CRaterResponse({ ideas: [idea1] })" + }, + { + "name": "response_with_idea_2", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/assets/wise5/components/common/feedbackRule/TermEvaluator/test-utils.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "defaultValue": "new CRaterResponse({ ideas: [idea2] })" + }, + { + "name": "response_with_ideas_1_2", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/assets/wise5/components/common/feedbackRule/TermEvaluator/test-utils.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "defaultValue": "new CRaterResponse({ ideas: [idea1, idea2] })" + }, + { + "name": "response_with_ideas_1_2_3", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/assets/wise5/components/common/feedbackRule/TermEvaluator/test-utils.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "defaultValue": "new CRaterResponse({ ideas: [idea1, idea2, idea3] })" + }, + { + "name": "rotateIn", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/app/animations.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "defaultValue": "trigger('rotateIn', [\n state(\n 'void',\n style({\n opacity: 0\n })\n ),\n state(\n '*',\n style({\n opacity: 1\n })\n ),\n transition(\n 'void => *',\n [\n animate(\n '{{ duration }} {{ delay }}',\n keyframes([\n style({\n transformOrigin: 'center',\n transform: 'rotate3d(0, 0, 1, -200deg)',\n opacity: 0,\n offset: 0\n }),\n style({\n transformOrigin: 'center',\n transform: 'rotate3d(0, 0, 0, 0)',\n opacity: 1,\n offset: 0.5\n })\n ])\n )\n ],\n { params: { duration: '1s', delay: '0s' } }\n )\n])" + }, + { + "name": "schoolLevels", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/app/domain/profile.constants.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "SchoolLevel[]", + "defaultValue": "[\n { code: 'ELEMENTARY_SCHOOL', label: $localize`Elementary School` },\n { code: 'MIDDLE_SCHOOL', label: $localize`Middle School` },\n { code: 'HIGH_SCHOOL', label: $localize`High School` },\n { code: 'COLLEGE', label: $localize`College` },\n { code: 'OTHER', label: $localize`Other` }\n]" + }, + { + "name": "SCORE_VALUE", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/app/domain/branchCriteria.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "defaultValue": "'score'" + }, + { + "name": "StudentDataResolver", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/app/teacher/student-data.resolver.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "ResolveFn", + "defaultValue": "(\n route: ActivatedRouteSnapshot,\n state: RouterStateSnapshot,\n dataService: TeacherDataService = inject(TeacherDataService)\n): Observable => dataService.retrieveStudentDataByWorkgroupId(route.params['workgroupId'])" + }, + { + "name": "TeacherToolsResolver", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/app/teacher/teacher-tools.resolver.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "ResolveFn", + "defaultValue": "(\n route: ActivatedRouteSnapshot,\n state: RouterStateSnapshot,\n achievementService: AchievementService = inject(AchievementService),\n classroomStatusService: ClassroomStatusService = inject(ClassroomStatusService),\n configService: ConfigService = inject(ConfigService),\n dataService: TeacherDataService = inject(TeacherDataService),\n notebookService: NotebookService = inject(NotebookService),\n notificationService: NotificationService = inject(NotificationService),\n projectService: ProjectService = inject(ProjectService),\n runStatusService: RunStatusService = inject(RunStatusService),\n websocketService: TeacherWebSocketService = inject(TeacherWebSocketService)\n): Observable =>\n configService\n .retrieveConfig(`/api/config/classroomMonitor/${route.params['unitId']}`)\n .pipe(switchMap(() => projectService.retrieveProject()))\n .pipe(switchMap(() => classroomStatusService.retrieveStudentStatuses()))\n .pipe(switchMap(() => achievementService.retrieveStudentAchievements()))\n .pipe(switchMap(() => runStatusService.retrieveRunStatus()))\n .pipe(switchMap(() => notificationService.retrieveNotifications()))\n .pipe(switchMap(() => dataService.retrieveAnnotations()))\n .pipe(switchMap(() => notebookService.retrieveNotebookItems()))\n .pipe(tap(() => websocketService.initialize()))" + }, + { + "name": "tinymce", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/assets/wise5/directives/wise-tinymce-editor/wise-authoring-tinymce-editor.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "any" + }, + { + "name": "tinymce", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/assets/wise5/directives/wise-tinymce-editor/wise-tinymce-editor.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "any" + }, + { + "name": "videoExtensionsRegEx", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/assets/wise5/common/file/file.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "defaultValue": "new RegExp('.*.(mp4|mpg|mpeg|m4v|m2v|avi|gifv|mov|qt|webm)$')" + }, + { + "name": "WORKGROUP_ID_VALUE", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/app/domain/branchCriteria.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "defaultValue": "'workgroupId'" + }, + { + "name": "zoomIn", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/app/animations.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "defaultValue": "trigger('zoomIn', [\n state(\n 'void',\n style({\n opacity: 0\n })\n ),\n state(\n '*',\n style({\n opacity: 1\n })\n ),\n transition(\n 'void => *',\n [\n animate(\n '{{ duration }} {{ delay }}',\n keyframes([\n style({\n transform: 'scale3d(0.3, 0.3, 0.3)',\n opacity: 0,\n offset: 0\n }),\n style({\n transform: 'scale3d(1, 1, 1)',\n opacity: 1,\n offset: 0.5\n })\n ])\n )\n ],\n { params: { duration: '1s', delay: '0s' } }\n )\n])" + } + ], + "functions": [ + { + "name": "addPointFromTableIntoData", + "file": "src/assets/wise5/components/graph/util.ts", + "ctype": "miscellaneous", + "subtype": "function", + "deprecated": false, + "deprecationMessage": "", + "description": "", + "args": [ + { + "name": "xCell", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "yCell", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "data", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "tooltipHeader", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "returnType": "void", + "jsdoctags": [ + { + "name": "xCell", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "yCell", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "data", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "tooltipHeader", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "applyMixins", + "file": "src/assets/wise5/common/apply-mixins.ts", + "ctype": "miscellaneous", + "subtype": "function", + "deprecated": false, + "deprecationMessage": "", + "description": "", + "args": [ + { + "name": "derivedCtor", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "constructors", + "deprecated": false, + "deprecationMessage": "" + } + ], + "jsdoctags": [ + { + "name": "derivedCtor", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "constructors", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "arraysContainSameValues", + "file": "src/assets/wise5/common/array/array.ts", + "ctype": "miscellaneous", + "subtype": "function", + "deprecated": false, + "deprecationMessage": "", + "description": "

    Check if two arrays contain the same values. This is used to check if two arrays of ids contain\nthe same values. The order of the elements is not compared, only the actual values. This means\nthe elements can be in different orders but still contain the same values.\nExample:\narray1=['1234567890', 'abcdefghij']\narray2=['abcdefghij', '1234567890']\nIf these two arrays are passed in as the two arguments, this function will return true.

    \n", + "args": [ + { + "name": "array1", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "array2", + "deprecated": false, + "deprecationMessage": "" + } + ], + "returnType": "boolean", + "jsdoctags": [ + { + "name": { + "pos": 2659, + "end": 2665, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "array1" + }, + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2653, + "end": 2658, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    an array of strings

    \n" + }, + { + "name": { + "pos": 2696, + "end": 2702, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "array2" + }, + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2690, + "end": 2695, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    an array of strings

    \n" + }, + { + "tagName": { + "pos": 2727, + "end": 2733, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

    whether the arrays contain the same values

    \n" + } + ] + }, + { + "name": "bothObjectsAreNull", + "file": "src/assets/wise5/components/label/label.ts", + "ctype": "miscellaneous", + "subtype": "function", + "deprecated": false, + "deprecationMessage": "", + "description": "", + "args": [ + { + "name": "obj1", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "obj2", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "returnType": "boolean", + "jsdoctags": [ + { + "name": "obj1", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "obj2", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "calculateComponentVisibility", + "file": "src/assets/wise5/classroomMonitor/classroomMonitorComponents/shared/grading-helpers/grading-helpers.ts", + "ctype": "miscellaneous", + "subtype": "function", + "deprecated": false, + "deprecationMessage": "", + "description": "", + "args": [ + { + "name": "componentIdToHasWork", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentStatuses", + "deprecated": false, + "deprecationMessage": "" + } + ], + "returnType": "literal type", + "jsdoctags": [ + { + "name": "componentIdToHasWork", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentStatuses", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "calculateMean", + "file": "src/assets/wise5/components/graph/util.ts", + "ctype": "miscellaneous", + "subtype": "function", + "deprecated": false, + "deprecationMessage": "", + "description": "", + "args": [ + { + "name": "values", + "deprecated": false, + "deprecationMessage": "" + } + ], + "returnType": "number", + "jsdoctags": [ + { + "name": "values", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "changePasswordError", + "file": "src/app/common/password-helper.ts", + "ctype": "miscellaneous", + "subtype": "function", + "deprecated": false, + "deprecationMessage": "", + "description": "", + "args": [ + { + "name": "error", + "type": "PasswordErrors", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "incorrectPasswordFormGroup", + "type": "FormGroup", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "invalidPasswordFormGroup", + "type": "FormGroup", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "previousPasswordFieldName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "returnType": "void", + "jsdoctags": [ + { + "name": "error", + "type": "PasswordErrors", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "incorrectPasswordFormGroup", + "type": "FormGroup", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "invalidPasswordFormGroup", + "type": "FormGroup", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "previousPasswordFieldName", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "clickMenuButton", + "file": "src/app/common/harness-helper.ts", + "ctype": "miscellaneous", + "subtype": "function", + "deprecated": false, + "deprecationMessage": "", + "description": "", + "args": [ + { + "name": "thisContext", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "menuButtonText", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "returnType": "Promise", + "jsdoctags": [ + { + "name": "thisContext", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "menuButtonText", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "convertToPNGFile", + "file": "src/assets/wise5/common/canvas/canvas.ts", + "ctype": "miscellaneous", + "subtype": "function", + "deprecated": false, + "deprecationMessage": "", + "description": "", + "args": [ + { + "name": "canvas", + "type": "HTMLCanvasElement", + "deprecated": false, + "deprecationMessage": "" + } + ], + "returnType": "File", + "jsdoctags": [ + { + "name": "canvas", + "type": "HTMLCanvasElement", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "copy", + "file": "src/assets/wise5/common/object/object.ts", + "ctype": "miscellaneous", + "subtype": "function", + "deprecated": false, + "deprecationMessage": "", + "description": "", + "args": [ + { + "name": "obj", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "returnType": "any", + "jsdoctags": [ + { + "name": "obj", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "cRaterIdeaToIdeaData", + "file": "src/assets/wise5/components/common/cRater/IdeaData.ts", + "ctype": "miscellaneous", + "subtype": "function", + "deprecated": false, + "deprecationMessage": "", + "description": "", + "args": [ + { + "name": "cRaterIdea", + "type": "CRaterIdea", + "deprecated": false, + "deprecationMessage": "" + } + ], + "returnType": "IdeaData", + "jsdoctags": [ + { + "name": "cRaterIdea", + "type": "CRaterIdea", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createAccountErrorResponse", + "file": "src/app/register/register-user-form/register-user-form-spec-helpers.ts", + "ctype": "miscellaneous", + "subtype": "function", + "deprecated": false, + "deprecationMessage": "", + "description": "", + "args": [ + { + "name": "messageCode", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "jsdoctags": [ + { + "name": "messageCode", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createAccountSuccessResponse", + "file": "src/app/register/register-user-form/register-user-form-spec-helpers.ts", + "ctype": "miscellaneous", + "subtype": "function", + "deprecated": false, + "deprecationMessage": "", + "description": "", + "args": [ + { + "name": "username", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "jsdoctags": [ + { + "name": "username", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createChoiceFromNotebookItem", + "file": "src/assets/wise5/components/match/choice.ts", + "ctype": "miscellaneous", + "subtype": "function", + "deprecated": false, + "deprecationMessage": "", + "description": "", + "args": [ + { + "name": "notebookItem", + "type": "NotebookItem", + "deprecated": false, + "deprecationMessage": "" + } + ], + "returnType": "Choice", + "jsdoctags": [ + { + "name": "notebookItem", + "type": "NotebookItem", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createCRaterResponse", + "file": "src/assets/wise5/components/common/feedbackRule/test-utils.ts", + "ctype": "miscellaneous", + "subtype": "function", + "deprecated": false, + "deprecationMessage": "", + "description": "", + "args": [ + { + "name": "ideas", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "scores", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "submitCounter", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "returnType": "CRaterResponse", + "jsdoctags": [ + { + "name": "ideas", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "scores", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "submitCounter", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createDataPointFromTable", + "file": "src/assets/wise5/components/graph/util.ts", + "ctype": "miscellaneous", + "subtype": "function", + "deprecated": false, + "deprecationMessage": "", + "description": "", + "args": [ + { + "name": "xText", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "yText", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "tooltipHeader", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "returnType": "any", + "jsdoctags": [ + { + "name": "xText", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "yText", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "tooltipHeader", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createPointArray", + "file": "src/assets/wise5/components/graph/util.ts", + "ctype": "miscellaneous", + "subtype": "function", + "deprecated": false, + "deprecationMessage": "", + "description": "", + "args": [ + { + "name": "xNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "xText", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "yNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "returnType": "any[]", + "jsdoctags": [ + { + "name": "xNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "xText", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "yNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createPointObject", + "file": "src/assets/wise5/components/graph/util.ts", + "ctype": "miscellaneous", + "subtype": "function", + "deprecated": false, + "deprecationMessage": "", + "description": "", + "args": [ + { + "name": "xNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "yNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "tooltipHeader", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "returnType": "any", + "jsdoctags": [ + { + "name": "xNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "yNumber", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "tooltipHeader", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createSatisfyCriteria", + "file": "src/app/services/milestone/milestone-test-functions.ts", + "ctype": "miscellaneous", + "subtype": "function", + "deprecated": false, + "deprecationMessage": "", + "description": "", + "args": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "targetVariable", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + }, + { + "name": "func", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + }, + { + "name": "value", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + }, + { + "name": "percentThreshold", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null" + } + ], + "jsdoctags": [ + { + "name": "nodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "componentId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "targetVariable", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + }, + { + "name": "func", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + }, + { + "name": "value", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + }, + { + "name": "percentThreshold", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "null", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createScoreCounts", + "file": "src/app/services/milestone/milestone-test-functions.ts", + "ctype": "miscellaneous", + "subtype": "function", + "deprecated": false, + "deprecationMessage": "", + "description": "", + "args": [ + { + "name": "counts", + "deprecated": false, + "deprecationMessage": "" + } + ], + "jsdoctags": [ + { + "name": "counts", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "createStudentStatus", + "file": "src/assets/wise5/common/StudentStatus.ts", + "ctype": "miscellaneous", + "subtype": "function", + "deprecated": false, + "deprecationMessage": "", + "description": "", + "args": [ + { + "name": "computerAvatarId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "currentNodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "nodeStatuses", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "projectCompletion", + "type": "NodeProgress", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "runId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "jsdoctags": [ + { + "name": "computerAvatarId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "currentNodeId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "nodeStatuses", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "periodId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "projectCompletion", + "type": "NodeProgress", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "runId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "CSVToArray", + "file": "src/assets/wise5/common/array/array.ts", + "ctype": "miscellaneous", + "subtype": "function", + "deprecated": false, + "deprecationMessage": "", + "description": "

    Parse a delimited string into an array of arrays.\nSource: http://www.bennadel.com/blog/1504-ask-ben-parsing-csv-strings-with-javascript-exec-regular-expression-command.htm

    \n", + "args": [ + { + "name": "strData", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "strDelimiter", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "','" + } + ], + "returnType": "[][]", + "jsdoctags": [ + { + "name": "strData", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "strDelimiter", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "','", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "dataURItoBlob", + "file": "src/assets/wise5/common/canvas/canvas.ts", + "ctype": "miscellaneous", + "subtype": "function", + "deprecated": false, + "deprecationMessage": "", + "description": "

    Convert base64/URLEncoded data component to raw binary data held in a string

    \n", + "args": [ + { + "name": "dataURI", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "returnType": "Blob", + "jsdoctags": [ + { + "name": { + "pos": 499, + "end": 506, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "dataURI" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 493, + "end": 498, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    base64/URLEncoded data

    \n" + }, + { + "tagName": { + "pos": 534, + "end": 541, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "returns" + }, + "comment": "

    a Blob object

    \n" + } + ] + }, + { + "name": "dropToDifferentContainer", + "file": "src/assets/wise5/components/match/match-student/move-item.ts", + "ctype": "miscellaneous", + "subtype": "function", + "deprecated": false, + "deprecationMessage": "", + "description": "", + "args": [ + { + "name": "event", + "type": "MatchCdkDragDrop", + "deprecated": false, + "deprecationMessage": "" + } + ], + "returnType": "void", + "jsdoctags": [ + { + "name": "event", + "type": "MatchCdkDragDrop", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "expectConstraint", + "file": "src/app/services/branchServiceTestHelperFunctions.ts", + "ctype": "miscellaneous", + "subtype": "function", + "deprecated": false, + "deprecationMessage": "", + "description": "", + "args": [ + { + "name": "constraint", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "expectedAction", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "expectedTargetId", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "expectedRemovalCriteria", + "deprecated": false, + "deprecationMessage": "" + } + ], + "jsdoctags": [ + { + "name": "constraint", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "expectedAction", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "expectedTargetId", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "expectedRemovalCriteria", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "expectTransitionLogic", + "file": "src/app/services/branchServiceTestHelperFunctions.ts", + "ctype": "miscellaneous", + "subtype": "function", + "deprecated": false, + "deprecationMessage": "", + "description": "", + "args": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "transitionLogic", + "type": "TransitionLogic", + "deprecated": false, + "deprecationMessage": "" + } + ], + "jsdoctags": [ + { + "name": "node", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "transitionLogic", + "type": "TransitionLogic", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "extend", + "file": "src/assets/wise5/common/object/object.ts", + "ctype": "miscellaneous", + "subtype": "function", + "deprecated": false, + "deprecationMessage": "", + "description": "", + "args": [ + { + "name": "args", + "deprecated": false, + "deprecationMessage": "", + "dotDotDotToken": true + } + ], + "returnType": "any", + "jsdoctags": [ + { + "name": "args", + "deprecated": false, + "deprecationMessage": "", + "dotDotDotToken": true, + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "fromContainerIsSourceBucket", + "file": "src/assets/wise5/components/match/match-student/move-item.ts", + "ctype": "miscellaneous", + "subtype": "function", + "deprecated": false, + "deprecationMessage": "", + "description": "", + "args": [ + { + "name": "event", + "type": "MatchCdkDragDrop", + "deprecated": false, + "deprecationMessage": "" + } + ], + "returnType": "boolean", + "jsdoctags": [ + { + "name": "event", + "type": "MatchCdkDragDrop", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "fromContainerRemoveItem", + "file": "src/assets/wise5/components/match/match-student/move-item.ts", + "ctype": "miscellaneous", + "subtype": "function", + "deprecated": false, + "deprecationMessage": "", + "description": "", + "args": [ + { + "name": "event", + "type": "MatchCdkDragDrop", + "deprecated": false, + "deprecationMessage": "" + } + ], + "returnType": "void", + "jsdoctags": [ + { + "name": "event", + "type": "MatchCdkDragDrop", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "generateCSVFile", + "file": "src/assets/wise5/common/csv/csv.ts", + "ctype": "miscellaneous", + "subtype": "function", + "deprecated": false, + "deprecationMessage": "", + "description": "

    Generate the csv file and have the client download it

    \n", + "args": [ + { + "name": "rows", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "fileName", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "returnType": "void", + "jsdoctags": [ + { + "name": { + "pos": 113, + "end": 117, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "rows" + }, + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 107, + "end": 112, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    a 2D array that represents the rows in the export\neach row contains an array. the inner array contains strings or\nnumbers which represent the cell values in the export.

    \n" + }, + { + "name": { + "pos": 303, + "end": 311, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "fileName" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 297, + "end": 302, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    the name of the file that will be generated

    \n" + } + ] + }, + { + "name": "generateRandomKey", + "file": "src/assets/wise5/common/string/string.ts", + "ctype": "miscellaneous", + "subtype": "function", + "deprecated": false, + "deprecationMessage": "", + "description": "", + "args": [ + { + "name": "length", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "10" + } + ], + "returnType": "string", + "jsdoctags": [ + { + "name": "length", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "10", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getAvatarColorForWorkgroupId", + "file": "src/assets/wise5/common/workgroup/workgroup.ts", + "ctype": "miscellaneous", + "subtype": "function", + "deprecated": false, + "deprecationMessage": "", + "description": "", + "args": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "returnType": "string", + "jsdoctags": [ + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getDialogOpenSpy", + "file": "src/assets/wise5/authoringTool/peer-grouping/peer-grouping-testing-helper.ts", + "ctype": "miscellaneous", + "subtype": "function", + "deprecated": false, + "deprecationMessage": "", + "description": "", + "args": [ + { + "name": "returnValue", + "type": "any", + "deprecated": false, + "deprecationMessage": "" + } + ], + "jsdoctags": [ + { + "name": "returnValue", + "type": "any", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getErrorMessage", + "file": "src/app/common/test-helper.ts", + "ctype": "miscellaneous", + "subtype": "function", + "deprecated": false, + "deprecationMessage": "", + "description": "", + "args": [ + { + "name": "fixture", + "type": "ComponentFixture", + "deprecated": false, + "deprecationMessage": "" + } + ], + "returnType": "string", + "jsdoctags": [ + { + "name": "fixture", + "type": "ComponentFixture", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getIntersectOfArrays", + "file": "src/assets/wise5/common/array/array.ts", + "ctype": "miscellaneous", + "subtype": "function", + "deprecated": false, + "deprecationMessage": "", + "description": "", + "args": [ + { + "name": "array1", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "array2", + "deprecated": false, + "deprecationMessage": "" + } + ], + "returnType": "any[]", + "jsdoctags": [ + { + "name": "array1", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "array2", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getQuestionIdsUsed", + "file": "src/assets/wise5/components/peerChat/peer-chat-question-bank/question-bank-helper.ts", + "ctype": "miscellaneous", + "subtype": "function", + "deprecated": false, + "deprecationMessage": "", + "description": "", + "args": [ + { + "name": "componentStates", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "" + } + ], + "returnType": "string[]", + "jsdoctags": [ + { + "name": "componentStates", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "workgroupId", + "type": "number", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getUniqueIdeas", + "file": "src/assets/wise5/components/common/cRater/CRaterRubric.ts", + "ctype": "miscellaneous", + "subtype": "function", + "deprecated": false, + "deprecationMessage": "", + "description": "", + "args": [ + { + "name": "responses", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "rubric", + "type": "CRaterRubric", + "deprecated": false, + "deprecationMessage": "" + } + ], + "returnType": "CRaterIdea[]", + "jsdoctags": [ + { + "name": "responses", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "rubric", + "type": "CRaterRubric", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "getWiseLinkComponentId", + "file": "src/assets/wise5/common/wise-link/wise-link.ts", + "ctype": "miscellaneous", + "subtype": "function", + "deprecated": false, + "deprecationMessage": "", + "description": "

    Get the component id from the wiselink element\ne.g. for input returns 'xyzabc'

    \n", + "args": [ + { + "name": "html", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "''" + } + ], + "returnType": "string", + "jsdoctags": [ + { + "name": { + "pos": 2548, + "end": 2552, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "html" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "''", + "tagName": { + "pos": 2542, + "end": 2547, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    the html for the element

    \n" + }, + { + "tagName": { + "pos": 2582, + "end": 2588, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

    the component id from the component id parameter in the element

    \n" + } + ] + }, + { + "name": "getWiseLinkId", + "file": "src/assets/wise5/common/wise-link/wise-link.ts", + "ctype": "miscellaneous", + "subtype": "function", + "deprecated": false, + "deprecationMessage": "", + "description": "

    Get an id from the wiselink element

    \n", + "args": [ + { + "name": "html", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "regex", + "type": "RegExp", + "deprecated": false, + "deprecationMessage": "" + } + ], + "returnType": "string", + "jsdoctags": [ + { + "name": { + "pos": 2843, + "end": 2847, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "html" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2837, + "end": 2842, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    the html for the element

    \n" + }, + { + "name": { + "pos": 2883, + "end": 2888, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "regex" + }, + "type": "RegExp", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 2877, + "end": 2882, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    the regex to extract the id

    \n" + }, + { + "tagName": { + "pos": 2921, + "end": 2927, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

    the id extracted from the regex

    \n" + } + ] + }, + { + "name": "getWiseLinkLinkText", + "file": "src/assets/wise5/common/wise-link/wise-link.ts", + "ctype": "miscellaneous", + "subtype": "function", + "deprecated": false, + "deprecationMessage": "", + "description": "

    Get the link text from the wiselink element\ne.g. for input return 'Go to here'

    \n", + "args": [ + { + "name": "html", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "''" + } + ], + "returnType": "string", + "jsdoctags": [ + { + "name": { + "pos": 5285, + "end": 5289, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "html" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "''", + "tagName": { + "pos": 5279, + "end": 5284, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    the html for the element

    \n" + }, + { + "tagName": { + "pos": 5319, + "end": 5325, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

    the link text from the link text parameter in the element

    \n" + } + ] + }, + { + "name": "getWiseLinkNodeId", + "file": "src/assets/wise5/common/wise-link/wise-link.ts", + "ctype": "miscellaneous", + "subtype": "function", + "deprecated": false, + "deprecationMessage": "", + "description": "

    Get the node id from the wiselink element\ne.g. for input , returns 'node5'

    \n", + "args": [ + { + "name": "html", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "''" + } + ], + "returnType": "string", + "jsdoctags": [ + { + "name": { + "pos": 2176, + "end": 2180, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "html" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "''", + "tagName": { + "pos": 2170, + "end": 2175, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    the html for the element

    \n" + }, + { + "tagName": { + "pos": 2210, + "end": 2216, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

    the node id from the node id parameter in the element

    \n" + } + ] + }, + { + "name": "getWiseLinkType", + "file": "src/assets/wise5/common/wise-link/wise-link.ts", + "ctype": "miscellaneous", + "subtype": "function", + "deprecated": false, + "deprecationMessage": "", + "description": "

    Get the link type from the wiselink element\ne.g. for input return 'button'

    \n", + "args": [ + { + "name": "html", + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "''" + } + ], + "returnType": "string", + "jsdoctags": [ + { + "name": { + "pos": 4817, + "end": 4821, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "html" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "defaultValue": "''", + "tagName": { + "pos": 4811, + "end": 4816, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    the html for the element

    \n" + }, + { + "tagName": { + "pos": 4851, + "end": 4857, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

    the link type from the type parameter in the element

    \n" + } + ] + }, + { + "name": "hasConnectedComponent", + "file": "src/assets/wise5/common/ComponentContent.ts", + "ctype": "miscellaneous", + "subtype": "function", + "deprecated": false, + "deprecationMessage": "", + "description": "", + "args": [ + { + "name": "content", + "type": "ComponentContent", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "connectedComponentType", + "deprecated": false, + "deprecationMessage": "" + } + ], + "returnType": "boolean", + "jsdoctags": [ + { + "name": "content", + "type": "ComponentContent", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "connectedComponentType", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "ideaDataToCRaterIdea", + "file": "src/assets/wise5/components/common/cRater/IdeaData.ts", + "ctype": "miscellaneous", + "subtype": "function", + "deprecated": false, + "deprecationMessage": "", + "description": "", + "args": [ + { + "name": "ideaData", + "type": "IdeaData", + "deprecated": false, + "deprecationMessage": "" + } + ], + "returnType": "CRaterIdea", + "jsdoctags": [ + { + "name": "ideaData", + "type": "IdeaData", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "initialize", + "file": "src/app/app.module.ts", + "ctype": "miscellaneous", + "subtype": "function", + "deprecated": false, + "deprecationMessage": "", + "description": "", + "args": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "userService", + "type": "UserService", + "deprecated": false, + "deprecationMessage": "" + } + ], + "returnType": "Promise", + "jsdoctags": [ + { + "name": "configService", + "type": "ConfigService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "userService", + "type": "UserService", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "injectPasswordErrors", + "file": "src/app/common/password-helper.ts", + "ctype": "miscellaneous", + "subtype": "function", + "deprecated": false, + "deprecationMessage": "", + "description": "", + "args": [ + { + "name": "formGroup", + "type": "FormGroup", + "deprecated": false, + "deprecationMessage": "" + }, + { + "name": "passwordErrors", + "type": "PasswordErrors", + "deprecated": false, + "deprecationMessage": "" + } + ], + "returnType": "void", + "jsdoctags": [ + { + "name": "formGroup", + "type": "FormGroup", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + }, + { + "name": "passwordErrors", + "type": "PasswordErrors", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "text": "param" + } + } + ] + }, + { + "name": "insertWiseLinkAnchors", + "file": "src/assets/wise5/common/wise-link/wise-link.ts", + "ctype": "miscellaneous", + "subtype": "function", + "deprecated": false, + "deprecationMessage": "", + "description": "

    Replace elements that have the parameter wiselink=true with elements

    \n", + "args": [ + { + "name": "html", + "type": "string", + "deprecated": false, + "deprecationMessage": "" + } + ], + "returnType": "string", + "jsdoctags": [ + { + "name": { + "pos": 435, + "end": 439, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "html" + }, + "type": "string", + "deprecated": false, + "deprecationMessage": "", + "tagName": { + "pos": 429, + "end": 434, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "

    the html

    \n" + }, + { + "tagName": { + "pos": 453, + "end": 459, + "kind": 80, + "id": 0, + "flags": 16777216, + "transformFlags": 0, + "escapedText": "return" + }, + "comment": "

    the modified html with certain elements replaced with elements

    \n" + } + ] + }, + { + "name": "insertWiseLinkButtons", + "file": "src/assets/wise5/common/wise-link/wise-link.ts", + "ctype": "miscellaneous", + "subtype": "function", + "deprecated": false, + "deprecationMessage": "", + "description": "

    Replace + +

    + + ); +}; + +## Palettes + + diff --git a/src/stories/Layout.mdx b/src/stories/Layout.mdx new file mode 100644 index 00000000000..f06e23bdbfb --- /dev/null +++ b/src/stories/Layout.mdx @@ -0,0 +1,115 @@ +import { Meta, Source, Unstyled } from '@storybook/addon-docs/blocks'; +import { useState, useEffect, useRef } from 'react'; + + + +# Layout + +WISE utilizes [Tailwind](https://tailwindcss.com), a utility-first CSS framework, for defining layouts and structures. +Elements can be styled by combining many single-purpose presentational classes (utility classes) directly in the HTML markup. +Check out [Tailwind's documentation](https://tailwindcss.com/docs) for more information. + +## Responsive Design + +Tailwind provides [responsive utility variants](https://tailwindcss.com/docs/responsive-design) to build adaptive user interfaces. +Every utility class in Tailwind can be applied conditionally at different breakpoints. +WISE uses custom defined breakpoints that match [Material 3's window size classes](https://m3.material.io/foundations/layout/applying-layout/window-size-classes). + +export const BreakpointRow = ({ prefix, width, notes }) => { + return ( + + {prefix} + {width} + {notes} + + ); +}; + +export const BreakpointTable = () => { + const breakpoints = [ + { prefix: `'sm'`, width: '37.5rem (600px)', notes: `Minimum for Material 3's 'medium' screen size (600-839px)` }, + { prefix: `'md'`, width: '52.5rem (840px)', notes: `Minimum for Material 3's 'expanded' screen size (840-1199px)` }, + { prefix: `'lg'`, width: '75rem (1200px)', notes: `Minimum for Material 3's 'large' screen size (1200-1599px)` }, + { prefix: `'xl'`, width: '100rem (1600px)', notes: `Minimum for Material 3's 'extra-large' screen size (1600px +)` }, + ]; + + return ( + +
    + + + + + + + + + + {breakpoints.map(breakpoint => ( + + ))} + +
    Breakpoint prefixMinimum widthNotes
    +
    +
    + ) +} + +### Breakpoints + + + +To add a utility class but only have it apply at a certain screen width, prefix the utility with the breakpoint name, followed by the `:` character. + +Note: Tailwind is a mobile first framework, so styles for Material 3's 'compact' screen size (under 600px) should be defined as the default styles. +Then use breakpoint prefix modifiers to adjust styles for additional screen sizes, as needed. + +For example: + + +
    ...
    ` + } language="html" dark> + + +### Container Queries + +Tailwind also supports container queries, which let you style an element based on the size of a parent element, rather than the entire viewport. +To do so, use the `@container` class to mark an element as a container. +You can then prefix any utility class with breakpoint variants like `@sm:` and `@md:` to conditionally style child elements based on the conatiner's width: + + +
    ...
    + ` + } language="html" dark> + + +## Sizing + +Tailwind supplies a wide variety utility classes to specify the sizing of elements, including classes to specify CSS values for `width`, `min-width`, `max-width`, `height`, `min-height`, `max-height`, etc. +Review [Tailwind's documentation](https://tailwindcss.com/docs) for more details. + +## Spacing + +WISE uses Tailwind's [padding](https://tailwindcss.com/docs/padding) and [margin](https://tailwindcss.com/docs/margin) utlity classes for consistent spacing. +Tailwind's spacing scale is based on rem units, where each increment represents 0.25rem (4px). + +### Common Spacing Values + +- `p-4` / `m-4` = 1rem (16px) padding/margin +- `p-6` / `m-6` = 1.5rem (24px) +- `p-8` / `m-8` = 2rem (32px) +- `py-4` / `mx-4` = 1rem padding bottom and top / 1rem margin left and right +- `pt-4` / `pb-4` / `ms-4` / `me-4` = 1rem padding top / 1rem padding bottom / 1rem margin start / 1rem margin end +- `gap-4` = 1rem (16px) gap between flex/grid items + +### Guidelines + +- **Window/viewport margins**: Maintain at least 1rem (16px) from left and right edge of window for compact screens, 1.5rem (24px) for larger screens. +- **Panel spacing**: For layouts with multiple sections, maintain minimum 1rem (16px) between sections on compact screens, and 1.5rem (24px) on larger screens. + +## Flexbox and Grid + +Tailwind also supplies utility classes to define all aspects of CSS Flexbox and Grid-based layout structures, which WISE employs. +Review [Tailwind's documentation](https://tailwindcss.com/docs) for more details. \ No newline at end of file diff --git a/src/stories/Typography.mdx b/src/stories/Typography.mdx new file mode 100644 index 00000000000..85603ded7a6 --- /dev/null +++ b/src/stories/Typography.mdx @@ -0,0 +1,96 @@ +import { Meta, Unstyled } from '@storybook/addon-docs/blocks'; +import { useState, useEffect, useRef } from 'react'; + + + +# Typography + +WISE utilizes five categories of font types (defined by Material Design): label, body, title, headline, and display. +Each category has three sizes: small, medium, and large. + +Each font is defined by a CSS custom property (variable) and can also be applied to HTML elements using a CSS classname. +Each HTML heading element is also mapped by default to specific font type (as noted in the table below). +The Body Medium font is applied as the default font type for the body tag. + +Learn more about the common uses for these categories by visiting [Material Design's Typography documentation](https://m3.material.io/styles/typography/overview). + +## Font Types + +export const TypographyRow = ({ name, styleClass, element, variable }) => { + const [style, setStyle] = useState({}); + const ref = useRef(null); + + useEffect(() => { + if (ref.current) { + const computed = getComputedStyle(ref.current); + const rootFontSize = parseFloat(getComputedStyle(document.documentElement).fontSize); + const fontSizePx = parseFloat(computed.fontSize); + const fontSizeRem = (fontSizePx / rootFontSize); + + setStyle({ + fontFamily: computed.fontFamily.split(',')[0], + fontSize: `${fontSizeRem}rem (${fontSizePx}px)`, + fontWeight: computed.fontWeight, + letterSpacing: computed.letterSpacing, + }); + } + }, []); + + return ( + + {name}{element && ( {element})} + .{styleClass} + {variable} + {style.fontFamily} + {style.fontSize} + {style.fontWeight} + + ); +}; + +export const TypographyTable = () => { + const typographyStyles = [ + { name: 'Display Large', class: 'display-large', element: '', variable: '--mat-sys-display-large' }, + { name: 'Display Medium', class: 'display-medium', element: '', variable: '--mat-sys-display-medium' }, + { name: 'Display Small', class: 'display-small', element: '', variable: '--mat-sys-display-small' }, + { name: 'Headline Large', class: 'headline-large', element: '

    ', variable: '--mat-sys-headline-large' }, + { name: 'Headline Medium', class: 'headline-medium', element: '

    ', variable: '--mat-sys-headline-medium' }, + { name: 'Headline Small', class: 'headline-small', element: '

    ', variable: '--mat-sys-headline-small' }, + { name: 'Title Large', class: 'title-large', element: '

    ', variable: '--mat-sys-title-large' }, + { name: 'Title Medium', class: 'title-medium', element: '

    ', variable: '--mat-sys-title-medium' }, + { name: 'Title Small', class: 'title-small', element: '
    ', variable: '--mat-sys-title-small' }, + { name: 'Body Large', class: 'body-large', element: '', variable: '--mat-sys-body-large' }, + { name: 'Body Medium', class: 'body-medium', element: '', variable: '--mat-sys-body-medium' }, + { name: 'Body Small', class: 'body-small', element: '', variable: '--mat-sys-body-small' }, + { name: 'Label Large', class: 'label-large', element: '', variable: '--mat-sys-label-large' }, + { name: 'Label Medium', class: 'label-medium', element: '', variable: '--mat-sys-label-medium' }, + { name: 'Label Small', class: 'label-small', element: '', variable: '--mat-sys-label-small' }, + ]; + + return ( + +
    + + + + + + + + + + + + + {typographyStyles.map(style => ( + + ))} + +
    StyleClassCSS VariableFont FamilySizeWeight
    +
    +
    + ); +}; + + + diff --git a/src/stories/assets/picsum-flower-400x200.jpg b/src/stories/assets/picsum-flower-400x200.jpg new file mode 100644 index 00000000000..27a9d50dc50 Binary files /dev/null and b/src/stories/assets/picsum-flower-400x200.jpg differ diff --git a/src/stories/assets/picsum-road-400x200.jpg b/src/stories/assets/picsum-road-400x200.jpg new file mode 100644 index 00000000000..e2ae100a3d5 Binary files /dev/null and b/src/stories/assets/picsum-road-400x200.jpg differ diff --git a/src/stories/autocomplete/Autocomplete.mdx b/src/stories/autocomplete/Autocomplete.mdx new file mode 100644 index 00000000000..7432180b346 --- /dev/null +++ b/src/stories/autocomplete/Autocomplete.mdx @@ -0,0 +1,64 @@ +import { Meta, Canvas, Controls, Source, Story, Unstyled } from '@storybook/addon-docs/blocks'; +import { Tab, Tabs, TabList, TabPanel } from 'react-tabs'; +import * as AutocompleteStories from './autocomplete.stories'; +import exampleCode from '!!raw-loader!./autocomplete-filter/autocomplete-filter.component.ts'; +import exampleTemplate from '!!raw-loader!./autocomplete-filter/autocomplete-filter.component.html'; +import chipsCode from '!!raw-loader!./chips-autocomplete/chips-autocomplete.component.ts'; +import chipsTemplate from '!!raw-loader!./chips-autocomplete/chips-autocomplete.component.html'; + + + +# Autocomplete + +

    WISE autocompletes are text inputs enhanced by a panel of suggested options.

    +

    WISE uses a customized version of the [Autocomplete](https://material.angular.io/components/autocomplete/overview) component from [Angular Material](https://material.angular.io). Check out the Angular Material documentation for more information.

    + + +

    + Stories +

    +
    + +### Automplete with Filtering and Clear Button + + +
    + +
    + + + HTML + TS + + + + + + + + +
    +
    +
    + +### Autocomplete with [Chips](?path=/docs/components-input-chips--chips) (Multiple Selection) + + +
    + +
    + + + HTML + TS + + + + + + + + +
    +
    +
    \ No newline at end of file diff --git a/src/stories/autocomplete/autocomplete-filter/autocomplete-filter.component.html b/src/stories/autocomplete/autocomplete-filter/autocomplete-filter.component.html new file mode 100644 index 00000000000..5cb8a428c3a --- /dev/null +++ b/src/stories/autocomplete/autocomplete-filter/autocomplete-filter.component.html @@ -0,0 +1,23 @@ +
    + + Color + + @if (colorControl.value) { + + } + + @for (option of filteredOptions | async; track option) { + {{ option }} + } + + +
    diff --git a/src/stories/autocomplete/autocomplete-filter/autocomplete-filter.component.ts b/src/stories/autocomplete/autocomplete-filter/autocomplete-filter.component.ts new file mode 100644 index 00000000000..4479492a5ae --- /dev/null +++ b/src/stories/autocomplete/autocomplete-filter/autocomplete-filter.component.ts @@ -0,0 +1,46 @@ +import { Component, OnInit } from '@angular/core'; +import { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms'; +import { Observable } from 'rxjs'; +import { map, startWith } from 'rxjs/operators'; +import { AsyncPipe } from '@angular/common'; +import { MatAutocompleteModule } from '@angular/material/autocomplete'; +import { MatInputModule } from '@angular/material/input'; +import { MatFormFieldModule } from '@angular/material/form-field'; +import { MatIconModule } from '@angular/material/icon'; +import { MatButtonModule } from '@angular/material/button'; + +@Component({ + imports: [ + FormsModule, + MatButtonModule, + MatFormFieldModule, + MatIconModule, + MatInputModule, + MatAutocompleteModule, + ReactiveFormsModule, + AsyncPipe + ], + selector: 'autocomplete-filter', + templateUrl: 'autocomplete-filter.component.html' +}) +export class AutocompleteFilterComponent implements OnInit { + colorControl = new FormControl(''); + options: string[] = ['Red', 'Green', 'Blue', 'Yellow', 'Orange', 'Purple']; + filteredOptions: Observable; + + ngOnInit() { + this.filteredOptions = this.colorControl.valueChanges.pipe( + startWith(''), + map((value) => this.filter(value || '')) + ); + } + + private filter(value: string): string[] { + const filterValue = value.toLowerCase(); + return this.options.filter((option) => option.toLowerCase().includes(filterValue)); + } + + protected clear(event: Event): void { + this.colorControl.reset(); + } +} diff --git a/src/stories/autocomplete/autocomplete.stories.ts b/src/stories/autocomplete/autocomplete.stories.ts new file mode 100644 index 00000000000..b683cc92613 --- /dev/null +++ b/src/stories/autocomplete/autocomplete.stories.ts @@ -0,0 +1,29 @@ +import { Meta, moduleMetadata, StoryObj } from '@storybook/angular'; +import { AutocompleteFilterComponent } from './autocomplete-filter/autocomplete-filter.component'; +import { ChipsAutocompleteComponent } from './chips-autocomplete/chips-autocomplete.component'; + +const meta: Meta = { + title: 'Components/Input/Autcomplete', + decorators: [ + moduleMetadata({ + imports: [AutocompleteFilterComponent, ChipsAutocompleteComponent] + }) + ] +}; + +export default meta; +type Story = StoryObj; + +export const Default: Story = { + name: 'Single Selection', + render: (args) => ({ + template: `` + }) +}; + +export const ChipsAutocomplete: Story = { + name: 'Multiple Selection', + render: (args) => ({ + template: `` + }) +}; diff --git a/src/stories/autocomplete/chips-autocomplete/chips-autocomplete.component.html b/src/stories/autocomplete/chips-autocomplete/chips-autocomplete.component.html new file mode 100644 index 00000000000..1b272e9bb5e --- /dev/null +++ b/src/stories/autocomplete/chips-autocomplete/chips-autocomplete.component.html @@ -0,0 +1,35 @@ +
    + + Favorite Colors +
    + + @for (color of colors(); track $index) { + + {{ color }} + + + } + + + + @for (color of filteredColors(); track color) { + {{ color }} + } + +
    +
    +
    diff --git a/src/stories/autocomplete/chips-autocomplete/chips-autocomplete.component.spec.ts b/src/stories/autocomplete/chips-autocomplete/chips-autocomplete.component.spec.ts new file mode 100644 index 00000000000..b94310f575c --- /dev/null +++ b/src/stories/autocomplete/chips-autocomplete/chips-autocomplete.component.spec.ts @@ -0,0 +1,18 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ChipsAutocompleteComponent } from './chips-autocomplete.component'; + +describe('ChipsAutocompleteComponent', () => { + let component: ChipsAutocompleteComponent; + let fixture: ComponentFixture; + + beforeEach(() => { + fixture = TestBed.createComponent(ChipsAutocompleteComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/stories/autocomplete/chips-autocomplete/chips-autocomplete.component.ts b/src/stories/autocomplete/chips-autocomplete/chips-autocomplete.component.ts new file mode 100644 index 00000000000..4ac81e08349 --- /dev/null +++ b/src/stories/autocomplete/chips-autocomplete/chips-autocomplete.component.ts @@ -0,0 +1,62 @@ +import { ChangeDetectionStrategy, Component, computed, model, signal } from '@angular/core'; +import { FormsModule } from '@angular/forms'; +import { + MatAutocompleteModule, + MatAutocompleteSelectedEvent +} from '@angular/material/autocomplete'; +import { MatChipInputEvent, MatChipsModule } from '@angular/material/chips'; +import { MatFormFieldModule } from '@angular/material/form-field'; +import { MatIconModule } from '@angular/material/icon'; + +@Component({ + selector: 'chips-autocomplete', + templateUrl: 'chips-autocomplete.component.html', + imports: [MatFormFieldModule, MatChipsModule, MatIconModule, MatAutocompleteModule, FormsModule], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class ChipsAutocompleteComponent { + readonly currentColor = model(''); + readonly colors = signal(['Blue']); + readonly allColors: string[] = ['Red', 'Green', 'Blue', 'Yellow', 'Orange', 'Purple']; + readonly filteredColors = computed(() => { + const currentColor = this.currentColor().toLowerCase(); + const selected = new Set(this.colors().map((color) => color.toLowerCase())); + const candidates = this.allColors.filter((color) => !selected.has(color.toLowerCase())); + return currentColor + ? candidates.filter((color) => color.toLowerCase().includes(currentColor)) + : candidates.slice(); + }); + + add(event: MatChipInputEvent): void { + const value = (event.value || '').trim(); + if (value) { + const exists = this.colors().some((color) => color.toLowerCase() === value.toLowerCase()); + if (!exists) { + this.colors.update((colors) => [...colors, value]); + } + } + this.currentColor.set(''); + } + + remove(color: string): void { + this.colors.update((colors) => { + const index = colors.indexOf(color); + if (index < 0) { + return colors; + } + colors.splice(index, 1); + return [...colors]; + }); + } + + selected(event: MatAutocompleteSelectedEvent): void { + const selectedValue = event.option.viewValue; + const exists = this.colors().some((c) => c.toLowerCase() === selectedValue.toLowerCase()); + if (!exists) { + this.colors.update((colors) => [...colors, selectedValue]); + } + // clear the input used for filtering + this.currentColor.set(''); + event.option.deselect(); + } +} diff --git a/src/stories/badge/Badge.mdx b/src/stories/badge/Badge.mdx new file mode 100644 index 00000000000..40a3eb08c3f --- /dev/null +++ b/src/stories/badge/Badge.mdx @@ -0,0 +1,15 @@ +import { Meta, Canvas, Controls, Stories } from '@storybook/addon-docs/blocks'; +import * as BadgeStories from './badge.stories'; + + + +# Badge + +

    WISE Badges are small status descriptors for UI elements. A badge consists of a small circle, typically containing a number or other short set of characters, that appears in proximity to a block-level element.

    + +

    WISE uses a customized version of the Angular Material's [Badge](https://material.angular.io/components/badge/overview).

    + + + + + diff --git a/src/stories/badge/badge.stories.ts b/src/stories/badge/badge.stories.ts new file mode 100644 index 00000000000..14a2f9d2f2f --- /dev/null +++ b/src/stories/badge/badge.stories.ts @@ -0,0 +1,149 @@ +import { Meta, moduleMetadata, StoryObj } from '@storybook/angular'; +import { MatBadgeModule } from '@angular/material/badge'; +import { MatIconModule } from '@angular/material/icon'; +import { MatButtonModule } from '@angular/material/button'; + +type BadgeStoryArgs = { + matBadge?: string | number | null; + matBadgeDescription?: string; + matBadgeHidden?: boolean; + matBadgeOverlap?: boolean; + matBadgePosition?: 'above before' | 'above after' | 'below before' | 'below after'; + matBadgeSize?: 'small' | 'medium' | 'large'; +}; + +const meta: Meta = { + title: 'Components/Display/Badge', + decorators: [moduleMetadata({ imports: [MatBadgeModule, MatIconModule, MatButtonModule] })], + argTypes: { + matBadge: { control: 'text' }, + matBadgeDescription: { control: 'text' }, + matBadgeHidden: { control: 'boolean', table: { defaultValue: { summary: 'false' } } }, + matBadgeOverlap: { control: 'boolean', table: { defaultValue: { summary: 'true' } } }, + matBadgePosition: { + control: 'select', + options: ['above before', 'above after', 'below before', 'below after'], + description: `'above before' | 'above after' | 'below before' | 'below after'`, + table: { defaultValue: { summary: 'above after' } } + }, + matBadgeSize: { + control: 'select', + options: ['small', 'medium', 'large'], + description: `'small' | 'medium' | 'large'`, + table: { defaultValue: { summary: 'medium' } } + } + }, + args: { + matBadge: '4', + matBadgeDescription: 'This is a badge', + matBadgeHidden: false, + matBadgeOverlap: true, + matBadgePosition: 'above after', + matBadgeSize: 'medium' + } +}; + +export default meta; +type Story = StoryObj; + +export const Basic: Story = { + render: (args) => ({ + template: ` +
    + + +
    + `, + props: { ...args } + }), + tags: ['!autodocs'] +}; + +export const Position: Story = { + render: () => ({ + template: ` +
    + + + + + +
    + ` + }) +}; + +export const Overlap: Story = { + render: () => ({ + template: ` +
    + + +
    + ` + }) +}; + +export const Hidden: Story = { + render: () => ({ + template: ` +
    + + +
    + ` + }) +}; + +export const Size: Story = { + render: (args) => ({ + template: ` +
    + + + +
    + ` + }) +}; diff --git a/src/stories/button/Button.mdx b/src/stories/button/Button.mdx new file mode 100644 index 00000000000..f7478276f98 --- /dev/null +++ b/src/stories/button/Button.mdx @@ -0,0 +1,14 @@ +import { Meta, Canvas, Controls, Stories } from '@storybook/addon-docs/blocks'; +import * as ButtonStories from './button.stories'; + + + +# Button + +

    WISE buttons are native ` + + Link + ` + }), + tags: ['!autodocs', '!dev'] +}; + +export const Text: Story = { + render: () => ({ + template: `

    + + + Link +
    ` + }) +}; + +export const Filled: Story = { + render: () => ({ + template: `
    + + + Link +
    ` + }) +}; + +export const Outlined: Story = { + render: () => ({ + template: `
    + + + Link +
    ` + }) +}; + +export const Elevated: Story = { + render: () => ({ + template: `
    + + + Link +
    ` + }) +}; + +export const Tonal: Story = { + render: () => ({ + template: `
    + + + Link +
    ` + }) +}; + +export const Icon: Story = { + render: () => ({ + template: `
    + + +
    ` + }) +}; + +export const FAB: Story = { + name: 'FAB (Floating Action Button)', + render: () => ({ + template: `
    + + +
    ` + }) +}; + +export const miniFAB: Story = { + name: 'Mini FAB', + render: () => ({ + template: `
    + + +
    ` + }) +}; + +export const extendedFAB: Story = { + name: 'Extended FAB', + render: () => ({ + template: `
    + + +
    ` + }) +}; + +export const Colors: Story = { + render: () => ({ + template: `
    +
    + + + + + +
    +
    + + + + + +
    +
    + + + + + +
    +
    + + + + + +
    +
    + + + + + +
    +
    ` + }) +}; + +export const withIcon: Story = { + name: 'With Icon', + render: () => ({ + template: `
    + + + + + +
    ` + }) +}; diff --git a/src/stories/card/Card.mdx b/src/stories/card/Card.mdx new file mode 100644 index 00000000000..41dd927d584 --- /dev/null +++ b/src/stories/card/Card.mdx @@ -0,0 +1,14 @@ +import { Meta, Canvas, Controls, Stories } from '@storybook/addon-docs/blocks'; +import * as CardStories from './card.stories'; + + + +# Card + +

    WISE cards are content containers for text, images, and actions in the context of a single subject.

    +

    WISE uses a customized version of the [Card](https://material.angular.io/components/card/overview) component from [Angular Material](https://material.angular.io). Check out the Angular Material documentation for more information.

    + + + + + diff --git a/src/stories/card/card.stories.ts b/src/stories/card/card.stories.ts new file mode 100644 index 00000000000..0dacfd2a400 --- /dev/null +++ b/src/stories/card/card.stories.ts @@ -0,0 +1,170 @@ +import { Meta, moduleMetadata, StoryObj } from '@storybook/angular'; +import { MatCardModule } from '@angular/material/card'; +import { MatButtonModule } from '@angular/material/button'; +import { MatIconModule } from '@angular/material/icon'; +import { MatChipsModule } from '@angular/material/chips'; + +type CardStoryArgs = { + appearance?: 'outlined' | 'raised' | 'filled'; + title?: string; +}; + +const meta: Meta = { + title: 'Components/Display/Card', + decorators: [ + moduleMetadata({ + imports: [MatCardModule, MatButtonModule, MatChipsModule, MatIconModule] + }) + ], + argTypes: { + appearance: { + control: 'select', + options: ['outlined', 'raised', 'filled'], + description: `'outlined' | 'raised' | 'filled'`, + table: { defaultValue: { summary: 'raised' } } + }, + title: { control: 'text', table: { disable: true } } + }, + args: { + appearance: 'raised', + title: 'Card Title' + } +}; + +export default meta; +type Story = StoryObj; + +export const Default: Story = { + render: (args) => ({ + props: args, + template: ` + + +
    +
    + ${args.title} + Card Subtitle +
    + +

    This is the content of the card. It can be whatever you like.

    +
    + + + + +
    + ` + }), + tags: ['!autodocs', '!dev'] +}; + +export const Filled: Story = { + ...Default, + args: { + appearance: 'filled', + title: 'Filled Card' + } +}; + +export const Outlined: Story = { + ...Default, + args: { + appearance: 'outlined', + title: 'Outlined Card' + } +}; + +export const Raised: Story = { + ...Default, + args: { + appearance: 'raised', + title: 'Raised Card' + } +}; + +export const ActionAlignment: Story = { + render: (args) => ({ + props: args, + template: ` +
    + + + Align to Start + + +

    Actions are aligned to the start of the container.

    +
    + + + + +
    + + + Align to End + + +

    Actions are aligned to the end of the container.

    +
    + + + + +
    +
    + ` + }) +}; + +export const WithMedia: Story = { + render: (args) => ({ + props: args, + template: ` + + +
    +
    + {{ title }} +
    + Road and mountain scene + +

    + This is a card with a media image. The content can be whatever you like. +

    +
    + + + + +
    + ` + }) +}; + +export const WithFooter: Story = { + render: (args) => ({ + props: args, + template: ` + + Road and mountain scene + +

    + This is a card with a footer. The content can be whatever you like. +

    +
    + + + Blue + Red + Green + Yellow + + +
    + ` + }) +}; diff --git a/src/stories/chips/Chips.mdx b/src/stories/chips/Chips.mdx new file mode 100644 index 00000000000..c378ed72f56 --- /dev/null +++ b/src/stories/chips/Chips.mdx @@ -0,0 +1,53 @@ +import { Meta, Canvas, Controls, Source, Stories, Story, Unstyled } from '@storybook/addon-docs/blocks'; +import { Tab, Tabs, TabList, TabPanel } from 'react-tabs'; +import * as ChipsStories from './chips.stories'; +import inputCode from '!!raw-loader!./chips-input/chips-input.component.ts'; +import inputTemplate from '!!raw-loader!./chips-input/chips-input.component.html'; + + + + +# Chips + +

    WISE chips are used to display information in a compact form. They can also allow users to make selections, filter content, and enter data.

    +

    Chips are always used inside a container. To create chips, start with a container element (``, ``, or ``) and nest `` elements inside.

    +

    WISE uses a customized version of the Chips component from Angular Material. Check out the Angular Material documentation for more information.

    + + + + +

    + Stories +

    +
    + +### Single Selection + + +### Multiple Selection + + +### Avatars + + +### With Input Field + + +
    + +
    + + + HTML + TS + + + + + + + + +
    +
    +
    diff --git a/src/stories/chips/chips-input/chips-input.component.html b/src/stories/chips/chips-input/chips-input.component.html new file mode 100644 index 00000000000..e622f6aaf8a --- /dev/null +++ b/src/stories/chips/chips-input/chips-input.component.html @@ -0,0 +1,28 @@ + + Favorite colors + + @for (color of colors(); track color) { + + + {{ color.name }} + + + } + + + diff --git a/src/stories/chips/chips-input/chips-input.component.ts b/src/stories/chips/chips-input/chips-input.component.ts new file mode 100644 index 00000000000..ee4524e01f3 --- /dev/null +++ b/src/stories/chips/chips-input/chips-input.component.ts @@ -0,0 +1,59 @@ +import { LiveAnnouncer } from '@angular/cdk/a11y'; +import { COMMA, ENTER } from '@angular/cdk/keycodes'; +import { ChangeDetectionStrategy, Component, inject, signal } from '@angular/core'; +import { MatChipEditedEvent, MatChipInputEvent, MatChipsModule } from '@angular/material/chips'; +import { MatFormFieldModule } from '@angular/material/form-field'; +import { MatIconModule } from '@angular/material/icon'; + +export interface Color { + name: string; +} + +@Component({ + selector: 'chips-input', + templateUrl: 'chips-input.component.html', + imports: [MatFormFieldModule, MatChipsModule, MatIconModule], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class ChipsInputComponent { + readonly addOnBlur = true; + readonly separatorKeysCodes = [ENTER, COMMA] as const; + readonly colors = signal([{ name: 'Blue' }, { name: 'Red' }, { name: 'Green' }]); + readonly announcer = inject(LiveAnnouncer); + + add(event: MatChipInputEvent): void { + const value = (event.value || '').trim(); + if (value) { + this.colors.update((colors) => [...colors, { name: value }]); + } + event.chipInput!.clear(); + } + + remove(color: Color): void { + this.colors.update((colors) => { + const index = colors.indexOf(color); + if (index < 0) { + return colors; + } + colors.splice(index, 1); + this.announcer.announce(`Removed ${color.name}`); + return [...colors]; + }); + } + + edit(color: Color, event: MatChipEditedEvent) { + const value = event.value.trim(); + if (!value) { + this.remove(color); + return; + } + this.colors.update((colors) => { + const index = colors.indexOf(color); + if (index >= 0) { + colors[index].name = value; + return [...colors]; + } + return colors; + }); + } +} diff --git a/src/stories/chips/chips.stories.ts b/src/stories/chips/chips.stories.ts new file mode 100644 index 00000000000..9cc561732cb --- /dev/null +++ b/src/stories/chips/chips.stories.ts @@ -0,0 +1,83 @@ +import { Meta, moduleMetadata, StoryObj } from '@storybook/angular'; +import { MatChipsModule } from '@angular/material/chips'; +import { MatIconModule } from '@angular/material/icon'; +import { ChipsInputComponent } from './chips-input/chips-input.component'; + +const meta: Meta = { + title: 'Components/Input/Chips', + decorators: [ + moduleMetadata({ + imports: [MatChipsModule, MatIconModule, ChipsInputComponent] + }) + ] +}; + +export default meta; +type Story = StoryObj; + +export const Basic = { + render: () => ({ + template: ` + + Basic + Highlighted + Disabled + + ` + }), + tags: ['!autodocs'] +}; + +export const SingleSelection = { + render: () => ({ + template: ` + + Blue + Red + Green + + ` + }) +}; + +export const MultipleSelection = { + render: () => ({ + template: ` + + Blue + Red + Green + Yellow + + ` + }) +}; + +export const Avatars = { + render: () => ({ + template: ` + + + face + Alice + + + person + Bob + + + star + Carol + + + ` + }) +}; + +export const WithInputField = { + render: () => ({ + template: ` + + ` + }) +}; diff --git a/src/stories/datepicker/Datepicker.mdx b/src/stories/datepicker/Datepicker.mdx new file mode 100644 index 00000000000..8ea3f76f4db --- /dev/null +++ b/src/stories/datepicker/Datepicker.mdx @@ -0,0 +1,15 @@ +import { Meta, Canvas, Controls, Stories } from '@storybook/addon-docs/blocks'; +import * as DatepickerStories from './datepicker.stories'; + + + +# Datepicker + +

    WISE Datepicker allows users to enter a date either through text input, or by choosing a date from the calendar.

    + +

    WISE uses a customized version of [Datepicker](https://material.angular.io/components/datepicker/overview) from [Angular Material](https://material.angular.io). Check out the Angular Material documentation for more information.

    + + + + + diff --git a/src/stories/datepicker/datepicker.stories.ts b/src/stories/datepicker/datepicker.stories.ts new file mode 100644 index 00000000000..2ccebf814a3 --- /dev/null +++ b/src/stories/datepicker/datepicker.stories.ts @@ -0,0 +1,49 @@ +import { Meta, moduleMetadata, StoryObj } from '@storybook/angular'; +import { MatDatepickerModule } from '@angular/material/datepicker'; +import { MatInputModule } from '@angular/material/input'; +import { MatFormFieldModule } from '@angular/material/form-field'; +import { MatNativeDateModule } from '@angular/material/core'; +import { MatCardModule } from '@angular/material/card'; + +const meta: Meta = { + title: 'Components/Input/Datepicker', + decorators: [ + moduleMetadata({ + imports: [ + MatDatepickerModule, + MatInputModule, + MatFormFieldModule, + MatNativeDateModule, + MatCardModule + ] + }) + ] +}; + +export default meta; +type Story = StoryObj; + +export const Basic: Story = { + render: () => ({ + template: ` + + Choose a date + + MM/DD/YYYY + + + + ` + }) +}; + +export const InlineCalendar: Story = { + render: () => ({ + template: ` + + + +

    Selected date: {{ selected }}

    + ` + }) +}; diff --git a/src/stories/dialog/Dialog.mdx b/src/stories/dialog/Dialog.mdx new file mode 100644 index 00000000000..badc796ca91 --- /dev/null +++ b/src/stories/dialog/Dialog.mdx @@ -0,0 +1,45 @@ +import { Meta, Canvas, Controls, Source, Story, Unstyled } from '@storybook/addon-docs/blocks'; +import { Tab, Tabs, TabList, TabPanel } from 'react-tabs'; +import * as DialogStories from './dialog.stories'; +import exampleCode from '!!raw-loader!./dialog-overview/dialog-overview.component.ts'; +import exampleTemplate from '!!raw-loader!./dialog-overview/dialog-overview.component.html'; +import exampleDialogContent from '!!raw-loader!./dialog-overview/dialog-overview-dialog.html'; + + + +# Dialog + +

    The `MatDialog` service can be used to open modal dialogs with WISE styling and animations.

    +

    WISE uses a customized version of the [Dialog](https://material.angular.io/components/dialog/overview) component from [Angular Material](https://material.angular.io). Check out the Angular Material documentation for more information.

    + + +

    + Stories +

    +
    + +### Dialog Overview + + +
    + +
    + + + HTML + TS + dialog-overiew-dialog.html + + + + + + + + + + + +
    +
    +
    \ No newline at end of file diff --git a/src/stories/dialog/dialog-overview/dialog-overview-dialog.html b/src/stories/dialog/dialog-overview/dialog-overview-dialog.html new file mode 100644 index 00000000000..d025f3f19dc --- /dev/null +++ b/src/stories/dialog/dialog-overview/dialog-overview-dialog.html @@ -0,0 +1,12 @@ +

    Hello {{ data.name ? data.name : 'World' }}!

    + +

    What's your favorite animal?

    + + Favorite Animal + + +
    + + + + diff --git a/src/stories/dialog/dialog-overview/dialog-overview.component.html b/src/stories/dialog/dialog-overview/dialog-overview.component.html new file mode 100644 index 00000000000..1ad87fa08e3 --- /dev/null +++ b/src/stories/dialog/dialog-overview/dialog-overview.component.html @@ -0,0 +1,18 @@ +
    + + What's your name? + + + + Dialog width + + @for (width of widths; track width.value) { + {{ width.label }} + } + + + +
    +@if (animal()) { +
    Favorite animal: {{ animal() }}
    +} diff --git a/src/stories/dialog/dialog-overview/dialog-overview.component.scss b/src/stories/dialog/dialog-overview/dialog-overview.component.scss new file mode 100644 index 00000000000..e69de29bb2d diff --git a/src/stories/dialog/dialog-overview/dialog-overview.component.spec.ts b/src/stories/dialog/dialog-overview/dialog-overview.component.spec.ts new file mode 100644 index 00000000000..d60f0bb8113 --- /dev/null +++ b/src/stories/dialog/dialog-overview/dialog-overview.component.spec.ts @@ -0,0 +1,18 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DialogOverviewComponent } from './dialog-overview.component'; + +describe('DialogOverviewComponent', () => { + let component: DialogOverviewComponent; + let fixture: ComponentFixture; + + beforeEach(() => { + fixture = TestBed.createComponent(DialogOverviewComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/stories/dialog/dialog-overview/dialog-overview.component.ts b/src/stories/dialog/dialog-overview/dialog-overview.component.ts new file mode 100644 index 00000000000..e9add844ced --- /dev/null +++ b/src/stories/dialog/dialog-overview/dialog-overview.component.ts @@ -0,0 +1,78 @@ +import { ChangeDetectionStrategy, Component, inject, model, signal } from '@angular/core'; +import { FormsModule } from '@angular/forms'; +import { MatButtonModule } from '@angular/material/button'; +import { + MAT_DIALOG_DATA, + MatDialog, + MatDialogActions, + MatDialogClose, + MatDialogContent, + MatDialogRef, + MatDialogTitle +} from '@angular/material/dialog'; +import { MatFormFieldModule } from '@angular/material/form-field'; +import { MatInputModule } from '@angular/material/input'; +import { MatSelectModule } from '@angular/material/select'; + +export interface DialogData { + animal: string; + name: string; +} + +@Component({ + imports: [FormsModule, MatButtonModule, MatFormFieldModule, MatInputModule, MatSelectModule], + selector: 'dialog-overview', + styleUrls: ['./dialog-overview.component.scss'], + templateUrl: './dialog-overview.component.html', + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class DialogOverviewComponent { + readonly animal = signal(''); + readonly dialog = inject(MatDialog); + protected dialogWidth: string = 'default'; + readonly name = model(''); + protected widths = [ + { value: 'default', label: 'Default' }, + { value: 'dialog-sm', label: 'Small' }, + { value: 'dialog-md', label: 'Medium' }, + { value: 'dialog-lg', label: 'Large' } + ]; + + openDialog(): void { + const dialogRef = this.dialog.open(DialogOverviewDialog, { + data: { name: this.name(), animal: this.animal() }, + panelClass: this.dialogWidth === 'default' ? '' : this.dialogWidth + }); + + dialogRef.afterClosed().subscribe((result) => { + console.log('The dialog was closed'); + if (result !== undefined) { + this.animal.set(result); + } + }); + } +} + +@Component({ + imports: [ + MatFormFieldModule, + MatInputModule, + FormsModule, + MatButtonModule, + MatDialogTitle, + MatDialogContent, + MatDialogActions, + MatDialogClose + ], + selector: 'dialog-overview-dialog', + templateUrl: './dialog-overview-dialog.html' +}) +export class DialogOverviewDialog { + readonly dialogRef = inject(MatDialogRef); + readonly data = inject(MAT_DIALOG_DATA); + readonly animal = model(this.data.animal); + + cancel(): void { + this.dialogRef.close(); + } +} diff --git a/src/stories/dialog/dialog.stories.ts b/src/stories/dialog/dialog.stories.ts new file mode 100644 index 00000000000..1399d639164 --- /dev/null +++ b/src/stories/dialog/dialog.stories.ts @@ -0,0 +1,24 @@ +import { Meta, moduleMetadata, StoryObj } from '@storybook/angular'; +import { DialogOverviewComponent } from './dialog-overview/dialog-overview.component'; + +type DialogStoryType = DialogOverviewComponent; + +const meta: Meta = { + title: 'Components/Action/Dialog', + component: DialogOverviewComponent, + decorators: [ + moduleMetadata({ + imports: [DialogOverviewComponent] + }) + ] +}; + +export default meta; +type Story = StoryObj; + +export const Default: Story = { + render: (args) => ({ + template: `` + }), + tags: ['!autodocs', '!dev'] +}; diff --git a/src/stories/docs.scss b/src/stories/docs.scss new file mode 100644 index 00000000000..2ab546af5b7 --- /dev/null +++ b/src/stories/docs.scss @@ -0,0 +1,155 @@ +@use 'tailwindcss'; + +html { + font-family: "Roboto", sans-serif; +} + +.toc-list-item { + margin-left: 12px !important; + + &:before { + left: 8px !important; + } + + .toc-list-item::before { + left: -6px !important; + } +} + +.toc-wrapper > .toc-list .toc-list { + border-color: transparent !important; +} + +.stories-heading { + font-size: 14px; + font-weight: 600; + line-height: 16px; + text-transform: uppercase; + letter-spacing: 0.25em; + color: rgb(92, 104, 112); + margin-top: 2.5em; +} + +.story-with-code { + @apply border border-neutral-200 rounded shadow p-4 mt-4; +} + +.btn-link { + @apply underline cursor-pointer; + color: var(--mat-sys-primary); + font: var(--mat-sys-body-small); +} + +thead tr { + border-color: var(--mat-sys-outline-variant); +} + +th, td { + @apply p-2 align-middle; +} + +/* React Tabs */ + +.react-tabs { + -webkit-tap-highlight-color: transparent; + + &__tab-list { + border-bottom: 1px solid #aaa; + @apply border-neutral-300; + margin: 0 0 10px; + padding: 0; + } + + &__tab { + display: inline-block; + border: 1px solid transparent; + border-bottom: none; + bottom: -1px; + position: relative; + list-style: none; + padding: 6px 12px; + cursor: pointer; + font-size: 0.875rem; + + &--selected { + background: #fff; + border-color: #aaa; + @apply border-neutral-300; + color: black; + border-radius: 5px 5px 0 0; + } + + &--disabled { + color: GrayText; + cursor: default; + } + + &:focus { + // outline: none; + + &:after { + content: ""; + position: absolute; + height: 5px; + left: -4px; + right: -4px; + bottom: -5px; + background: #fff; + } + } + } + + &__tab-panel { + display: none; + + &--selected { + display: block; + } + } + + .docblock-source { + margin: 0; + } +} + +/* Source Block */ + +pre.prismjs { + max-height: 560px; +} + +.details { + background: var(--mat-sys-surface-container-low); + @apply p-4 rounded-xl; +} + +/* Color Page */ + +.colors { + font: var(--mat-sys-body-small); + + h3 { + font: var(--mat-sys-title-medium); + margin-bottom: 0; + } + + .color { + @apply p-2; + + code { + font-size: var(--mat-sys-label-small-size); + } + + &:first-of-type { + @apply min-h-20; + } + } + + .color-list { + .color { + &:first-of-type { + @apply min-h-14; + } + } + } +} diff --git a/src/stories/expansion-panel/ExpansionPanel.mdx b/src/stories/expansion-panel/ExpansionPanel.mdx new file mode 100644 index 00000000000..16f521b4abd --- /dev/null +++ b/src/stories/expansion-panel/ExpansionPanel.mdx @@ -0,0 +1,14 @@ +import { Meta, Canvas, Controls, Stories } from '@storybook/addon-docs/blocks'; +import * as ExpansionPanelStories from './expansion-panel.stories'; + + + +# Expansion Panel + +

    WISE expansion panels are used to create collapsible sections of content.

    +

    WISE uses a customized version of the [Expansion Panel](https://material.angular.io/components/expansion/overview) component from [Angular Material](https://material.angular.io). Check out the Angular Material documentation for more information.

    + + + + + diff --git a/src/stories/expansion-panel/expansion-panel.stories.ts b/src/stories/expansion-panel/expansion-panel.stories.ts new file mode 100644 index 00000000000..9f0292bd066 --- /dev/null +++ b/src/stories/expansion-panel/expansion-panel.stories.ts @@ -0,0 +1,103 @@ +import { Meta, moduleMetadata, StoryObj } from '@storybook/angular'; +import { MatExpansionModule, MatExpansionPanel } from '@angular/material/expansion'; +import { MatIconModule } from '@angular/material/icon'; + +type MatExpansionPanelStoryType = MatExpansionPanel & { disabled?: boolean; hideToggle?: boolean }; + +const meta: Meta = { + title: 'Components/Display/Expansion Panel', + component: MatExpansionPanel, + decorators: [ + moduleMetadata({ + imports: [MatExpansionModule, MatIconModule] + }) + ], + argTypes: { + disabled: { + control: 'boolean', + table: { defaultValue: { summary: 'false' } } + }, + hideToggle: { + control: 'boolean', + table: { defaultValue: { summary: 'false' } } + } + } +}; + +export default meta; +type Story = StoryObj; + +export const Basic: Story = { + render: (args) => ({ + props: args, + template: ` + + + Expansion panel title + Description or summary + +

    This is the primary content of the expansion panel.

    + + ` + }), + args: { + disabled: false, + hideToggle: false + } +}; + +export const Accordion: Story = { + render: (args) => ({ + props: { + ...args + }, + template: `@let items = ['Item 1', 'Item 2', 'Item 3' ]; + + + + {{ item }} + +

    This is the primary content of the expansion panel.

    +
    +
    + ` + }) +}; + +export const AccordionMultiple: Story = { + render: (args) => ({ + props: args, + template: ` +

    Multiple panels can be expanded at the same time.

    + + + + Personal information + + Name and age + account_circle + + +

    My name is WISE. I am 30 years old.

    +
    + + + I am disabled + + block + + +

    My name is WISE. I am 30 years old.

    +
    + + + Self aware panel + I am {{panelOpenState ? 'open' : 'closed'}} + +

    Hello world!

    +
    +
    + ` + }) +}; diff --git a/src/stories/form-field/FormField.mdx b/src/stories/form-field/FormField.mdx new file mode 100644 index 00000000000..04b04ff936d --- /dev/null +++ b/src/stories/form-field/FormField.mdx @@ -0,0 +1,14 @@ +import { Meta, Canvas, Controls, Stories } from '@storybook/addon-docs/blocks'; +import * as FormFieldStories from './form-field.stories'; + + + +# Form Field + +

    WISE form fields are used to wrap different input types (``, ` + + ` + }), + tags: ['!autodocs', '!dev'] +}; + +export const Fill: Story = { + render: (args) => ({ + template: ` + Input + + ` + }) +}; + +export const Outline: Story = { + render: (args) => ({ + template: ` + Input + + ` + }) +}; + +export const HintsErrors: Story = { + name: 'Hints and Errors', + render: (args) => ({ + template: `

    + + Enter some input + + {{input.value.length}}/10 + + + Required field + + @if (requiredField.hasError('required')) { + Input is required + } + +
    ` + }) +}; + +export const Labels: Story = { + render: (args) => ({ + template: `
    + + Label + + + + Always Floating Label + + + + + +
    ` + }) +}; + +export const PrefixSuffix: Story = { + name: 'Prefix and Suffix', + render: (args) => ({ + props: { hide: true }, + template: `
    + + Enter your password + + + + + + + person + +
    ` + }) +}; diff --git a/src/stories/list/List.mdx b/src/stories/list/List.mdx new file mode 100644 index 00000000000..c2acc2e72c7 --- /dev/null +++ b/src/stories/list/List.mdx @@ -0,0 +1,15 @@ +import { Meta, Canvas, Controls, Stories } from '@storybook/addon-docs/blocks'; +import * as ListStories from './list.stories'; + + + +# List + +

    WISE Lists are container components that wrap and format list items.

    + +

    WISE uses a customized version of [List](https://material.angular.io/components/list/overview) from [Angular Material](https://material.angular.io). Check out the Angular Material documentation for more information.

    + + + + + diff --git a/src/stories/list/list.stories.ts b/src/stories/list/list.stories.ts new file mode 100644 index 00000000000..4d8f7d7b4f9 --- /dev/null +++ b/src/stories/list/list.stories.ts @@ -0,0 +1,108 @@ +import { Meta, moduleMetadata, StoryObj } from '@storybook/angular'; +import { MatListModule } from '@angular/material/list'; +import { MatIconModule } from '@angular/material/icon'; + +const meta: Meta = { + title: 'Components/Display/List', + decorators: [ + moduleMetadata({ + imports: [MatListModule, MatIconModule] + }) + ] +}; + +export default meta; +type Story = StoryObj; + +export const Basic: Story = { + render: () => ({ + template: ` + + Item 1 + Item 2 + Item 3 + + ` + }) +}; + +export const Action: Story = { + render: () => ({ + template: ` +
    + + + + + + +
    + ` + }) +}; + +export const Navigation: Story = { + render: () => ({ + template: ` + + ` + }) +}; + +export const SingleSelection: Story = { + render: () => ({ + template: ` + + + @for (color of ['Blue', 'Red', 'Green', 'Yellow']; track color) { + {{color}} + } + +

    + Option selected: {{colors.selectedOptions.hasValue() ? colors.selectedOptions.selected[0].value : 'None'}} +

    + ` + }) +}; + +export const MultipleSelection: Story = { + render: () => ({ + template: ` + + @for (color of ['Blue', 'Red', 'Green', 'Yellow']; track color) { + {{color}} + } + +

    + Options selected: {{colors.selectedOptions.selected.length}} +

    + ` + }) +}; diff --git a/src/stories/menu/Menu.mdx b/src/stories/menu/Menu.mdx new file mode 100644 index 00000000000..ef999339af7 --- /dev/null +++ b/src/stories/menu/Menu.mdx @@ -0,0 +1,14 @@ +import { Meta, Canvas, Controls, Stories } from '@storybook/addon-docs/blocks'; +import * as MenuStories from './menu.stories'; + + + +# Menu + +

    WISE menus are floating panels containing lists of options.

    +

    WISE uses a customized version of the [Menu](https://material.angular.io/components/menu/overview) component from [Angular Material](https://material.angular.io). Check out the Angular Material documentation for more information.

    + + + + + \ No newline at end of file diff --git a/src/stories/menu/menu.stories.ts b/src/stories/menu/menu.stories.ts new file mode 100644 index 00000000000..0343ba147d7 --- /dev/null +++ b/src/stories/menu/menu.stories.ts @@ -0,0 +1,100 @@ +import { MatMenu, MatMenuModule } from '@angular/material/menu'; +import { MatIconModule } from '@angular/material/icon'; +import { Meta, moduleMetadata, StoryObj } from '@storybook/angular'; +import { MatButtonModule } from '@angular/material/button'; + +type MatMenuStoryType = MatMenu; + +const meta: Meta = { + title: 'Components/Action/Menu', + component: MatMenu, + decorators: [ + moduleMetadata({ + imports: [MatButtonModule, MatIconModule, MatMenuModule] + }) + ] +}; + +export default meta; +type Story = StoryObj; + +export const Basic: Story = { + render: (args) => ({ + template: ` + + + + +` + }), + tags: ['!autodocs'] +}; + +export const Icons: Story = { + render: (args) => ({ + template: ` + + + + + + ` + }) +}; + +export const Nested: Story = { + render: (args) => ({ + template: ` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ` + }) +}; diff --git a/src/stories/progress-bar/ProgressBar.mdx b/src/stories/progress-bar/ProgressBar.mdx new file mode 100644 index 00000000000..7fedc16c576 --- /dev/null +++ b/src/stories/progress-bar/ProgressBar.mdx @@ -0,0 +1,14 @@ +import { Meta, Canvas, Controls, Stories } from '@storybook/addon-docs/blocks'; +import * as ProgressBarStories from './progress-bar.stories'; + + + +# Progress Bar + +

    WISE progress bars are used to give users feedback on the progress of a workflow or action.

    +

    WISE uses a customized version of the [Progress Bar](https://material.angular.io/components/progress-bar/overview) component from [Angular Material](https://material.angular.io). Check out the Angular Material documentation for more information.

    + + + + + diff --git a/src/stories/progress-bar/progress-bar.stories.ts b/src/stories/progress-bar/progress-bar.stories.ts new file mode 100644 index 00000000000..e9fec0b8b4e --- /dev/null +++ b/src/stories/progress-bar/progress-bar.stories.ts @@ -0,0 +1,98 @@ +import { Meta, moduleMetadata, StoryObj } from '@storybook/angular'; +import { MatProgressBar, MatProgressBarModule } from '@angular/material/progress-bar'; +import { MatRadioModule } from '@angular/material/radio'; +import { FormsModule } from '@angular/forms'; +import { MatCardModule } from '@angular/material/card'; +import { MatButtonModule } from '@angular/material/button'; + +type MatProgressBarStoryType = MatProgressBar & { value?: number; bufferValue: number }; + +const meta: Meta = { + title: 'Components/Feedback/Progress Bar', + component: MatProgressBar, + decorators: [ + moduleMetadata({ + imports: [MatButtonModule, MatProgressBarModule, MatRadioModule, FormsModule, MatCardModule] + }) + ], + argTypes: { + mode: { + control: 'select', + options: ['determinate', 'indeterminate', 'buffer', 'query'], + description: `'determinate' | 'indeterminate' | 'buffer' | 'query'`, + table: { defaultValue: { summary: 'determinate' } } + }, + value: { + control: 'number' + }, + bufferValue: { + control: 'number' + } + } +}; + +export default meta; +type Story = StoryObj; + +export const Basic: Story = { + render: (args) => ({ + props: args, + template: ` + + + ` + }), + args: { + mode: 'determinate', + value: 30, + bufferValue: 60 + }, + tags: ['!autodocs', '!dev'] +}; + +export const Determinate: Story = { + render: (args) => ({ + props: args, + template: `` + }) +}; + +export const Indeterminate: Story = { + render: (args) => ({ + props: args, + template: `` + }) +}; + +export const Buffer: Story = { + render: (args) => ({ + props: args, + template: `` + }) +}; + +export const Query: Story = { + render: (args) => ({ + props: args, + template: `` + }) +}; + +export const ButtonProgress: Story = { + render: (args) => ({ + props: args, + template: `
    + + +
    ` + }) +}; diff --git a/src/stories/select/Select.mdx b/src/stories/select/Select.mdx new file mode 100644 index 00000000000..0516b37d7ce --- /dev/null +++ b/src/stories/select/Select.mdx @@ -0,0 +1,14 @@ +import { Meta, Canvas, Controls, Stories } from '@storybook/addon-docs/blocks'; +import * as SelectStories from './select.stories'; + + + +# Select + +

    Select is a form control for selecting a value from a set of options, similar to the native ` + + @for (food of foods; track food) { + + } + + + + ` + }), + tags: ['!autodocs'] +}; + +export const Multiple: Story = { + render: (args) => ({ + template: `@let colors = [ + 'Red', + 'Green', + 'Blue', + 'Orange', + 'Purple', + 'Pink', + 'Yellow', + 'Cyan', + 'Magenta', + 'Black', + 'White' + ]; + + Favorite colors + + @for (color of colors; track color) { + {{color}} + } + + ` + }) +}; + +export const CustomLabel: Story = { + name: 'Custom Selected Label', + render: (args) => ({ + template: `@let colors = [ + 'Red', + 'Green', + 'Blue', + 'Orange', + 'Purple', + 'Pink', + 'Yellow', + 'Cyan', + 'Magenta', + 'Black', + 'White' + ]; + + Favorite colors + + + {{colorsSelect?.[0] || ''}} + @if ((colorsSelect?.length || 0) > 1) { + + (+{{(colorsSelect?.length || 0) - 1}}) + + } + + @for (color of colors; track color) { + {{color}} + } + + ` + }) +}; + +export const OptionGroups: Story = { + name: 'Option Groups', + render: (args) => ({ + template: `@let colorGroups = [ + { + name: 'Primary', + colors: [ + { value: 'red', label: 'Red' }, + { value: 'green', label: 'Green' }, + { value: 'blue', label: 'Blue' } + ] + }, + { + name: 'Secondary', + colors: [ + { value: 'orange', label: 'Orange' }, + { value: 'purple', label: 'Purple' }, + { value: 'pink', label: 'Pink' } + ] + }, + { + name: 'Tertiary', + colors: [ + { value: 'yellow', label: 'Yellow' }, + { value: 'cyan', label: 'Cyan' }, + { value: 'magenta', label: 'Magenta' } + ] + } + ]; + + Choose a color + + -- None -- + @for (group of colorGroups; track group) { + + @for (color of group.colors; track color) { + {{color.label}} + } + + } + + ` + }) +}; diff --git a/src/stories/slide-toggle/SlideToggle.mdx b/src/stories/slide-toggle/SlideToggle.mdx new file mode 100644 index 00000000000..ba8889623fd --- /dev/null +++ b/src/stories/slide-toggle/SlideToggle.mdx @@ -0,0 +1,14 @@ +import { Meta, Canvas, Controls, Stories } from '@storybook/addon-docs/blocks'; +import * as SlideToggleStories from './slide-toggle.stories'; + + + +# Slide Toggle + +

    WISE slide toggles are used to switch between two states, typically on and off.

    +

    WISE uses a customized version of the [Slide Toggle](https://material.angular.io/components/slide-toggle/overview) component from [Angular Material](https://material.angular.io). Check out the Angular Material documentation for more information.

    + + + + + diff --git a/src/stories/slide-toggle/slide-toggle.stories.ts b/src/stories/slide-toggle/slide-toggle.stories.ts new file mode 100644 index 00000000000..e76b36df0cb --- /dev/null +++ b/src/stories/slide-toggle/slide-toggle.stories.ts @@ -0,0 +1,57 @@ +import { Meta, moduleMetadata, StoryObj } from '@storybook/angular'; +import { MatSlideToggle, MatSlideToggleModule } from '@angular/material/slide-toggle'; +import { FormsModule } from '@angular/forms'; + +type MatSlideToggleStoryType = MatSlideToggle; + +const meta: Meta = { + title: 'Components/Input/Slide Toggle', + component: MatSlideToggle, + decorators: [ + moduleMetadata({ + imports: [MatSlideToggleModule, FormsModule] + }) + ], + argTypes: { + checked: { + control: 'boolean', + table: { defaultValue: { summary: 'false' } } + }, + disabled: { + control: 'boolean', + table: { defaultValue: { summary: 'false' } } + }, + hideIcon: { + control: 'boolean', + table: { defaultValue: { summary: 'false' } } + }, + labelPosition: { + control: 'select', + options: ['before', 'after'], + type: 'string', + description: `'after' | 'before'`, + table: { defaultValue: { summary: 'after' } } + } + } +}; + +export default meta; +type Story = StoryObj; + +export const Basic: Story = { + render: (args) => ({ + props: args, + template: ` + + Slide me! + + ` + }), + args: { + checked: false, + disabled: false, + hideIcon: false + } +}; diff --git a/src/stories/snackbar/Snackbar.mdx b/src/stories/snackbar/Snackbar.mdx new file mode 100644 index 00000000000..401d6b6afde --- /dev/null +++ b/src/stories/snackbar/Snackbar.mdx @@ -0,0 +1,45 @@ +import { Meta, Canvas, Controls, Source, Story, Unstyled } from '@storybook/addon-docs/blocks'; +import { Tab, Tabs, TabList, TabPanel } from 'react-tabs'; +import * as SnackbarStories from './snackbar.stories'; +import exampleCode from '!!raw-loader!./snackbar-trigger/snackbar-trigger.component.ts'; +import exampleTemplate from '!!raw-loader!./snackbar-trigger/snackbar-trigger.component.html'; +import customSnackbarTemplate from '!!raw-loader!./snackbar-trigger/custom-snackbar.html'; + + + +# Snackbar + +

    The `MatSnackBar` service can be used to display snackbar notifications.

    +

    WISE uses a customized version of the [Dialog](https://material.angular.io/components/snack-bar/overview) component from [Angular Material](https://material.angular.io). Check out the Angular Material documentation for more information.

    + + +

    + Stories +

    +
    + +### Snackbar Overview + + +
    + +
    + + + HTML + TS + custom-snackbar.html + + + + + + + + + + + +
    +
    +
    diff --git a/src/stories/snackbar/snackbar-trigger/custom-snackbar.html b/src/stories/snackbar/snackbar-trigger/custom-snackbar.html new file mode 100644 index 00000000000..d8b52e47a54 --- /dev/null +++ b/src/stories/snackbar/snackbar-trigger/custom-snackbar.html @@ -0,0 +1,9 @@ +warning{{ data.message }} + + + + diff --git a/src/stories/snackbar/snackbar-trigger/snackbar-trigger.component.html b/src/stories/snackbar/snackbar-trigger/snackbar-trigger.component.html new file mode 100644 index 00000000000..4f017f50346 --- /dev/null +++ b/src/stories/snackbar/snackbar-trigger/snackbar-trigger.component.html @@ -0,0 +1,31 @@ +
    + + Message + + + + Action Text + + + + Duration (seconds) + + + + Horizontal Position + + Start + Center + End + + + + Vertical Position + + Top + Bottom + + + Use Custom Component + +
    diff --git a/src/stories/snackbar/snackbar-trigger/snackbar-trigger.component.spec.ts b/src/stories/snackbar/snackbar-trigger/snackbar-trigger.component.spec.ts new file mode 100644 index 00000000000..ff249d06833 --- /dev/null +++ b/src/stories/snackbar/snackbar-trigger/snackbar-trigger.component.spec.ts @@ -0,0 +1,31 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { NoopAnimationsModule } from '@angular/platform-browser/animations'; +import { MatSnackBar } from '@angular/material/snack-bar'; +import { SnackbarTriggerComponent } from './snackbar-trigger.component'; + +describe('SnackbarTriggerComponent', () => { + let component: SnackbarTriggerComponent; + let fixture: ComponentFixture; + let snackBar: MatSnackBar; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [SnackbarTriggerComponent, NoopAnimationsModule] + }).compileComponents(); + + fixture = TestBed.createComponent(SnackbarTriggerComponent); + component = fixture.componentInstance; + snackBar = TestBed.inject(MatSnackBar); + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); + + it('should open a snackbar', () => { + spyOn(snackBar, 'open'); + component.openSnackBar(); + expect(snackBar.open).toHaveBeenCalled(); + }); +}); diff --git a/src/stories/snackbar/snackbar-trigger/snackbar-trigger.component.ts b/src/stories/snackbar/snackbar-trigger/snackbar-trigger.component.ts new file mode 100644 index 00000000000..993847d5679 --- /dev/null +++ b/src/stories/snackbar/snackbar-trigger/snackbar-trigger.component.ts @@ -0,0 +1,84 @@ +import { Component, inject, model } from '@angular/core'; +import { + MAT_SNACK_BAR_DATA, + MatSnackBar, + MatSnackBarAction, + MatSnackBarActions, + MatSnackBarHorizontalPosition, + MatSnackBarLabel, + MatSnackBarRef, + MatSnackBarVerticalPosition +} from '@angular/material/snack-bar'; +import { MatFormFieldModule } from '@angular/material/form-field'; +import { MatInputModule } from '@angular/material/input'; +import { MatSelectModule } from '@angular/material/select'; +import { FormsModule } from '@angular/forms'; +import { MatButtonModule } from '@angular/material/button'; +import { MatCheckboxModule } from '@angular/material/checkbox'; +import { MatIconModule } from '@angular/material/icon'; + +export interface SnackbarData { + message: string; + action: string; +} + +@Component({ + selector: 'snackbar-trigger', + templateUrl: './snackbar-trigger.component.html', + imports: [ + MatFormFieldModule, + MatInputModule, + MatSelectModule, + FormsModule, + MatButtonModule, + MatCheckboxModule + ] +}) +export class SnackbarTriggerComponent { + protected message: string = 'Hello world!'; + protected action: string = 'Close'; + protected duration: number = 10; + protected horizontalPosition: MatSnackBarHorizontalPosition = 'center'; + protected verticalPosition: MatSnackBarVerticalPosition = 'bottom'; + protected useCustomComponent: boolean = false; + + constructor(private _snackBar: MatSnackBar) {} + + openSnackBar() { + if (this.useCustomComponent) { + this._snackBar.openFromComponent(CustomSnackbarComponent, { + duration: this.duration * 1000, + horizontalPosition: this.horizontalPosition, + verticalPosition: this.verticalPosition, + data: { message: this.message, action: this.action } + }); + } else { + this._snackBar.open(this.message, this.action, { + duration: this.duration * 1000, + horizontalPosition: this.horizontalPosition, + verticalPosition: this.verticalPosition + }); + } + } +} + +@Component({ + selector: 'custom-snackbar', + templateUrl: './custom-snackbar.html', + styles: ` + :host { + display: flex; + + .mat-icon { + color: var(--mat-sys-error-container); + } + } + `, + imports: [MatButtonModule, MatIconModule, MatSnackBarLabel, MatSnackBarActions, MatSnackBarAction] +}) +export class CustomSnackbarComponent { + readonly snackBarRef = inject(MatSnackBarRef); + readonly data = inject(MAT_SNACK_BAR_DATA); + readonly message = model(this.data.message); + readonly action = model(this.data.action); +} diff --git a/src/stories/snackbar/snackbar.stories.ts b/src/stories/snackbar/snackbar.stories.ts new file mode 100644 index 00000000000..8abc521d89c --- /dev/null +++ b/src/stories/snackbar/snackbar.stories.ts @@ -0,0 +1,22 @@ +import { Meta, moduleMetadata, StoryObj } from '@storybook/angular'; +import { SnackbarTriggerComponent } from './snackbar-trigger/snackbar-trigger.component'; + +const meta: Meta = { + title: 'Components/Feedback/Snackbar', + component: SnackbarTriggerComponent, + decorators: [ + moduleMetadata({ + imports: [SnackbarTriggerComponent] + }) + ] +}; + +export default meta; +type Story = StoryObj; + +export const Default: Story = { + render: () => ({ + template: `` + }), + tags: ['!autodocs', '!dev'] +}; diff --git a/src/stories/tabs/Tabs.mdx b/src/stories/tabs/Tabs.mdx new file mode 100644 index 00000000000..c9f5eda3985 --- /dev/null +++ b/src/stories/tabs/Tabs.mdx @@ -0,0 +1,14 @@ +import { Meta, Canvas, Controls, Stories } from '@storybook/addon-docs/blocks'; +import * as TabStories from './tabs.stories'; + + + +# Tabs + +

    WISE tabs organize content into separate views where only one view can be visible at a time.

    +

    WISE uses a customized version of the [Tabs](https://material.angular.io/components/tabs/overview) component from [Angular Material](https://material.angular.io). Check out the Angular Material documentation for more information.

    + + + + + diff --git a/src/stories/tabs/tabs.stories.ts b/src/stories/tabs/tabs.stories.ts new file mode 100644 index 00000000000..5405a2093b1 --- /dev/null +++ b/src/stories/tabs/tabs.stories.ts @@ -0,0 +1,186 @@ +import { Meta, moduleMetadata, StoryObj } from '@storybook/angular'; +import { MatTabsModule, MatTabGroup } from '@angular/material/tabs'; +import { MatIconModule } from '@angular/material/icon'; + +type TabStoryArgs = { + 'mat-align-tabs'?: 'start' | 'center' | 'end'; + 'mat-stretch-tabs'?: boolean; + headerPosition?: 'above' | 'below'; +}; + +const meta: Meta = { + title: 'Components/Action/Tabs', + component: MatTabGroup, + decorators: [ + moduleMetadata({ + imports: [MatTabsModule, MatIconModule] + }) + ], + argTypes: { + 'mat-align-tabs': { + control: 'select', + options: ['start', 'center', 'end'], + description: `'start' | 'center' | 'end'`, + type: 'string', + table: { defaultValue: { summary: 'start' } } + }, + 'mat-stretch-tabs': { + control: 'boolean', + table: { defaultValue: { summary: 'false' } } + }, + headerPosition: { + control: 'select', + options: ['above', 'below'], + description: `'above' | 'below'`, + type: 'string', + table: { defaultValue: { summary: 'above' } } + } + }, + args: { + 'mat-align-tabs': null, + 'mat-stretch-tabs': false, + headerPosition: null + } +}; + +export default meta; +type Story = StoryObj; + +export const Basic: Story = { + render: (args) => ({ + props: args, + template: ` + + +
    Content for tab 1
    +
    + +
    Content for tab 2
    +
    + +
    Content for tab 3
    +
    + + ` + }) +}; + +export const LabelAlignment: Story = { + render: (args) => ({ + props: args, + template: ` + + +
    Content for tab 1
    +
    + +
    Content for tab 2
    +
    + +
    Content for tab 3
    +
    +
    + + +
    Content for tab 1
    +
    + +
    Content for tab 2
    +
    + +
    Content for tab 3
    +
    +
    + + +
    Content for tab 1
    +
    + +
    Content for tab 2
    +
    + +
    Content for tab 3
    +
    +
    + ` + }) +}; + +export const ComplexLabels: Story = { + render: (args) => ({ + props: args, + template: ` + + + +
    + looks_one + First +
    +
    +
    Content for tab 1
    +
    + + +
    + looks_two + Second +
    +
    +
    Content for tab 2
    +
    + + +
    + looks_3 + Third +
    +
    +
    Content for tab 3
    +
    +
    + ` + }) +}; + +export const StretchTabs: Story = { + render: (args) => ({ + props: args, + template: ` + + +
    Content for tab 1
    +
    + +
    Content for tab 2
    +
    + +
    Content for tab 3
    +
    +
    + ` + }) +}; + +export const HeaderBelowContent: Story = { + render: (args) => ({ + props: args, + template: ` + + +
    Content for tab 1
    +
    + +
    Content for tab 2
    +
    + +
    Content for tab 3
    +
    +
    + ` + }) +}; diff --git a/src/stories/timepicker/Timepicker.mdx b/src/stories/timepicker/Timepicker.mdx new file mode 100644 index 00000000000..fbdac09a9b2 --- /dev/null +++ b/src/stories/timepicker/Timepicker.mdx @@ -0,0 +1,15 @@ +import { Meta, Canvas, Controls, Stories } from '@storybook/addon-docs/blocks'; +import * as TimepickerStories from './timepicker.stories'; + + + +# Timepicker + +

    The WISE Timepicker allows users to set the time portion of a date object either by typing it in or by selecting it from a list of options.

    + +

    WISE uses a customized version of [Timepicker](https://material.angular.io/components/timepicker/overview) from [Angular Material](https://material.angular.io). Check out the Angular Material documentation for more information.

    + + + + + diff --git a/src/stories/timepicker/timepicker.stories.ts b/src/stories/timepicker/timepicker.stories.ts new file mode 100644 index 00000000000..ebdb40ca070 --- /dev/null +++ b/src/stories/timepicker/timepicker.stories.ts @@ -0,0 +1,95 @@ +import { Meta, moduleMetadata, StoryObj } from '@storybook/angular'; +import { MatDatepickerModule } from '@angular/material/datepicker'; +import { MatInputModule } from '@angular/material/input'; +import { MatFormFieldModule } from '@angular/material/form-field'; +import { MatNativeDateModule } from '@angular/material/core'; +import { MatTimepickerModule } from '@angular/material/timepicker'; +import { FormsModule } from '@angular/forms'; + +const meta: Meta = { + title: 'Components/Input/Timepicker', + decorators: [ + moduleMetadata({ + imports: [ + FormsModule, + MatDatepickerModule, + MatInputModule, + MatFormFieldModule, + MatNativeDateModule, + MatTimepickerModule + ] + }) + ] +}; + +export default meta; +type Story = StoryObj; + +export const Basic: Story = { + render: () => ({ + template: ` + + Choose a time + + + + + ` + }) +}; + +export const CustomInterval: Story = { + render: () => ({ + template: ` + + Choose a time + + + + + ` + }) +}; + +export const CustomOptions: Story = { + args: { + customOptions: [ + { label: 'Morning', value: new Date(0, 0, 1, 8, 0, 0) }, + { label: 'Noon', value: new Date(0, 0, 1, 12, 0, 0) }, + { label: 'Evening', value: new Date(0, 0, 1, 18, 0, 0) } + ] + }, + render: (args) => ({ + props: args, + template: ` + + Choose a time + + + + + ` + }) +}; + +export const WithDatepicker: Story = { + render: () => ({ + template: ` +
    + + Choose a date + + + + + + Choose a time + + + + +
    +

    Date and time: {{value}}

    + ` + }) +}; diff --git a/src/style/styles-old.scss b/src/style/styles-old.scss new file mode 100644 index 00000000000..dadb098ee6f --- /dev/null +++ b/src/style/styles-old.scss @@ -0,0 +1,108 @@ +@charset 'UTF-8'; +@use '@angular/material' as mat; + +@tailwind base; +@tailwind components; +@tailwind utilities; + +// 1. Configuration and helpers +@import + 'abstracts/variables', + 'abstracts/functions'; + +// 2. Vendors +//@import + //'vendor/normalize'; + +// 3. Base stuff +@import + 'base/base', + 'base/fonts', + 'base/typography', + 'base/helpers', + 'abstracts/mixins'; + +// 4. Layout-related sections +@import + 'layout/content', + 'layout/main', + 'layout/section', + 'layout/standalone'; + +// 5. Components +@import + 'components/avatar', + 'components/buttons', + 'components/content-block', + 'components/dialog', + 'components/icons', + 'components/inputs', + 'components/lists', + 'components/expansion-panel', + 'components/info-block', + 'components/menu', + 'components/notice', + 'components/table', + 'components/tooltip'; + +// 6. Page-specific styles +//@import + //'pages/home'; + +// 7. Themes + +// always include only once per project +@include mat.core(); + +// material typography +@include mat.typography-hierarchy($wise-typography); + +// specify common style class eg: ... +.common-styles { + @include common-setup(); +} + +// import themes +@import 'themes/default'; +@import 'themes/dark'; +@import 'themes/author'; +@import 'themes/monitor'; +@import "@ng-select/ng-select/themes/material.theme.css"; + +@import "@ng-select/ng-select/themes/material.theme.css"; + +@import "@ng-select/ng-select/themes/material.theme.css"; + +// TODO: remove/merge after upgrading apps to Angular +@import 'themes/apps'; +.app-styles { + @include apps-setup(); +} + +$filled-input-bg: rgba(0, 0, 0, 0.04); + +// specify custom theme classes eg: ... +@include mat.all-component-themes($default-theme); +.default-theme { + @include theme-setup($default-theme, $default-colors); + @include filled-input-bg(); +} + +.author-theme { + @include mat.all-component-colors($author-theme); + @include theme-setup($author-theme, $author-colors); + @include filled-input-bg(); +} + +.monitor-theme { + @include mat.all-component-colors($monitor-theme); + @include theme-setup($monitor-theme, $monitor-colors); + @include filled-input-bg(); +} + +.dark-theme { + @include mat.all-component-colors($dark-theme); + @include theme-setup($dark-theme, $dark-colors); + @include filled-input-bg(true); + color: white; +} diff --git a/src/style/styles.scss b/src/style/styles.scss index 4714e988b36..5e60c004d32 100644 --- a/src/style/styles.scss +++ b/src/style/styles.scss @@ -1,80 +1,537 @@ -@charset 'UTF-8'; +@use 'sass:map'; @use '@angular/material' as mat; -@use 'abstracts/variables'; -@use 'abstracts/functions'; -@use 'base/base'; -@use 'base/fonts'; -@use 'base/typography'; -@use 'base/helpers'; -@use 'abstracts/mixins'; -@use 'layout/content'; -@use 'layout/main'; -@use 'layout/section'; -@use 'layout/standalone'; -@use 'components/avatar'; -@use 'components/buttons'; -@use 'components/content-block'; -@use 'components/dialog'; -@use 'components/icons'; -@use 'components/inputs'; -@use 'components/lists'; -@use 'components/expansion-panel'; -@use 'components/info-block'; -@use 'components/menu'; -@use 'components/notice'; -@use 'components/table'; -@use 'components/tooltip'; -@use 'themes/default'; -@use 'themes/dark'; -@use 'themes/author'; -@use 'themes/monitor'; -@use 'themes/apps'; -@use "@ng-select/ng-select/themes/material.theme.css"; - -@use "tailwindcss"; - -// always include only once per project -@include mat.core(); - -// material typography -@include mat.typography-hierarchy(typography.$wise-typography); - -// specify common style class eg: ... -.common-styles { - @include mixins.common-setup(); -} -a { - text-decoration: underline; -} +@use './themes/theme-colors' as theme-colors; +@use './themes/theme-typography.scss' as theme-typography; +@use 'tailwindcss'; -.app-styles { - @include apps.apps-setup(); +:root { + --mat-sys-success: light-dark(#388E3C, #82db7e); + --mat-sys-success-container: light-dark(#9df898, #005312); + --mat-sys-on-success: light-dark(#ffffff, #00390a); + --mat-sys-on-success-container: light-dark(#005312, #9df898); + --mat-sys-tertiary2: #cad266; + --button-horizontal-padding: 12px; + --outlined-button-horizontal-padding: 10px; + --button-icon-offset: -4px; + --list-height: 44px; } -$filled-input-bg: rgba(0, 0, 0, 0.04); +// Tailwind theme customizations -// specify custom theme classes eg: ... -@include mat.all-component-themes(default.$default-theme); -.default-theme { - @include mixins.theme-setup(default.$default-theme, default.$default-colors); - @include mixins.filled-input-bg(); +@theme { + --breakpoint-sm: 37.5rem; // 600px, Material 3 'medium' width (600-839px) + --breakpoint-md: 52.5rem; // 840px, Material 3 'expanded' width (840-1199px) + --breakpoint-lg: 75rem; // 1200px, Material 3 'large' width (1200-1599px) + --breakpoint-xl: 100rem; // 1600px, Material 3 'extra-large' width (1600px +) + --breakpoint-2xl: initial; // unused } -.author-theme { - @include mat.all-component-colors(author.$author-theme); - @include mixins.theme-setup(author.$author-theme, author.$author-colors); - @include mixins.filled-input-bg(); -} +html { + /* Angular Material theme */ -.monitor-theme { - @include mat.all-component-colors(monitor.$monitor-theme); - @include mixins.theme-setup(monitor.$monitor-theme, monitor.$monitor-colors); - @include mixins.filled-input-bg(); -} + color-scheme: light; + @include mat.theme(( + color: ( + primary: theme-colors.$primary-palette, + tertiary: theme-colors.$tertiary-palette, + error: theme-colors.$error-palette, + ), + typography: ( + plain-family: Roboto, + brand-family: Raleway, + ), + )); + + color: var(--mat-sys-on-background); + line-height: 1.4; + + /* Typography */ + + @include theme-typography.typography-hierarchy; + + @include mat.theme-overrides(( + label-small: 500 0.75rem / 1rem Roboto, + label-medium: 500 0.875rem / 1.25rem Roboto, + label-large: 500 1rem / 1.5rem Roboto, + body-small: 400 0.875rem / 1.25rem Roboto, + body-medium: 400 1rem / 1.5rem Roboto, + body-large: 400 1.125rem / 1.625rem Roboto, + title-small: 500 1rem / 1.5rem Roboto, + title-medium: 500 1.125rem / 1.625rem Roboto, + title-large: 500 1.25rem / 1.75rem Roboto, + headline-small: 600 1.5rem / 2rem Raleway, + headline-medium: 600 1.75rem / 2.25rem Raleway, + headline-large: 600 2rem / 2.5rem Raleway, + display-small: 600 2.5rem / 3rem Raleway, + display-medium: 600 2.875rem / 3.25rem Raleway, + display-large: 600 3.25rem / 3.75rem Raleway, + )); + + /* Autocomplete */ + + @include mat.autocomplete-overrides(( + background-color: var(--mat-sys-surface-container-lowest), + )); + + /* Badge */ + + @include mat.badge-overrides(( + background-color: var(--mat-sys-tertiary), + container-size: 20px, + container-padding: 3px 7.5px, + text-size: var(--mat-sys-label-medium-size), + large-size-container-size: 24px, + large-size-container-padding: 6px 10px, + large-size-text-size: var(--mat-sys-label-large-size), + small-size-container-size: 14px, + )); + + .mat-badge-content { + border: 2px solid; + } + + /* Button */ + + --button-height: 36px; + + @include mat.button-overrides(( + filled-container-height: var(--button-height), + outlined-container-height: var(--button-height), + text-container-height: var(--button-height), + tonal-container-height: var(--button-height), + protected-container-height: var(--button-height), + filled-container-shape: var(--mat-sys-corner-small), + outlined-container-shape: var(--mat-sys-corner-small), + text-container-shape: var(--mat-sys-corner-small), + tonal-container-shape: var(--mat-sys-corner-small), + protected-container-shape: var(--mat-sys-corner-small), + filled-horizontal-padding: var(--button-horizontal-padding), + outlined-horizontal-padding: var(--outlined-button-horizontal-padding), + tonal-horizontal-padding: var(--outlined-button-horizontal-padding), + protected-horizontal-padding: var(--button-horizontal-padding), + outlined-outline-width: 2px, + outlined-outline-color: var(--mat-sys-primary), + filled-icon-offset: var(--button-icon-offset), + outlined-icon-offset: var(--button-icon-offset), + protected-icon-offset: var(--button-icon-offset), + )); + + --fab-size: 52px; + + .mat-mdc-fab:not(.mdc-fab--extended) { + height: var(--fab-size); + width: var(--fab-size); + } + + @include mat.fab-overrides(( + container-elevation-shadow: var(--mat-sys-level2), + hover-container-elevation-shadow: var(--mat-sys-level3), + focus-container-elevation-shadow: var(--mat-sys-level3), + extended-container-elevation-shadow: var(--mat-sys-level2), + extended-hover-container-elevation-shadow: var(--mat-sys-level3), + extended-focus-container-elevation-shadow: var(--mat-sys-level3), + extended-container-height: var(--fab-size), + small-container-elevation-shadow: var(--mat-sys-level2), + small-hover-container-elevation-shadow: var(--mat-sys-level3), + small-focus-container-elevation-shadow: var(--mat-sys-level3), + )); + + /* Card */ + + @include mat.card-overrides(( + title-text-font: Roboto, + title-text-weight: 500, + title-text-size: 20px, + subtitle-text-weight: 400, + elevated-container-color: var(--mat-sys-surface-container-lowest), + filled-container-color: var(--mat-sys-surface-container-low), + outlined-outline-width: 2px, + subtitle-text-color: var(--mat-sys-on-surface-variant), + )); + + .mat-mdc-card-avatar { + margin-bottom: 0; + } + + .mat-mdc-card-header { + align-items: center; + margin-bottom: 16px; + } + + /* Chips */ + + @include mat.chips-overrides(( + elevated-container-color: var(--mat-sys-surface-container-low), + elevated-disabled-container-color: var(--mat-sys-surface-container), + outline-color: var(--mat-sys-outline-variant), + )); + + /* Datepicker */ + + @include mat.datepicker-overrides(( + calendar-container-elevation-shadow: var(--mat-sys-level1), + calendar-container-shape: var(--mat-sys-corner-medium), + calendar-container-background-color: var(--mat-sys-surface-container-lowest), + )); + + .mat-calendar-body-cell-content { + border-width: 2px; + border-radius: var(--mat-sys-corner-medium); + } + + /* Dialog */ + + @include mat.dialog-overrides(( + actions-padding: 16px, + container-elevation-shadow: 0 20px 40px -10px #00000040, + container-shape: var(--mat-sys-corner-medium), + content-padding: 16px, + headline-padding: 0 16px 16px, + container-max-width: 100vw, + subhead-size: 20px, + subhead-weight: 600, + supporting-text-size: 1rem, + with-actions-content-padding: 20px 16px 8px, + )); + + .dialog-sm { + @apply w-xl; + } + + .dialog-md { + @apply w-3xl; + } + + .dialog-lg { + @apply w-5xl; + } + + /* Expansion Panel */ + + @include mat.expansion-overrides(( + container-background-color: var(--mat-sys-surface-container-lowest), + )); + + /* Form field */ + + @include mat.form-field-overrides(( + filled-container-shape: var(--mat-sys-corner-small), + filled-container-color: var(--mat-sys-surface-container), + outlined-container-shape: var(--mat-sys-corner-small), + outlined-outline-width: 2px, + )); + + .mdc-text-field--filled { + border-bottom-right-radius: var(--mat-sys-corner-small); + border-bottom-left-radius: var(--mat-sys-corner-small); + + @include mat.chips-overrides(( + elevated-container-color: var(--mat-sys-surface-container-highest), + )); + } + + .mdc-line-ripple::before { + border-bottom-width: 0; + } + + .mat-mdc-form-field-hint-wrapper, .mat-mdc-form-field-error-wrapper { + padding: 0 8px; + } + + /* List */ + + @include mat.list-overrides(( + active-indicator-shape: var(--mat-sys-corner-small), + list-item-container-shape: var(--mat-sys-corner-small), + list-item-one-line-container-height: var(--list-height), + list-item-leading-icon-start-space: 8px, + list-item-leading-icon-end-space: 8px, + list-item-disabled-state-layer-opacity: 0, + list-item-disabled-label-text-opacity: 0.38, + )); + + .mat-mdc-action-list, .mat-mdc-nav-list, .mat-mdc-selection-list { + .mat-mdc-list-item { + margin: 4px 0; + + &:first-of-type { + margin-top: 0; + } + + &:last-of-type { + margin-bottom: 0; + } + } + } + + /* Menu */ + --menu-item-spacing: 8px; + + @include mat.menu-overrides(( + container-shape: var(--mat-sys-corner-small), + container-color: var(--mat-sys-surface-container-lowest), + item-leading-spacing: var(--menu-item-spacing), + item-trailing-spacing: var(--menu-item-spacing), + item-with-icon-leading-spacing: var(--menu-item-spacing), + item-with-icon-trailing-spacing: var(--menu-item-spacing), + )); + + .mat-mdc-menu-content { + padding-inline-end: 16px; + } + + .mat-mdc-menu-item { + margin: 4px 8px; + border-radius: var(--mat-sys-corner-small); + min-height: 42px; + + &:first-of-type { + margin-top: 0; + } + + &:last-of-type { + margin-bottom: 0; + } + } + + /* Progress bar */ + + @include mat.progress-bar-overrides(( + active-indicator-height: 10px, + track-height: 10px, + track-shape: var(--mat-sys-corner-small), + )); + + .mdc-linear-progress { + border-radius: var(--mat-sys-corner-small); + } + + .mdc-button .mdc-linear-progress { + --track-height: 6px; + @include mat.progress-bar-overrides(( + active-indicator-height: var(--track-height), + track-height: var(--track-height), + )); + + position: absolute; + width: auto; + left: calc(-1 * var(--button-horizontal-padding)); + right: calc(-1 * var(--button-horizontal-padding)); + bottom: calc(-1 * var(--track-height)); + border-top-right-radius: 0; + border-top-left-radius: 0; + } + + .mdc-button.mdc-button--outlined .mdc-linear-progress { + left: calc(-1 * var(--outlined-button-horizontal-padding)); + right: calc(-1 * var(--outlined-button-horizontal-padding)); + } + + /* Select */ + + @include mat.select-overrides(( + panel-background-color: var(--mat-sys-surface-container-lowest), + )); + + div.mat-mdc-select-panel { + border-radius: var(--mat-sys-corner-small); + } + + .cdk-overlay-pane:not(.mat-mdc-select-panel-above) div.mat-mdc-select-panel { + border-top-left-radius: var(--mat-sys-corner-small); + border-top-right-radius: var(--mat-sys-corner-small); + } + + .mat-mdc-option { + margin: 4px 8px; + padding: 0 8px; + border-radius: var(--mat-sys-corner-small); + min-height: var(--list-height); + + &:first-of-type { + margin-top: 0; + } + + &:last-of-type { + margin-bottom: 0; + } + } + + /* Slide toggle */ + @include mat.slide-toggle-overrides( + ( + track-outline-width: 0, + ) + ); + + /* Snackbar */ + + @include mat.snack-bar-overrides(( + container-shape: var(--mat-sys-corner-medium), + )); + + .mat-mdc-snackbar-surface { + border: 2px solid, + } + + /* Tabs */ + + @include mat.tabs-overrides(( + active-indicator-height: 4px, + active-indicator-shape: var(--mat-sys-corner-small), + container-height: 40px, + inactive-hover-label-text-color: var(--mat-sys-on-surface), + inactive-label-text-color: var(--mat-sys-outline), + )); + + .mat-mdc-tab-ripple.mat-mdc-tab-ripple, .mat-mdc-tab .mdc-tab__ripple::before { + border-top-right-radius: var(--mat-sys-corner-small); + border-top-left-radius: var(--mat-sys-corner-small); + } + + .mat-mdc-tab-group-inverted-header { + .mat-mdc-tab-ripple.mat-mdc-tab-ripple, .mat-mdc-tab .mdc-tab__ripple::before { + border-top-left-radius: 0; + border-top-right-radius: 0; + border-bottom-right-radius: var(--mat-sys-corner-small); + border-bottom-left-radius: var(--mat-sys-corner-small); + } + } + + .mat-tab-body-content-can-animate { + transition: none; + } + + .mat-mdc-tab-body.mat-mdc-tab-body-active { + animation: tabFade 500ms; + } + + + @keyframes tabFade { + 0% { + opacity: 0; + } + + 100% { + opacity: 1; + } + } + + /* Timepicker */ + + @include mat.timepicker-overrides(( + container-background-color: var(--mat-sys-surface-container-lowest), + container-shape: var(--mat-sys-corner-small), + )); + + /* Fix Tailwind conflict: https://github.com/tailwindlabs/tailwindcss/discussions/9993#discussioncomment-6752435 */ + .mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch { + border-right-style: hidden; + } + .mat-mdc-input-element { + box-shadow: none !important; + } + + /* Color variants */ + + .primary { + color: var(--mat-sys-primary) + } + + .secondary { + color: var(--mat-sys-secondary); + + @include mat.theme(( + color: ( + primary: theme-colors.$secondary-palette, + ), + )); + + @include mat.button-overrides(( + outlined-outline-color: var(--mat-sys-secondary), + )); + } + + .tertiary { + color: var(--mat-sys-tertiary); + + @include mat.theme(( + color: ( + primary: theme-colors.$tertiary-palette, + ), + )); + + @include mat.button-overrides(( + outlined-outline-color: var(--mat-sys-tertiary), + )); + } + + .error { + color: var(--mat-sys-error); + + @include mat.theme(( + color: ( + primary: theme-colors.$error-palette, + ), + )); + + @include mat.button-overrides(( + outlined-outline-color: var(--mat-sys-error), + )); + } + + .success { + color: var(--mat-sys-success); + + @include mat.theme(( + color: ( + primary: theme-colors.$success-palette, + ), + )); + + @include mat.button-overrides(( + outlined-outline-color: var(--mat-sys-success), + )); + } + + /* Alternate theme (primary color background) */ + + .alt-theme { + background: var(--mat-sys-primary); + color: var(--mat-sys-on-primary); + + --disabled-text-color: rgba(255,255,255,0.6); + + @include mat.form-field-overrides(( + enabled-select-arrow-color: var(--mat-sys-on-primary), + filled-active-indicator-color: var(--mat-sys-on-primary), + filled-caret-color: var(--mat-sys-on-primary), + filled-container-color: rgba(255,255,255,0.056), + filled-hover-active-indicator-color: var(--mat-sys-on-primary), + filled-hover-label-text-color: var(--mat-sys-on-primary), + filled-focus-active-indicator-color: var(--mat-sys-on-primary), + filled-focus-label-text-color: var(--mat-sys-on-primary), + filled-input-text-color: var(--mat-sys-on-primary), + filled-input-text-placeholder-color: var(--mat-sys-on-primary), + filled-label-text-color: var(--mat-sys-on-primary), + focus-select-arrow-color: var(--mat-sys-on-primary), + hover-state-layer-opacity: 0.1, + state-layer-color: var(--mat-sys-on-primary), + leading-icon-color: var(--mat-sys-on-primary), + trailing-icon-color: var(--mat-sys-on-primary), + disabled-leading-icon-color: var(--disabled-text-color), + disabled-trailing-icon-color: var(--disabled-text-color), + filled-disabled-container-color: rgba(255,255,255,0.05), + filled-disabled-active-indicator-color: var(--disabled-text-color), + filled-disabled-input-text-color: var(--disabled-text-color), + filled-disabled-label-text-color: var(--disabled-text-color), + )); -.dark-theme { - color: white; - @include mat.all-component-colors(dark.$dark-theme); - @include mixins.theme-setup(dark.$dark-theme, dark.$dark-colors); - @include mixins.filled-input-bg(true); + @include mat.select-overrides(( + disabled-trigger-text-color: var(--disabled-text-color), + enabled-arrow-color: var(--mat-sys-on-primary), + disabled-arrow-color: var(--disabled-text-color), + enabled-trigger-text-color: var(--mat-sys-on-primary), + )) + } } diff --git a/src/style/themes/_theme-colors.scss b/src/style/themes/_theme-colors.scss new file mode 100644 index 00000000000..813acbbec8b --- /dev/null +++ b/src/style/themes/_theme-colors.scss @@ -0,0 +1,233 @@ +// This file was generated by running 'ng generate @angular/material:theme-color'. +// Proceed with caution if making changes to this file. + +@use 'sass:map'; +@use '@angular/material' as mat; + +// Note: Color palettes are generated from primary: #00799C, tertiary: #E00040 +$_palettes: ( + primary: ( + 0: #000000, + 10: #001f2a, + 20: #003546, + 25: #004155, + 30: #004d65, + 35: #005a74, + // 40: #006684, + 40: #00799C, + 50: #1780a4, + 60: #3f9bbf, + 70: #5eb6db, + 80: #7bd1f8, + 90: #bee9ff, + 95: #e0f4ff, + 98: #f4faff, + 99: #fafcff, + 100: #ffffff, + ), + secondary: ( + 0: #000000, + 10: #001f2a, + 20: #143441, + 25: #213f4d, + 30: #2d4b58, + 35: #395664, + 40: #456271, + 50: #5d7b8a, + 60: #7795a5, + 70: #91b0c0, + 80: #accbdc, + 90: #c8e7f8, + 95: #e0f4ff, + 98: #f4faff, + 99: #fafcff, + 100: #ffffff, + ), + tertiary: ( + 0: #000000, + 10: #40000c, + 20: #680018, + 25: #7c001f, + 30: #920026, + 35: #a8002e, + //40: #be0035, + 40: #E00040, + 50: #ea1346, + 60: #ff5166, + 70: #ff888f, + 80: #ffb3b5, + 90: #ffdada, + 95: #ffedec, + 98: #fff8f7, + 99: #fffbff, + 100: #ffffff, + ), + neutral: ( + 0: #000000, + 10: #181c1e, + 20: #2d3133, + 25: #383c3e, + 30: #43474a, + 35: #4f5356, + 40: #5b5f62, + 50: #74787a, + 60: #8d9194, + 70: #a8acae, + 80: #c3c7ca, + 90: #e0e3e6, + 95: #eef1f4, + 98: #f7fafd, + 99: #fafcff, + 100: #ffffff, + 4: #0b0f11, + 6: #101416, + 12: #1c2023, + 17: #262b2d, + 22: #313538, + 24: #363a3c, + 87: #d7dadd, + 92: #e5e8eb, + 94: #ebeef1, + 96: #f1f4f7, + ), + neutral-variant: ( + 0: #000000, + 10: #141d21, + 20: #293237, + 25: #333d42, + 30: #3f484d, + 35: #4a5459, + 40: #566065, + 50: #6f787e, + 60: #889298, + 70: #a3adb3, + 80: #bec8ce, + 90: #dae4ea, + 95: #e9f2f9, + 98: #f4faff, + 99: #fafcff, + 100: #ffffff, + ), + error: ( + 0: #000000, + 10: #410002, + 20: #690005, + 25: #7e0007, + 30: #93000a, + 35: #a80710, + 40: #ba1a1a, + 50: #de3730, + 60: #ff5449, + 70: #ff897d, + 80: #ffb4ab, + 90: #ffdad6, + 95: #ffedea, + 98: #fff8f7, + 99: #fffbff, + 100: #ffffff, + ), + // added + success: ( + 0: #000000, + 10: #002204, + 20: #00390a, + 25: #00460e, + 30: #005312, + 35: #006017, + // 40: #106d20, + 40: #388E3C, + 50: #318836, + 60: #4da24e, + 70: #67be66, + 80: #82db7e, + 90: #9df898, + 95: #c8ffbf, + 98: #ecffe4, + 99: #f6fff0, + 100: #ffffff, + ), +); + +$_rest: ( + secondary: map.get($_palettes, secondary), + neutral: map.get($_palettes, neutral), + neutral-variant: map.get($_palettes, neutral-variant), + error: map.get($_palettes, error), + success: map.get($_palettes, success), +); + +$primary-palette: map.merge(map.get($_palettes, primary), $_rest); +$tertiary-palette: map.merge(map.get($_palettes, tertiary), $_rest); + +// Manually added +$secondary-palette: map.merge(map.get($_palettes, secondary), $_rest); +$error-palette: map.merge(map.get($_palettes, error), $_rest); +$success-palette: map.merge(map.get($_palettes, success), $_rest); + +@function _high-contrast-value($light, $dark, $theme-type) { + @if ($theme-type == light) { + @return $light; + } + @if ($theme-type == dark) { + @return $dark; + } + @if ($theme-type == color-scheme) { + @return light-dark(#{$light}, #{$dark}); + } + + @error 'Unknown theme-type #{$theme-type}. Expected light, dark, or color-scheme'; +} + +@mixin high-contrast-overrides($theme-type) { + @include mat.theme-overrides(( + primary: _high-contrast-value(#003041, #dff3ff, $theme-type), + on-primary: _high-contrast-value(#ffffff, #000000, $theme-type), + primary-container: _high-contrast-value(#005068, #77cdf4, $theme-type), + on-primary-container: _high-contrast-value(#ffffff, #000d14, $theme-type), + inverse-primary: _high-contrast-value(#7bd1f8, #004e66, $theme-type), + primary-fixed: _high-contrast-value(#005068, #bee9ff, $theme-type), + primary-fixed-dim: _high-contrast-value(#003749, #7bd1f8, $theme-type), + on-primary-fixed: _high-contrast-value(#ffffff, #000000, $theme-type), + on-primary-fixed-variant: _high-contrast-value(#ffffff, #00131c, $theme-type), + secondary: _high-contrast-value(#08303b, #daf4ff, $theme-type), + on-secondary: _high-contrast-value(#ffffff, #000000, $theme-type), + secondary-container: _high-contrast-value(#2a4e59, #a4c8d6, $theme-type), + on-secondary-container: _high-contrast-value(#ffffff, #000d12, $theme-type), + secondary-fixed: _high-contrast-value(#2a4e59, #c3e8f6, $theme-type), + secondary-fixed-dim: _high-contrast-value(#113742, #a8ccda, $theme-type), + on-secondary-fixed: _high-contrast-value(#ffffff, #000000, $theme-type), + on-secondary-fixed-variant: _high-contrast-value(#ffffff, #00141a, $theme-type), + tertiary: _high-contrast-value(#600016, #ffeceb, $theme-type), + on-tertiary: _high-contrast-value(#ffffff, #000000, $theme-type), + tertiary-container: _high-contrast-value(#960028, #ffadb0, $theme-type), + on-tertiary-container: _high-contrast-value(#ffffff, #220004, $theme-type), + tertiary-fixed: _high-contrast-value(#960028, #ffdada, $theme-type), + tertiary-fixed-dim: _high-contrast-value(#6c001a, #ffb3b5, $theme-type), + on-tertiary-fixed: _high-contrast-value(#ffffff, #000000, $theme-type), + on-tertiary-fixed-variant: _high-contrast-value(#ffffff, #2d0006, $theme-type), + background: _high-contrast-value(#f7fafd, #101416, $theme-type), + on-background: _high-contrast-value(#181c1e, #e0e3e6, $theme-type), + surface: _high-contrast-value(#f7fafd, #101416, $theme-type), + surface-dim: _high-contrast-value(#b6b9bc, #101416, $theme-type), + surface-bright: _high-contrast-value(#f7fafd, #4d5153, $theme-type), + surface-container-low: _high-contrast-value(#eef1f4, #1c2023, $theme-type), + surface-container-lowest: _high-contrast-value(#ffffff, #000000, $theme-type), + surface-container: _high-contrast-value(#e0e3e6, #2d3133, $theme-type), + surface-container-high: _high-contrast-value(#d1d5d8, #383c3e, $theme-type), + surface-container-highest: _high-contrast-value(#c3c7ca, #43474a, $theme-type), + on-surface: _high-contrast-value(#000000, #ffffff, $theme-type), + shadow: _high-contrast-value(#000000, #000000, $theme-type), + scrim: _high-contrast-value(#000000, #000000, $theme-type), + surface-tint: _high-contrast-value(#006684, #7bd1f8, $theme-type), + inverse-surface: _high-contrast-value(#2d3133, #e0e3e6, $theme-type), + inverse-on-surface: _high-contrast-value(#ffffff, #000000, $theme-type), + outline: _high-contrast-value(#242d32, #e8f1f8, $theme-type), + outline-variant: _high-contrast-value(#414a50, #bac4ca, $theme-type), + error: _high-contrast-value(#600004, #ffece9, $theme-type), + on-error: _high-contrast-value(#ffffff, #000000, $theme-type), + error-container: _high-contrast-value(#98000a, #ffaea4, $theme-type), + on-error-container: _high-contrast-value(#ffffff, #220001, $theme-type), + surface-variant: _high-contrast-value(#dae4ea, #3f484d, $theme-type), + on-surface-variant: _high-contrast-value(#000000, #ffffff, $theme-type), + )) + } diff --git a/src/style/themes/_theme-typography.scss b/src/style/themes/_theme-typography.scss new file mode 100644 index 00000000000..bfd4177e4d5 --- /dev/null +++ b/src/style/themes/_theme-typography.scss @@ -0,0 +1,130 @@ +// From: https://github.com/angular/components/issues/30055#issuecomment-2526139412 + +@mixin typography-hierarchy { + // Heading styles + h1 { + font: var(--mat-sys-headline-large); + letter-spacing: var(--mat-sys-headline-large-tracking); + margin: 0 0 1rem; + } + + h2 { + font: var(--mat-sys-headline-medium); + letter-spacing: var(--mat-sys-headline-medium-tracking); + margin: 0 0 1rem; + } + + h3 { + font: var(--mat-sys-headline-small); + letter-spacing: var(--mat-sys-headline-small-tracking); + margin: 0 0 1rem; + } + + h4 { + font: var(--mat-sys-title-large); + letter-spacing: var(--mat-sys-title-large-tracking); + margin: 0 0 1rem; + } + + h5 { + font: var(--mat-sys-title-medium); + letter-spacing: var(--mat-sys-title-medium-tracking); + margin: 0 0 0.75rem; + } + + h6 { + font: var(--mat-sys-title-small); + letter-spacing: var(--mat-sys-title-small-tracking); + margin: 0 0 0.75rem; + } + + // Body styles + body { + font: var(--mat-sys-body-medium); + letter-spacing: var(--mat-sys-body-large-tracking); + + p { + margin: 0 0 0.75rem; + } + } + + // Additional body classes + .body-small { + font: var(--mat-sys-body-small); + letter-spacing: var(--mat-sys-body-small-tracking); + } + + .body-medium { + font: var(--mat-sys-body-medium); + letter-spacing: var(--mat-sys-body-medium-tracking); + } + + .body-large { + font: var(--mat-sys-body-large); + letter-spacing: var(--mat-sys-body-large-tracking); + } + + // Additional display classes + .display-small { + font: var(--mat-sys-display-small); + letter-spacing: var(--mat-sys-display-small-tracking); + } + + .display-medium { + font: var(--mat-sys-display-medium); + letter-spacing: var(--mat-sys-display-medium-tracking); + } + + .display-large { + font: var(--mat-sys-display-large); + letter-spacing: var(--mat-sys-display-large-tracking); + } + + // Additional headline classes + .headline-small { + font: var(--mat-sys-headline-small); + letter-spacing: var(--mat-sys-headline-small-tracking); + } + + .headline-medium { + font: var(--mat-sys-headline-medium); + letter-spacing: var(--mat-sys-headline-medium-tracking); + } + + .headline-large { + font: var(--mat-sys-headline-large); + letter-spacing: var(--mat-sys-headline-large-tracking); + } + + // Additional label classes + .label-small { + font: var(--mat-sys-label-small); + letter-spacing: var(--mat-sys-label-small-tracking); + } + + .label-medium { + font: var(--mat-sys-label-medium); + letter-spacing: var(--mat-sys-label-medium-tracking); + } + + .label-large { + font: var(--mat-sys-label-large); + letter-spacing: var(--mat-sys-label-large-tracking); + } + + // Additional title classes + .title-small { + font: var(--mat-sys-title-small); + letter-spacing: var(--mat-sys-title-small-tracking); + } + + .title-medium { + font: var(--mat-sys-title-medium); + letter-spacing: var(--mat-sys-title-medium-tracking); + } + + .title-large { + font: var(--mat-sys-title-large); + letter-spacing: var(--mat-sys-title-large-tracking); + } +} \ No newline at end of file